From 41180c74a91ebd02aa0f2445f940914a1c6a80d7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 14 Nov 2019 09:24:09 -0500 Subject: [PATCH 01/49] data/battle_anim_special.s --- baserom.ips | Bin 298582 -> 297829 bytes data/battle_anim_special.s | 133 ++++++++++++++++++++++++++++++++++--- 2 files changed, 123 insertions(+), 10 deletions(-) diff --git a/baserom.ips b/baserom.ips index 1150e077929390e7ee96577ecc161cdda0d92cde..b2d112d64b92958e66d9ec68272d520b01464ddf 100644 GIT binary patch delta 27 hcmcaMN9gG^p@tU5Elkpd?K~w+K+L?Ir-a2z3ILS62@3!K delta 795 zcmZvZzfZzI6vtn$EuILevMCZ{BmtDs$v}YUV3eS6+`EsHlsHQrwY5u@ZrIhE66?g-Cs;6okd1&} zJaN!EB4U^55PL+I*e4E%9?>TT#E>`?ueg6l07!O)9Tg6V9?>QCi36fX^oap6Bo2`P z+RwxA4NwC~`FxE5bmSOm5KWtk7^*3ZY?72s{I<%om?CB!Q^IUxa92}fOgBx#IFDJp zkg)i295Z9_IV-9&)6w@;(&FM74!c=C?8f7swV(LP|07FT%k0B{uDe+v`u2uJCA zqNnt(aFxC<`YLbpff%S3xF2M1y8OSKws>`N$9Gj;&((7;*ptBe WZ%@r>>swMBXB!NoUuPReZQ&cWrv?20 diff --git a/data/battle_anim_special.s b/data/battle_anim_special.s index 341f6b4df..c3b3b412c 100644 --- a/data/battle_anim_special.s +++ b/data/battle_anim_special.s @@ -1,37 +1,150 @@ #include "constants/region_map.h" #include "constants/flags.h" #include "constants/moves.h" +#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) .include "asm/macros.inc" .include "constants/constants.inc" .section .rodata .align 2 gUnknown_840BF3C:: @ 840BF3C - .incbin "baserom.gba", 0x40BF3C, 0xC + .byte 10, 2, -3, 0 + .byte 15, 0, -4, 0 + .byte -10, 2, -4, 0 gUnknown_840BF48:: @ 840BF48 - .incbin "baserom.gba", 0x40BF48, 0x60 + obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55020 + obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55021 + obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55022 + obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55023 + obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55024 + obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55025 + obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55026 + obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55027 + obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55028 + obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55029 + obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55030 + obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55031 gUnknown_840BFA8:: @ 840BFA8 - .incbin "baserom.gba", 0x40BFA8, 0xC0 + obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55020 + obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55021 + obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55022 + obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55023 + obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55024 + obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55025 + obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55026 + obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55027 + obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55028 + obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55029 + obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55030 + obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55031 + +gAnimCmd_840C008:: @ 840C008 + obj_image_anim_frame 0x0000, 1 + obj_image_anim_frame 0x0001, 1 + obj_image_anim_frame 0x0002, 1 + obj_image_anim_frame 0x0000, 1, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 0x0002, 1 + obj_image_anim_frame 0x0001, 1 + obj_image_anim_jump 0x0000 + +gAnimCmd_840C024:: @ 840C024 + obj_image_anim_frame 0x0003, 1 + obj_image_anim_end + +gAnimCmd_840C02C:: @ 840C02C + obj_image_anim_frame 0x0004, 1 + obj_image_anim_end + +gAnimCmd_840C034:: @ 840C034 + obj_image_anim_frame 0x0005, 1 + obj_image_anim_end + +gAnimCmd_840C03C:: @ 840C03C + obj_image_anim_frame 0x0006, 4 + obj_image_anim_frame 0x0007, 4 + obj_image_anim_jump 0x0000 + +gAnimCmd_840C048:: @ 840C048 + obj_image_anim_frame 0x0007, 4 + obj_image_anim_end + +gSpriteAnimTable_840C050:: + .4byte gAnimCmd_840C008 + .4byte gAnimCmd_840C024 + .4byte gAnimCmd_840C02C + .4byte gAnimCmd_840C034 + .4byte gAnimCmd_840C03C + .4byte gAnimCmd_840C048 gUnknown_840C068:: @ 840C068 - .incbin "baserom.gba", 0x40C068, 0xC + .byte 0x00, 0x00, 0x00, 0x05, 0x01, 0x02, 0x02, 0x03, 0x05, 0x05, 0x04, 0x04 gUnknown_840C074:: @ 840C074 - .incbin "baserom.gba", 0x40C074, 0x30 + .4byte sub_80F06A4 + .4byte sub_80F0C28 + .4byte sub_80F0A20 + .4byte sub_80F0B20 + .4byte sub_80F0F10 + .4byte sub_80F0A20 + .4byte sub_80F091C + .4byte sub_80F0B20 + .4byte sub_80F0DB4 + .4byte sub_80F0818 + .4byte sub_80F0C28 + .4byte sub_80F103C gUnknown_840C0A4:: @ 840C0A4 - .incbin "baserom.gba", 0x40C0A4, 0x60 + spr_template 55020, 55020, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + +gUnknown_840C0BC:: + spr_template 55021, 55021, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 55022, 55022, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 55023, 55023, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy gUnknown_840C104:: @ 840C104 - .incbin "baserom.gba", 0x40C104, 0xC0 + spr_template 55024, 55024, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 55025, 55025, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 55026, 55026, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 55027, 55027, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 55028, 55028, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 55029, 55029, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 55030, 55030, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 55031, 55031, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy gUnknown_840C1C4:: @ 840C1C4 - .incbin "baserom.gba", 0x40C1C4, 0x28 + .2byte RGB(31, 22, 30) + .2byte RGB(16, 23, 30) + .2byte RGB(23, 30, 20) + .2byte RGB(31, 31, 15) + .2byte RGB(23, 20, 28) + .2byte RGB(21, 31, 25) + .2byte RGB(12, 25, 30) + .2byte RGB(30, 27, 10) + .2byte RGB(31, 24, 16) + .2byte RGB(29, 30, 30) + .2byte RGB(31, 17, 10) + .2byte RGB(31, 9, 10) + .2byte RGB(0, 0, 0) + .2byte RGB(1, 16, 0) + .2byte RGB(3, 0, 1) + .2byte RGB(1, 8, 0) + .2byte RGB(0, 8, 0) + .2byte RGB(3, 8, 1) + .2byte RGB(6, 8, 1) + .2byte RGB(4, 0, 0) gUnknown_840C1EC:: - .incbin "baserom.gba", 0x40C1EC, 0x24 + spr_template 10269, 10269, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80F1B3C + +gUnknown_840C204:: + obj_image_anim_frame 0x0040, 1 + obj_image_anim_end + +gSpriteAnimTable_840C20C:: + .4byte gUnknown_840C204 gUnknown_840C210:: - .incbin "baserom.gba", 0x40C210, 0x18 + spr_template 10058, 10058, gOamData_83AC9D8, gSpriteAnimTable_840C20C, NULL, gDummySpriteAffineAnimTable, sub_80F1B3C + From 492e963c9605f3bbcfdb5860fdface5bb913b7d5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 14 Nov 2019 15:42:01 -0500 Subject: [PATCH 02/49] Dump remaining sprite templates in battle_anim_effects_misc --- baserom.ips | Bin 297829 -> 293301 bytes data/battle_anim_effects_misc.s | 1560 ++++++++++++++++++++++--------- 2 files changed, 1138 insertions(+), 422 deletions(-) diff --git a/baserom.ips b/baserom.ips index b2d112d64b92958e66d9ec68272d520b01464ddf..84bef65e788705a2aeec7b8344ebb2a2379bf78b 100644 GIT binary patch delta 1573 zcmYjRF>F&;6urLoFF(|wCi#E~ALqxiAQBFkV#rToUW{#m2Zjt*WzvwiO;Q|`!2^RU znPRC(&AEp zd+vGn{okMW{P@qw`cvOJA07)_3X`p?CfkO(beF<<&Ezm(4RF5$w<)J%U7Q^uenxytAKFB2T$w6fCJQ4(KB5m#JVa&hMT4rk)x}jq4aF#-pC0D~;1U(}?r|>m zsi78y{2s00(Y1y^ciE;TUHh1qqU!R7qz!ntiQgcijkFt=G4BddNtc3LGSrnS61@vb zqJ)X6%H2{`qCf?`-pz$RmH3N7{q%&}{-*zz$Dcj^=^G+-H4IJF6Qb#A)n~tXcYgF1ea2Mv{s(Y}6qlJ|Sm^*ovBG;M9Aou;~8rIYB(T;8gS4cM)(m@XkZwH z4tu*}3E6NBD)ucN#F9N(!W2R{hy+5G?8y>0fTZ)MB&j^V7~MW2qoXa_(Sl{}w`UmFbZJ9f6LuAbsk>g%3 z+EV!V8r5|0Jl6~bzYF@+c`g8YDI&7$)*#GWj&K}s34Oa8;arcpwL|8w7eBdp;v)7t zL)es3ztCk$$hXxm3p2t2817ojz`0Blk7?A$X zuT%UeqGns2Pl$Eo6VjT6&XR+K^_%P(s`Qp7bwcr^p}uhGrGBCKC7^fG#)bOJB=)^A z&N;v>TGmdQmm_Mf+Mzyvgt|Hh>bXtyvVBW>dAd~HV0?t@m}#0_Y5|?0OBreRg*Y62mJvr6_K-c9MofUIQ~E&bxQv~+nJG_eVBZPEK`O-Q#adR;uhc2q4k zWU~#3HlW|YL+1n1SOn4HHcji;9iBGS!!q*k+z}}cUjiNiewWWP!v7|p51h~b4=iN>A>=4V3^1jKC;Lnk<(u|gZ<$HfYWMa7Dp*n$f~ zsi8%UQ-%c%8k8XZpde7NqN0Tw5FJ!-_zMOF4N5f8pi#i|J9qbGZ+4fRxpQ~F@0@eb zIrqME&)aR^C!JoIyy$OHTg8RG-eC=;m8DUoQ3gKWb${1w;M*@=_0wn==9cH_Jk{24l`vWJSmS|jYdG%WBeCmiSbLfVT^?CCfY<@SY^Cs zXU)}E&ewlzUiTKCiaRIRZu6}jd6H-IhaFKkyCl_^Ktf%fdc1XD)Brvdlf-d`N|c2cK0 zK`V;=T3wjW-Dt|eG}vzqxpAy*yvdJq1<*ZQ{afU&)Y!GFG^>SWPeDiL%WmQ4G8}(= zk{Km^RRcth_g#8dEmvO>biQn|Df8`om1P}&{t|cxaKnf(q|whv#B5=7Yh6KC&<5<;!2sKedCpX1Kf6$*-Vt++TRIXJzH^pXV!||2encNp=vg>9 zon4kHNT~vqs#1)HuJcrT0(SW9l--7vW+w{UQ$PjE%La{QFLNkI;d*RiZ|7A6k|>NU z3>O9`@*s2%&;cdis@ZveCRW*;C`zrEk#5-!BNZbPBL^cF!}mj?$g!%aT2;ylAROre z%!g({cSw?Oc_Xo#?=ADi${}0ovVtfXq8rwa!0#m++0&Ku3sOF zF9q(qH(7XGU(grI=2oDN&ByQdYjFk9Q$Ow=XdO%zP1Y2eqAsi**9NtY+y{1TipZ%< zqcm#JN;n+%BBjTxc zs@)Pn-etRN-A+C19QmIq-=eqFg`-EhczR#?4!y%iJgHX-&O8XW3Q|SZ)cG`@xc-m4 zE|`L4e=%h!J|6saf92gZj8t_J_?uxY0?r+aeuvZn+XGqO-KltXGbn==X@Tqp8@mwf zqp8BSoLX(TgX_;^_H~^t)!4L$z_zA}dDbkNr9y7f*g;FdPD{hOvuSoOuZ&;29f{0Rw;c5te7HGXOtg;CF>255HXpLrBMyqAvJ`6+#>a#&Rs^nct+uou!rg}0fSRdg?DEPHr@22g)8j1zPs z?9iR@nesFGEDWEq%9N(@eYas6#t+>I2G8AI&Kc@4wT8);J!uxoNW`8e&4~DfdbnLT zP*}yDa)d}{dToCVum{$f3a`_W&iLkM{F<58MY`Cl!`}^d;j>^j4-}c+ujnh~W*1O) zn>V`ytbu!wi+AevZh4l@s+48oyCV~~&Xix%*I^;XHL`BBx?U0ka~1TeG1{n2+3^JJ z#L7pYu+l<9{0)7h*bPBezP28ImN5GzeW}=Xjg5N_>|K_~vO1{4&%%4h!%-W+K4ytA zF5Xgpn4JrxrUI?@^Cq@D93KVTcfi799An4WE!tr{2(8mEnDSpI#o+CiXNbS2SW9S$ zY7bUa2NN^tB^X$r3zwgvXVmM`@c`R|c{Q`gaz(MXp6aOyPRYrBT^sY#mpOS+xS67G zOGlw0iBgHI0M|&3)DHRTfIM&1Rhv+{?G!r_ZrPU2y|Z3CSw6$gV7zznWWraNCsJK` zl&3PeKV+G0v@NWrE3F&y#7HkYw+Xp&oO9iZc4f1voYwJT;6DN9Ao+B0pgi9Rd>+P& z^r8x~2H%~1a7a2~ww_WW0wbu>fV-aZo=xe6KrrC4`;bX@*iHeC+;f^eXO$hAwddcD ztaauRI4AoE9SN&Kg&$*;>4?Q*HndxsbP%k!K#Z||q#u>;y6M4)$_|0uRe(Pxx~NO( zwrK3RPrx>_ZV8q6H{`aUZrd@igI!|&)XVAeUbULHWkRzlU#Hi@yye_-KJ_M~6IMfQ z#CWhtC$PdM7oNFc_Ar~fM;B1mo`^ZB#f+$RcK{E41zUU4lu48n_L`D?%9L-=8>*Ak zPr-e_NAGSrE}PnYoh~uX`kX#j%GQiv64d*9d7-HHoT5|Y(Mo6&qy~NIzaaQ>$ii@8 za0xgI?lhfNDK%~nT6+NUk?b@BUpZVmiRO|5yX0navSH5;|S3crtRgYgfH57-P^uvp*E z!$pR2LN{<623`vosDxq12_5IUWoypO>GUtC{&&;xBR}+%&0g}1vkL-F3@H+Wyid_n zWMi?KJA#|>NEZw7E2RGgas{{sY9M|`Xwc-+elq1w+8Gfyq69wCF)=Z*eemfkrHtbO z8*(-a<%Ek^ED9ebAB_)mpcTpRp>AwoZIP&P4YUXL`j=+KOk5SQ@iG)|0Iq6vY_X`V zyq2!@zoG%$>i9cOESwP`vRx-az7SrZx$yZP4yiY%+ zV3psLpvuSEvFe|sPFQz#acL^phfC1n^|AXXn`7pLuscg|_i!Tgq}D*HgLRuraJxK5 z&#C5dgQlxqm3}S}Q!CfgdiAHr@c?U~uv7BI`Y&RSc+j^_7gXQ? diff --git a/data/battle_anim_effects_misc.s b/data/battle_anim_effects_misc.s index 69424e5c6..a6f95e83d 100644 --- a/data/battle_anim_effects_misc.s +++ b/data/battle_anim_effects_misc.s @@ -9,7 +9,7 @@ gUnknown_83E2964:: @ 83E2964 .byte 0x02, 0x04, 0x01, 0x03 -gUnknown_83E2968:: +gUnknown_83E2968:: @ 83E2968 obj_image_anim_frame 0x0000, 5 obj_image_anim_frame 0x0002, 5 obj_image_anim_frame 0x0004, 5 @@ -20,55 +20,55 @@ gUnknown_83E2968:: obj_image_anim_frame 0x000e, 5 obj_image_anim_jump 0x0000 -gUnknown_83E298C:: +gUnknown_83E298C:: @ 83E298C .4byte gUnknown_83E2968 -gUnknown_83E2990:: +gUnknown_83E2990:: @ 83E2990 spr_template 10067, 10067, gOamData_83ACA08, gUnknown_83E298C, NULL, gDummySpriteAffineAnimTable, sub_80A22E8 -gUnknown_83E29A8:: +gUnknown_83E29A8:: @ 83E29A8 spr_template 10068, 10068, gOamData_83ACA08, gUnknown_83E298C, NULL, gDummySpriteAffineAnimTable, sub_80A22E8 -gUnknown_83E29C0:: +gUnknown_83E29C0:: @ 83E29C0 spr_template 10065, 10065, gOamData_83ACA08, gUnknown_83E298C, NULL, gDummySpriteAffineAnimTable, sub_80A22E8 -gAnimCmd_83E29D8:: +gAnimCmd_83E29D8:: @ 83E29D8 obj_image_anim_frame 0, 1 obj_image_anim_end -gAnimCmd_83E29E0:: +gAnimCmd_83E29E0:: @ 83E29E0 obj_image_anim_frame 1, 1 obj_image_anim_end -gAnimCmd_83E29E8:: +gAnimCmd_83E29E8:: @ 83E29E8 obj_image_anim_frame 2, 1 obj_image_anim_end -gAnimCmd_83E29F0:: +gAnimCmd_83E29F0:: @ 83E29F0 obj_image_anim_frame 3, 1 obj_image_anim_end -gAnimCmd_83E29F8:: +gAnimCmd_83E29F8:: @ 83E29F8 obj_image_anim_frame 4, 1 obj_image_anim_end -gAnimCmd_83E2A00:: +gAnimCmd_83E2A00:: @ 83E2A00 obj_image_anim_frame 5, 1 obj_image_anim_end -gAnimCmd_83E2A08:: +gAnimCmd_83E2A08:: @ 83E2A08 obj_image_anim_frame 6, 1 obj_image_anim_end -gAnimCmd_83E2A10:: +gAnimCmd_83E2A10:: @ 83E2A10 obj_image_anim_frame 7, 1 obj_image_anim_end -gAnimCmd_83E2A18:: +gAnimCmd_83E2A18:: @ 83E2A18 obj_image_anim_frame 8, 1 obj_image_anim_end -gSpriteAnimTable_83E2A20:: +gSpriteAnimTable_83E2A20:: @ 83E2A20 .4byte gAnimCmd_83E29D8 .4byte gAnimCmd_83E29E0 .4byte gAnimCmd_83E29E8 @@ -77,499 +77,1014 @@ gSpriteAnimTable_83E2A20:: .4byte gAnimCmd_83E2A00 .4byte gAnimCmd_83E2A08 -gSpriteAnimTable_83E2A3C:: +gSpriteAnimTable_83E2A3C:: @ 83E2A3C .4byte gAnimCmd_83E2A10 -gSpriteAnimTable_83E2A40:: +gSpriteAnimTable_83E2A40:: @ 83E2A40 .4byte gAnimCmd_83E2A18 -gAffineAnimCmd_83E2A44:: +gAffineAnimCmd_83E2A44:: @ 83E2A44 obj_rot_scal_anim_frame -5, -5, 0, 1 obj_rot_scal_anim_jump 0 -gSpriteAffineAnimTable_83E2A54:: +gSpriteAffineAnimTable_83E2A54:: @ 83E2A54 .4byte gAffineAnimCmd_83E2A44 -gUnknown_83E2A58:: +gUnknown_83E2A58:: @ 83E2A58 spr_template 10147, 10147, gOamData_83ACB50, gSpriteAnimTable_83E2A40, NULL, gSpriteAffineAnimTable_83E2A54, sub_80A2388 -gUnknown_83E2A70:: +gUnknown_83E2A70:: @ 83E2A70 spr_template 10147, 10147, gOamData_83AC9C8, gSpriteAnimTable_83E2A20, NULL, gDummySpriteAffineAnimTable, sub_80A23D8 gUnknown_83E2A88:: @ 83E2A88 spr_template 10147, 10147, gOamData_83AC9C8, gSpriteAnimTable_83E2A3C, NULL, gDummySpriteAffineAnimTable, sub_80A2430 -gSpriteTemplate_83E2AA0:: - .incbin "baserom.gba", 0x3E2AA0, 0x1C +gUnknown_83E2AA0:: @ 83E2AA0 + obj_rot_scal_anim_frame 320, 320, 0, 0 + obj_rot_scal_anim_frame -14, -14, 0, 1 + obj_rot_scal_anim_jump 1 -gUnknown_83E2ABC:: - .incbin "baserom.gba", 0x3E2ABC, 0x2C +gUnknown_83E2AB8:: @ 83E2AB8 + .4byte gUnknown_83E2AA0 -gUnknown_83E2AE8:: - .incbin "baserom.gba", 0x3E2AE8, 0x18 +gUnknown_83E2ABC:: @ 83E2ABC + spr_template 10235, 10235, gOamData_83ACA88, gDummySpriteAnimTable, NULL, gUnknown_83E2AB8, sub_80A2388 -gUnknown_83E2B00:: - .incbin "baserom.gba", 0x3E2B00, 0x34 +gUnknown_83E2AD4:: @ 83E2AD4 + obj_rot_scal_anim_frame -5, -5, 0, 1 + obj_rot_scal_anim_jump 0 -gUnknown_83E2B34:: - .incbin "baserom.gba", 0x3E2B34, 0x30 +gUnknown_83E2AE4:: @ 83E2AE4 + .4byte gUnknown_83E2AD4 -gUnknown_83E2B64:: - .incbin "baserom.gba", 0x3E2B64, 0x30 +gUnknown_83E2AE8:: @ 83E2AE8 + spr_template 10147, 10147, gOamData_83ACB50, gSpriteAnimTable_83E2A40, NULL, gUnknown_83E2AE4, sub_80A2580 -gUnknown_83E2B94:: - .incbin "baserom.gba", 0x3E2B94, 0x18 +gUnknown_83E2B00:: @ 83E2B00 + spr_template 10147, 10147, gOamData_83AC9C8, gSpriteAnimTable_83E2A20, NULL, gDummySpriteAffineAnimTable, sub_80A25EC -gUnknown_83E2BAC:: - .incbin "baserom.gba", 0x3E2BAC, 0x5C +gUnknown_83E2B18:: @ 83E2B18 + .incbin "baserom.gba", 0x3E2B18, 0x14 -gUnknown_83E2C08:: - .incbin "baserom.gba", 0x3E2C08, 0x18 +gUnknown_83E2B2C:: @ 83E2B2C + .incbin "baserom.gba", 0x3E2B2C, 0x8 -gUnknown_83E2C20:: - .incbin "baserom.gba", 0x3E2C20, 0x30 +gUnknown_83E2B34:: @ 83E2B34 + spr_template 10006, 10006, gOamData_83AC9D0, gUnknown_83E2B2C, NULL, gDummySpriteAffineAnimTable, sub_80A26F0 -gUnknown_83E2C50:: - .incbin "baserom.gba", 0x3E2C50, 0x2C +gUnknown_83E2B4C:: @ 83E2B4C + .incbin "baserom.gba", 0x3E2B4C, 0x10 -gUnknown_83E2C7C:: - .incbin "baserom.gba", 0x3E2C7C, 0x90 +gUnknown_83E2B5C:: @ 83E2B5C + .incbin "baserom.gba", 0x3E2B5C, 0x8 -gUnknown_83E2D0C:: - .incbin "baserom.gba", 0x3E2D0C, 0x48 +gUnknown_83E2B64:: @ 83E2B64 + spr_template 10158, 10158, gOamData_83AC9D0, gUnknown_83E2B5C, NULL, gDummySpriteAffineAnimTable, sub_80A27D0 -gUnknown_83E2D54:: - .incbin "baserom.gba", 0x3E2D54, 0x70 +gUnknown_83E2B7C:: @ 83E2B7C + .incbin "baserom.gba", 0x3E2B7C, 0x10 -gUnknown_83E2DC4:: - .incbin "baserom.gba", 0x3E2DC4, 0x18 +gUnknown_83E2B8C:: @ 83E2B8C + .incbin "baserom.gba", 0x3E2B8C, 0x4 -gUnknown_83E2DDC:: - .incbin "baserom.gba", 0x3E2DDC, 0x28 +gUnknown_83E2B90:: @ 83E2B90 + .incbin "baserom.gba", 0x3E2B90, 0x4 -gUnknown_83E2E04:: - .incbin "baserom.gba", 0x3E2E04, 0x84 +gUnknown_83E2B94:: @ 83E2B94 + spr_template 10159, 10159, gOamData_83AC9D0, gUnknown_83E2B8C, NULL, gDummySpriteAffineAnimTable, sub_80A2920 -gUnknown_83E2E88:: - .incbin "baserom.gba", 0x3E2E88, 0x18 +gUnknown_83E2BAC:: @ 83E2BAC + spr_template 10159, 10159, gOamData_83AC9C8, gUnknown_83E2B90, NULL, gDummySpriteAffineAnimTable, sub_80A29EC -gUnknown_83E2EA0:: - .incbin "baserom.gba", 0x3E2EA0, 0x30 +gUnknown_83E2BC4:: @ 83E2BC4 + .incbin "baserom.gba", 0x3E2BC4, 0x3C -gUnknown_83E2ED0:: - .incbin "baserom.gba", 0x3E2ED0, 0x18 +gUnknown_83E2C00:: @ 83E2C00 + .incbin "baserom.gba", 0x3E2C00, 0x8 -gUnknown_83E2EE8:: - .incbin "baserom.gba", 0x3E2EE8, 0x78 +gUnknown_83E2C08:: @ 83E2C08 + spr_template 10063, 10063, gOamData_83AC9D0, gUnknown_83E2C00, NULL, gDummySpriteAffineAnimTable, sub_80A2AA4 -gUnknown_83E2F60:: - .incbin "baserom.gba", 0x3E2F60, 0x18 +gUnknown_83E2C20:: @ 83E2C20 + spr_template 10063, 10063, gOamData_83AC9D0, gUnknown_83E2C00, NULL, gDummySpriteAffineAnimTable, AnimMoveTwisterParticle + +gUnknown_83E2C38:: @ 83E2C38 + .incbin "baserom.gba", 0x3E2C38, 0x14 + +gUnknown_83E2C4C:: @ 83E2C4C + .incbin "baserom.gba", 0x3E2C4C, 0x4 + +gUnknown_83E2C50:: @ 83E2C50 + spr_template 10160, 10160, gOamData_83AC9F8, gUnknown_83E2C4C, NULL, gDummySpriteAffineAnimTable, sub_80A2B9C + +gUnknown_83E2C68:: @ 83E2C68 + .incbin "baserom.gba", 0x3E2C68, 0x10 + +gUnknown_83E2C78:: @ 83E2C78 + .incbin "baserom.gba", 0x3E2C78, 0x4 + +gUnknown_83E2C7C:: @ 83E2C7C + spr_template 10174, 10174, gOamData_83ACA38, gDummySpriteAnimTable, NULL, gUnknown_83E2C78, sub_80A2B9C + +gUnknown_83E2C94:: @ 83E2C94 + .incbin "baserom.gba", 0x3E2C94, 0x28 + +gUnknown_83E2CBC:: @ 83E2CBC + .incbin "baserom.gba", 0x3E2CBC, 0x48 + +gUnknown_83E2D04:: @ 83E2D04 + .incbin "baserom.gba", 0x3E2D04, 0x8 + +gUnknown_83E2D0C:: @ 83E2D0C + spr_template 10186, 10186, gOamData_83ACA60, gUnknown_83E2CBC, NULL, gUnknown_83E2D04, sub_80A2E28 + +gUnknown_83E2D24:: @ 83E2D24 + .incbin "baserom.gba", 0x3E2D24, 0x28 + +gUnknown_83E2D4C:: @ 83E2D4C + .incbin "baserom.gba", 0x3E2D4C, 0x8 + +gUnknown_83E2D54:: @ 83E2D54 + spr_template 10147, 10147, gOamData_83ACA90, gSpriteAnimTable_83E2A40, NULL, gUnknown_83E2D4C, sub_80A3098 + +gUnknown_83E2D6C:: @ 83E2D6C + .incbin "baserom.gba", 0x3E2D6C, 0x48 + +gUnknown_83E2DB4:: @ 83E2DB4 + .incbin "baserom.gba", 0x3E2DB4, 0x10 + +gUnknown_83E2DC4:: @ 83E2DC4 + spr_template 10223, 10223, gOamData_83AC9D8, gUnknown_83E2DB4, NULL, gDummySpriteAffineAnimTable, sub_80A3168 + +gUnknown_83E2DDC:: @ 83E2DDC + spr_template 10223, 10223, gOamData_83AC9D8, gUnknown_83E2DB4, NULL, gDummySpriteAffineAnimTable, sub_80A31EC + +gUnknown_83E2DF4:: @ 83E2DF4 + .incbin "baserom.gba", 0x3E2DF4, 0xC + +gUnknown_83E2E00:: @ 83E2E00 + .incbin "baserom.gba", 0x3E2E00, 0x4 + +gUnknown_83E2E04:: @ 83E2E04 + spr_template 10147, 10147, gOamData_83AC9C8, gUnknown_83E2E00, NULL, gDummySpriteAffineAnimTable, sub_80A3334 + +gUnknown_83E2E1C:: @ 83E2E1C + .incbin "baserom.gba", 0x3E2E1C, 0x8 + +gUnknown_83E2E24:: @ 83E2E24 + .incbin "baserom.gba", 0x3E2E24, 0x5C + +gUnknown_83E2E80:: @ 83E2E80 + .incbin "baserom.gba", 0x3E2E80, 0x8 + +gUnknown_83E2E88:: @ 83E2E88 + spr_template 10224, 10224, gOamData_83ACA38, gUnknown_83E2E24, NULL, gUnknown_83E2E80, sub_80A3518 + +gUnknown_83E2EA0:: @ 83E2EA0 + spr_template 10224, 10224, gOamData_83ACA38, gUnknown_83E2E24, NULL, gUnknown_83E2E80, sub_80A35F4 + +gUnknown_83E2EB8:: @ 83E2EB8 + .incbin "baserom.gba", 0x3E2EB8, 0x14 + +gUnknown_83E2ECC:: @ 83E2ECC + .incbin "baserom.gba", 0x3E2ECC, 0x4 + +gUnknown_83E2ED0:: @ 83E2ED0 + spr_template 10195, 10195, gOamData_83AC9D0, gUnknown_83E2ECC, NULL, gDummySpriteAffineAnimTable, sub_80A3670 + +gUnknown_83E2EE8:: @ 83E2EE8 + spr_template 10224, 10224, gOamData_83ACA38, gUnknown_83E2E24, NULL, gUnknown_83E2E80, sub_80A36B4 + +gUnknown_83E2F00:: @ 83E2F00 + .incbin "baserom.gba", 0x3E2F00, 0x50 + +gUnknown_83E2F50:: @ 83E2F50 + .incbin "baserom.gba", 0x3E2F50, 0x10 + +gUnknown_83E2F60:: @ 83E2F60 + spr_template 10224, 10224, gOamData_83ACA38, gUnknown_83E2E24, NULL, gUnknown_83E2F50, sub_80A37BC gUnknown_83E2F78:: @ 83E2F78 - .incbin "baserom.gba", 0x3E2F78, 0x78 + .incbin "baserom.gba", 0x3E2F78, 0x5C + +gUnknown_83E2FD4:: @ 83E2FD4 + .incbin "baserom.gba", 0x3E2FD4, 0x1C gUnknown_83E2FF0:: @ 83E2FF0 - .incbin "baserom.gba", 0x3E2FF0, 0x34 + spr_template 10063, 10063, gOamData_83AC9D0, gUnknown_83E2FD4, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy -gUnknown_83E3024:: - .incbin "baserom.gba", 0x3E3024, 0x18 +gUnknown_83E3008:: @ 83E3008 + .incbin "baserom.gba", 0x3E3008, 0x18 -gUnknown_83E303C:: - .incbin "baserom.gba", 0x3E303C, 0x6C +gUnknown_83E3020:: @ 83E3020 + .incbin "baserom.gba", 0x3E3020, 0x4 -gUnknown_83E30A8:: - .incbin "baserom.gba", 0x3E30A8, 0x18 +gUnknown_83E3024:: @ 83E3024 + spr_template 10159, 10159, gOamData_83AC9C8, gUnknown_83E2B90, NULL, gDummySpriteAffineAnimTable, sub_80A4040 -gUnknown_83E30C0:: - .incbin "baserom.gba", 0x3E30C0, 0x18 +gUnknown_83E303C:: @ 83E303C + spr_template 10159, 10159, gOamData_83ACA30, gUnknown_83E2B8C, NULL, gUnknown_83E3020, sub_80A4040 -gUnknown_83E30D8:: - .incbin "baserom.gba", 0x3E30D8, 0x18 +gUnknown_83E3054:: @ 83E3054 + .incbin "baserom.gba", 0x3E3054, 0x48 + +gUnknown_83E309C:: @ 83E309C + .incbin "baserom.gba", 0x3E309C, 0x4 + +gUnknown_83E30A0:: @ 83E30A0 + .incbin "baserom.gba", 0x3E30A0, 0x4 + +gUnknown_83E30A4:: @ 83E30A4 + .incbin "baserom.gba", 0x3E30A4, 0x4 + +gUnknown_83E30A8:: @ 83E30A8 + spr_template 10271, 10271, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E309C, sub_80A4040 + +gUnknown_83E30C0:: @ 83E30C0 + spr_template 10271, 10271, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E30A0, sub_80A4040 + +gUnknown_83E30D8:: @ 83E30D8 + spr_template 10271, 10271, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E30A4, sub_80A4040 gUnknown_83E30F0:: @ 83E30F0 .incbin "baserom.gba", 0x3E30F0, 0x10 -gUnknown_83E3100:: - .incbin "baserom.gba", 0x3E3100, 0x48 +gUnknown_83E3100:: @ 83E3100 + spr_template 10266, 10266, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A4298 -gUnknown_83E3148:: - .incbin "baserom.gba", 0x3E3148, 0x18 +gUnknown_83E3118:: @ 83E3118 + .incbin "baserom.gba", 0x3E3118, 0x28 -gUnknown_83E3160:: - .incbin "baserom.gba", 0x3E3160, 0x134 +gUnknown_83E3140:: @ 83E3140 + .incbin "baserom.gba", 0x3E3140, 0x8 -gUnknown_83E3294:: - .incbin "baserom.gba", 0x3E3294, 0x18 +gUnknown_83E3148:: @ 83E3148 + spr_template 10056, 10056, gOamData_83AC9D8, gUnknown_83E3140, NULL, gDummySpriteAffineAnimTable, sub_80A4450 -gUnknown_83E32AC:: - .incbin "baserom.gba", 0x3E32AC, 0xA8 +gUnknown_83E3160:: @ 83E3160 + spr_template 10287, 10287, gOamData_83AC9D8, gUnknown_83E3140, NULL, gDummySpriteAffineAnimTable, sub_80A4450 -gUnknown_83E3354:: - .incbin "baserom.gba", 0x3E3354, 0x60 +gUnknown_83E3178:: @ 83E3178 + .incbin "baserom.gba", 0x3E3178, 0x118 -gUnknown_83E33B4:: - .incbin "baserom.gba", 0x3E33B4, 0x40 +gUnknown_83E3290:: @ 83E3290 + .incbin "baserom.gba", 0x3E3290, 0x4 -gUnknown_83E33F4:: - .incbin "baserom.gba", 0x3E33F4, 0x18 +gUnknown_83E3294:: @ 83E3294 + spr_template 10138, 10138, gOamData_83ACAF8, gUnknown_83E3290, NULL, gDummySpriteAffineAnimTable, sub_80A44E0 -gUnknown_83E340C:: - .incbin "baserom.gba", 0x3E340C, 0xF4 +gUnknown_83E32AC:: @ 83E32AC + spr_template 10138, 10138, gOamData_83ACAF8, gUnknown_83E3290, NULL, gDummySpriteAffineAnimTable, sub_80A4588 -gUnknown_83E3500:: - .incbin "baserom.gba", 0x3E3500, 0x18 +gUnknown_83E32C4:: @ 83E32C4 + .incbin "baserom.gba", 0x3E32C4, 0x90 -gUnknown_83E3518:: - .incbin "baserom.gba", 0x3E3518, 0x18 +gUnknown_83E3354:: @ 83E3354 + spr_template 10280, 10280, gOamData_83ACB00, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A48F0 -gUnknown_83E3530:: - .incbin "baserom.gba", 0x3E3530, 0x18 +gUnknown_83E336C:: @ 83E336C + .incbin "baserom.gba", 0x3E336C, 0x40 + +gUnknown_83E33AC:: @ 83E33AC + .incbin "baserom.gba", 0x3E33AC, 0x8 + +gUnknown_83E33B4:: @ 83E33B4 + spr_template 10099, 10099, gOamData_83ACB58, gDummySpriteAnimTable, NULL, gUnknown_83E33AC, sub_80A4ACC + +gUnknown_83E33CC:: @ 83E33CC + .incbin "baserom.gba", 0x3E33CC, 0x24 + +gUnknown_83E33F0:: @ 83E33F0 + .incbin "baserom.gba", 0x3E33F0, 0x4 + +gUnknown_83E33F4:: @ 83E33F4 + spr_template 10049, 10049, gOamData_83AC9D8, gUnknown_83E33F0, NULL, gDummySpriteAffineAnimTable, sub_80A4D0C + +gUnknown_83E340C:: @ 83E340C + spr_template 10049, 10049, gOamData_83AC9D8, gUnknown_83E33F0, NULL, gDummySpriteAffineAnimTable, sub_80A4D5C + +gUnknown_83E3424:: @ 83E3424 + .incbin "baserom.gba", 0x3E3424, 0x70 + +gUnknown_83E3494:: @ 83E3494 + .incbin "baserom.gba", 0x3E3494, 0x64 + +gUnknown_83E34F8:: @ 83E34F8 + .incbin "baserom.gba", 0x3E34F8, 0x8 + +gUnknown_83E3500:: @ 83E3500 + spr_template 10228, 10228, gOamData_83ACA38, gUnknown_83E3494, NULL, gUnknown_83E34F8, sub_80A4EF4 + +gUnknown_83E3518:: @ 83E3518 + spr_template 10014, 10014, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A4FAC + +gUnknown_83E3530:: @ 83E3530 + spr_template 10014, 10014, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A5298 gUnknown_83E3548:: @ 83E3548 .incbin "baserom.gba", 0x3E3548, 0x8 -gUnknown_83E3550:: - .incbin "baserom.gba", 0x3E3550, 0x54 +gUnknown_83E3550:: @ 83E3550 + spr_template 0, 0, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A5340 + spr_template 0, 0, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A5590 -gUnknown_83E35A4:: - .incbin "baserom.gba", 0x3E35A4, 0x18 +gUnknown_83E3580:: @ 83E3580 + .incbin "baserom.gba", 0x3E3580, 0x1C -gUnknown_83E35BC:: - .incbin "baserom.gba", 0x3E35BC, 0x18 +gUnknown_83E359C:: @ 83E359C + .incbin "baserom.gba", 0x3E359C, 0x8 -gUnknown_83E35D4:: - .incbin "baserom.gba", 0x3E35D4, 0x30 +gUnknown_83E35A4:: @ 83E35A4 + spr_template 10183, 10183, gOamData_83AC9D8, gUnknown_83E359C, NULL, gDummySpriteAffineAnimTable, sub_80A5940 -gUnknown_83E3604:: - .incbin "baserom.gba", 0x3E3604, 0x58 +gUnknown_83E35BC:: @ 83E35BC + spr_template 10286, 10286, gOamData_83AC9D8, gUnknown_83E359C, NULL, gDummySpriteAffineAnimTable, sub_80A59A8 -gUnknown_83E365C:: - .incbin "baserom.gba", 0x3E365C, 0x18 +gUnknown_83E35D4:: @ 83E35D4 + spr_template 10286, 10286, gOamData_83AC9D8, gUnknown_83E359C, NULL, gDummySpriteAffineAnimTable, sub_80A59F0 -gUnknown_83E3674:: - .incbin "baserom.gba", 0x3E3674, 0x34 +gUnknown_83E35EC:: @ 83E35EC + .incbin "baserom.gba", 0x3E35EC, 0x14 -gUnknown_83E36A8:: - .incbin "baserom.gba", 0x3E36A8, 0x44 +gUnknown_83E3600:: @ 83E3600 + .incbin "baserom.gba", 0x3E3600, 0x4 -gUnknown_83E36EC:: - .incbin "baserom.gba", 0x3E36EC, 0x30 +gUnknown_83E3604:: @ 83E3604 + spr_template 10184, 10184, gOamData_83ACA18, gUnknown_83E3600, NULL, gDummySpriteAffineAnimTable, sub_80A5AD8 -gUnknown_83E371C:: - .incbin "baserom.gba", 0x3E371C, 0x18 +gUnknown_83E361C:: @ 83E361C + .incbin "baserom.gba", 0x3E361C, 0x3C + +gUnknown_83E3658:: @ 83E3658 + .incbin "baserom.gba", 0x3E3658, 0x4 + +gUnknown_83E365C:: @ 83E365C + spr_template 10185, 10185, gOamData_83AC9D8, gUnknown_83E3658, NULL, gDummySpriteAffineAnimTable, sub_80A5B7C + +gUnknown_83E3674:: @ 83E3674 + spr_template 10017, 10017, gOamData_83AC9C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, TranslateAnimSpriteToTargetMonLocation + +gUnknown_83E368C:: @ 83E368C + .incbin "baserom.gba", 0x3E368C, 0x18 + +gUnknown_83E36A4:: @ 83E36A4 + .incbin "baserom.gba", 0x3E36A4, 0x4 + +gUnknown_83E36A8:: @ 83E36A8 + spr_template 10030, 10030, gOamData_83AC9D8, gUnknown_83E36A4, NULL, gDummySpriteAffineAnimTable, AnimSpriteOnMonPos + +gUnknown_83E36C0:: @ 83E36C0 + .incbin "baserom.gba", 0x3E36C0, 0x14 + +gUnknown_83E36D4:: @ 83E36D4 + .incbin "baserom.gba", 0x3E36D4, 0x14 + +gUnknown_83E36E8:: @ 83E36E8 + .incbin "baserom.gba", 0x3E36E8, 0x4 + +gUnknown_83E36EC:: @ 83E36EC + spr_template 10018, 10018, gOamData_83ACBA8, gUnknown_83E36D4, NULL, gUnknown_83E36E8, sub_80A5C68 + +gUnknown_83E3704:: @ 83E3704 + .incbin "baserom.gba", 0x3E3704, 0x14 + +gUnknown_83E3718:: @ 83E3718 + .incbin "baserom.gba", 0x3E3718, 0x4 + +gUnknown_83E371C:: @ 83E371C + spr_template 10018, 10018, gOamData_83ACBA8, gUnknown_83E3718, NULL, gUnknown_83E36E8, sub_80A5D4C gUnknown_83E3734:: @ 83E3734 - .incbin "baserom.gba", 0x3E3734, 0x30 + spr_template 10194, 10194, gOamData_83ACB00, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A5EE0 + +gUnknown_83E374C:: @ 83E374C + .incbin "baserom.gba", 0x3E374C, 0x14 + +gUnknown_83E3760:: @ 83E3760 + .incbin "baserom.gba", 0x3E3760, 0x4 gUnknown_83E3764:: @ 83E3764 - .incbin "baserom.gba", 0x3E3764, 0x40 + spr_template 10195, 10195, gOamData_83AC9D0, gUnknown_83E3760, NULL, gDummySpriteAffineAnimTable, sub_80A5F40 -gUnknown_83E37A4:: - .incbin "baserom.gba", 0x3E37A4, 0x18 +gUnknown_83E377C:: @ 83E377C + .incbin "baserom.gba", 0x3E377C, 0x24 -gUnknown_83E37BC:: - .incbin "baserom.gba", 0x3E37BC, 0x30 +gUnknown_83E37A0:: @ 83E37A0 + .incbin "baserom.gba", 0x3E37A0, 0x4 -gUnknown_83E37EC:: - .incbin "baserom.gba", 0x3E37EC, 0x94 +gUnknown_83E37A4:: @ 83E37A4 + spr_template 10031, 10031, gOamData_83AC9D8, gUnknown_83E37A0, NULL, gDummySpriteAffineAnimTable, AnimSpriteOnMonPos -gUnknown_83E3880:: - .incbin "baserom.gba", 0x3E3880, 0x18 +gUnknown_83E37BC:: @ 83E37BC + spr_template 10020, 10020, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A6244 + +gUnknown_83E37D4:: @ 83E37D4 + .incbin "baserom.gba", 0x3E37D4, 0x14 + +gUnknown_83E37E8:: @ 83E37E8 + .incbin "baserom.gba", 0x3E37E8, 0x4 + +gUnknown_83E37EC:: @ 83E37EC + spr_template 10192, 10192, gOamData_83AC9D8, gUnknown_83E37E8, NULL, gDummySpriteAffineAnimTable, sub_80A65CC + +gUnknown_83E3804:: @ 83E3804 + .incbin "baserom.gba", 0x3E3804, 0x8 + +gOamData_83E380C:: + .incbin "baserom.gba", 0x3E380C, 0x8 + +gUnknown_83E3814:: @ 83E3814 + .incbin "baserom.gba", 0x3E3814, 0x8 + +gUnknown_83E381C:: @ 83E381C + .incbin "baserom.gba", 0x3E381C, 0x8 + +gUnknown_83E3824:: @ 83E3824 + .incbin "baserom.gba", 0x3E3824, 0x8 + +gUnknown_83E382C:: @ 83E382C + .incbin "baserom.gba", 0x3E382C, 0x18 + +gUnknown_83E3844:: @ 83E3844 + spr_template 14340, 2110, gOamData_83E380C, gUnknown_83E3814, gUnknown_83E381C, gUnknown_83E3824, gUnknown_83E382C + +gUnknown_83E385C:: @ 83E385C + .incbin "baserom.gba", 0x3E385C, 0x20 + +gUnknown_83E387C:: @ 83E387C + .incbin "baserom.gba", 0x3E387C, 0x4 + +gUnknown_83E3880:: @ 83E3880 + spr_template 10072, 10072, gOamData_83ACA90, gUnknown_83E3844, NULL, gUnknown_83E387C, sub_80A66D4 gUnknown_83E3898:: @ 83E3898 .incbin "baserom.gba", 0x3E3898, 0x30 -gUnknown_83E38C8:: - .incbin "baserom.gba", 0x3E38C8, 0x18 +gUnknown_83E38C8:: @ 83E38C8 + spr_template 10072, 10072, gOamData_83ACA90, gUnknown_83E3844, NULL, gUnknown_83E387C, sub_80A68B0 -gUnknown_83E38E0:: - .incbin "baserom.gba", 0x3E38E0, 0x34 +gUnknown_83E38E0:: @ 83E38E0 + spr_template 10193, 10193, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A69B8 -gUnknown_83E3914:: - .incbin "baserom.gba", 0x3E3914, 0x78 +gUnknown_83E38F8:: @ 83E38F8 + .incbin "baserom.gba", 0x3E38F8, 0x18 + +gUnknown_83E3910:: @ 83E3910 + .incbin "baserom.gba", 0x3E3910, 0x4 + +gUnknown_83E3914:: @ 83E3914 + spr_template 10072, 10072, gOamData_83ACA90, gUnknown_83E3844, NULL, gUnknown_83E3910, sub_80A6A28 + +gUnknown_83E392C:: @ 83E392C + .incbin "baserom.gba", 0x3E392C, 0x50 + +gUnknown_83E397C:: @ 83E397C + .incbin "baserom.gba", 0x3E397C, 0x10 gUnknown_83E398C:: @ 83E398C - .incbin "baserom.gba", 0x3E398C, 0xA8 + spr_template 10209, 10209, gOamData_83AC9D8, gUnknown_83E397C, NULL, gDummySpriteAffineAnimTable, sub_80A6B64 -gUnknown_83E3A34:: - .incbin "baserom.gba", 0x3E3A34, 0x18 +gUnknown_83E39A4:: @ 83E39A4 + .incbin "baserom.gba", 0x3E39A4, 0x88 -gUnknown_83E3A4C:: - .incbin "baserom.gba", 0x3E3A4C, 0x78 +gUnknown_83E3A2C:: @ 83E3A2C + .incbin "baserom.gba", 0x3E3A2C, 0x8 -gUnknown_83E3AC4:: - .incbin "baserom.gba", 0x3E3AC4, 0xF8 +gUnknown_83E3A34:: @ 83E3A34 + spr_template 10064, 10064, gOamData_83ACA98, gDummySpriteAnimTable, NULL, gUnknown_83E3A2C, sub_80A6C08 -gUnknown_83E3BBC:: - .incbin "baserom.gba", 0x3E3BBC, 0x3C +gUnknown_83E3A4C:: @ 83E3A4C + spr_template 10064, 10064, gOamData_83ACA38, gDummySpriteAnimTable, NULL, gUnknown_83E3A2C, sub_80A6C84 -gUnknown_83E3BF8:: - .incbin "baserom.gba", 0x3E3BF8, 0x18 +gUnknown_83E3A64:: @ 83E3A64 + .incbin "baserom.gba", 0x3E3A64, 0x50 -gUnknown_83E3C10:: - .incbin "baserom.gba", 0x3E3C10, 0x18 +gUnknown_83E3AB4:: @ 83E3AB4 + .incbin "baserom.gba", 0x3E3AB4, 0x10 + +gUnknown_83E3AC4:: @ 83E3AC4 + spr_template 10214, 10214, gOamData_83AC9D8, gUnknown_83E3AB4, NULL, gDummySpriteAffineAnimTable, sub_80A6D90 + spr_template 10064, 10064, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A6E48 + +gUnknown_83E3AF4:: @ 83E3AF4 + .incbin "baserom.gba", 0x3E3AF4, 0xC4 + +gUnknown_83E3BB8:: @ 83E3BB8 + .incbin "baserom.gba", 0x3E3BB8, 0x4 + +gUnknown_83E3BBC:: @ 83E3BBC + spr_template 10075, 10075, gOamData_83AC9F8, gUnknown_83E3BB8, NULL, gDummySpriteAffineAnimTable, sub_80A71D8 + +gUnknown_83E3BD4:: @ 83E3BD4 + .incbin "baserom.gba", 0x3E3BD4, 0x20 + +gUnknown_83E3BF4:: @ 83E3BF4 + .incbin "baserom.gba", 0x3E3BF4, 0x4 + +gUnknown_83E3BF8:: @ 83E3BF8 + spr_template 10005, 10005, gOamData_83ACBA0, gDummySpriteAnimTable, NULL, gUnknown_83E3BF4, sub_80A727C + +gUnknown_83E3C10:: @ 83E3C10 + spr_template 10003, 10003, gOamData_83ACBD8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A72C8 gUnknown_83E3C28:: @ 83E3C28 - .incbin "baserom.gba", 0x3E3C28, 0x78 + spr_template 10003, 10003, gOamData_83ACB18, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A74A4 -gUnknown_83E3CA0:: - .incbin "baserom.gba", 0x3E3CA0, 0x18 +gUnknown_83E3C40:: @ 83E3C40 + .incbin "baserom.gba", 0x3E3C40, 0x58 -gUnknown_83E3CB8:: - .incbin "baserom.gba", 0x3E3CB8, 0x18 +gUnknown_83E3C98:: @ 83E3C98 + .incbin "baserom.gba", 0x3E3C98, 0x4 -gUnknown_83E3CD0:: - .incbin "baserom.gba", 0x3E3CD0, 0x18 +gUnknown_83E3C9C:: @ 83E3C9C + .incbin "baserom.gba", 0x3E3C9C, 0x4 -gUnknown_83E3CE8:: - .incbin "baserom.gba", 0x3E3CE8, 0x18 +gUnknown_83E3CA0:: @ 83E3CA0 + spr_template 10163, 10163, gOamData_83ACAD8, gDummySpriteAnimTable, NULL, gUnknown_83E3C98, TranslateAnimSpriteToTargetMonLocation -gUnknown_83E3D00:: - .incbin "baserom.gba", 0x3E3D00, 0x18 +gUnknown_83E3CB8:: @ 83E3CB8 + spr_template 10164, 10164, gOamData_83ACAD8, gDummySpriteAnimTable, NULL, gUnknown_83E3C98, TranslateAnimSpriteToTargetMonLocation + +gUnknown_83E3CD0:: @ 83E3CD0 + spr_template 10260, 10260, gOamData_83ACAE0, gDummySpriteAnimTable, NULL, gUnknown_83E3C98, TranslateAnimSpriteToTargetMonLocation + +gUnknown_83E3CE8:: @ 83E3CE8 + spr_template 10288, 10288, gOamData_83ACAD8, gDummySpriteAnimTable, NULL, gUnknown_83E3C9C, sub_80AC6D8 + +gUnknown_83E3D00:: @ 83E3D00 + spr_template 10175, 10175, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, AnimThrowProjectile gUnknown_83E3D18:: @ 83E3D18 - .incbin "baserom.gba", 0x3E3D18, 0x38 + spr_template 10178, 10178, gOamData_83ACB00, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A79E8 -gUnknown_83E3D50:: - .incbin "baserom.gba", 0x3E3D50, 0x18 +gUnknown_83E3D30:: @ 83E3D30 + .incbin "baserom.gba", 0x3E3D30, 0x8 -gUnknown_83E3D68:: - .incbin "baserom.gba", 0x3E3D68, 0x2C +gUnknown_83E3D38:: @ 83E3D38 + .incbin "baserom.gba", 0x3E3D38, 0x14 -gUnknown_83E3D94:: - .incbin "baserom.gba", 0x3E3D94, 0x34 +gUnknown_83E3D4C:: @ 83E3D4C + .incbin "baserom.gba", 0x3E3D4C, 0x4 -gUnknown_83E3DC8:: - .incbin "baserom.gba", 0x3E3DC8, 0x40 +gUnknown_83E3D50:: @ 83E3D50 + spr_template 10100, 10100, gOamData_83ACA30, gUnknown_83E3D38, NULL, gDummySpriteAffineAnimTable, sub_80A7A88 -gUnknown_83E3E08:: - .incbin "baserom.gba", 0x3E3E08, 0x40 +gUnknown_83E3D68:: @ 83E3D68 + spr_template 10100, 10100, gOamData_83ACA30, gUnknown_83E3D38, NULL, gUnknown_83E3D4C, sub_80A7B3C -gUnknown_83E3E48:: - .incbin "baserom.gba", 0x3E3E48, 0x18 +gUnknown_83E3D80:: @ 83E3D80 + .incbin "baserom.gba", 0x3E3D80, 0x10 + +gUnknown_83E3D90:: @ 83E3D90 + .incbin "baserom.gba", 0x3E3D90, 0x4 + +gUnknown_83E3D94:: @ 83E3D94 + spr_template 10006, 10006, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E3D90, sub_80A7BC4 + +gUnknown_83E3DAC:: @ 83E3DAC + .incbin "baserom.gba", 0x3E3DAC, 0x18 + +gUnknown_83E3DC4:: @ 83E3DC4 + .incbin "baserom.gba", 0x3E3DC4, 0x4 + +gUnknown_83E3DC8:: @ 83E3DC8 + spr_template 10009, 10009, gOamData_83ACA80, gDummySpriteAnimTable, NULL, gUnknown_83E3DC4, sub_80A7D04 + +gUnknown_83E3DE0:: @ 83E3DE0 + .incbin "baserom.gba", 0x3E3DE0, 0x20 + +gUnknown_83E3E00:: @ 83E3E00 + .incbin "baserom.gba", 0x3E3E00, 0x8 + +gUnknown_83E3E08:: @ 83E3E08 + spr_template 10138, 10138, gOamData_83ACAF8, gUnknown_83E3E00, NULL, gDummySpriteAffineAnimTable, sub_80A7D64 + +gUnknown_83E3E20:: @ 83E3E20 + .incbin "baserom.gba", 0x3E3E20, 0x20 + +gUnknown_83E3E40:: @ 83E3E40 + .incbin "baserom.gba", 0x3E3E40, 0x8 + +gUnknown_83E3E48:: @ 83E3E48 + spr_template 10138, 10138, gOamData_83ACAF8, gUnknown_83E3E40, NULL, gDummySpriteAffineAnimTable, sub_80A7E14 gUnknown_83E3E60:: @ 83E3E60 .incbin "baserom.gba", 0x3E3E60, 0x20 gUnknown_83E3E80:: @ 83E3E80 - .incbin "baserom.gba", 0x3E3E80, 0x50 + .incbin "baserom.gba", 0x3E3E80, 0x48 -gUnknown_83E3ED0:: - .incbin "baserom.gba", 0x3E3ED0, 0x34 +gUnknown_83E3EC8:: @ 83E3EC8 + .incbin "baserom.gba", 0x3E3EC8, 0x8 -gUnknown_83E3F04:: - .incbin "baserom.gba", 0x3E3F04, 0x18 +gUnknown_83E3ED0:: @ 83E3ED0 + spr_template 10086, 10086, gOamData_83AC9D0, gUnknown_83E3EC8, NULL, gDummySpriteAffineAnimTable, sub_80A851C + +gUnknown_83E3EE8:: @ 83E3EE8 + .incbin "baserom.gba", 0x3E3EE8, 0x18 + +gUnknown_83E3F00:: @ 83E3F00 + .incbin "baserom.gba", 0x3E3F00, 0x4 + +gUnknown_83E3F04:: @ 83E3F04 + spr_template 10087, 10087, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E3F00, sub_80A85AC gUnknown_83E3F1C:: @ 83E3F1C .incbin "baserom.gba", 0x3E3F1C, 0x30 -gUnknown_83E3F4C:: - .incbin "baserom.gba", 0x3E3F4C, 0x18 +gUnknown_83E3F4C:: @ 83E3F4C + spr_template 10002, 10002, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A8A1C -gUnknown_83E3F64:: - .incbin "baserom.gba", 0x3E3F64, 0x30 +gUnknown_83E3F64:: @ 83E3F64 + spr_template 10197, 10197, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8075F0C -gUnknown_83E3F94:: - .incbin "baserom.gba", 0x3E3F94, 0x94 +gUnknown_83E3F7C:: @ 83E3F7C + .incbin "baserom.gba", 0x3E3F7C, 0x14 -gUnknown_83E4028:: - .incbin "baserom.gba", 0x3E4028, 0x6C +gUnknown_83E3F90:: @ 83E3F90 + .incbin "baserom.gba", 0x3E3F90, 0x4 -gUnknown_83E4094:: - .incbin "baserom.gba", 0x3E4094, 0x34 +gUnknown_83E3F94:: @ 83E3F94 + spr_template 10198, 10198, gOamData_83AC9D8, gUnknown_83E3F90, NULL, gDummySpriteAffineAnimTable, AnimSpriteOnMonPos -gUnknown_83E40C8:: - .incbin "baserom.gba", 0x3E40C8, 0x18 +gUnknown_83E3FAC:: @ 83E3FAC + .incbin "baserom.gba", 0x3E3FAC, 0x70 -gUnknown_83E40E0:: - .incbin "baserom.gba", 0x3E40E0, 0x18 +gUnknown_83E401C:: @ 83E401C + .incbin "baserom.gba", 0x3E401C, 0xC -gUnknown_83E40F8:: - .incbin "baserom.gba", 0x3E40F8, 0x18 +gUnknown_83E4028:: @ 83E4028 + spr_template 10202, 10202, gOamData_83ACBB8, gDummySpriteAnimTable, NULL, gUnknown_83E401C, sub_80A8F38 -gUnknown_83E4110:: - .incbin "baserom.gba", 0x3E4110, 0x18 +gUnknown_83E4040:: @ 83E4040 + .incbin "baserom.gba", 0x3E4040, 0x48 + +gUnknown_83E4088:: @ 83E4088 + .incbin "baserom.gba", 0x3E4088, 0x8 + +gUnknown_83E4090:: @ 83E4090 + .incbin "baserom.gba", 0x3E4090, 0x4 + +gUnknown_83E4094:: @ 83E4094 + spr_template 10203, 10203, gOamData_83ACAA0, gDummySpriteAnimTable, NULL, gUnknown_83E4088, AnimSpriteOnMonPos + +gUnknown_83E40AC:: @ 83E40AC + .incbin "baserom.gba", 0x3E40AC, 0x18 + +gUnknown_83E40C4:: @ 83E40C4 + .incbin "baserom.gba", 0x3E40C4, 0x4 + +gUnknown_83E40C8:: @ 83E40C8 + spr_template 10203, 10203, gOamData_83ACBC0, gDummySpriteAnimTable, NULL, gUnknown_83E40C4, AnimSpriteOnMonPos + +gUnknown_83E40E0:: @ 83E40E0 + spr_template 10203, 10203, gOamData_83ACBC0, gDummySpriteAnimTable, NULL, gUnknown_83E4088, sub_80A8BC4 + +gUnknown_83E40F8:: @ 83E40F8 + spr_template 10203, 10203, gOamData_83ACBC0, gDummySpriteAnimTable, NULL, gUnknown_83E4090, sub_80A8CA4 + +gUnknown_83E4110:: @ 83E4110 + spr_template 10203, 10203, gOamData_83ACBC0, gDummySpriteAnimTable, NULL, gUnknown_83E4088, sub_80A8EE8 gUnknown_83E4128:: @ 83E4128 - .incbin "baserom.gba", 0x3E4128, 0x2C + .incbin "baserom.gba", 0x3E4128, 0x28 + +gUnknown_83E4150:: @ 83E4150 + .incbin "baserom.gba", 0x3E4150, 0x4 gUnknown_83E4154:: @ 83E4154 - .incbin "baserom.gba", 0x3E4154, 0x18 + spr_template 10207, 10207, gOamData_83AC9D0, gUnknown_83E4150, NULL, gDummySpriteAffineAnimTable, sub_80A9648 gUnknown_83E416C:: @ 83E416C - .incbin "baserom.gba", 0x3E416C, 0x44 + .incbin "baserom.gba", 0x3E416C, 0x40 -gUnknown_83E41B0:: - .incbin "baserom.gba", 0x3E41B0, 0x18 +gUnknown_83E41AC:: @ 83E41AC + .incbin "baserom.gba", 0x3E41AC, 0x4 + +gUnknown_83E41B0:: @ 83E41B0 + spr_template 10205, 10205, gOamData_83AC9D8, gUnknown_83E41AC, NULL, gDummySpriteAffineAnimTable, AnimSpriteOnMonPos gUnknown_83E41C8:: @ 83E41C8 .incbin "baserom.gba", 0x3E41C8, 0x8 -gUnknown_83E41D0:: - .incbin "baserom.gba", 0x3E41D0, 0x18 +gUnknown_83E41D0:: @ 83E41D0 + spr_template 10206, 10206, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A97E8 -gUnknown_83E41E8:: - .incbin "baserom.gba", 0x3E41E8, 0x18 +gUnknown_83E41E8:: @ 83E41E8 + spr_template 10210, 10210, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A9860 gUnknown_83E4200:: @ 83E4200 .incbin "baserom.gba", 0x3E4200, 0x18 -gUnknown_83E4218:: - .incbin "baserom.gba", 0x3E4218, 0x18 +gUnknown_83E4218:: @ 83E4218 + spr_template 10216, 10216, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A9B40 -gUnknown_83E4230:: - .incbin "baserom.gba", 0x3E4230, 0x18 +gUnknown_83E4230:: @ 83E4230 + spr_template 10216, 10216, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A9BC4 -gUnknown_83E4248:: - .incbin "baserom.gba", 0x3E4248, 0x34 +gUnknown_83E4248:: @ 83E4248 + spr_template 10216, 10216, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A9C4C -gUnknown_83E427C:: - .incbin "baserom.gba", 0x3E427C, 0x18 +gUnknown_83E4260:: @ 83E4260 + .incbin "baserom.gba", 0x3E4260, 0x18 -gUnknown_83E4294:: - .incbin "baserom.gba", 0x3E4294, 0x34 +gUnknown_83E4278:: @ 83E4278 + .incbin "baserom.gba", 0x3E4278, 0x4 -gUnknown_83E42C8:: - .incbin "baserom.gba", 0x3E42C8, 0x34 +gUnknown_83E427C:: @ 83E427C + spr_template 10217, 10217, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E4278, sub_80AA174 -gUnknown_83E42FC:: - .incbin "baserom.gba", 0x3E42FC, 0x24 +gUnknown_83E4294:: @ 83E4294 + spr_template 10217, 10217, gOamData_83ACA90, gDummySpriteAnimTable, NULL, gUnknown_83E4278, sub_80AA2B0 -gUnknown_83E4320:: - .incbin "baserom.gba", 0x3E4320, 0x18 +gUnknown_83E42AC:: @ 83E42AC + .incbin "baserom.gba", 0x3E42AC, 0x18 -gUnknown_83E4338:: - .incbin "baserom.gba", 0x3E4338, 0x30 +gUnknown_83E42C4:: @ 83E42C4 + .incbin "baserom.gba", 0x3E42C4, 0x4 -gUnknown_83E4368:: - .incbin "baserom.gba", 0x3E4368, 0x48 +gUnknown_83E42C8:: @ 83E42C8 + spr_template 10237, 10237, gOamData_83ACA88, gDummySpriteAnimTable, NULL, gUnknown_83E42C4, sub_80AA37C -gUnknown_83E43B0:: - .incbin "baserom.gba", 0x3E43B0, 0x48 +gUnknown_83E42E0:: @ 83E42E0 + .incbin "baserom.gba", 0x3E42E0, 0x18 -gUnknown_83E43F8:: - .incbin "baserom.gba", 0x3E43F8, 0x18 +gUnknown_83E42F8:: @ 83E42F8 + .incbin "baserom.gba", 0x3E42F8, 0x4 + +gUnknown_83E42FC:: @ 83E42FC + spr_template 10218, 10218, gOamData_83AC9D0, gUnknown_83E42F8, NULL, gDummySpriteAffineAnimTable, sub_80AA3F0 + +gUnknown_83E4314:: @ 83E4314 + .incbin "baserom.gba", 0x3E4314, 0x8 + +gUnknown_83E431C:: @ 83E431C + .incbin "baserom.gba", 0x3E431C, 0x4 + +gUnknown_83E4320:: @ 83E4320 + spr_template 10220, 10220, gOamData_83AC9D8, gUnknown_83E431C, NULL, gDummySpriteAffineAnimTable, sub_80AA408 + +gUnknown_83E4338:: @ 83E4338 + spr_template 10219, 10219, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AA508 + +gUnknown_83E4350:: @ 83E4350 + .incbin "baserom.gba", 0x3E4350, 0x10 + +gUnknown_83E4360:: @ 83E4360 + .incbin "baserom.gba", 0x3E4360, 0x8 + +gUnknown_83E4368:: @ 83E4368 + spr_template 10221, 10221, gOamData_83AC9D8, gUnknown_83E4360, NULL, gDummySpriteAffineAnimTable, sub_80AA58C + +gUnknown_83E4380:: @ 83E4380 + .incbin "baserom.gba", 0x3E4380, 0x28 + +gUnknown_83E43A8:: @ 83E43A8 + .incbin "baserom.gba", 0x3E43A8, 0x8 + +gUnknown_83E43B0:: @ 83E43B0 + spr_template 10222, 10222, gOamData_83AC9D8, gUnknown_83E43A8, NULL, gDummySpriteAffineAnimTable, sub_80AA6B8 + +gUnknown_83E43C8:: @ 83E43C8 + .incbin "baserom.gba", 0x3E43C8, 0x28 + +gUnknown_83E43F0:: @ 83E43F0 + .incbin "baserom.gba", 0x3E43F0, 0x8 + +gUnknown_83E43F8:: @ 83E43F8 + spr_template 10215, 10215, gOamData_83AC9D8, gUnknown_83E43F0, NULL, gDummySpriteAffineAnimTable, sub_80AA708 gUnknown_83E4410:: @ 83E4410 .incbin "baserom.gba", 0x3E4410, 0x20 -gUnknown_83E4430:: - .incbin "baserom.gba", 0x3E4430, 0x54 +gUnknown_83E4430:: @ 83E4430 + spr_template 10225, 10225, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AA838 -gUnknown_83E4484:: - .incbin "baserom.gba", 0x3E4484, 0x18 +gUnknown_83E4448:: @ 83E4448 + .incbin "baserom.gba", 0x3E4448, 0x30 -gUnknown_83E449C:: - .incbin "baserom.gba", 0x3E449C, 0x40 +gUnknown_83E4478:: @ 83E4478 + .incbin "baserom.gba", 0x3E4478, 0xC -gUnknown_83E44DC:: - .incbin "baserom.gba", 0x3E44DC, 0x13BC +gUnknown_83E4484:: @ 83E4484 + spr_template 10206, 10206, gOamData_83ACA30, gUnknown_83E3844, NULL, gUnknown_83E4478, sub_80AA998 + +gUnknown_83E449C:: @ 83E449C + spr_template 10206, 10206, gOamData_83ACA30, gUnknown_83E3844, NULL, gUnknown_83E4478, sub_80AA938 + +gUnknown_83E44B4:: @ 83E44B4 + .incbin "baserom.gba", 0x3E44B4, 0x20 + +gUnknown_83E44D4:: @ 83E44D4 + .incbin "baserom.gba", 0x3E44D4, 0x8 + +gUnknown_83E44DC:: @ 83E44DC + spr_template 10244, 10244, gOamData_83ACBE0, gDummySpriteAnimTable, NULL, gUnknown_83E44D4, sub_80AAAE4 + +gUnknown_83E44F4:: @ 83E44F4 + .incbin "baserom.gba", 0x3E44F4, 0x13A0 + +gUnknown_83E5894:: @ 83E5894 + .incbin "baserom.gba", 0x3E5894, 0x4 gUnknown_83E5898:: @ 83E5898 - .incbin "baserom.gba", 0x3E5898, 0x48 + spr_template 10115, 10115, gOamData_83ACA18, gUnknown_83E5894, NULL, gDummySpriteAffineAnimTable, sub_80AAC54 -gUnknown_83E58E0:: - .incbin "baserom.gba", 0x3E58E0, 0x4C +gUnknown_83E58B0:: @ 83E58B0 + .incbin "baserom.gba", 0x3E58B0, 0x18 -gUnknown_83E592C:: - .incbin "baserom.gba", 0x3E592C, 0x2C +gUnknown_83E58C8:: @ 83E58C8 + .incbin "baserom.gba", 0x3E58C8, 0x14 + +gUnknown_83E58DC:: @ 83E58DC + .incbin "baserom.gba", 0x3E58DC, 0x4 + +gUnknown_83E58E0:: @ 83E58E0 + spr_template 10146, 10146, gOamData_83ACB50, gUnknown_83E58DC, NULL, gUnknown_83E58C8, sub_80AAC98 + +gUnknown_83E58F8:: @ 83E58F8 + .incbin "baserom.gba", 0x3E58F8, 0x10 + +gUnknown_83E5908:: @ 83E5908 + .incbin "baserom.gba", 0x3E5908, 0x20 + +gUnknown_83E5928:: @ 83E5928 + .incbin "baserom.gba", 0x3E5928, 0x4 + +gUnknown_83E592C:: @ 83E592C + spr_template 10140, 10140, gOamData_83ACAC8, gUnknown_83E5908, NULL, gUnknown_83E5928, sub_80AAE84 + +gUnknown_83E5944:: @ 83E5944 + .incbin "baserom.gba", 0x3E5944, 0x14 gUnknown_83E5958:: @ 83E5958 .incbin "baserom.gba", 0x3E5958, 0x4 -gUnknown_83E595C:: - .incbin "baserom.gba", 0x3E595C, 0x18 +gUnknown_83E595C:: @ 83E595C + spr_template 10149, 10149, gOamData_83ACAF0, gUnknown_83E5958, NULL, gDummySpriteAffineAnimTable, sub_80AB024 -gUnknown_83E5974:: - .incbin "baserom.gba", 0x3E5974, 0x18 +gUnknown_83E5974:: @ 83E5974 + spr_template 10259, 10259, gOamData_83ACAF0, gUnknown_83E5958, NULL, gDummySpriteAffineAnimTable, sub_80AB024 -gUnknown_83E598C:: - .incbin "baserom.gba", 0x3E598C, 0x18 +gUnknown_83E598C:: @ 83E598C + spr_template 10264, 10264, gOamData_83AC9C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AB024 -gUnknown_83E59A4:: - .incbin "baserom.gba", 0x3E59A4, 0x2C +gUnknown_83E59A4:: @ 83E59A4 + spr_template 10265, 10265, gOamData_83AC9C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AB024 -gUnknown_83E59D0:: - .incbin "baserom.gba", 0x3E59D0, 0x18 +gUnknown_83E59BC:: @ 83E59BC + .incbin "baserom.gba", 0x3E59BC, 0x10 -gUnknown_83E59E8:: - .incbin "baserom.gba", 0x3E59E8, 0x50 +gUnknown_83E59CC:: @ 83E59CC + .incbin "baserom.gba", 0x3E59CC, 0x4 -gUnknown_83E5A38:: - .incbin "baserom.gba", 0x3E5A38, 0x18 +gUnknown_83E59D0:: @ 83E59D0 + spr_template 10029, 10029, gOamData_83AC9D8, gUnknown_83E59CC, NULL, gDummySpriteAffineAnimTable, sub_80AB024 -gUnknown_83E5A50:: - .incbin "baserom.gba", 0x3E5A50, 0x30 +gUnknown_83E59E8:: @ 83E59E8 + spr_template 10165, 10165, gOamData_83ACAD8, gDummySpriteAnimTable, NULL, gUnknown_83E3C98, sub_80AB024 -gUnknown_83E5A80:: - .incbin "baserom.gba", 0x3E5A80, 0x18 +gUnknown_83E5A00:: @ 83E5A00 + .incbin "baserom.gba", 0x3E5A00, 0x30 -gUnknown_83E5A98:: - .incbin "baserom.gba", 0x3E5A98, 0x18 +gUnknown_83E5A30:: @ 83E5A30 + .incbin "baserom.gba", 0x3E5A30, 0x4 -gUnknown_83E5AB0:: - .incbin "baserom.gba", 0x3E5AB0, 0x18 +gUnknown_83E5A34:: @ 83E5A34 + .incbin "baserom.gba", 0x3E5A34, 0x4 -gUnknown_83E5AC8:: - .incbin "baserom.gba", 0x3E5AC8, 0x18 +gUnknown_83E5A38:: @ 83E5A38 + spr_template 10149, 10149, gOamData_83ACBB0, gUnknown_83E5958, NULL, gUnknown_83E5A30, sub_80AB168 + +gUnknown_83E5A50:: @ 83E5A50 + spr_template 10149, 10149, gOamData_83ACBB0, gUnknown_83E5958, NULL, gUnknown_83E5A34, sub_80AB1F8 + +gUnknown_83E5A68:: @ 83E5A68 + .incbin "baserom.gba", 0x3E5A68, 0x10 + +gUnknown_83E5A78:: @ 83E5A78 + .incbin "baserom.gba", 0x3E5A78, 0x4 + +gUnknown_83E5A7C:: @ 83E5A7C + .incbin "baserom.gba", 0x3E5A7C, 0x4 + +gUnknown_83E5A80:: @ 83E5A80 + spr_template 10155, 10155, gOamData_83ACAF0, gUnknown_83E5A78, NULL, gDummySpriteAffineAnimTable, AnimThrowProjectile + +gUnknown_83E5A98:: @ 83E5A98 + spr_template 10155, 10155, gOamData_83ACBB0, gUnknown_83E5A7C, NULL, gUnknown_83E6A80, sub_80AB2CC + +gUnknown_83E5AB0:: @ 83E5AB0 + spr_template 10141, 10141, gOamData_83AC9C8, gUnknown_83E6330, NULL, gDummySpriteAffineAnimTable, sub_80AB308 + +gUnknown_83E5AC8:: @ 83E5AC8 + spr_template 10155, 10155, gOamData_83AC9C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80ABA78 gUnknown_83E5AE0:: @ 83E5AE0 - .incbin "baserom.gba", 0x3E5AE0, 0x90 + spr_template 10268, 10268, gOamData_83AC9C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80ABF60 -gUnknown_83E5B70:: - .incbin "baserom.gba", 0x3E5B70, 0x18 +gUnknown_83E5AF8:: @ 83E5AF8 + .incbin "baserom.gba", 0x3E5AF8, 0x18 + +gUnknown_83E5B10:: @ 83E5B10 + .incbin "baserom.gba", 0x3E5B10, 0x8 + +gUnknown_83E5B18:: @ 83E5B18 + .incbin "baserom.gba", 0x3E5B18, 0x4C + +gUnknown_83E5B64:: @ 83E5B64 + .incbin "baserom.gba", 0x3E5B64, 0x8 + +gUnknown_83E5B6C:: @ 83E5B6C + .incbin "baserom.gba", 0x3E5B6C, 0x4 + +gUnknown_83E5B70:: @ 83E5B70 + spr_template 10155, 10155, gOamData_83AC9C8, gUnknown_83E5B10, NULL, gDummySpriteAffineAnimTable, sub_80AC624 gUnknown_83E5B88:: @ 83E5B88 - .incbin "baserom.gba", 0x3E5B88, 0x18 + spr_template 10155, 10155, gOamData_83ACA28, gUnknown_83E5B10, NULL, gUnknown_83E5B64, sub_80AC698 -gUnknown_83E5BA0:: - .incbin "baserom.gba", 0x3E5BA0, 0x40 +gUnknown_83E5BA0:: @ 83E5BA0 + spr_template 10155, 10155, gOamData_83ACA30, gUnknown_83E5B18, NULL, gUnknown_83E5B6C, sub_8077350 -gUnknown_83E5BE0:: - .incbin "baserom.gba", 0x3E5BE0, 0x18 +gUnknown_83E5BB8:: @ 83E5BB8 + .incbin "baserom.gba", 0x3E5BB8, 0x20 -gUnknown_83E5BF8:: - .incbin "baserom.gba", 0x3E5BF8, 0x78 +gUnknown_83E5BD8:: @ 83E5BD8 + .incbin "baserom.gba", 0x3E5BD8, 0x8 -gUnknown_83E5C70:: - .incbin "baserom.gba", 0x3E5C70, 0x18 +gUnknown_83E5BE0:: @ 83E5BE0 + spr_template 10029, 10029, gOamData_83AC9D8, gUnknown_83E5BD8, NULL, gDummySpriteAffineAnimTable, sub_80AC90C -gUnknown_83E5C88:: - .incbin "baserom.gba", 0x3E5C88, 0x18 +gUnknown_83E5BF8:: @ 83E5BF8 + spr_template 10029, 10029, gOamData_83AC9D8, gUnknown_83E5BD8, NULL, gDummySpriteAffineAnimTable, sub_80AC94C -gUnknown_83E5CA0:: - .incbin "baserom.gba", 0x3E5CA0, 0x78 +gUnknown_83E5C10:: @ 83E5C10 + .incbin "baserom.gba", 0x3E5C10, 0x24 -gUnknown_83E5D18:: - .incbin "baserom.gba", 0x3E5D18, 0x30 +gUnknown_83E5C34:: @ 83E5C34 + .incbin "baserom.gba", 0x3E5C34, 0x1C + +gUnknown_83E5C50:: @ 83E5C50 + .incbin "baserom.gba", 0x3E5C50, 0x1C + +gUnknown_83E5C6C:: @ 83E5C6C + .incbin "baserom.gba", 0x3E5C6C, 0x4 + +gUnknown_83E5C70:: @ 83E5C70 + spr_template 10033, 10033, gOamData_83ACA38, gUnknown_83E5C34, NULL, gUnknown_83E5C6C, sub_80ACA00 + +gUnknown_83E5C88:: @ 83E5C88 + spr_template 10033, 10033, gOamData_83AC9D8, gUnknown_83E5C34, NULL, gDummySpriteAffineAnimTable, sub_80ACA00 + +gUnknown_83E5CA0:: @ 83E5CA0 + spr_template 10035, 10035, gOamData_83AC9D8, gUnknown_83E5C50, NULL, gDummySpriteAffineAnimTable, sub_80AC990 + spr_template 10029, 10029, gOamData_83AC9D8, gUnknown_83E5C50, NULL, gDummySpriteAffineAnimTable, sub_80AC990 + +gUnknown_83E5CD0:: @ 83E5CD0 + .incbin "baserom.gba", 0x3E5CD0, 0x44 + +gUnknown_83E5D14:: @ 83E5D14 + .incbin "baserom.gba", 0x3E5D14, 0x4 + +gUnknown_83E5D18:: @ 83E5D18 + spr_template 10157, 10157, gOamData_83ACB58, gDummySpriteAnimTable, NULL, gUnknown_83E5D14, sub_80ACBB0 + +gUnknown_83E5D30:: @ 83E5D30 + .incbin "baserom.gba", 0x3E5D30, 0x18 -@ ================ gUnknown_83E5D48:: @ 83E5D48 .incbin "baserom.gba", 0x3E5D48, 0x4 -gUnknown_83E5D4C:: - .incbin "baserom.gba", 0x3E5D4C, 0x18 +gUnknown_83E5D4C:: @ 83E5D4C + spr_template 10029, 10029, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, TranslateAnimSpriteToTargetMonLocation -gUnknown_83E5D64:: - .incbin "baserom.gba", 0x3E5D64, 0x18 +gUnknown_83E5D64:: @ 83E5D64 + spr_template 10029, 10029, gOamData_83AC9D8, gUnknown_83E5D48, NULL, gDummySpriteAffineAnimTable, sub_80ACBDC -gUnknown_83E5D7C:: - .incbin "baserom.gba", 0x3E5D7C, 0x18 +gUnknown_83E5D7C:: @ 83E5D7C + spr_template 10029, 10029, gOamData_83AC9D8, gUnknown_83E5D48, NULL, gDummySpriteAffineAnimTable, sub_80ACC44 -gUnknown_83E5D94:: - .incbin "baserom.gba", 0x3E5D94, 0x50 +gUnknown_83E5D94:: @ 83E5D94 + spr_template 10029, 10029, gOamData_83AC9D8, gUnknown_83E5D48, NULL, gDummySpriteAffineAnimTable, sub_80ACC60 -gUnknown_83E5DE4:: - .incbin "baserom.gba", 0x3E5DE4, 0x18 +gUnknown_83E5DAC:: @ 83E5DAC + .incbin "baserom.gba", 0x3E5DAC, 0xC -gUnknown_83E5DFC:: - .incbin "baserom.gba", 0x3E5DFC, 0x18 +gUnknown_83E5DB8:: @ 83E5DB8 + .incbin "baserom.gba", 0x3E5DB8, 0x2C -gUnknown_83E5E14:: - .incbin "baserom.gba", 0x3E5E14, 0x18 +gUnknown_83E5DE4:: @ 83E5DE4 + spr_template 10029, 10029, gOamData_83AC9D8, gUnknown_83E5DB8, NULL, gDummySpriteAffineAnimTable, sub_80ACDA8 + +gUnknown_83E5DFC:: @ 83E5DFC + spr_template 10029, 10029, gOamData_83AC9D8, gUnknown_83E5D48, NULL, gDummySpriteAffineAnimTable, sub_80ACDE8 + +gUnknown_83E5E14:: @ 83E5E14 + spr_template 10029, 10029, gOamData_83AC9D8, gUnknown_83E5D48, NULL, gDummySpriteAffineAnimTable, sub_8077350 gUnknown_83E5E2C:: @ 83E5E2C - .incbin "baserom.gba", 0x3E5E2C, 0x18 + spr_template 10201, 10201, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AD330 gUnknown_83E5E44:: @ 83E5E44 .incbin "baserom.gba", 0x3E5E44, 0x2 @@ -577,210 +1092,411 @@ gUnknown_83E5E44:: @ 83E5E44 gUnknown_83E5E46:: @ 83E5E46 .incbin "baserom.gba", 0x3E5E46, 0x1A -gUnknown_83E5E60:: - .incbin "baserom.gba", 0x3E5E60, 0x54 +gUnknown_83E5E60:: @ 83E5E60 + spr_template 10201, 10201, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AD454 -gUnknown_83E5EB4:: - .incbin "baserom.gba", 0x3E5EB4, 0x30 +gUnknown_83E5E78:: @ 83E5E78 + .incbin "baserom.gba", 0x3E5E78, 0x2C -gUnknown_83E5EE4:: - .incbin "baserom.gba", 0x3E5EE4, 0x18 +gUnknown_83E5EA4:: @ 83E5EA4 + .incbin "baserom.gba", 0x3E5EA4, 0x10 + +gUnknown_83E5EB4:: @ 83E5EB4 + spr_template 10231, 10231, gOamData_83AC9D0, gUnknown_83E5EA4, NULL, gDummySpriteAffineAnimTable, sub_80AD540 + +gUnknown_83E5ECC:: @ 83E5ECC + .incbin "baserom.gba", 0x3E5ECC, 0x14 + +gUnknown_83E5EE0:: @ 83E5EE0 + .incbin "baserom.gba", 0x3E5EE0, 0x4 + +gUnknown_83E5EE4:: @ 83E5EE4 + spr_template 10232, 10232, gOamData_83AC9D8, gUnknown_83E5EE0, NULL, gDummySpriteAffineAnimTable, sub_80AD6F4 gUnknown_83E5EFC:: @ 83E5EFC .incbin "baserom.gba", 0x3E5EFC, 0x10 gUnknown_83E5F0C:: @ 83E5F0C - .incbin "baserom.gba", 0x3E5F0C, 0x2C + .incbin "baserom.gba", 0x3E5F0C, 0x28 + +gUnknown_83E5F34:: @ 83E5F34 + .incbin "baserom.gba", 0x3E5F34, 0x4 gUnknown_83E5F38:: @ 83E5F38 - .incbin "baserom.gba", 0x3E5F38, 0x8C + spr_template 10037, 10037, gOamData_83AC9D8, gUnknown_83E5F34, NULL, gDummySpriteAffineAnimTable, sub_80ADBEC -gUnknown_83E5FC4:: - .incbin "baserom.gba", 0x3E5FC4, 0x18 +gUnknown_83E5F50:: @ 83E5F50 + .incbin "baserom.gba", 0x3E5F50, 0x74 -gUnknown_83E5FDC:: - .incbin "baserom.gba", 0x3E5FDC, 0x2C +gUnknown_83E5FC4:: @ 83E5FC4 + spr_template 10011, 10011, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80ADD4C -gUnknown_83E6008:: - .incbin "baserom.gba", 0x3E6008, 0x50 +gUnknown_83E5FDC:: @ 83E5FDC + spr_template 10171, 10171, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, TranslateAnimSpriteToTargetMonLocation -gUnknown_83E6058:: - .incbin "baserom.gba", 0x3E6058, 0x18 +gUnknown_83E5FF4:: @ 83E5FF4 + .incbin "baserom.gba", 0x3E5FF4, 0x10 -gUnknown_83E6070:: - .incbin "baserom.gba", 0x3E6070, 0x18 +gUnknown_83E6004:: @ 83E6004 + .incbin "baserom.gba", 0x3E6004, 0x4 -gUnknown_83E6088:: - .incbin "baserom.gba", 0x3E6088, 0x18 +gUnknown_83E6008:: @ 83E6008 + spr_template 10011, 10011, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E6004, sub_80ADEB0 + +gUnknown_83E6020:: @ 83E6020 + .incbin "baserom.gba", 0x3E6020, 0x10 + +gUnknown_83E6030:: @ 83E6030 + .incbin "baserom.gba", 0x3E6030, 0x24 + +gUnknown_83E6054:: @ 83E6054 + .incbin "baserom.gba", 0x3E6054, 0x4 + +gUnknown_83E6058:: @ 83E6058 + spr_template 10282, 10282, gOamData_83ACA38, gUnknown_83E6030, NULL, gUnknown_83E6054, sub_80AE000 + +gUnknown_83E6070:: @ 83E6070 + spr_template 10011, 10011, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E6004, sub_80AE06C + +gUnknown_83E6088:: @ 83E6088 + spr_template 10011, 10011, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AE1A0 gUnknown_83E60A0:: @ 83E60A0 - .incbin "baserom.gba", 0x3E60A0, 0x18 + spr_template 10001, 10001, gOamData_83AC9C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AE420 gUnknown_83E60B8:: @ 83E60B8 - .incbin "baserom.gba", 0x3E60B8, 0x18 + spr_template 10173, 10173, gOamData_83AC9F8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AE470 gUnknown_83E60D0:: @ 83E60D0 - .incbin "baserom.gba", 0x3E60D0, 0x50 + .incbin "baserom.gba", 0x3E60D0, 0x48 + +gUnknown_83E6118:: @ 83E6118 + .incbin "baserom.gba", 0x3E6118, 0x8 gUnknown_83E6120:: @ 83E6120 - .incbin "baserom.gba", 0x3E6120, 0xB4 + spr_template 10211, 10211, gOamData_83AC9C8, gUnknown_83E6118, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy -gUnknown_83E61D4:: - .incbin "baserom.gba", 0x3E61D4, 0x30 +gUnknown_83E6138:: @ 83E6138 + .incbin "baserom.gba", 0x3E6138, 0x90 -gUnknown_83E6204:: - .incbin "baserom.gba", 0x3E6204, 0x18 +gUnknown_83E61C8:: @ 83E61C8 + .incbin "baserom.gba", 0x3E61C8, 0xC -gUnknown_83E621C:: - .incbin "baserom.gba", 0x3E621C, 0x5C +gUnknown_83E61D4:: @ 83E61D4 + spr_template 10212, 10212, gOamData_83ACB60, gDummySpriteAnimTable, NULL, gUnknown_83E61C8, sub_80AE71C + +gUnknown_83E61EC:: @ 83E61EC + .incbin "baserom.gba", 0x3E61EC, 0x14 + +gUnknown_83E6200:: @ 83E6200 + .incbin "baserom.gba", 0x3E6200, 0x4 + +gUnknown_83E6204:: @ 83E6204 + spr_template 10213, 10213, gOamData_83AC9D8, gUnknown_83E6200, NULL, gDummySpriteAffineAnimTable, sub_80AE774 + +gUnknown_83E621C:: @ 83E621C + spr_template 10212, 10212, gOamData_83ACB60, gDummySpriteAnimTable, NULL, gUnknown_83E61C8, sub_80AE7DC + +gUnknown_83E6234:: @ 83E6234 + .incbin "baserom.gba", 0x3E6234, 0x20 + +gUnknown_83E6254:: @ 83E6254 + .incbin "baserom.gba", 0x3E6254, 0x20 + +gUnknown_83E6274:: @ 83E6274 + .incbin "baserom.gba", 0x3E6274, 0x4 gUnknown_83E6278:: @ 83E6278 - .incbin "baserom.gba", 0x3E6278, 0x18 + spr_template 10001, 10001, gOamData_83ACAC8, gUnknown_83E6254, NULL, gUnknown_83E6274, sub_80AEC34 -gUnknown_83E6290:: - .incbin "baserom.gba", 0x3E6290, 0x18 +gUnknown_83E6290:: @ 83E6290 + spr_template 10212, 10212, gOamData_83ACB60, gDummySpriteAnimTable, NULL, gUnknown_83E61C8, sub_80AEC80 gUnknown_83E62A8:: @ 83E62A8 - .incbin "baserom.gba", 0x3E62A8, 0xA0 + spr_template 10001, 10001, gOamData_83AC9C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AEF60 -gUnknown_83E6348:: - .incbin "baserom.gba", 0x3E6348, 0x18 +gUnknown_83E62C0:: @ 83E62C0 + .incbin "baserom.gba", 0x3E62C0, 0x60 -gUnknown_83E6360:: - .incbin "baserom.gba", 0x3E6360, 0x2C +gUnknown_83E6320:: @ 83E6320 + .incbin "baserom.gba", 0x3E6320, 0x4 -gUnknown_83E638C:: - .incbin "baserom.gba", 0x3E638C, 0x18 +gUnknown_83E6324:: @ 83E6324 + .incbin "baserom.gba", 0x3E6324, 0x4 -gUnknown_83E63A4:: - .incbin "baserom.gba", 0x3E63A4, 0x3C +gUnknown_83E6328:: @ 83E6328 + .incbin "baserom.gba", 0x3E6328, 0x4 + +gUnknown_83E632C:: @ 83E632C + .incbin "baserom.gba", 0x3E632C, 0x4 + +gUnknown_83E6330:: @ 83E6330 + .incbin "baserom.gba", 0x3E6330, 0x14 + +gUnknown_83E6344:: @ 83E6344 + .incbin "baserom.gba", 0x3E6344, 0x4 + +gUnknown_83E6348:: @ 83E6348 + spr_template 10141, 10141, gOamData_83ACBE8, gUnknown_83E6320, NULL, gUnknown_83E6344, sub_80AF2F0 + +gUnknown_83E6360:: @ 83E6360 + spr_template 10141, 10141, gOamData_83ACAE8, gUnknown_83E6324, NULL, gDummySpriteAffineAnimTable, sub_80AF2F0 + +gUnknown_83E6378:: @ 83E6378 + .incbin "baserom.gba", 0x3E6378, 0x10 + +gUnknown_83E6388:: @ 83E6388 + .incbin "baserom.gba", 0x3E6388, 0x4 + +gUnknown_83E638C:: @ 83E638C + spr_template 10141, 10141, gOamData_83ACB88, gUnknown_83E6320, NULL, gUnknown_83E6388, sub_80AF330 + +gUnknown_83E63A4:: @ 83E63A4 + spr_template 10141, 10141, gOamData_83ACAE8, gUnknown_83E6324, NULL, gDummySpriteAffineAnimTable, sub_80AF330 + +gUnknown_83E63BC:: @ 83E63BC + .incbin "baserom.gba", 0x3E63BC, 0x20 + +gUnknown_83E63DC:: @ 83E63DC + .incbin "baserom.gba", 0x3E63DC, 0x4 gUnknown_83E63E0:: @ 83E63E0 - .incbin "baserom.gba", 0x3E63E0, 0x18 + spr_template 10141, 10141, gOamData_83ACB88, gUnknown_83E6320, NULL, gUnknown_83E63DC, sub_80AF3B8 -gUnknown_83E63F8:: - .incbin "baserom.gba", 0x3E63F8, 0x18 +gUnknown_83E63F8:: @ 83E63F8 + spr_template 10141, 10141, gOamData_83ACB48, gUnknown_83E6324, NULL, gUnknown_83E63DC, sub_80AF3B8 -gUnknown_83E6410:: - .incbin "baserom.gba", 0x3E6410, 0x18 +gUnknown_83E6410:: @ 83E6410 + spr_template 10141, 10141, gOamData_83AC9C8, gUnknown_83E6328, NULL, gDummySpriteAffineAnimTable, sub_80AF468 -gUnknown_83E6428:: - .incbin "baserom.gba", 0x3E6428, 0x18 +gUnknown_83E6428:: @ 83E6428 + spr_template 10141, 10141, gOamData_83AC9D0, gUnknown_83E632C, NULL, gDummySpriteAffineAnimTable, sub_80AF6D8 -gUnknown_83E6440:: - .incbin "baserom.gba", 0x3E6440, 0x3C +gUnknown_83E6440:: @ 83E6440 + spr_template 10141, 10141, gOamData_83AC9C8, gUnknown_83E6328, NULL, gDummySpriteAffineAnimTable, sub_80AF6D8 -gUnknown_83E647C:: - .incbin "baserom.gba", 0x3E647C, 0x28 +gUnknown_83E6458:: @ 83E6458 + .incbin "baserom.gba", 0x3E6458, 0x20 -gUnknown_83E64A4:: - .incbin "baserom.gba", 0x3E64A4, 0x18 +gUnknown_83E6478:: @ 83E6478 + .incbin "baserom.gba", 0x3E6478, 0x4 -gUnknown_83E64BC:: - .incbin "baserom.gba", 0x3E64BC, 0x18 +gUnknown_83E647C:: @ 83E647C + spr_template 10142, 10142, gOamData_83ACB28, gUnknown_83E6478, NULL, gDummySpriteAffineAnimTable, sub_80AF88C + +gUnknown_83E6494:: @ 83E6494 + .incbin "baserom.gba", 0x3E6494, 0xC + +gUnknown_83E64A0:: @ 83E64A0 + .incbin "baserom.gba", 0x3E64A0, 0x4 + +gUnknown_83E64A4:: @ 83E64A4 + spr_template 10144, 10144, gOamData_83ACB18, gUnknown_83E64A0, NULL, gDummySpriteAffineAnimTable, sub_80AF914 + +gUnknown_83E64BC:: @ 83E64BC + spr_template 10172, 10172, gOamData_83ACB18, gUnknown_83E64A0, NULL, gDummySpriteAffineAnimTable, sub_80AF914 gUnknown_83E64D4:: @ 83E64D4 .incbin "baserom.gba", 0x3E64D4, 0x14 -gUnknown_83E64E8:: - .incbin "baserom.gba", 0x3E64E8, 0x18 +gUnknown_83E64E8:: @ 83E64E8 + spr_template 10155, 10155, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AFD4C gUnknown_83E6500:: @ 83E6500 .incbin "baserom.gba", 0x3E6500, 0x14 -gUnknown_83E6514:: - .incbin "baserom.gba", 0x3E6514, 0x18 +gUnknown_83E6514:: @ 83E6514 + spr_template 10172, 10172, gOamData_83ACB18, gUnknown_83E64A0, NULL, gDummySpriteAffineAnimTable, sub_80AFFD4 gUnknown_83E652C:: @ 83E652C - .incbin "baserom.gba", 0x3E652C, 0x78 + .incbin "baserom.gba", 0x3E652C, 0x68 + +gUnknown_83E6594:: @ 83E6594 + .incbin "baserom.gba", 0x3E6594, 0xC + +gUnknown_83E65A0:: @ 83E65A0 + .incbin "baserom.gba", 0x3E65A0, 0x4 gUnknown_83E65A4:: @ 83E65A4 - .incbin "baserom.gba", 0x3E65A4, 0x18 + spr_template 10263, 10263, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E6594, sub_80B05CC -gUnknown_83E65BC:: - .incbin "baserom.gba", 0x3E65BC, 0xA0 +gUnknown_83E65BC:: @ 83E65BC + spr_template 10263, 10263, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E65A0, sub_8077350 -gUnknown_83E665C:: - .incbin "baserom.gba", 0x3E665C, 0x18 +gUnknown_83E65D4:: @ 83E65D4 + .incbin "baserom.gba", 0x3E65D4, 0x1C -gUnknown_83E6674:: - .incbin "baserom.gba", 0x3E6674, 0x6C +gUnknown_83E65F0:: @ 83E65F0 + .incbin "baserom.gba", 0x3E65F0, 0x58 -gUnknown_83E66E0:: - .incbin "baserom.gba", 0x3E66E0, 0x18 +gUnknown_83E6648:: @ 83E6648 + .incbin "baserom.gba", 0x3E6648, 0x14 -gUnknown_83E66F8:: - .incbin "baserom.gba", 0x3E66F8, 0x18 +gUnknown_83E665C:: @ 83E665C + spr_template 10043, 10043, gOamData_83ACA98, gUnknown_83E65F0, NULL, gUnknown_83E6648, unc_080B06FC -gUnknown_83E6710:: - .incbin "baserom.gba", 0x3E6710, 0x18 +gUnknown_83E6674:: @ 83E6674 + spr_template 10141, 10141, gOamData_83AC9C8, gUnknown_83E6324, NULL, gDummySpriteAffineAnimTable, sub_80B07C0 + spr_template 10050, 10050, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, unc_080B08A0 -gUnknown_83E6728:: - .incbin "baserom.gba", 0x3E6728, 0x18 +gUnknown_83E66A4:: @ 83E66A4 + .incbin "baserom.gba", 0x3E66A4, 0x28 -gUnknown_83E6740:: - .incbin "baserom.gba", 0x3E6740, 0x18 +gUnknown_83E66CC:: @ 83E66CC + .incbin "baserom.gba", 0x3E66CC, 0x4 -gUnknown_83E6758:: - .incbin "baserom.gba", 0x3E6758, 0x34 +gUnknown_83E66D0:: @ 83E66D0 + .incbin "baserom.gba", 0x3E66D0, 0x8 -gUnknown_83E678C:: - .incbin "baserom.gba", 0x3E678C, 0x34 +gUnknown_83E66D8:: @ 83E66D8 + .incbin "baserom.gba", 0x3E66D8, 0x8 -gUnknown_83E67C0:: - .incbin "baserom.gba", 0x3E67C0, 0x18 +gUnknown_83E66E0:: @ 83E66E0 + spr_template 10143, 10143, gOamData_83AC9D8, gUnknown_83E66CC, NULL, gDummySpriteAffineAnimTable, sub_80B08DC -gUnknown_83E67D8:: - .incbin "baserom.gba", 0x3E67D8, 0x18 +gUnknown_83E66F8:: @ 83E66F8 + spr_template 10143, 10143, gOamData_83AC9D8, gUnknown_83E66CC, NULL, gDummySpriteAffineAnimTable, sub_80B0928 -gUnknown_83E67F0:: - .incbin "baserom.gba", 0x3E67F0, 0x18 +gUnknown_83E6710:: @ 83E6710 + spr_template 10143, 10143, gOamData_83AC9D8, gUnknown_83E66CC, NULL, gDummySpriteAffineAnimTable, sub_80B0954 -gUnknown_83E6808:: - .incbin "baserom.gba", 0x3E6808, 0x18 +gUnknown_83E6728:: @ 83E6728 + spr_template 10143, 10143, gOamData_83AC9D8, gUnknown_83E66CC, NULL, gDummySpriteAffineAnimTable, sub_80B09A4 -gUnknown_83E6820:: - .incbin "baserom.gba", 0x3E6820, 0x44 +gUnknown_83E6740:: @ 83E6740 + spr_template 10143, 10143, gOamData_83AC9D8, gUnknown_83E66D8, NULL, gDummySpriteAffineAnimTable, sub_80B0B80 -gUnknown_83E6864:: - .incbin "baserom.gba", 0x3E6864, 0x18 +gUnknown_83E6758:: @ 83E6758 + spr_template 10143, 10143, gOamData_83AC9D8, gUnknown_83E66D0, NULL, gDummySpriteAffineAnimTable, sub_80B0C28 -gUnknown_83E687C:: - .incbin "baserom.gba", 0x3E687C, 0x18 +gUnknown_83E6770:: @ 83E6770 + .incbin "baserom.gba", 0x3E6770, 0x18 -gUnknown_83E6894:: - .incbin "baserom.gba", 0x3E6894, 0x18 +gUnknown_83E6788:: @ 83E6788 + .incbin "baserom.gba", 0x3E6788, 0x4 -gUnknown_83E68AC:: - .incbin "baserom.gba", 0x3E68AC, 0x54 +gUnknown_83E678C:: @ 83E678C + spr_template 10143, 10143, gOamData_83ACA98, gUnknown_83E66CC, NULL, gUnknown_83E6788, sub_80B0CEC -gUnknown_83E6900:: - .incbin "baserom.gba", 0x3E6900, 0x48 +gUnknown_83E67A4:: @ 83E67A4 + .incbin "baserom.gba", 0x3E67A4, 0x18 -gUnknown_83E6948:: - .incbin "baserom.gba", 0x3E6948, 0x34 +gUnknown_83E67BC:: @ 83E67BC + .incbin "baserom.gba", 0x3E67BC, 0x4 -gUnknown_83E697C:: - .incbin "baserom.gba", 0x3E697C, 0x30 +gUnknown_83E67C0:: @ 83E67C0 + spr_template 10143, 10143, gOamData_83ACA98, gUnknown_83E66CC, NULL, gUnknown_83E67BC, sub_80B0CEC -gUnknown_83E69AC:: - .incbin "baserom.gba", 0x3E69AC, 0x74 +gUnknown_83E67D8:: @ 83E67D8 + spr_template 10143, 10143, gOamData_83AC9D8, gUnknown_83E66D0, NULL, gDummySpriteAffineAnimTable, sub_80B0D58 -gUnknown_83E6A20:: - .incbin "baserom.gba", 0x3E6A20, 0x18 +gUnknown_83E67F0:: @ 83E67F0 + spr_template 10073, 10073, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80B0DF0 -gUnknown_83E6A38:: - .incbin "baserom.gba", 0x3E6A38, 0x18 +gUnknown_83E6808:: @ 83E6808 + spr_template 10167, 10167, gOamData_83ACB00, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80B0E80 -gUnknown_83E6A50:: - .incbin "baserom.gba", 0x3E6A50, 0x34 +gUnknown_83E6820:: @ 83E6820 + spr_template 10208, 10208, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80B0F68 -gUnknown_83E6A84:: - .incbin "baserom.gba", 0x3E6A84, 0x34 +gUnknown_83E6838:: @ 83E6838 + .incbin "baserom.gba", 0x3E6838, 0x28 -gUnknown_83E6AB8:: - .incbin "baserom.gba", 0x3E6AB8, 0x18 +gUnknown_83E6860:: @ 83E6860 + .incbin "baserom.gba", 0x3E6860, 0x4 -gUnknown_83E6AD0:: - .incbin "baserom.gba", 0x3E6AD0, 0x18 +gUnknown_83E6864:: @ 83E6864 + spr_template 10212, 10212, gOamData_83ACBC0, gDummySpriteAnimTable, NULL, gUnknown_83E6860, sub_80B107C +gUnknown_83E687C:: @ 83E687C + spr_template 10257, 10257, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80B1188 + +gUnknown_83E6894:: @ 83E6894 + spr_template 10256, 10256, gOamData_83AC9E0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80B12E8 + +gUnknown_83E68AC:: @ 83E68AC + spr_template 10143, 10143, gOamData_83AC9D8, gUnknown_83E66CC, NULL, gDummySpriteAffineAnimTable, sub_80B13F8 + +gUnknown_83E68C4:: @ 83E68C4 + .incbin "baserom.gba", 0x3E68C4, 0x30 + +gUnknown_83E68F4:: @ 83E68F4 + .incbin "baserom.gba", 0x3E68F4, 0xC + +gUnknown_83E6900:: @ 83E6900 + spr_template 10245, 10245, gOamData_83AC9D8, gUnknown_83E68F4, NULL, gDummySpriteAffineAnimTable, sub_80B1484 + +gUnknown_83E6918:: @ 83E6918 + .incbin "baserom.gba", 0x3E6918, 0x24 + +gUnknown_83E693C:: @ 83E693C + .incbin "baserom.gba", 0x3E693C, 0xC + +gUnknown_83E6948:: @ 83E6948 + spr_template 10246, 10246, gOamData_83AC9E0, gUnknown_83E693C, NULL, gDummySpriteAffineAnimTable, sub_80B1484 + +gUnknown_83E6960:: @ 83E6960 + .incbin "baserom.gba", 0x3E6960, 0x18 + +gUnknown_83E6978:: @ 83E6978 + .incbin "baserom.gba", 0x3E6978, 0x4 + +gUnknown_83E697C:: @ 83E697C + spr_template 10143, 10143, gOamData_83ACA98, gUnknown_83E66CC, NULL, gUnknown_83E6978, sub_80B14F0 + +gUnknown_83E6994:: @ 83E6994 + .incbin "baserom.gba", 0x3E6994, 0x14 + +gUnknown_83E69A8:: @ 83E69A8 + .incbin "baserom.gba", 0x3E69A8, 0x4 + +gUnknown_83E69AC:: @ 83E69AC + spr_template 10151, 10151, gOamData_83ACA18, gUnknown_83E69A8, NULL, gDummySpriteAffineAnimTable, AnimSpriteOnMonPos + +gUnknown_83E69C4:: @ 83E69C4 + .incbin "baserom.gba", 0x3E69C4, 0x18 + +gUnknown_83E69DC:: @ 83E69DC + .incbin "baserom.gba", 0x3E69DC, 0x4 + +gUnknown_83E69E0:: @ 83E69E0 + .incbin "baserom.gba", 0x3E69E0, 0x4 + +gUnknown_83E69E4:: @ 83E69E4 + .incbin "baserom.gba", 0x3E69E4, 0x34 + +gUnknown_83E6A18:: @ 83E6A18 + .incbin "baserom.gba", 0x3E6A18, 0x4 + +gUnknown_83E6A1C:: @ 83E6A1C + .incbin "baserom.gba", 0x3E6A1C, 0x4 + +gUnknown_83E6A20:: @ 83E6A20 + spr_template 10150, 10150, gOamData_83ACA90, gUnknown_83E69DC, NULL, gUnknown_83E6A18, sub_80B1620 + +gUnknown_83E6A38:: @ 83E6A38 + spr_template 10150, 10150, gOamData_83ACA90, gUnknown_83E69DC, NULL, gUnknown_83E6A18, sub_80B16A0 + +gUnknown_83E6A50:: @ 83E6A50 + spr_template 10150, 10150, gOamData_83ACA30, gUnknown_83E69E4, NULL, gUnknown_83E6A1C, sub_80B1744 + +gUnknown_83E6A68:: @ 83E6A68 + .incbin "baserom.gba", 0x3E6A68, 0x18 + +gUnknown_83E6A80:: @ 83E6A80 + .incbin "baserom.gba", 0x3E6A80, 0x4 + +gUnknown_83E6A84:: @ 83E6A84 + spr_template 10150, 10150, gOamData_83ACA90, gUnknown_83E69E0, NULL, gUnknown_83E6A80, sub_80B17C4 + +gUnknown_83E6A9C:: @ 83E6A9C + .incbin "baserom.gba", 0x3E6A9C, 0x18 + +gUnknown_83E6AB4:: @ 83E6AB4 + .incbin "baserom.gba", 0x3E6AB4, 0x4 + +gUnknown_83E6AB8:: @ 83E6AB8 + spr_template 10150, 10150, gOamData_83ACA30, gUnknown_83E69DC, NULL, gUnknown_83E6AB4, sub_80B1838 + +gUnknown_83E6AD0:: @ 83E6AD0 + spr_template 10155, 10155, gOamData_83ACB50, gUnknown_83E5A78, NULL, gUnknown_83E6AB4, sub_80B1838 From 1c093a2c81d1347ba26668b0900c82e9947b3d60 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 14 Nov 2019 16:43:18 -0500 Subject: [PATCH 03/49] More data dism --- asm/fire.s | 4 +- baserom.ips | Bin 293301 -> 287971 bytes data/battle_anim_effects_misc.s | 1452 ++++++++++++++++++++++++++----- 3 files changed, 1213 insertions(+), 243 deletions(-) diff --git a/asm/fire.s b/asm/fire.s index efdfc8315..eee80228c 100644 --- a/asm/fire.s +++ b/asm/fire.s @@ -1281,7 +1281,7 @@ _080AD2C2: muls r1, r3 lsls r1, 16 asrs r1, 16 - ldr r0, _080AD328 @ =gUnknown_83E5E46 + ldr r0, _080AD328 @ =gUnknown_83E5E44 + 2 adds r2, r0 movs r3, 0 ldrsh r2, [r2, r3] @@ -1319,7 +1319,7 @@ _080AD318: .4byte gUnknown_83E5E2C _080AD31C: .4byte gSprites _080AD320: .4byte 0x000003ff _080AD324: .4byte 0xfffffc00 -_080AD328: .4byte gUnknown_83E5E46 +_080AD328: .4byte gUnknown_83E5E44 + 2 _080AD32C: .4byte gTasks+0x8 thumb_func_end sub_80AD1F8 diff --git a/baserom.ips b/baserom.ips index 84bef65e788705a2aeec7b8344ebb2a2379bf78b..1bb7dc529d7c11b0a7cbb8f4cb4684e431800abf 100644 GIT binary patch delta 252 zcmdn`S@7{m!G;#bElhvdSqv)}S+*PTFtIRB_v2-n#$uwvkTE@pk12!I&SV3F#PoN3 zOcFrm10Yk5pGji+8UZFZ7Rx6L9@C|Sm^@hRtiCWTn0`fwX#uO9T>^u{^cNyb4$~_| znamU&H5ddE7(V}J;9y|*U(Wyrc8)m=9C9*mBm|_s$xL?;XVRXYCc&h}{6)B7@C37hcS~z`wTNCAZFe^!;D4N835A2Mic-5 delta 5597 zcmZ`-L2Ojl6}|IkY(B;*6R^annvjobsa7#C1Oo$s$6#ErRHV9<(-=a+045mXg{!i# zDktAkT{UWvQZ<$)s;o8(FIaey1xZ*~iW{cLk*p{SFS?+r)v`d9r8tU%rUd+Z&VB!R zz9D=#^ZvW{zWeUG_rCky_kTWn_QS8A9UV*E@E)!Ux921;l9DJA$;dkKffc;xwi`bH z%=VL#OA1i%BpAKQ97!^*mJu+?i;Z5{{!PE&=J zC2DFfa+m{ym2T!#HYC>#aGfk{=qEZMZW(fWINhY5YN zGcSW8TUBL#Cp>`XVH1DhJnLEQyA_fidHjXTGq#Q5_K7~^+_*OA?gq@xn~Y{g{~`Vv zB!&&lO>%b$0>vj?A1ZP`QoH3r+#+4T*GF5-qb(w(E$m0@rj}jC&jPC^>>8HghFnTA zq4?QIJp88C{AQt=vB@La^kopYEpeNdqe{=l{cPNK@)MYC5|{#R0MkGfm;+3~SG~+L z8~+SmS3>qh`~oFhoIcA5`aANDBgrL4vShI-AhwFnuX7373Iai4s*od@?Ae*`dl=A`ZM z?NP!O=>f{X5Wq?@N8yfExg(XouJwGQLApj`YLGx_+J!lcfqM>ZB}1L==K zy9p@2HI|Q_B2T)Le-Cra0%mWw_@$D}%#^}l!R#HCR%U$`2!KMI^sXJ*clN7ehc`z%bChvGyJR_|gMU+#Z88bnz zEJw=`TbED$;F;okQt10(6rTOnzpflP|H-Le;{AVbEWiBavH$M*4DZo}=tQ(V+V~0H z{~W#)X2ZF+OtB{U_vL-AAFDytOVxL7jatJ4?Z`yw#B`llPA8Vrsphj~pLFu+o$p#n zA$9}Z;g;Th0Ou`G0tNtcU{d~=<%;lZWp<)!+dQsZZ}NUr`F)eu9Zo`Wn$idRX_75u z5*MmuDl*HGeQR15^xK1yEe}oCC%^w7stRxw7zfP3Wtq*ylPrVKSGn8dy&Lk#_JJ&r z0|KB8C;*QlYt#6P82{qDv|>TO=O;ehe}copoh;o{FB+bKm*cFux;;0 zI55yQh5DNyJf-i7K9Q(F>@QDsa?UKfM) zt8?V!OO@1C|%eQ_QGTHw+*!V0sKD3-%uU*B)@@oAL#fd!W{>#Gyfh0 zD$^UheFu-|?e9Bk{}GsRWJ*RDqM8;9Xkw1V{gp~sOKk~jv6Zg!W~HVxEk&3P{~yIi zBEkR%$Ir&PB~zGZ4!FblN+s!aTS8mxiYQj#=$baFfcg*{$I!Lzs1GQWkOsgIU`hxk zHlwaXZ*B?AQxrJbChcYUdX1MD+YI2xE&I%+;!zG5l&-D$&c$5z`}a|ZS;|?uH)?D9 z$I<^O`p04DlYDBr3Qd*G&EEE~vn=^h8C3_dywY3lI#KS#e4SXq(*&keV1WmMy^=8@ zw6x)u^DI!{SPM&OP6;i?Na#TiYr<(8!c2XU9&q}UJBkgC@vJNX;10QD6)D7tIEn$| zI%t-Id<^n2$hI^fiwi^muoZx`Sq!+tL0ws?9BuY~5O&KUbpQ&0%T)Gj*oH0**!L6t z?k<=M3;?F<2KHE-XsZf5n|Q8&1Ap?$HH+x`R?ZcdXA4uWb=vysSu5`Hq^8o}HN%!@{RnO_5nsm5o?h0;=!l!JN zqRHjZR{T|0WWhA2x)?L6Ou@DkBAU`;xJ#MS(n4c{*hpTZrpY*sq~%vb(+lxxQCAnE z#ppi14V+_oQazZp-k0z+J|6*ddce*}^PRN=U<@gWc^qy2`?NM%mk%zJl;3QyPxhZYQ1m%jeQiTVq2vb#Ea}$EI6h4!s zM_s+HUzzGxX1fKlXBdTsgV0pJ5SQ>y?L{!*MO{lk+i-e07xsc@&U_)=mBr`1_Mi9Q z{=rwN$X2+FXt${N`WaU+N)rr5~o0{JQsLBIXBF0vi6(YuG`+% z_-)Q8xOVt8<6i^DfeFC8Hph6bt@%_ir_6_PsPabO1t=y?#D^~%gdU*Y{89fmEo}J6!nsOk;dd;);2W8{mlY8nB4K{L6D;-)_={g`|%3nxNW&JiU2-9#gx35hd zcV^n_Z1RS>gkhO;7<#TK6Yf0F`p0?_C!RZ@9!3u%tOTycX@=I_`CSm*c%OgR(65GA z!Q%s0U>~3Q04uMH)AL2yQiNs0z;(4yzYNyqAf38M=J^iPQzR$}o}^8@nJl3(W^|m# z#Te)UP6AwC2{SqS`$043XXNe5&TU>HbQ`u2a@4ynZrz@3MqzsfU;^C3&?TTowHL5& zfh@pvv>|t0UF!hNTo|^&Pu{48l`$=?pUdYQBn>aq#fY#z_$+i*PE)eKkKa@F6NNRh z5n#*Ml1_X3`YAXLFKf2gkB;&F%EfJ7F*RKI%QmkqbRl-imt;xjbA4B1T>tS>*L%_U z{lHaV3@{hxyeOb8_{vv_rX)}$cM%VCXQZsA%H7NC8H+~Li z1B!roeG*&ppIg&GScq@_lORt4H-KrN3Ybens3>u+G6(IAR@KYUB??T|1(?i9fk_Gs z6s0|oKz*m%qa^YmdZ3r0Mnoq>2#^H!Hdq|sh$?GQ{gOcEh>RgxW6(3E5lmhf$gg7H zJaCr^F5}M@tP~}{4!(`|+wuExyvKjCxNQ8^X8aTYa~Zd#%DGN27nZdOCV(B)6Oa3YZ=74#ioGPoYR=+#q&kUFJi?XPWaiP73G5(LQz?v%ql3$9D spvdp6;Ln0+-KYT-n2`L0Oz3dEBP5R92?+e|_BIble|&pe=DB142lO-s5&!@I diff --git a/data/battle_anim_effects_misc.s b/data/battle_anim_effects_misc.s index a6f95e83d..14e5d514b 100644 --- a/data/battle_anim_effects_misc.s +++ b/data/battle_anim_effects_misc.s @@ -124,31 +124,49 @@ gUnknown_83E2B00:: @ 83E2B00 spr_template 10147, 10147, gOamData_83AC9C8, gSpriteAnimTable_83E2A20, NULL, gDummySpriteAffineAnimTable, sub_80A25EC gUnknown_83E2B18:: @ 83E2B18 - .incbin "baserom.gba", 0x3E2B18, 0x14 + obj_image_anim_frame 0, 1 + obj_image_anim_end + +gUnknown_83E2B20:: @ 83E2B20 + obj_image_anim_frame 4, 7 + obj_image_anim_frame 8, 7 + obj_image_anim_jump 0 gUnknown_83E2B2C:: @ 83E2B2C - .incbin "baserom.gba", 0x3E2B2C, 0x8 + .4byte gUnknown_83E2B18 + .4byte gUnknown_83E2B20 gUnknown_83E2B34:: @ 83E2B34 spr_template 10006, 10006, gOamData_83AC9D0, gUnknown_83E2B2C, NULL, gDummySpriteAffineAnimTable, sub_80A26F0 gUnknown_83E2B4C:: @ 83E2B4C - .incbin "baserom.gba", 0x3E2B4C, 0x10 + obj_image_anim_frame 0, 1 + obj_image_anim_end + +gUnknown_83E2B54:: @ 83E2B54 + obj_image_anim_frame 4, 7 + obj_image_anim_end gUnknown_83E2B5C:: @ 83E2B5C - .incbin "baserom.gba", 0x3E2B5C, 0x8 + .4byte gUnknown_83E2B4C + .4byte gUnknown_83E2B54 gUnknown_83E2B64:: @ 83E2B64 spr_template 10158, 10158, gOamData_83AC9D0, gUnknown_83E2B5C, NULL, gDummySpriteAffineAnimTable, sub_80A27D0 gUnknown_83E2B7C:: @ 83E2B7C - .incbin "baserom.gba", 0x3E2B7C, 0x10 + obj_image_anim_frame 0, 1 + obj_image_anim_end + +gUnknown_83E2B84:: @ 83E2B84 + obj_image_anim_frame 4, 1 + obj_image_anim_end gUnknown_83E2B8C:: @ 83E2B8C - .incbin "baserom.gba", 0x3E2B8C, 0x4 + .4byte gUnknown_83E2B7C gUnknown_83E2B90:: @ 83E2B90 - .incbin "baserom.gba", 0x3E2B90, 0x4 + .4byte gUnknown_83E2B84 gUnknown_83E2B94:: @ 83E2B94 spr_template 10159, 10159, gOamData_83AC9D0, gUnknown_83E2B8C, NULL, gDummySpriteAffineAnimTable, sub_80A2920 @@ -157,10 +175,27 @@ gUnknown_83E2BAC:: @ 83E2BAC spr_template 10159, 10159, gOamData_83AC9C8, gUnknown_83E2B90, NULL, gDummySpriteAffineAnimTable, sub_80A29EC gUnknown_83E2BC4:: @ 83E2BC4 - .incbin "baserom.gba", 0x3E2BC4, 0x3C + obj_image_anim_frame 0, 5 + obj_image_anim_frame 4, 5 + obj_image_anim_frame 8, 5 + obj_image_anim_frame 12, 5 + obj_image_anim_frame 16, 5 + obj_image_anim_frame 20, 5 + obj_image_anim_frame 16, 5 + obj_image_anim_frame 12, 5 + obj_image_anim_frame 8, 5 + obj_image_anim_frame 4, 5 + obj_image_anim_jump 0 + +gUnknown_83E2BF0:: @ 83E2BF0 + obj_image_anim_frame 24, 5 + obj_image_anim_frame 28, 5 + obj_image_anim_frame 32, 5 + obj_image_anim_end gUnknown_83E2C00:: @ 83E2C00 - .incbin "baserom.gba", 0x3E2C00, 0x8 + .4byte gUnknown_83E2BC4 + .4byte gUnknown_83E2BF0 gUnknown_83E2C08:: @ 83E2C08 spr_template 10063, 10063, gOamData_83AC9D0, gUnknown_83E2C00, NULL, gDummySpriteAffineAnimTable, sub_80A2AA4 @@ -169,49 +204,112 @@ gUnknown_83E2C20:: @ 83E2C20 spr_template 10063, 10063, gOamData_83AC9D0, gUnknown_83E2C00, NULL, gDummySpriteAffineAnimTable, AnimMoveTwisterParticle gUnknown_83E2C38:: @ 83E2C38 - .incbin "baserom.gba", 0x3E2C38, 0x14 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 0, 3, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 0, 3, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_frame 0, 3, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_jump 0 gUnknown_83E2C4C:: @ 83E2C4C - .incbin "baserom.gba", 0x3E2C4C, 0x4 + .4byte gUnknown_83E2C38 gUnknown_83E2C50:: @ 83E2C50 spr_template 10160, 10160, gOamData_83AC9F8, gUnknown_83E2C4C, NULL, gDummySpriteAffineAnimTable, sub_80A2B9C gUnknown_83E2C68:: @ 83E2C68 - .incbin "baserom.gba", 0x3E2C68, 0x10 + obj_rot_scal_anim_frame 0, 0, 0, 1 + obj_rot_scal_anim_jump 0 gUnknown_83E2C78:: @ 83E2C78 - .incbin "baserom.gba", 0x3E2C78, 0x4 + .4byte gUnknown_83E2C68 gUnknown_83E2C7C:: @ 83E2C7C spr_template 10174, 10174, gOamData_83ACA38, gDummySpriteAnimTable, NULL, gUnknown_83E2C78, sub_80A2B9C gUnknown_83E2C94:: @ 83E2C94 - .incbin "baserom.gba", 0x3E2C94, 0x28 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 32, 4 + obj_image_anim_frame 64, 4 + obj_image_anim_frame 96, 4 + obj_image_anim_end + +gUnknown_83E2CA8:: @ 83E2CA8 + obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 32, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 64, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 96, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end gUnknown_83E2CBC:: @ 83E2CBC - .incbin "baserom.gba", 0x3E2CBC, 0x48 + .4byte gUnknown_83E2C94 + .4byte gUnknown_83E2CA8 + +gUnknown_83E2CC4:: @ 83E2CC4 + obj_rot_scal_anim_frame 256, 256, 0, 0 + obj_rot_scal_anim_frame -11, 0, 0, 6 + obj_rot_scal_anim_frame 11, 0, 0, 6 + obj_rot_scal_anim_end + +gUnknown_83E2CE4:: @ 83E2CE4 + obj_rot_scal_anim_frame -256, 256, 0, 0 + obj_rot_scal_anim_frame 11, 0, 0, 6 + obj_rot_scal_anim_frame -11, 0, 0, 6 + obj_rot_scal_anim_end gUnknown_83E2D04:: @ 83E2D04 - .incbin "baserom.gba", 0x3E2D04, 0x8 + .4byte gUnknown_83E2CC4 + .4byte gUnknown_83E2CE4 gUnknown_83E2D0C:: @ 83E2D0C spr_template 10186, 10186, gOamData_83ACA60, gUnknown_83E2CBC, NULL, gUnknown_83E2D04, sub_80A2E28 gUnknown_83E2D24:: @ 83E2D24 - .incbin "baserom.gba", 0x3E2D24, 0x28 + obj_rot_scal_anim_frame 0, 0, 0, 0 + obj_rot_scal_anim_frame 48, 48, 0, 14 + obj_rot_scal_anim_end + +gUnknown_83E2D3C:: @ 83E2D3C + obj_rot_scal_anim_frame -16, -16, 0, 1 + obj_rot_scal_anim_jump 0 gUnknown_83E2D4C:: @ 83E2D4C - .incbin "baserom.gba", 0x3E2D4C, 0x8 + .4byte gUnknown_83E2D24 + .4byte gUnknown_83E2D3C gUnknown_83E2D54:: @ 83E2D54 spr_template 10147, 10147, gOamData_83ACA90, gSpriteAnimTable_83E2A40, NULL, gUnknown_83E2D4C, sub_80A3098 gUnknown_83E2D6C:: @ 83E2D6C - .incbin "baserom.gba", 0x3E2D6C, 0x48 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 16, 7 + obj_image_anim_frame 32, 7 + obj_image_anim_frame 48, 7 + obj_image_anim_end + +gUnknown_83E2D80:: @ 83E2D80 + obj_image_anim_frame 0, 7, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 16, 7, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 32, 7, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 48, 7, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end + +gUnknown_83E2D94:: @ 83E2D94 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 16, 7 + obj_image_anim_frame 32, 7 + obj_image_anim_end + +gUnknown_83E2DA4:: @ 83E2DA4 + obj_image_anim_frame 0, 7, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 16, 7, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 32, 7, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end gUnknown_83E2DB4:: @ 83E2DB4 - .incbin "baserom.gba", 0x3E2DB4, 0x10 + .4byte gUnknown_83E2D6C + .4byte gUnknown_83E2D80 + .4byte gUnknown_83E2D94 + .4byte gUnknown_83E2DA4 gUnknown_83E2DC4:: @ 83E2DC4 spr_template 10223, 10223, gOamData_83AC9D8, gUnknown_83E2DB4, NULL, gDummySpriteAffineAnimTable, sub_80A3168 @@ -220,22 +318,41 @@ gUnknown_83E2DDC:: @ 83E2DDC spr_template 10223, 10223, gOamData_83AC9D8, gUnknown_83E2DB4, NULL, gDummySpriteAffineAnimTable, sub_80A31EC gUnknown_83E2DF4:: @ 83E2DF4 - .incbin "baserom.gba", 0x3E2DF4, 0xC + obj_image_anim_frame 3, 3 + obj_image_anim_frame 0, 5 + obj_image_anim_jump 0 gUnknown_83E2E00:: @ 83E2E00 - .incbin "baserom.gba", 0x3E2E00, 0x4 + .4byte gUnknown_83E2DF4 gUnknown_83E2E04:: @ 83E2E04 spr_template 10147, 10147, gOamData_83AC9C8, gUnknown_83E2E00, NULL, gDummySpriteAffineAnimTable, sub_80A3334 gUnknown_83E2E1C:: @ 83E2E1C - .incbin "baserom.gba", 0x3E2E1C, 0x8 + obj_image_anim_frame 0, 30 + obj_image_anim_end gUnknown_83E2E24:: @ 83E2E24 - .incbin "baserom.gba", 0x3E2E24, 0x5C + .4byte gUnknown_83E2E1C + +gUnknown_83E2E28:: @ 83E2E28 + obj_rot_scal_anim_frame 0, 0, 252, 10 + obj_rot_scal_anim_frame 0, 0, 4, 20 + obj_rot_scal_anim_frame 0, 0, 252, 10 + obj_rot_scal_anim_end + +gUnknown_83E2E48:: @ 83E2E48 + obj_rot_scal_anim_frame 0, 0, 255, 2 + obj_rot_scal_anim_frame 0, 0, 1, 4 + obj_rot_scal_anim_frame 0, 0, 255, 4 + obj_rot_scal_anim_frame 0, 0, 1, 4 + obj_rot_scal_anim_frame 0, 0, 255, 4 + obj_rot_scal_anim_frame 0, 0, 1, 2 + obj_rot_scal_anim_end gUnknown_83E2E80:: @ 83E2E80 - .incbin "baserom.gba", 0x3E2E80, 0x8 + .4byte gUnknown_83E2E28 + .4byte gUnknown_83E2E48 gUnknown_83E2E88:: @ 83E2E88 spr_template 10224, 10224, gOamData_83ACA38, gUnknown_83E2E24, NULL, gUnknown_83E2E80, sub_80A3518 @@ -244,10 +361,14 @@ gUnknown_83E2EA0:: @ 83E2EA0 spr_template 10224, 10224, gOamData_83ACA38, gUnknown_83E2E24, NULL, gUnknown_83E2E80, sub_80A35F4 gUnknown_83E2EB8:: @ 83E2EB8 - .incbin "baserom.gba", 0x3E2EB8, 0x14 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 4, 4 + obj_image_anim_frame 8, 4 + obj_image_anim_frame 12, 4 + obj_image_anim_end gUnknown_83E2ECC:: @ 83E2ECC - .incbin "baserom.gba", 0x3E2ECC, 0x4 + .4byte gUnknown_83E2EB8 gUnknown_83E2ED0:: @ 83E2ED0 spr_template 10195, 10195, gOamData_83AC9D0, gUnknown_83E2ECC, NULL, gDummySpriteAffineAnimTable, sub_80A3670 @@ -256,28 +377,79 @@ gUnknown_83E2EE8:: @ 83E2EE8 spr_template 10224, 10224, gOamData_83ACA38, gUnknown_83E2E24, NULL, gUnknown_83E2E80, sub_80A36B4 gUnknown_83E2F00:: @ 83E2F00 - .incbin "baserom.gba", 0x3E2F00, 0x50 + obj_rot_scal_anim_frame 0, 0, 0, 3 + obj_rot_scal_anim_end + +gUnknown_83E2F10:: @ 83E2F10 + obj_rot_scal_anim_frame 0, -10, 0, 3 + obj_rot_scal_anim_frame 0, -6, 0, 3 + obj_rot_scal_anim_frame 0, -2, 0, 3 + obj_rot_scal_anim_frame 0, 0, 0, 3 + obj_rot_scal_anim_frame 0, 2, 0, 3 + obj_rot_scal_anim_frame 0, 6, 0, 3 + obj_rot_scal_anim_frame 0, 10, 0, 3 + obj_rot_scal_anim_end gUnknown_83E2F50:: @ 83E2F50 - .incbin "baserom.gba", 0x3E2F50, 0x10 + .4byte gUnknown_83E2F00 + .4byte gUnknown_83E2F10 + .4byte gUnknown_83E2E28 + .4byte gUnknown_83E2E48 gUnknown_83E2F60:: @ 83E2F60 spr_template 10224, 10224, gOamData_83ACA38, gUnknown_83E2E24, NULL, gUnknown_83E2F50, sub_80A37BC gUnknown_83E2F78:: @ 83E2F78 - .incbin "baserom.gba", 0x3E2F78, 0x5C + .byte 0x05, 0x18, 0x01, 0x00, 0x04, 0x00, 0x08, 0x10, 0xff, 0x00, 0x02, 0x00, 0x08, 0x10, 0x01, 0x00, 0x02, 0x00, 0x08, 0x10, 0x01, 0x00, 0x02, 0x00, 0x08, 0x10, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00 + .byte 0x7f, 0x00, 0x00, 0x00 + +gUnknown_83E2F9C:: @ 83E2F9C + obj_image_anim_frame 28, 1 + obj_image_anim_end + +gUnknown_83E2FA4:: @ 83E2FA4 + obj_image_anim_frame 32, 1 + obj_image_anim_end + +gUnknown_83E2FAC:: @ 83E2FAC + obj_image_anim_frame 20, 1 + obj_image_anim_end + +gUnknown_83E2FB4:: @ 83E2FB4 + obj_image_anim_frame 28, 1, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end + +gUnknown_83E2FBC:: @ 83E2FBC + obj_image_anim_frame 16, 1 + obj_image_anim_end + +gUnknown_83E2FC4:: @ 83E2FC4 + obj_image_anim_frame 16, 1, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end + +gUnknown_83E2FCC:: @ 83E2FCC + obj_image_anim_frame 28, 1 + obj_image_anim_end gUnknown_83E2FD4:: @ 83E2FD4 - .incbin "baserom.gba", 0x3E2FD4, 0x1C + .4byte gUnknown_83E2F9C + .4byte gUnknown_83E2FA4 + .4byte gUnknown_83E2FAC + .4byte gUnknown_83E2FB4 + .4byte gUnknown_83E2FBC + .4byte gUnknown_83E2FC4 + .4byte gUnknown_83E2FCC gUnknown_83E2FF0:: @ 83E2FF0 spr_template 10063, 10063, gOamData_83AC9D0, gUnknown_83E2FD4, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy gUnknown_83E3008:: @ 83E3008 - .incbin "baserom.gba", 0x3E3008, 0x18 + obj_rot_scal_anim_frame 256, 256, 0, 0 + obj_rot_scal_anim_frame 0, 0, 4, 1 + obj_rot_scal_anim_jump 1 gUnknown_83E3020:: @ 83E3020 - .incbin "baserom.gba", 0x3E3020, 0x4 + .4byte gUnknown_83E3008 gUnknown_83E3024:: @ 83E3024 spr_template 10159, 10159, gOamData_83AC9C8, gUnknown_83E2B90, NULL, gDummySpriteAffineAnimTable, sub_80A4040 @@ -286,16 +458,28 @@ gUnknown_83E303C:: @ 83E303C spr_template 10159, 10159, gOamData_83ACA30, gUnknown_83E2B8C, NULL, gUnknown_83E3020, sub_80A4040 gUnknown_83E3054:: @ 83E3054 - .incbin "baserom.gba", 0x3E3054, 0x48 + obj_rot_scal_anim_frame 256, 256, 0, 0 + obj_rot_scal_anim_frame 0, 0, 246, 1 + obj_rot_scal_anim_jump 1 + +gUnknown_83E306C:: @ 83E306C + obj_rot_scal_anim_frame 192, 192, 0, 0 + obj_rot_scal_anim_frame 0, 0, 244, 1 + obj_rot_scal_anim_jump 1 + +gUnknown_83E3084:: @ 83E3084 + obj_rot_scal_anim_frame 143, 143, 0, 0 + obj_rot_scal_anim_frame 0, 0, 241, 1 + obj_rot_scal_anim_jump 1 gUnknown_83E309C:: @ 83E309C - .incbin "baserom.gba", 0x3E309C, 0x4 + .4byte gUnknown_83E3054 gUnknown_83E30A0:: @ 83E30A0 - .incbin "baserom.gba", 0x3E30A0, 0x4 + .4byte gUnknown_83E306C gUnknown_83E30A4:: @ 83E30A4 - .incbin "baserom.gba", 0x3E30A4, 0x4 + .4byte gUnknown_83E3084 gUnknown_83E30A8:: @ 83E30A8 spr_template 10271, 10271, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E309C, sub_80A4040 @@ -307,16 +491,28 @@ gUnknown_83E30D8:: @ 83E30D8 spr_template 10271, 10271, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E30A4, sub_80A4040 gUnknown_83E30F0:: @ 83E30F0 - .incbin "baserom.gba", 0x3E30F0, 0x10 + .2byte 0x001f, 0x027f, 0x03ff, 0x03e0, 0x7dc5, 0x7d56, 0x7eb6, 0x0000 gUnknown_83E3100:: @ 83E3100 spr_template 10266, 10266, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A4298 gUnknown_83E3118:: @ 83E3118 - .incbin "baserom.gba", 0x3E3118, 0x28 + obj_image_anim_frame 64, 3 + obj_image_anim_frame 80, 3 + obj_image_anim_frame 96, 3 + obj_image_anim_frame 112, 6 + obj_image_anim_end + +gUnknown_83E312C:: @ 83E312C + obj_image_anim_frame 64, 3, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 80, 3, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 96, 3, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 112, 6, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end gUnknown_83E3140:: @ 83E3140 - .incbin "baserom.gba", 0x3E3140, 0x8 + .4byte gUnknown_83E3118 + .4byte gUnknown_83E312C gUnknown_83E3148:: @ 83E3148 spr_template 10056, 10056, gOamData_83AC9D8, gUnknown_83E3140, NULL, gDummySpriteAffineAnimTable, sub_80A4450 @@ -325,10 +521,17 @@ gUnknown_83E3160:: @ 83E3160 spr_template 10287, 10287, gOamData_83AC9D8, gUnknown_83E3140, NULL, gDummySpriteAffineAnimTable, sub_80A4450 gUnknown_83E3178:: @ 83E3178 - .incbin "baserom.gba", 0x3E3178, 0x118 + .incbin "baserom.gba", 0x3E3178, 0x104 + +gUnknown_83E327C:: @ 83E327C + obj_image_anim_frame 0, 5 + obj_image_anim_frame 16, 5 + obj_image_anim_frame 32, 5 + obj_image_anim_frame 48, 5 + obj_image_anim_end gUnknown_83E3290:: @ 83E3290 - .incbin "baserom.gba", 0x3E3290, 0x4 + .4byte gUnknown_83E327C gUnknown_83E3294:: @ 83E3294 spr_template 10138, 10138, gOamData_83ACAF8, gUnknown_83E3290, NULL, gDummySpriteAffineAnimTable, sub_80A44E0 @@ -343,19 +546,37 @@ gUnknown_83E3354:: @ 83E3354 spr_template 10280, 10280, gOamData_83ACB00, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A48F0 gUnknown_83E336C:: @ 83E336C - .incbin "baserom.gba", 0x3E336C, 0x40 + obj_rot_scal_anim_frame 256, 256, 0, 0 + obj_rot_scal_anim_end + +gUnknown_83E337C:: @ 83E337C + obj_rot_scal_anim_frame 0, 0, 2, 12 + obj_rot_scal_anim_frame 0, 0, 0, 6 + obj_rot_scal_anim_frame 0, 0, 254, 24 + obj_rot_scal_anim_frame 0, 0, 0, 6 + obj_rot_scal_anim_frame 0, 0, 2, 12 + obj_rot_scal_anim_jump 0 gUnknown_83E33AC:: @ 83E33AC - .incbin "baserom.gba", 0x3E33AC, 0x8 + .4byte gUnknown_83E336C + .4byte gUnknown_83E337C gUnknown_83E33B4:: @ 83E33B4 spr_template 10099, 10099, gOamData_83ACB58, gDummySpriteAnimTable, NULL, gUnknown_83E33AC, sub_80A4ACC gUnknown_83E33CC:: @ 83E33CC - .incbin "baserom.gba", 0x3E33CC, 0x24 + obj_image_anim_frame 0, 7 + obj_image_anim_frame 16, 7 + obj_image_anim_frame 32, 7 + obj_image_anim_frame 48, 7 + obj_image_anim_frame 64, 7 + obj_image_anim_frame 80, 7 + obj_image_anim_frame 96, 7 + obj_image_anim_frame 112, 7 + obj_image_anim_jump 0 gUnknown_83E33F0:: @ 83E33F0 - .incbin "baserom.gba", 0x3E33F0, 0x4 + .4byte gUnknown_83E33CC gUnknown_83E33F4:: @ 83E33F4 spr_template 10049, 10049, gOamData_83AC9D8, gUnknown_83E33F0, NULL, gDummySpriteAffineAnimTable, sub_80A4D0C @@ -364,13 +585,34 @@ gUnknown_83E340C:: @ 83E340C spr_template 10049, 10049, gOamData_83AC9D8, gUnknown_83E33F0, NULL, gDummySpriteAffineAnimTable, sub_80A4D5C gUnknown_83E3424:: @ 83E3424 - .incbin "baserom.gba", 0x3E3424, 0x70 + .incbin "baserom.gba", 0x3E3424, 0x68 + +gUnknown_83E348C:: @ 83E348C + obj_image_anim_frame 0, 40 + obj_image_anim_end gUnknown_83E3494:: @ 83E3494 - .incbin "baserom.gba", 0x3E3494, 0x64 + .4byte gUnknown_83E348C + +gUnknown_83E3498:: @ 83E3498 + obj_rot_scal_anim_frame 20, 20, 226, 0 + obj_rot_scal_anim_frame 8, 8, 1, 24 + obj_rot_scal_anim_end + +gUnknown_83E34B0:: @ 83E34B0 + .incbin "baserom.gba", 0x3E34B0, 0x18 + +gUnknown_83E34C8:: @ 83E34C8 + obj_rot_scal_anim_frame 20, 20, 30, 0 + obj_rot_scal_anim_frame 8, 8, 255, 24 + obj_rot_scal_anim_end + +gUnknown_83E34E0:: @ 83E34E0 + .incbin "baserom.gba", 0x3E34E0, 0x18 gUnknown_83E34F8:: @ 83E34F8 - .incbin "baserom.gba", 0x3E34F8, 0x8 + .4byte gUnknown_83E3498 + .4byte gUnknown_83E34C8 gUnknown_83E3500:: @ 83E3500 spr_template 10228, 10228, gOamData_83ACA38, gUnknown_83E3494, NULL, gUnknown_83E34F8, sub_80A4EF4 @@ -382,17 +624,26 @@ gUnknown_83E3530:: @ 83E3530 spr_template 10014, 10014, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A5298 gUnknown_83E3548:: @ 83E3548 - .incbin "baserom.gba", 0x3E3548, 0x8 + .byte 0x40, 0x40, 0x00, 0xc0, 0xc0, 0x40, 0x20, 0xe0 gUnknown_83E3550:: @ 83E3550 spr_template 0, 0, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A5340 spr_template 0, 0, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A5590 gUnknown_83E3580:: @ 83E3580 - .incbin "baserom.gba", 0x3E3580, 0x1C + obj_image_anim_frame 0, 4 + obj_image_anim_frame 16, 4 + obj_image_anim_frame 32, 4 + obj_image_anim_frame 48, 4 + obj_image_anim_end + +gUnknown_83E3594:: @ 83E3594 + obj_image_anim_frame 48, 4 + obj_image_anim_end gUnknown_83E359C:: @ 83E359C - .incbin "baserom.gba", 0x3E359C, 0x8 + .4byte gUnknown_83E3580 + .4byte gUnknown_83E3594 gUnknown_83E35A4:: @ 83E35A4 spr_template 10183, 10183, gOamData_83AC9D8, gUnknown_83E359C, NULL, gDummySpriteAffineAnimTable, sub_80A5940 @@ -404,19 +655,37 @@ gUnknown_83E35D4:: @ 83E35D4 spr_template 10286, 10286, gOamData_83AC9D8, gUnknown_83E359C, NULL, gDummySpriteAffineAnimTable, sub_80A59F0 gUnknown_83E35EC:: @ 83E35EC - .incbin "baserom.gba", 0x3E35EC, 0x14 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 8, 12 + obj_image_anim_frame 16, 4 + obj_image_anim_frame 24, 4 + obj_image_anim_end gUnknown_83E3600:: @ 83E3600 - .incbin "baserom.gba", 0x3E3600, 0x4 + .4byte gUnknown_83E35EC gUnknown_83E3604:: @ 83E3604 spr_template 10184, 10184, gOamData_83ACA18, gUnknown_83E3600, NULL, gDummySpriteAffineAnimTable, sub_80A5AD8 gUnknown_83E361C:: @ 83E361C - .incbin "baserom.gba", 0x3E361C, 0x3C + obj_image_anim_frame 0, 18 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 16, 18 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 16, 6 + obj_image_anim_frame 32, 18 + obj_image_anim_frame 16, 6 + obj_image_anim_frame 32, 6 + obj_image_anim_frame 48, 18 + obj_image_anim_frame 32, 6 + obj_image_anim_frame 48, 6 + obj_image_anim_frame 64, 18 + obj_image_anim_frame 48, 6 + obj_image_anim_frame 64, 54 + obj_image_anim_end gUnknown_83E3658:: @ 83E3658 - .incbin "baserom.gba", 0x3E3658, 0x4 + .4byte gUnknown_83E361C gUnknown_83E365C:: @ 83E365C spr_template 10185, 10185, gOamData_83AC9D8, gUnknown_83E3658, NULL, gDummySpriteAffineAnimTable, sub_80A5B7C @@ -425,31 +694,48 @@ gUnknown_83E3674:: @ 83E3674 spr_template 10017, 10017, gOamData_83AC9C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, TranslateAnimSpriteToTargetMonLocation gUnknown_83E368C:: @ 83E368C - .incbin "baserom.gba", 0x3E368C, 0x18 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 16, 3 + obj_image_anim_frame 32, 3 + obj_image_anim_frame 48, 3 + obj_image_anim_frame 64, 3 + obj_image_anim_end gUnknown_83E36A4:: @ 83E36A4 - .incbin "baserom.gba", 0x3E36A4, 0x4 + .4byte gUnknown_83E368C gUnknown_83E36A8:: @ 83E36A8 spr_template 10030, 10030, gOamData_83AC9D8, gUnknown_83E36A4, NULL, gDummySpriteAffineAnimTable, AnimSpriteOnMonPos gUnknown_83E36C0:: @ 83E36C0 - .incbin "baserom.gba", 0x3E36C0, 0x14 + obj_image_anim_frame 3, 5 + obj_image_anim_frame 2, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_end gUnknown_83E36D4:: @ 83E36D4 - .incbin "baserom.gba", 0x3E36D4, 0x14 + .4byte gUnknown_83E36C0 + +gUnknown_83E36D8:: @ 83E36D8 + obj_rot_scal_anim_frame 512, 512, 0, 0 + obj_rot_scal_anim_end gUnknown_83E36E8:: @ 83E36E8 - .incbin "baserom.gba", 0x3E36E8, 0x4 + .4byte gUnknown_83E36D8 gUnknown_83E36EC:: @ 83E36EC spr_template 10018, 10018, gOamData_83ACBA8, gUnknown_83E36D4, NULL, gUnknown_83E36E8, sub_80A5C68 gUnknown_83E3704:: @ 83E3704 - .incbin "baserom.gba", 0x3E3704, 0x14 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 2, 5 + obj_image_anim_frame 3, 5 + obj_image_anim_end gUnknown_83E3718:: @ 83E3718 - .incbin "baserom.gba", 0x3E3718, 0x4 + .4byte gUnknown_83E3704 gUnknown_83E371C:: @ 83E371C spr_template 10018, 10018, gOamData_83ACBA8, gUnknown_83E3718, NULL, gUnknown_83E36E8, sub_80A5D4C @@ -458,19 +744,31 @@ gUnknown_83E3734:: @ 83E3734 spr_template 10194, 10194, gOamData_83ACB00, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A5EE0 gUnknown_83E374C:: @ 83E374C - .incbin "baserom.gba", 0x3E374C, 0x14 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 4, 8 + obj_image_anim_frame 8, 8 + obj_image_anim_frame 12, 8 + obj_image_anim_jump 0 gUnknown_83E3760:: @ 83E3760 - .incbin "baserom.gba", 0x3E3760, 0x4 + .4byte gUnknown_83E374C gUnknown_83E3764:: @ 83E3764 spr_template 10195, 10195, gOamData_83AC9D0, gUnknown_83E3760, NULL, gDummySpriteAffineAnimTable, sub_80A5F40 gUnknown_83E377C:: @ 83E377C - .incbin "baserom.gba", 0x3E377C, 0x24 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 16, 2 + obj_image_anim_frame 32, 2 + obj_image_anim_frame 48, 3 + obj_image_anim_frame 64, 5 + obj_image_anim_frame 80, 3 + obj_image_anim_frame 96, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_end gUnknown_83E37A0:: @ 83E37A0 - .incbin "baserom.gba", 0x3E37A0, 0x4 + .4byte gUnknown_83E377C gUnknown_83E37A4:: @ 83E37A4 spr_template 10031, 10031, gOamData_83AC9D8, gUnknown_83E37A0, NULL, gDummySpriteAffineAnimTable, AnimSpriteOnMonPos @@ -479,10 +777,14 @@ gUnknown_83E37BC:: @ 83E37BC spr_template 10020, 10020, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A6244 gUnknown_83E37D4:: @ 83E37D4 - .incbin "baserom.gba", 0x3E37D4, 0x14 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 16, 2 + obj_image_anim_frame 32, 2 + obj_image_anim_frame 48, 2 + obj_image_anim_end gUnknown_83E37E8:: @ 83E37E8 - .incbin "baserom.gba", 0x3E37E8, 0x4 + .4byte gUnknown_83E37D4 gUnknown_83E37EC:: @ 83E37EC spr_template 10192, 10192, gOamData_83AC9D8, gUnknown_83E37E8, NULL, gDummySpriteAffineAnimTable, sub_80A65CC @@ -509,16 +811,23 @@ gUnknown_83E3844:: @ 83E3844 spr_template 14340, 2110, gOamData_83E380C, gUnknown_83E3814, gUnknown_83E381C, gUnknown_83E3824, gUnknown_83E382C gUnknown_83E385C:: @ 83E385C - .incbin "baserom.gba", 0x3E385C, 0x20 + .4byte 0x83e3834 + .4byte 0x83e383c + +gUnknown_83E3864:: @ 83E3864 + obj_rot_scal_anim_frame 12, 12, 0, 16 + obj_rot_scal_anim_frame -12, -12, 0, 16 + obj_rot_scal_anim_jump 0 gUnknown_83E387C:: @ 83E387C - .incbin "baserom.gba", 0x3E387C, 0x4 + .4byte gUnknown_83E3864 gUnknown_83E3880:: @ 83E3880 spr_template 10072, 10072, gOamData_83ACA90, gUnknown_83E3844, NULL, gUnknown_83E387C, sub_80A66D4 gUnknown_83E3898:: @ 83E3898 - .incbin "baserom.gba", 0x3E3898, 0x30 + .2byte 0x2758, 0x7fff, 0x735f, 0x6adf, 0x623f, 0x59bf, 0x2771, 0x7fff, 0x6bf9, 0x57f4, 0x43ef, 0x33ea, 0x27c9, 0x7fff, 0x63ff, 0x47ff + .2byte 0x2bff, 0x0fff, 0x27bf, 0x7fff, 0x7f9a, 0x7f55, 0x7f10, 0x7ecc gUnknown_83E38C8:: @ 83E38C8 spr_template 10072, 10072, gOamData_83ACA90, gUnknown_83E3844, NULL, gUnknown_83E387C, sub_80A68B0 @@ -527,28 +836,71 @@ gUnknown_83E38E0:: @ 83E38E0 spr_template 10193, 10193, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A69B8 gUnknown_83E38F8:: @ 83E38F8 - .incbin "baserom.gba", 0x3E38F8, 0x18 + obj_rot_scal_anim_frame 160, 160, 0, 0 + obj_rot_scal_anim_frame 4, 4, 0, 1 + obj_rot_scal_anim_jump 1 gUnknown_83E3910:: @ 83E3910 - .incbin "baserom.gba", 0x3E3910, 0x4 + .4byte gUnknown_83E38F8 gUnknown_83E3914:: @ 83E3914 spr_template 10072, 10072, gOamData_83ACA90, gUnknown_83E3844, NULL, gUnknown_83E3910, sub_80A6A28 gUnknown_83E392C:: @ 83E392C - .incbin "baserom.gba", 0x3E392C, 0x50 + obj_image_anim_frame 0, 2, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 16, 2, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 32, 2, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end + +gUnknown_83E3940:: @ 83E3940 + obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 32, 2, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 16, 2, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 0, 2, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end + +gUnknown_83E3954:: @ 83E3954 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 16, 2 + obj_image_anim_frame 32, 2 + obj_image_anim_frame 48, 2 + obj_image_anim_end + +gUnknown_83E3968:: @ 83E3968 + obj_image_anim_frame 48, 2 + obj_image_anim_frame 32, 2 + obj_image_anim_frame 16, 2 + obj_image_anim_frame 0, 2 + obj_image_anim_end gUnknown_83E397C:: @ 83E397C - .incbin "baserom.gba", 0x3E397C, 0x10 + .4byte gUnknown_83E392C + .4byte gUnknown_83E3954 + .4byte gUnknown_83E3940 + .4byte gUnknown_83E3968 gUnknown_83E398C:: @ 83E398C spr_template 10209, 10209, gOamData_83AC9D8, gUnknown_83E397C, NULL, gDummySpriteAffineAnimTable, sub_80A6B64 gUnknown_83E39A4:: @ 83E39A4 - .incbin "baserom.gba", 0x3E39A4, 0x88 + obj_rot_scal_anim_frame 16, 16, 0, 0 + obj_rot_scal_anim_frame 30, 30, 0, 8 + obj_rot_scal_anim_end + +gUnknown_83E39BC:: @ 83E39BC + obj_rot_scal_anim_frame 0, 0, 4, 11 + obj_rot_scal_anim_frame 0, 0, 252, 11 + obj_rot_scal_anim_loop 2 + obj_rot_scal_anim_frame -30, -30, 0, 8 + obj_rot_scal_anim_end + +gUnknown_83E39E4:: @ 83E39E4 + .incbin "baserom.gba", 0x3E39E4, 0x48 gUnknown_83E3A2C:: @ 83E3A2C - .incbin "baserom.gba", 0x3E3A2C, 0x8 + .4byte gUnknown_83E39A4 + .4byte gUnknown_83E39BC gUnknown_83E3A34:: @ 83E3A34 spr_template 10064, 10064, gOamData_83ACA98, gDummySpriteAnimTable, NULL, gUnknown_83E3A2C, sub_80A6C08 @@ -557,29 +909,71 @@ gUnknown_83E3A4C:: @ 83E3A4C spr_template 10064, 10064, gOamData_83ACA38, gDummySpriteAnimTable, NULL, gUnknown_83E3A2C, sub_80A6C84 gUnknown_83E3A64:: @ 83E3A64 - .incbin "baserom.gba", 0x3E3A64, 0x50 + obj_image_anim_frame 0, 1 + obj_image_anim_end + +gUnknown_83E3A6C:: @ 83E3A6C + obj_image_anim_frame 0, 1, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end + +gUnknown_83E3A74:: @ 83E3A74 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 16, 4 + obj_image_anim_frame 32, 4 + obj_image_anim_frame 16, 4 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 16, 4 + obj_image_anim_frame 32, 4 + obj_image_anim_end + +gUnknown_83E3A94:: @ 83E3A94 + obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 16, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 32, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 16, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 16, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 32, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end gUnknown_83E3AB4:: @ 83E3AB4 - .incbin "baserom.gba", 0x3E3AB4, 0x10 + .4byte gUnknown_83E3A64 + .4byte gUnknown_83E3A6C + .4byte gUnknown_83E3A74 + .4byte gUnknown_83E3A94 gUnknown_83E3AC4:: @ 83E3AC4 spr_template 10214, 10214, gOamData_83AC9D8, gUnknown_83E3AB4, NULL, gDummySpriteAffineAnimTable, sub_80A6D90 spr_template 10064, 10064, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A6E48 gUnknown_83E3AF4:: @ 83E3AF4 - .incbin "baserom.gba", 0x3E3AF4, 0xC4 + .incbin "baserom.gba", 0x3E3AF4, 0xA0 + +gUnknown_83E3B94:: @ 83E3B94 + obj_image_anim_frame 0, 3, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 8, 3, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 16, 3, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 24, 3, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 32, 3, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 40, 3, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_loop 1 + obj_image_anim_end gUnknown_83E3BB8:: @ 83E3BB8 - .incbin "baserom.gba", 0x3E3BB8, 0x4 + .4byte gUnknown_83E3B94 gUnknown_83E3BBC:: @ 83E3BBC spr_template 10075, 10075, gOamData_83AC9F8, gUnknown_83E3BB8, NULL, gDummySpriteAffineAnimTable, sub_80A71D8 gUnknown_83E3BD4:: @ 83E3BD4 - .incbin "baserom.gba", 0x3E3BD4, 0x20 + obj_rot_scal_anim_frame 16, 256, 0, 0 + obj_rot_scal_anim_frame 20, 0, 0, 12 + obj_rot_scal_anim_frame 0, 0, 0, 32 + obj_rot_scal_anim_end gUnknown_83E3BF4:: @ 83E3BF4 - .incbin "baserom.gba", 0x3E3BF4, 0x4 + .4byte gUnknown_83E3BD4 gUnknown_83E3BF8:: @ 83E3BF8 spr_template 10005, 10005, gOamData_83ACBA0, gDummySpriteAnimTable, NULL, gUnknown_83E3BF4, sub_80A727C @@ -591,13 +985,25 @@ gUnknown_83E3C28:: @ 83E3C28 spr_template 10003, 10003, gOamData_83ACB18, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A74A4 gUnknown_83E3C40:: @ 83E3C40 - .incbin "baserom.gba", 0x3E3C40, 0x58 + obj_rot_scal_anim_frame 32, 32, 0, 0 + obj_rot_scal_anim_frame 7, 7, 0, 200 + obj_rot_scal_anim_end + +gUnknown_83E3C58:: @ 83E3C58 + obj_rot_scal_anim_frame 5, 5, 0, 10 + obj_rot_scal_anim_frame -10, -10, 0, 10 + obj_rot_scal_anim_frame 10, 10, 0, 10 + obj_rot_scal_anim_frame -10, -10, 0, 10 + obj_rot_scal_anim_frame 10, 10, 0, 10 + obj_rot_scal_anim_frame -10, -10, 0, 10 + obj_rot_scal_anim_frame 10, 10, 0, 10 + obj_rot_scal_anim_end gUnknown_83E3C98:: @ 83E3C98 - .incbin "baserom.gba", 0x3E3C98, 0x4 + .4byte gUnknown_83E3C40 gUnknown_83E3C9C:: @ 83E3C9C - .incbin "baserom.gba", 0x3E3C9C, 0x4 + .4byte gUnknown_83E3C58 gUnknown_83E3CA0:: @ 83E3CA0 spr_template 10163, 10163, gOamData_83ACAD8, gDummySpriteAnimTable, NULL, gUnknown_83E3C98, TranslateAnimSpriteToTargetMonLocation @@ -618,13 +1024,18 @@ gUnknown_83E3D18:: @ 83E3D18 spr_template 10178, 10178, gOamData_83ACB00, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A79E8 gUnknown_83E3D30:: @ 83E3D30 - .incbin "baserom.gba", 0x3E3D30, 0x8 + obj_image_anim_frame 8, 1 + obj_image_anim_end gUnknown_83E3D38:: @ 83E3D38 - .incbin "baserom.gba", 0x3E3D38, 0x14 + .4byte gUnknown_83E3D30 + +gUnknown_83E3D3C:: @ 83E3D3C + obj_rot_scal_anim_frame 0, 0, 10, 1 + obj_rot_scal_anim_jump 0 gUnknown_83E3D4C:: @ 83E3D4C - .incbin "baserom.gba", 0x3E3D4C, 0x4 + .4byte gUnknown_83E3D3C gUnknown_83E3D50:: @ 83E3D50 spr_template 10100, 10100, gOamData_83ACA30, gUnknown_83E3D38, NULL, gDummySpriteAffineAnimTable, sub_80A7A88 @@ -633,37 +1044,60 @@ gUnknown_83E3D68:: @ 83E3D68 spr_template 10100, 10100, gOamData_83ACA30, gUnknown_83E3D38, NULL, gUnknown_83E3D4C, sub_80A7B3C gUnknown_83E3D80:: @ 83E3D80 - .incbin "baserom.gba", 0x3E3D80, 0x10 + obj_rot_scal_anim_frame 0, 0, 20, 1 + obj_rot_scal_anim_jump 0 gUnknown_83E3D90:: @ 83E3D90 - .incbin "baserom.gba", 0x3E3D90, 0x4 + .4byte gUnknown_83E3D80 gUnknown_83E3D94:: @ 83E3D94 spr_template 10006, 10006, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E3D90, sub_80A7BC4 gUnknown_83E3DAC:: @ 83E3DAC - .incbin "baserom.gba", 0x3E3DAC, 0x18 + obj_rot_scal_anim_frame 16, 256, 0, 0 + obj_rot_scal_anim_frame 4, 0, 0, 40 + obj_rot_scal_anim_end gUnknown_83E3DC4:: @ 83E3DC4 - .incbin "baserom.gba", 0x3E3DC4, 0x4 + .4byte gUnknown_83E3DAC gUnknown_83E3DC8:: @ 83E3DC8 spr_template 10009, 10009, gOamData_83ACA80, gDummySpriteAnimTable, NULL, gUnknown_83E3DC4, sub_80A7D04 gUnknown_83E3DE0:: @ 83E3DE0 - .incbin "baserom.gba", 0x3E3DE0, 0x20 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 16, 3 + obj_image_anim_frame 32, 20 + obj_image_anim_end + +gUnknown_83E3DF0:: @ 83E3DF0 + obj_image_anim_frame 0, 3, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_frame 16, 3, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_frame 32, 20, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_end gUnknown_83E3E00:: @ 83E3E00 - .incbin "baserom.gba", 0x3E3E00, 0x8 + .4byte gUnknown_83E3DE0 + .4byte gUnknown_83E3DF0 gUnknown_83E3E08:: @ 83E3E08 spr_template 10138, 10138, gOamData_83ACAF8, gUnknown_83E3E00, NULL, gDummySpriteAffineAnimTable, sub_80A7D64 gUnknown_83E3E20:: @ 83E3E20 - .incbin "baserom.gba", 0x3E3E20, 0x20 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 16, 2 + obj_image_anim_frame 32, 1 + obj_image_anim_end + +gUnknown_83E3E30:: @ 83E3E30 + obj_image_anim_frame 0, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_frame 16, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_frame 32, 1, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_end gUnknown_83E3E40:: @ 83E3E40 - .incbin "baserom.gba", 0x3E3E40, 0x8 + .4byte gUnknown_83E3E20 + .4byte gUnknown_83E3E30 gUnknown_83E3E48:: @ 83E3E48 spr_template 10138, 10138, gOamData_83ACAF8, gUnknown_83E3E40, NULL, gDummySpriteAffineAnimTable, sub_80A7E14 @@ -672,19 +1106,36 @@ gUnknown_83E3E60:: @ 83E3E60 .incbin "baserom.gba", 0x3E3E60, 0x20 gUnknown_83E3E80:: @ 83E3E80 - .incbin "baserom.gba", 0x3E3E80, 0x48 + .incbin "baserom.gba", 0x3E3E80, 0x20 + +gUnknown_83E3EA0:: @ 83E3EA0 + obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 4, 40, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 12, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end + +gUnknown_83E3EB4:: @ 83E3EB4 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 4, 40 + obj_image_anim_frame 8, 4 + obj_image_anim_frame 12, 4 + obj_image_anim_end gUnknown_83E3EC8:: @ 83E3EC8 - .incbin "baserom.gba", 0x3E3EC8, 0x8 + .4byte gUnknown_83E3EA0 + .4byte gUnknown_83E3EB4 gUnknown_83E3ED0:: @ 83E3ED0 spr_template 10086, 10086, gOamData_83AC9D0, gUnknown_83E3EC8, NULL, gDummySpriteAffineAnimTable, sub_80A851C gUnknown_83E3EE8:: @ 83E3EE8 - .incbin "baserom.gba", 0x3E3EE8, 0x18 + obj_rot_scal_anim_frame 11, 11, 0, 8 + obj_rot_scal_anim_frame -11, -11, 0, 8 + obj_rot_scal_anim_end gUnknown_83E3F00:: @ 83E3F00 - .incbin "baserom.gba", 0x3E3F00, 0x4 + .4byte gUnknown_83E3EE8 gUnknown_83E3F04:: @ 83E3F04 spr_template 10087, 10087, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E3F00, sub_80A85AC @@ -699,40 +1150,78 @@ gUnknown_83E3F64:: @ 83E3F64 spr_template 10197, 10197, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8075F0C gUnknown_83E3F7C:: @ 83E3F7C - .incbin "baserom.gba", 0x3E3F7C, 0x14 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 16, 5 + obj_image_anim_frame 32, 5 + obj_image_anim_frame 48, 5 + obj_image_anim_end gUnknown_83E3F90:: @ 83E3F90 - .incbin "baserom.gba", 0x3E3F90, 0x4 + .4byte gUnknown_83E3F7C gUnknown_83E3F94:: @ 83E3F94 spr_template 10198, 10198, gOamData_83AC9D8, gUnknown_83E3F90, NULL, gDummySpriteAffineAnimTable, AnimSpriteOnMonPos gUnknown_83E3FAC:: @ 83E3FAC - .incbin "baserom.gba", 0x3E3FAC, 0x70 + obj_rot_scal_anim_frame 0, 0, 248, 2 + obj_rot_scal_anim_frame 0, 0, 8, 4 + obj_rot_scal_anim_frame 0, 0, 248, 2 + obj_rot_scal_anim_jump 0 + +gUnknown_83E3FCC:: @ 83E3FCC + obj_rot_scal_anim_frame 256, 256, 0, 0 + obj_rot_scal_anim_end + +gUnknown_83E3FDC:: @ 83E3FDC + obj_rot_scal_anim_frame -8, 4, 0, 8 + obj_rot_scal_anim_loop 0 + obj_rot_scal_anim_frame 16, -8, 0, 8 + obj_rot_scal_anim_frame -16, 8, 0, 8 + obj_rot_scal_anim_loop 1 + obj_rot_scal_anim_frame 256, 256, 0, 0 + obj_rot_scal_anim_frame 0, 0, 0, 15 + obj_rot_scal_anim_end gUnknown_83E401C:: @ 83E401C - .incbin "baserom.gba", 0x3E401C, 0xC + .4byte gUnknown_83E3FAC + .4byte gUnknown_83E3FCC + .4byte gUnknown_83E3FDC gUnknown_83E4028:: @ 83E4028 spr_template 10202, 10202, gOamData_83ACBB8, gDummySpriteAnimTable, NULL, gUnknown_83E401C, sub_80A8F38 gUnknown_83E4040:: @ 83E4040 - .incbin "baserom.gba", 0x3E4040, 0x48 + obj_rot_scal_anim_frame 16, 16, 0, 0 + obj_rot_scal_anim_frame 16, 16, 0, 30 + obj_rot_scal_anim_end 1 + +gUnknown_83E4058:: @ 83E4058 + obj_rot_scal_anim_frame 16, 16, 0, 0 + obj_rot_scal_anim_frame 32, 32, 0, 15 + obj_rot_scal_anim_end 1 + +gUnknown_83E4070:: @ 83E4070 + obj_rot_scal_anim_frame 16, 16, 0, 0 + obj_rot_scal_anim_frame 11, 11, 0, 45 + obj_rot_scal_anim_end 1 gUnknown_83E4088:: @ 83E4088 - .incbin "baserom.gba", 0x3E4088, 0x8 + .4byte gUnknown_83E4040 + .4byte gUnknown_83E4058 gUnknown_83E4090:: @ 83E4090 - .incbin "baserom.gba", 0x3E4090, 0x4 + .4byte gUnknown_83E4070 gUnknown_83E4094:: @ 83E4094 spr_template 10203, 10203, gOamData_83ACAA0, gDummySpriteAnimTable, NULL, gUnknown_83E4088, AnimSpriteOnMonPos gUnknown_83E40AC:: @ 83E40AC - .incbin "baserom.gba", 0x3E40AC, 0x18 + obj_rot_scal_anim_frame 512, 512, 0, 0 + obj_rot_scal_anim_frame -16, -16, 0, 30 + obj_rot_scal_anim_end 1 gUnknown_83E40C4:: @ 83E40C4 - .incbin "baserom.gba", 0x3E40C4, 0x4 + .4byte gUnknown_83E40AC gUnknown_83E40C8:: @ 83E40C8 spr_template 10203, 10203, gOamData_83ACBC0, gDummySpriteAnimTable, NULL, gUnknown_83E40C4, AnimSpriteOnMonPos @@ -747,19 +1236,43 @@ gUnknown_83E4110:: @ 83E4110 spr_template 10203, 10203, gOamData_83ACBC0, gDummySpriteAnimTable, NULL, gUnknown_83E4088, sub_80A8EE8 gUnknown_83E4128:: @ 83E4128 - .incbin "baserom.gba", 0x3E4128, 0x28 + .incbin "baserom.gba", 0x3E4128, 0x10 + +gUnknown_83E4138:: @ 83E4138 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 4, 3 + obj_image_anim_frame 8, 3 + obj_image_anim_frame 4, 3 + obj_image_anim_frame 0, 3 + obj_image_anim_end gUnknown_83E4150:: @ 83E4150 - .incbin "baserom.gba", 0x3E4150, 0x4 + .4byte gUnknown_83E4138 gUnknown_83E4154:: @ 83E4154 spr_template 10207, 10207, gOamData_83AC9D0, gUnknown_83E4150, NULL, gDummySpriteAffineAnimTable, sub_80A9648 gUnknown_83E416C:: @ 83E416C - .incbin "baserom.gba", 0x3E416C, 0x40 + .incbin "baserom.gba", 0x3E416C, 0x8 + +gUnknown_83E4174:: @ 83E4174 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 16, 6 + obj_image_anim_frame 32, 15 + obj_image_anim_frame 16, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 16, 6, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 32, 15, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 16, 6, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 0, 6 + obj_image_anim_frame 16, 6 + obj_image_anim_frame 32, 15 + obj_image_anim_frame 16, 6 + obj_image_anim_frame 0, 6 + obj_image_anim_end gUnknown_83E41AC:: @ 83E41AC - .incbin "baserom.gba", 0x3E41AC, 0x4 + .4byte gUnknown_83E4174 gUnknown_83E41B0:: @ 83E41B0 spr_template 10205, 10205, gOamData_83AC9D8, gUnknown_83E41AC, NULL, gDummySpriteAffineAnimTable, AnimSpriteOnMonPos @@ -786,10 +1299,12 @@ gUnknown_83E4248:: @ 83E4248 spr_template 10216, 10216, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A9C4C gUnknown_83E4260:: @ 83E4260 - .incbin "baserom.gba", 0x3E4260, 0x18 + obj_rot_scal_anim_frame 128, 128, 0, 0 + obj_rot_scal_anim_frame 8, 8, 0, 1 + obj_rot_scal_anim_jump 1 gUnknown_83E4278:: @ 83E4278 - .incbin "baserom.gba", 0x3E4278, 0x4 + .4byte gUnknown_83E4260 gUnknown_83E427C:: @ 83E427C spr_template 10217, 10217, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E4278, sub_80AA174 @@ -798,28 +1313,36 @@ gUnknown_83E4294:: @ 83E4294 spr_template 10217, 10217, gOamData_83ACA90, gDummySpriteAnimTable, NULL, gUnknown_83E4278, sub_80AA2B0 gUnknown_83E42AC:: @ 83E42AC - .incbin "baserom.gba", 0x3E42AC, 0x18 + obj_rot_scal_anim_frame 128, 128, 0, 0 + obj_rot_scal_anim_frame 8, 8, 0, 1 + obj_rot_scal_anim_jump 1 gUnknown_83E42C4:: @ 83E42C4 - .incbin "baserom.gba", 0x3E42C4, 0x4 + .4byte gUnknown_83E42AC gUnknown_83E42C8:: @ 83E42C8 spr_template 10237, 10237, gOamData_83ACA88, gDummySpriteAnimTable, NULL, gUnknown_83E42C4, sub_80AA37C gUnknown_83E42E0:: @ 83E42E0 - .incbin "baserom.gba", 0x3E42E0, 0x18 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 4, 4 + obj_image_anim_frame 8, 4 + obj_image_anim_frame 4, 4 + obj_image_anim_frame 0, 4 + obj_image_anim_end gUnknown_83E42F8:: @ 83E42F8 - .incbin "baserom.gba", 0x3E42F8, 0x4 + .4byte gUnknown_83E42E0 gUnknown_83E42FC:: @ 83E42FC spr_template 10218, 10218, gOamData_83AC9D0, gUnknown_83E42F8, NULL, gDummySpriteAffineAnimTable, sub_80AA3F0 gUnknown_83E4314:: @ 83E4314 - .incbin "baserom.gba", 0x3E4314, 0x8 + obj_image_anim_frame 0, 24 + obj_image_anim_end gUnknown_83E431C:: @ 83E431C - .incbin "baserom.gba", 0x3E431C, 0x4 + .4byte gUnknown_83E4314 gUnknown_83E4320:: @ 83E4320 spr_template 10220, 10220, gOamData_83AC9D8, gUnknown_83E431C, NULL, gDummySpriteAffineAnimTable, sub_80AA408 @@ -828,28 +1351,58 @@ gUnknown_83E4338:: @ 83E4338 spr_template 10219, 10219, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AA508 gUnknown_83E4350:: @ 83E4350 - .incbin "baserom.gba", 0x3E4350, 0x10 + obj_image_anim_frame 0, 3 + obj_image_anim_jump 0 + +gUnknown_83E4358:: @ 83E4358 + obj_image_anim_frame 16, 3 + obj_image_anim_jump 0 gUnknown_83E4360:: @ 83E4360 - .incbin "baserom.gba", 0x3E4360, 0x8 + .4byte gUnknown_83E4350 + .4byte gUnknown_83E4358 gUnknown_83E4368:: @ 83E4368 spr_template 10221, 10221, gOamData_83AC9D8, gUnknown_83E4360, NULL, gDummySpriteAffineAnimTable, sub_80AA58C gUnknown_83E4380:: @ 83E4380 - .incbin "baserom.gba", 0x3E4380, 0x28 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 16, 4 + obj_image_anim_frame 32, 4 + obj_image_anim_frame 48, 4 + obj_image_anim_end + +gUnknown_83E4394:: @ 83E4394 + obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 16, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 32, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 48, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end gUnknown_83E43A8:: @ 83E43A8 - .incbin "baserom.gba", 0x3E43A8, 0x8 + .4byte gUnknown_83E4380 + .4byte gUnknown_83E4394 gUnknown_83E43B0:: @ 83E43B0 spr_template 10222, 10222, gOamData_83AC9D8, gUnknown_83E43A8, NULL, gDummySpriteAffineAnimTable, sub_80AA6B8 gUnknown_83E43C8:: @ 83E43C8 - .incbin "baserom.gba", 0x3E43C8, 0x28 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 16, 8 + obj_image_anim_frame 32, 8 + obj_image_anim_frame 16, 8 + obj_image_anim_end + +gUnknown_83E43DC:: @ 83E43DC + obj_image_anim_frame 16, 8, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 32, 8, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 16, 8, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 0, 8, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end gUnknown_83E43F0:: @ 83E43F0 - .incbin "baserom.gba", 0x3E43F0, 0x8 + .4byte gUnknown_83E43C8 + .4byte gUnknown_83E43DC gUnknown_83E43F8:: @ 83E43F8 spr_template 10215, 10215, gOamData_83AC9D8, gUnknown_83E43F0, NULL, gDummySpriteAffineAnimTable, sub_80AA708 @@ -861,10 +1414,21 @@ gUnknown_83E4430:: @ 83E4430 spr_template 10225, 10225, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AA838 gUnknown_83E4448:: @ 83E4448 - .incbin "baserom.gba", 0x3E4448, 0x30 + obj_rot_scal_anim_frame 0, 0, 0, 5 + obj_rot_scal_anim_end + +gUnknown_83E4458:: @ 83E4458 + obj_rot_scal_anim_frame 0, 0, 248, 16 + obj_rot_scal_anim_end 1 + +gUnknown_83E4468:: @ 83E4468 + obj_rot_scal_anim_frame 0, 0, 8, 16 + obj_rot_scal_anim_end 1 gUnknown_83E4478:: @ 83E4478 - .incbin "baserom.gba", 0x3E4478, 0xC + .4byte gUnknown_83E4448 + .4byte gUnknown_83E4458 + .4byte gUnknown_83E4468 gUnknown_83E4484:: @ 83E4484 spr_template 10206, 10206, gOamData_83ACA30, gUnknown_83E3844, NULL, gUnknown_83E4478, sub_80AA998 @@ -873,52 +1437,91 @@ gUnknown_83E449C:: @ 83E449C spr_template 10206, 10206, gOamData_83ACA30, gUnknown_83E3844, NULL, gUnknown_83E4478, sub_80AA938 gUnknown_83E44B4:: @ 83E44B4 - .incbin "baserom.gba", 0x3E44B4, 0x20 + obj_rot_scal_anim_frame 256, 256, 0, 0 + obj_rot_scal_anim_end + +gUnknown_83E44C4:: @ 83E44C4 + obj_rot_scal_anim_frame 512, 256, 0, 0 + obj_rot_scal_anim_end gUnknown_83E44D4:: @ 83E44D4 - .incbin "baserom.gba", 0x3E44D4, 0x8 + .4byte gUnknown_83E44B4 + .4byte gUnknown_83E44C4 gUnknown_83E44DC:: @ 83E44DC spr_template 10244, 10244, gOamData_83ACBE0, gDummySpriteAnimTable, NULL, gUnknown_83E44D4, sub_80AAAE4 gUnknown_83E44F4:: @ 83E44F4 - .incbin "baserom.gba", 0x3E44F4, 0x13A0 + .incbin "baserom.gba", 0x3E44F4, 0x1380 + +gUnknown_83E5874:: @ 83E5874 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 8, 2 + obj_image_anim_frame 16, 2 + obj_image_anim_frame 24, 6 + obj_image_anim_frame 32, 2 + obj_image_anim_frame 40, 2 + obj_image_anim_frame 48, 2 + obj_image_anim_end gUnknown_83E5894:: @ 83E5894 - .incbin "baserom.gba", 0x3E5894, 0x4 + .4byte gUnknown_83E5874 gUnknown_83E5898:: @ 83E5898 spr_template 10115, 10115, gOamData_83ACA18, gUnknown_83E5894, NULL, gDummySpriteAffineAnimTable, sub_80AAC54 gUnknown_83E58B0:: @ 83E58B0 - .incbin "baserom.gba", 0x3E58B0, 0x18 + obj_rot_scal_anim_frame -5, -5, 0, 10 + obj_rot_scal_anim_frame 5, 5, 0, 10 + obj_rot_scal_anim_jump 0 gUnknown_83E58C8:: @ 83E58C8 - .incbin "baserom.gba", 0x3E58C8, 0x14 + .4byte gUnknown_83E58B0 + +gUnknown_83E58CC:: @ 83E58CC + obj_image_anim_frame 0, 1 + obj_image_anim_frame 4, 5 + obj_image_anim_frame 8, 5 + obj_image_anim_end gUnknown_83E58DC:: @ 83E58DC - .incbin "baserom.gba", 0x3E58DC, 0x4 + .4byte gUnknown_83E58CC gUnknown_83E58E0:: @ 83E58E0 spr_template 10146, 10146, gOamData_83ACB50, gUnknown_83E58DC, NULL, gUnknown_83E58C8, sub_80AAC98 gUnknown_83E58F8:: @ 83E58F8 - .incbin "baserom.gba", 0x3E58F8, 0x10 + obj_image_anim_frame 0, 1 + obj_image_anim_end + +gUnknown_83E5900:: @ 83E5900 + obj_image_anim_frame 4, 1 + obj_image_anim_end gUnknown_83E5908:: @ 83E5908 - .incbin "baserom.gba", 0x3E5908, 0x20 + .4byte gUnknown_83E58F8 + .4byte gUnknown_83E5900 + +gUnknown_83E5910:: @ 83E5910 + obj_rot_scal_anim_frame 0, 0, 0, 1 + obj_rot_scal_anim_frame 96, 96, 0, 1 + obj_rot_scal_anim_end gUnknown_83E5928:: @ 83E5928 - .incbin "baserom.gba", 0x3E5928, 0x4 + .4byte gUnknown_83E5910 gUnknown_83E592C:: @ 83E592C spr_template 10140, 10140, gOamData_83ACAC8, gUnknown_83E5908, NULL, gUnknown_83E5928, sub_80AAE84 gUnknown_83E5944:: @ 83E5944 - .incbin "baserom.gba", 0x3E5944, 0x14 + obj_image_anim_frame 0, 1 + obj_image_anim_frame 4, 1 + obj_image_anim_frame 8, 1 + obj_image_anim_frame 12, 1 + obj_image_anim_jump 0 gUnknown_83E5958:: @ 83E5958 - .incbin "baserom.gba", 0x3E5958, 0x4 + .4byte gUnknown_83E5944 gUnknown_83E595C:: @ 83E595C spr_template 10149, 10149, gOamData_83ACAF0, gUnknown_83E5958, NULL, gDummySpriteAffineAnimTable, sub_80AB024 @@ -933,10 +1536,13 @@ gUnknown_83E59A4:: @ 83E59A4 spr_template 10265, 10265, gOamData_83AC9C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AB024 gUnknown_83E59BC:: @ 83E59BC - .incbin "baserom.gba", 0x3E59BC, 0x10 + obj_image_anim_frame 16, 2 + obj_image_anim_frame 32, 2 + obj_image_anim_frame 48, 2 + obj_image_anim_jump 0 gUnknown_83E59CC:: @ 83E59CC - .incbin "baserom.gba", 0x3E59CC, 0x4 + .4byte gUnknown_83E59BC gUnknown_83E59D0:: @ 83E59D0 spr_template 10029, 10029, gOamData_83AC9D8, gUnknown_83E59CC, NULL, gDummySpriteAffineAnimTable, sub_80AB024 @@ -945,13 +1551,20 @@ gUnknown_83E59E8:: @ 83E59E8 spr_template 10165, 10165, gOamData_83ACAD8, gDummySpriteAnimTable, NULL, gUnknown_83E3C98, sub_80AB024 gUnknown_83E5A00:: @ 83E5A00 - .incbin "baserom.gba", 0x3E5A00, 0x30 + obj_rot_scal_anim_frame 3, 3, 10, 50 + obj_rot_scal_anim_frame 0, 0, 0, 10 + obj_rot_scal_anim_frame -20, -20, 246, 20 + obj_rot_scal_anim_end + +gUnknown_83E5A20:: @ 83E5A20 + obj_rot_scal_anim_frame 336, 336, 0, 0 + obj_rot_scal_anim_end gUnknown_83E5A30:: @ 83E5A30 - .incbin "baserom.gba", 0x3E5A30, 0x4 + .4byte gUnknown_83E5A00 gUnknown_83E5A34:: @ 83E5A34 - .incbin "baserom.gba", 0x3E5A34, 0x4 + .4byte gUnknown_83E5A20 gUnknown_83E5A38:: @ 83E5A38 spr_template 10149, 10149, gOamData_83ACBB0, gUnknown_83E5958, NULL, gUnknown_83E5A30, sub_80AB168 @@ -960,13 +1573,18 @@ gUnknown_83E5A50:: @ 83E5A50 spr_template 10149, 10149, gOamData_83ACBB0, gUnknown_83E5958, NULL, gUnknown_83E5A34, sub_80AB1F8 gUnknown_83E5A68:: @ 83E5A68 - .incbin "baserom.gba", 0x3E5A68, 0x10 + obj_image_anim_frame 0, 1 + obj_image_anim_end + +gUnknown_83E5A70:: @ 83E5A70 + obj_image_anim_frame 4, 1 + obj_image_anim_end gUnknown_83E5A78:: @ 83E5A78 - .incbin "baserom.gba", 0x3E5A78, 0x4 + .4byte gUnknown_83E5A68 gUnknown_83E5A7C:: @ 83E5A7C - .incbin "baserom.gba", 0x3E5A7C, 0x4 + .4byte gUnknown_83E5A70 gUnknown_83E5A80:: @ 83E5A80 spr_template 10155, 10155, gOamData_83ACAF0, gUnknown_83E5A78, NULL, gDummySpriteAffineAnimTable, AnimThrowProjectile @@ -984,19 +1602,45 @@ gUnknown_83E5AE0:: @ 83E5AE0 spr_template 10268, 10268, gOamData_83AC9C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80ABF60 gUnknown_83E5AF8:: @ 83E5AF8 - .incbin "baserom.gba", 0x3E5AF8, 0x18 + obj_image_anim_frame 8, 1 + obj_image_anim_end + +gUnknown_83E5B00:: @ 83E5B00 + obj_image_anim_frame 9, 1 + obj_image_anim_end + +gUnknown_83E5B08:: @ 83E5B08 + obj_image_anim_frame 4, 1 + obj_image_anim_end gUnknown_83E5B10:: @ 83E5B10 - .incbin "baserom.gba", 0x3E5B10, 0x8 + .4byte gUnknown_83E5AF8 + .4byte gUnknown_83E5B00 gUnknown_83E5B18:: @ 83E5B18 - .incbin "baserom.gba", 0x3E5B18, 0x4C + .4byte gUnknown_83E5B08 + +gUnknown_83E5B1C:: @ 83E5B1C + obj_rot_scal_anim_frame 256, 256, 0, 0 + obj_rot_scal_anim_frame -10, -10, 0, 15 + obj_rot_scal_anim_end + +gUnknown_83E5B34:: @ 83E5B34 + obj_rot_scal_anim_frame 224, 224, 0, 0 + obj_rot_scal_anim_frame -8, -8, 0, 15 + obj_rot_scal_anim_end + +gUnknown_83E5B4C:: @ 83E5B4C + obj_rot_scal_anim_frame 336, 336, 0, 0 + obj_rot_scal_anim_frame 0, 0, 0, 15 + obj_rot_scal_anim_end gUnknown_83E5B64:: @ 83E5B64 - .incbin "baserom.gba", 0x3E5B64, 0x8 + .4byte gUnknown_83E5B1C + .4byte gUnknown_83E5B34 gUnknown_83E5B6C:: @ 83E5B6C - .incbin "baserom.gba", 0x3E5B6C, 0x4 + .4byte gUnknown_83E5B4C gUnknown_83E5B70:: @ 83E5B70 spr_template 10155, 10155, gOamData_83AC9C8, gUnknown_83E5B10, NULL, gDummySpriteAffineAnimTable, sub_80AC624 @@ -1008,10 +1652,20 @@ gUnknown_83E5BA0:: @ 83E5BA0 spr_template 10155, 10155, gOamData_83ACA30, gUnknown_83E5B18, NULL, gUnknown_83E5B6C, sub_8077350 gUnknown_83E5BB8:: @ 83E5BB8 - .incbin "baserom.gba", 0x3E5BB8, 0x20 + obj_image_anim_frame 16, 4 + obj_image_anim_frame 32, 4 + obj_image_anim_frame 48, 4 + obj_image_anim_jump 0 + +gUnknown_83E5BC8:: @ 83E5BC8 + obj_image_anim_frame 16, 4, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_frame 32, 4, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_frame 48, 4, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_jump 0 gUnknown_83E5BD8:: @ 83E5BD8 - .incbin "baserom.gba", 0x3E5BD8, 0x8 + .4byte gUnknown_83E5BB8 + .4byte gUnknown_83E5BC8 gUnknown_83E5BE0:: @ 83E5BE0 spr_template 10029, 10029, gOamData_83AC9D8, gUnknown_83E5BD8, NULL, gDummySpriteAffineAnimTable, sub_80AC90C @@ -1020,16 +1674,37 @@ gUnknown_83E5BF8:: @ 83E5BF8 spr_template 10029, 10029, gOamData_83AC9D8, gUnknown_83E5BD8, NULL, gDummySpriteAffineAnimTable, sub_80AC94C gUnknown_83E5C10:: @ 83E5C10 - .incbin "baserom.gba", 0x3E5C10, 0x24 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 16, 3 + obj_image_anim_frame 32, 3 + obj_image_anim_frame 48, 3 + obj_image_anim_frame 64, 3 + obj_image_anim_frame 80, 3 + obj_image_anim_frame 96, 3 + obj_image_anim_frame 112, 3 + obj_image_anim_jump 0 gUnknown_83E5C34:: @ 83E5C34 - .incbin "baserom.gba", 0x3E5C34, 0x1C + .4byte gUnknown_83E5C10 + +gUnknown_83E5C38:: @ 83E5C38 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 16, 5 + obj_image_anim_frame 32, 5 + obj_image_anim_frame 48, 5 + obj_image_anim_frame 64, 5 + obj_image_anim_jump 0 gUnknown_83E5C50:: @ 83E5C50 - .incbin "baserom.gba", 0x3E5C50, 0x1C + .4byte gUnknown_83E5C38 + +gUnknown_83E5C54:: @ 83E5C54 + obj_rot_scal_anim_frame 50, 256, 0, 0 + obj_rot_scal_anim_frame 32, 0, 0, 7 + obj_rot_scal_anim_end gUnknown_83E5C6C:: @ 83E5C6C - .incbin "baserom.gba", 0x3E5C6C, 0x4 + .4byte gUnknown_83E5C54 gUnknown_83E5C70:: @ 83E5C70 spr_template 10033, 10033, gOamData_83ACA38, gUnknown_83E5C34, NULL, gUnknown_83E5C6C, sub_80ACA00 @@ -1042,19 +1717,29 @@ gUnknown_83E5CA0:: @ 83E5CA0 spr_template 10029, 10029, gOamData_83AC9D8, gUnknown_83E5C50, NULL, gDummySpriteAffineAnimTable, sub_80AC990 gUnknown_83E5CD0:: @ 83E5CD0 - .incbin "baserom.gba", 0x3E5CD0, 0x44 + .incbin "baserom.gba", 0x3E5CD0, 0x2C + +gUnknown_83E5CFC:: @ 83E5CFC + obj_rot_scal_anim_frame 80, 80, 0, 0 + obj_rot_scal_anim_frame 2, 2, 10, 1 + obj_rot_scal_anim_jump 1 gUnknown_83E5D14:: @ 83E5D14 - .incbin "baserom.gba", 0x3E5D14, 0x4 + .4byte gUnknown_83E5CFC gUnknown_83E5D18:: @ 83E5D18 spr_template 10157, 10157, gOamData_83ACB58, gDummySpriteAnimTable, NULL, gUnknown_83E5D14, sub_80ACBB0 gUnknown_83E5D30:: @ 83E5D30 - .incbin "baserom.gba", 0x3E5D30, 0x18 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 16, 4 + obj_image_anim_frame 32, 4 + obj_image_anim_frame 48, 4 + obj_image_anim_frame 64, 4 + obj_image_anim_jump 0 gUnknown_83E5D48:: @ 83E5D48 - .incbin "baserom.gba", 0x3E5D48, 0x4 + .4byte gUnknown_83E5D30 gUnknown_83E5D4C:: @ 83E5D4C spr_template 10029, 10029, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, TranslateAnimSpriteToTargetMonLocation @@ -1069,10 +1754,15 @@ gUnknown_83E5D94:: @ 83E5D94 spr_template 10029, 10029, gOamData_83AC9D8, gUnknown_83E5D48, NULL, gDummySpriteAffineAnimTable, sub_80ACC60 gUnknown_83E5DAC:: @ 83E5DAC - .incbin "baserom.gba", 0x3E5DAC, 0xC + obj_image_anim_frame 32, 6 + obj_image_anim_frame 48, 6 + obj_image_anim_jump 0 gUnknown_83E5DB8:: @ 83E5DB8 - .incbin "baserom.gba", 0x3E5DB8, 0x2C + .4byte gUnknown_83E5DAC + +gUnknown_83E5DBC:: @ 83E5DBC + .incbin "baserom.gba", 0x3E5DBC, 0x28 gUnknown_83E5DE4:: @ 83E5DE4 spr_template 10029, 10029, gOamData_83AC9D8, gUnknown_83E5DB8, NULL, gDummySpriteAffineAnimTable, sub_80ACDA8 @@ -1087,28 +1777,48 @@ gUnknown_83E5E2C:: @ 83E5E2C spr_template 10201, 10201, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AD330 gUnknown_83E5E44:: @ 83E5E44 - .incbin "baserom.gba", 0x3E5E44, 0x2 - -gUnknown_83E5E46:: @ 83E5E46 - .incbin "baserom.gba", 0x3E5E46, 0x1A + .incbin "baserom.gba", 0x3E5E44, 0x1C gUnknown_83E5E60:: @ 83E5E60 spr_template 10201, 10201, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AD454 gUnknown_83E5E78:: @ 83E5E78 - .incbin "baserom.gba", 0x3E5E78, 0x2C + obj_image_anim_frame 0, 5 + obj_image_anim_frame 4, 5 + obj_image_anim_frame 8, 5 + obj_image_anim_frame 12, 5 + obj_image_anim_jump 0 + +gUnknown_83E5E8C:: @ 83E5E8C + obj_image_anim_frame 16, 5 + obj_image_anim_end + +gUnknown_83E5E94:: @ 83E5E94 + obj_image_anim_frame 20, 5 + obj_image_anim_end + +gUnknown_83E5E9C:: @ 83E5E9C + obj_image_anim_frame 20, 5 + obj_image_anim_end gUnknown_83E5EA4:: @ 83E5EA4 - .incbin "baserom.gba", 0x3E5EA4, 0x10 + .4byte gUnknown_83E5E78 + .4byte gUnknown_83E5E8C + .4byte gUnknown_83E5E94 + .4byte gUnknown_83E5E9C gUnknown_83E5EB4:: @ 83E5EB4 spr_template 10231, 10231, gOamData_83AC9D0, gUnknown_83E5EA4, NULL, gDummySpriteAffineAnimTable, sub_80AD540 gUnknown_83E5ECC:: @ 83E5ECC - .incbin "baserom.gba", 0x3E5ECC, 0x14 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 16, 5 + obj_image_anim_frame 32, 5 + obj_image_anim_frame 48, 5 + obj_image_anim_jump 0 gUnknown_83E5EE0:: @ 83E5EE0 - .incbin "baserom.gba", 0x3E5EE0, 0x4 + .4byte gUnknown_83E5ECC gUnknown_83E5EE4:: @ 83E5EE4 spr_template 10232, 10232, gOamData_83AC9D8, gUnknown_83E5EE0, NULL, gDummySpriteAffineAnimTable, sub_80AD6F4 @@ -1117,10 +1827,18 @@ gUnknown_83E5EFC:: @ 83E5EFC .incbin "baserom.gba", 0x3E5EFC, 0x10 gUnknown_83E5F0C:: @ 83E5F0C - .incbin "baserom.gba", 0x3E5F0C, 0x28 + .incbin "baserom.gba", 0x3E5F0C, 0x10 + +gUnknown_83E5F1C:: @ 83E5F1C + obj_image_anim_frame 0, 5 + obj_image_anim_frame 16, 5 + obj_image_anim_frame 32, 8 + obj_image_anim_frame 48, 5 + obj_image_anim_frame 64, 5 + obj_image_anim_end gUnknown_83E5F34:: @ 83E5F34 - .incbin "baserom.gba", 0x3E5F34, 0x4 + .4byte gUnknown_83E5F1C gUnknown_83E5F38:: @ 83E5F38 spr_template 10037, 10037, gOamData_83AC9D8, gUnknown_83E5F34, NULL, gDummySpriteAffineAnimTable, sub_80ADBEC @@ -1135,22 +1853,32 @@ gUnknown_83E5FDC:: @ 83E5FDC spr_template 10171, 10171, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, TranslateAnimSpriteToTargetMonLocation gUnknown_83E5FF4:: @ 83E5FF4 - .incbin "baserom.gba", 0x3E5FF4, 0x10 + obj_rot_scal_anim_frame 0, 0, 20, 1 + obj_rot_scal_anim_jump 0 gUnknown_83E6004:: @ 83E6004 - .incbin "baserom.gba", 0x3E6004, 0x4 + .4byte gUnknown_83E5FF4 gUnknown_83E6008:: @ 83E6008 spr_template 10011, 10011, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E6004, sub_80ADEB0 gUnknown_83E6020:: @ 83E6020 - .incbin "baserom.gba", 0x3E6020, 0x10 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 16, 6 + obj_image_anim_frame 32, 6 + obj_image_anim_jump 0 gUnknown_83E6030:: @ 83E6030 - .incbin "baserom.gba", 0x3E6030, 0x24 + .4byte gUnknown_83E6020 + +gUnknown_83E6034:: @ 83E6034 + obj_rot_scal_anim_frame 232, 232, 0, 0 + obj_rot_scal_anim_frame -8, -8, 0, 10 + obj_rot_scal_anim_frame 8, 8, 0, 10 + obj_rot_scal_anim_jump 1 gUnknown_83E6054:: @ 83E6054 - .incbin "baserom.gba", 0x3E6054, 0x4 + .4byte gUnknown_83E6034 gUnknown_83E6058:: @ 83E6058 spr_template 10282, 10282, gOamData_83ACA38, gUnknown_83E6030, NULL, gUnknown_83E6054, sub_80AE000 @@ -1168,28 +1896,70 @@ gUnknown_83E60B8:: @ 83E60B8 spr_template 10173, 10173, gOamData_83AC9F8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AE470 gUnknown_83E60D0:: @ 83E60D0 - .incbin "baserom.gba", 0x3E60D0, 0x48 + .incbin "baserom.gba", 0x3E60D0, 0x20 + +gUnknown_83E60F0:: @ 83E60F0 + obj_image_anim_frame 3, 1 + obj_image_anim_frame 2, 1 + obj_image_anim_frame 1, 1 + obj_image_anim_frame 0, 1 + obj_image_anim_end + +gUnknown_83E6104:: @ 83E6104 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 1, 5 + obj_image_anim_frame 2, 5 + obj_image_anim_frame 3, 5 + obj_image_anim_end gUnknown_83E6118:: @ 83E6118 - .incbin "baserom.gba", 0x3E6118, 0x8 + .4byte gUnknown_83E60F0 + .4byte gUnknown_83E6104 gUnknown_83E6120:: @ 83E6120 spr_template 10211, 10211, gOamData_83AC9C8, gUnknown_83E6118, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy gUnknown_83E6138:: @ 83E6138 - .incbin "baserom.gba", 0x3E6138, 0x90 + obj_rot_scal_anim_frame 16, 16, 0, 0 + obj_rot_scal_anim_frame 4, 4, 0, 60 + obj_rot_scal_anim_frame 256, 256, 0, 0 + obj_rot_scal_anim_loop 0 + obj_rot_scal_anim_frame -4, -4, 0, 5 + obj_rot_scal_anim_frame 4, 4, 0, 5 + obj_rot_scal_anim_loop 10 + obj_rot_scal_anim_end + +gUnknown_83E6178:: @ 83E6178 + obj_rot_scal_anim_frame 16, 16, 0, 0 + obj_rot_scal_anim_frame 8, 8, 0, 30 + obj_rot_scal_anim_frame 256, 256, 0, 0 + obj_rot_scal_anim_frame -4, -4, 0, 5 + obj_rot_scal_anim_frame 4, 4, 0, 5 + obj_rot_scal_anim_jump 3 + +gUnknown_83E61A8:: @ 83E61A8 + obj_rot_scal_anim_frame 16, 16, 0, 0 + obj_rot_scal_anim_frame 8, 8, 0, 30 + obj_rot_scal_anim_frame -8, -8, 0, 30 + obj_rot_scal_anim_end gUnknown_83E61C8:: @ 83E61C8 - .incbin "baserom.gba", 0x3E61C8, 0xC + .4byte gUnknown_83E6138 + .4byte gUnknown_83E6178 + .4byte gUnknown_83E61A8 gUnknown_83E61D4:: @ 83E61D4 spr_template 10212, 10212, gOamData_83ACB60, gDummySpriteAnimTable, NULL, gUnknown_83E61C8, sub_80AE71C gUnknown_83E61EC:: @ 83E61EC - .incbin "baserom.gba", 0x3E61EC, 0x14 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 16, 3 + obj_image_anim_frame 32, 3 + obj_image_anim_frame 48, 3 + obj_image_anim_end gUnknown_83E6200:: @ 83E6200 - .incbin "baserom.gba", 0x3E6200, 0x4 + .4byte gUnknown_83E61EC gUnknown_83E6204:: @ 83E6204 spr_template 10213, 10213, gOamData_83AC9D8, gUnknown_83E6200, NULL, gDummySpriteAffineAnimTable, sub_80AE774 @@ -1198,13 +1968,33 @@ gUnknown_83E621C:: @ 83E621C spr_template 10212, 10212, gOamData_83ACB60, gDummySpriteAnimTable, NULL, gUnknown_83E61C8, sub_80AE7DC gUnknown_83E6234:: @ 83E6234 - .incbin "baserom.gba", 0x3E6234, 0x20 + obj_image_anim_frame 0, 3 + obj_image_anim_end + +gUnknown_83E623C:: @ 83E623C + obj_image_anim_frame 2, 3 + obj_image_anim_end + +gUnknown_83E6244:: @ 83E6244 + obj_image_anim_frame 4, 3 + obj_image_anim_end + +gUnknown_83E624C:: @ 83E624C + obj_image_anim_frame 6, 3 + obj_image_anim_end gUnknown_83E6254:: @ 83E6254 - .incbin "baserom.gba", 0x3E6254, 0x20 + .4byte gUnknown_83E6234 + .4byte gUnknown_83E623C + .4byte gUnknown_83E6244 + .4byte gUnknown_83E624C + +gUnknown_83E6264:: @ 83E6264 + obj_rot_scal_anim_frame 256, 256, 64, 0 + obj_rot_scal_anim_end gUnknown_83E6274:: @ 83E6274 - .incbin "baserom.gba", 0x3E6274, 0x4 + .4byte gUnknown_83E6264 gUnknown_83E6278:: @ 83E6278 spr_template 10001, 10001, gOamData_83ACAC8, gUnknown_83E6254, NULL, gUnknown_83E6274, sub_80AEC34 @@ -1216,25 +2006,53 @@ gUnknown_83E62A8:: @ 83E62A8 spr_template 10001, 10001, gOamData_83AC9C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AEF60 gUnknown_83E62C0:: @ 83E62C0 - .incbin "baserom.gba", 0x3E62C0, 0x60 + .incbin "baserom.gba", 0x3E62C0, 0x30 + +gUnknown_83E62F0:: @ 83E62F0 + obj_image_anim_frame 4, 1 + obj_image_anim_end + +gUnknown_83E62F8:: @ 83E62F8 + obj_image_anim_frame 6, 1 + obj_image_anim_end + +gUnknown_83E6300:: @ 83E6300 + obj_image_anim_frame 7, 1 + obj_image_anim_end + +gUnknown_83E6308:: @ 83E6308 + obj_image_anim_frame 8, 1 + obj_image_anim_end + +gUnknown_83E6310:: @ 83E6310 + obj_image_anim_frame 12, 6 + obj_image_anim_frame 13, 6 + obj_image_anim_jump 0 + +gUnknown_83E631C:: @ 83E631C + .incbin "baserom.gba", 0x3E631C, 0x4 gUnknown_83E6320:: @ 83E6320 - .incbin "baserom.gba", 0x3E6320, 0x4 + .4byte gUnknown_83E62F0 gUnknown_83E6324:: @ 83E6324 - .incbin "baserom.gba", 0x3E6324, 0x4 + .4byte gUnknown_83E62F8 gUnknown_83E6328:: @ 83E6328 - .incbin "baserom.gba", 0x3E6328, 0x4 + .4byte gUnknown_83E6300 gUnknown_83E632C:: @ 83E632C - .incbin "baserom.gba", 0x3E632C, 0x4 + .4byte gUnknown_83E6308 gUnknown_83E6330:: @ 83E6330 - .incbin "baserom.gba", 0x3E6330, 0x14 + .4byte gUnknown_83E6310 + +gUnknown_83E6334:: @ 83E6334 + obj_rot_scal_anim_frame 0, 0, 40, 1 + obj_rot_scal_anim_jump 0 gUnknown_83E6344:: @ 83E6344 - .incbin "baserom.gba", 0x3E6344, 0x4 + .4byte gUnknown_83E6334 gUnknown_83E6348:: @ 83E6348 spr_template 10141, 10141, gOamData_83ACBE8, gUnknown_83E6320, NULL, gUnknown_83E6344, sub_80AF2F0 @@ -1243,10 +2061,11 @@ gUnknown_83E6360:: @ 83E6360 spr_template 10141, 10141, gOamData_83ACAE8, gUnknown_83E6324, NULL, gDummySpriteAffineAnimTable, sub_80AF2F0 gUnknown_83E6378:: @ 83E6378 - .incbin "baserom.gba", 0x3E6378, 0x10 + obj_rot_scal_anim_frame 0, 0, 10, 1 + obj_rot_scal_anim_jump 0 gUnknown_83E6388:: @ 83E6388 - .incbin "baserom.gba", 0x3E6388, 0x4 + .4byte gUnknown_83E6378 gUnknown_83E638C:: @ 83E638C spr_template 10141, 10141, gOamData_83ACB88, gUnknown_83E6320, NULL, gUnknown_83E6388, sub_80AF330 @@ -1255,10 +2074,13 @@ gUnknown_83E63A4:: @ 83E63A4 spr_template 10141, 10141, gOamData_83ACAE8, gUnknown_83E6324, NULL, gDummySpriteAffineAnimTable, sub_80AF330 gUnknown_83E63BC:: @ 83E63BC - .incbin "baserom.gba", 0x3E63BC, 0x20 + obj_rot_scal_anim_frame 206, 206, 0, 0 + obj_rot_scal_anim_frame 5, 5, 0, 10 + obj_rot_scal_anim_frame 0, 0, 0, 6 + obj_rot_scal_anim_end gUnknown_83E63DC:: @ 83E63DC - .incbin "baserom.gba", 0x3E63DC, 0x4 + .4byte gUnknown_83E63BC gUnknown_83E63E0:: @ 83E63E0 spr_template 10141, 10141, gOamData_83ACB88, gUnknown_83E6320, NULL, gUnknown_83E63DC, sub_80AF3B8 @@ -1276,19 +2098,28 @@ gUnknown_83E6440:: @ 83E6440 spr_template 10141, 10141, gOamData_83AC9C8, gUnknown_83E6328, NULL, gDummySpriteAffineAnimTable, sub_80AF6D8 gUnknown_83E6458:: @ 83E6458 - .incbin "baserom.gba", 0x3E6458, 0x20 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 2, 5 + obj_image_anim_frame 4, 5 + obj_image_anim_frame 6, 5 + obj_image_anim_frame 4, 5 + obj_image_anim_frame 2, 5 + obj_image_anim_frame 0, 5 + obj_image_anim_end gUnknown_83E6478:: @ 83E6478 - .incbin "baserom.gba", 0x3E6478, 0x4 + .4byte gUnknown_83E6458 gUnknown_83E647C:: @ 83E647C spr_template 10142, 10142, gOamData_83ACB28, gUnknown_83E6478, NULL, gDummySpriteAffineAnimTable, sub_80AF88C gUnknown_83E6494:: @ 83E6494 - .incbin "baserom.gba", 0x3E6494, 0xC + obj_image_anim_frame 0, 8 + obj_image_anim_frame 8, 8 + obj_image_anim_jump 0 gUnknown_83E64A0:: @ 83E64A0 - .incbin "baserom.gba", 0x3E64A0, 0x4 + .4byte gUnknown_83E6494 gUnknown_83E64A4:: @ 83E64A4 spr_template 10144, 10144, gOamData_83ACB18, gUnknown_83E64A0, NULL, gDummySpriteAffineAnimTable, sub_80AF914 @@ -1309,13 +2140,31 @@ gUnknown_83E6514:: @ 83E6514 spr_template 10172, 10172, gOamData_83ACB18, gUnknown_83E64A0, NULL, gDummySpriteAffineAnimTable, sub_80AFFD4 gUnknown_83E652C:: @ 83E652C - .incbin "baserom.gba", 0x3E652C, 0x68 + .incbin "baserom.gba", 0x3E652C, 0x28 + +gUnknown_83E6554:: @ 83E6554 + obj_rot_scal_anim_frame 256, 256, 0, 0 + obj_rot_scal_anim_end + +gUnknown_83E6564:: @ 83E6564 + obj_rot_scal_anim_frame 240, 240, 0, 0 + obj_rot_scal_anim_end + +gUnknown_83E6574:: @ 83E6574 + obj_rot_scal_anim_frame 224, 224, 0, 0 + obj_rot_scal_anim_end + +gUnknown_83E6584:: @ 83E6584 + obj_rot_scal_anim_frame 336, 336, 0, 0 + obj_rot_scal_anim_end gUnknown_83E6594:: @ 83E6594 - .incbin "baserom.gba", 0x3E6594, 0xC + .4byte gUnknown_83E6554 + .4byte gUnknown_83E6564 + .4byte gUnknown_83E6574 gUnknown_83E65A0:: @ 83E65A0 - .incbin "baserom.gba", 0x3E65A0, 0x4 + .4byte gUnknown_83E6584 gUnknown_83E65A4:: @ 83E65A4 spr_template 10263, 10263, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E6594, sub_80B05CC @@ -1324,13 +2173,46 @@ gUnknown_83E65BC:: @ 83E65BC spr_template 10263, 10263, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E65A0, sub_8077350 gUnknown_83E65D4:: @ 83E65D4 - .incbin "baserom.gba", 0x3E65D4, 0x1C + obj_image_anim_frame 0, 1 + obj_image_anim_end + +gUnknown_83E65DC:: @ 83E65DC + obj_image_anim_frame 16, 4 + obj_image_anim_frame 32, 4 + obj_image_anim_frame 48, 4 + obj_image_anim_frame 64, 4 + obj_image_anim_end gUnknown_83E65F0:: @ 83E65F0 - .incbin "baserom.gba", 0x3E65F0, 0x58 + .4byte gUnknown_83E65D4 + .4byte gUnknown_83E65DC + +gUnknown_83E65F8:: @ 83E65F8 + obj_rot_scal_anim_frame 224, 224, 0, 0 + obj_rot_scal_anim_end + +gUnknown_83E6608:: @ 83E6608 + obj_rot_scal_anim_frame 280, 280, 0, 0 + obj_rot_scal_anim_end + +gUnknown_83E6618:: @ 83E6618 + obj_rot_scal_anim_frame 336, 336, 0, 0 + obj_rot_scal_anim_end + +gUnknown_83E6628:: @ 83E6628 + obj_rot_scal_anim_frame 384, 384, 0, 0 + obj_rot_scal_anim_end + +gUnknown_83E6638:: @ 83E6638 + obj_rot_scal_anim_frame 448, 448, 0, 0 + obj_rot_scal_anim_end gUnknown_83E6648:: @ 83E6648 - .incbin "baserom.gba", 0x3E6648, 0x14 + .4byte gUnknown_83E65F8 + .4byte gUnknown_83E6608 + .4byte gUnknown_83E6618 + .4byte gUnknown_83E6628 + .4byte gUnknown_83E6638 gUnknown_83E665C:: @ 83E665C spr_template 10043, 10043, gOamData_83ACA98, gUnknown_83E65F0, NULL, gUnknown_83E6648, unc_080B06FC @@ -1340,16 +2222,35 @@ gUnknown_83E6674:: @ 83E6674 spr_template 10050, 10050, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, unc_080B08A0 gUnknown_83E66A4:: @ 83E66A4 - .incbin "baserom.gba", 0x3E66A4, 0x28 + obj_image_anim_frame 0, 1 + obj_image_anim_end + +gUnknown_83E66AC:: @ 83E66AC + obj_image_anim_frame 16, 1 + obj_image_anim_end + +gUnknown_83E66B4:: @ 83E66B4 + obj_image_anim_frame 32, 1 + obj_image_anim_end + +gUnknown_83E66BC:: @ 83E66BC + obj_image_anim_frame 48, 1 + obj_image_anim_end + +gUnknown_83E66C4:: @ 83E66C4 + obj_image_anim_frame 48, 1, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end gUnknown_83E66CC:: @ 83E66CC - .incbin "baserom.gba", 0x3E66CC, 0x4 + .4byte gUnknown_83E66A4 gUnknown_83E66D0:: @ 83E66D0 - .incbin "baserom.gba", 0x3E66D0, 0x8 + .4byte gUnknown_83E66AC + .4byte gUnknown_83E66B4 gUnknown_83E66D8:: @ 83E66D8 - .incbin "baserom.gba", 0x3E66D8, 0x8 + .4byte gUnknown_83E66BC + .4byte gUnknown_83E66C4 gUnknown_83E66E0:: @ 83E66E0 spr_template 10143, 10143, gOamData_83AC9D8, gUnknown_83E66CC, NULL, gDummySpriteAffineAnimTable, sub_80B08DC @@ -1370,19 +2271,23 @@ gUnknown_83E6758:: @ 83E6758 spr_template 10143, 10143, gOamData_83AC9D8, gUnknown_83E66D0, NULL, gDummySpriteAffineAnimTable, sub_80B0C28 gUnknown_83E6770:: @ 83E6770 - .incbin "baserom.gba", 0x3E6770, 0x18 + obj_rot_scal_anim_frame 256, 256, 0, 0 + obj_rot_scal_anim_frame -8, -8, 20, 1 + obj_rot_scal_anim_jump 1 gUnknown_83E6788:: @ 83E6788 - .incbin "baserom.gba", 0x3E6788, 0x4 + .4byte gUnknown_83E6770 gUnknown_83E678C:: @ 83E678C spr_template 10143, 10143, gOamData_83ACA98, gUnknown_83E66CC, NULL, gUnknown_83E6788, sub_80B0CEC gUnknown_83E67A4:: @ 83E67A4 - .incbin "baserom.gba", 0x3E67A4, 0x18 + obj_rot_scal_anim_frame 256, 256, 0, 0 + obj_rot_scal_anim_frame -4, -4, 20, 1 + obj_rot_scal_anim_jump 1 gUnknown_83E67BC:: @ 83E67BC - .incbin "baserom.gba", 0x3E67BC, 0x4 + .4byte gUnknown_83E67A4 gUnknown_83E67C0:: @ 83E67C0 spr_template 10143, 10143, gOamData_83ACA98, gUnknown_83E66CC, NULL, gUnknown_83E67BC, sub_80B0CEC @@ -1400,10 +2305,14 @@ gUnknown_83E6820:: @ 83E6820 spr_template 10208, 10208, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80B0F68 gUnknown_83E6838:: @ 83E6838 - .incbin "baserom.gba", 0x3E6838, 0x28 + obj_rot_scal_anim_frame 32, 32, 0, 0 + obj_rot_scal_anim_frame 4, 4, 0, 64 + obj_rot_scal_anim_frame -6, -6, 0, 8 + obj_rot_scal_anim_frame 6, 6, 0, 8 + obj_rot_scal_anim_jump 2 gUnknown_83E6860:: @ 83E6860 - .incbin "baserom.gba", 0x3E6860, 0x4 + .4byte gUnknown_83E6838 gUnknown_83E6864:: @ 83E6864 spr_template 10212, 10212, gOamData_83ACBC0, gDummySpriteAnimTable, NULL, gUnknown_83E6860, sub_80B107C @@ -1418,58 +2327,114 @@ gUnknown_83E68AC:: @ 83E68AC spr_template 10143, 10143, gOamData_83AC9D8, gUnknown_83E66CC, NULL, gDummySpriteAffineAnimTable, sub_80B13F8 gUnknown_83E68C4:: @ 83E68C4 - .incbin "baserom.gba", 0x3E68C4, 0x30 + obj_image_anim_frame 0, 4 + obj_image_anim_frame 16, 4 + obj_image_anim_frame 32, 4 + obj_image_anim_end + +gUnknown_83E68D4:: @ 83E68D4 + obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_frame 16, 4, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_frame 32, 4, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_end + +gUnknown_83E68E4:: @ 83E68E4 + obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 16, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 32, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end gUnknown_83E68F4:: @ 83E68F4 - .incbin "baserom.gba", 0x3E68F4, 0xC + .4byte gUnknown_83E68C4 + .4byte gUnknown_83E68D4 + .4byte gUnknown_83E68E4 gUnknown_83E6900:: @ 83E6900 spr_template 10245, 10245, gOamData_83AC9D8, gUnknown_83E68F4, NULL, gDummySpriteAffineAnimTable, sub_80B1484 gUnknown_83E6918:: @ 83E6918 - .incbin "baserom.gba", 0x3E6918, 0x24 + obj_image_anim_frame 0, 6 + obj_image_anim_frame 64, 6 + obj_image_anim_end + +gUnknown_83E6924:: @ 83E6924 + obj_image_anim_frame 0, 6, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_frame 64, 6, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_end + +gUnknown_83E6930:: @ 83E6930 + obj_image_anim_frame 0, 6, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 64, 6, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end gUnknown_83E693C:: @ 83E693C - .incbin "baserom.gba", 0x3E693C, 0xC + .4byte gUnknown_83E6918 + .4byte gUnknown_83E6924 + .4byte gUnknown_83E6930 gUnknown_83E6948:: @ 83E6948 spr_template 10246, 10246, gOamData_83AC9E0, gUnknown_83E693C, NULL, gDummySpriteAffineAnimTable, sub_80B1484 gUnknown_83E6960:: @ 83E6960 - .incbin "baserom.gba", 0x3E6960, 0x18 + obj_rot_scal_anim_frame 512, 512, 0, 0 + obj_rot_scal_anim_frame -32, -32, 0, 8 + obj_rot_scal_anim_end gUnknown_83E6978:: @ 83E6978 - .incbin "baserom.gba", 0x3E6978, 0x4 + .4byte gUnknown_83E6960 gUnknown_83E697C:: @ 83E697C spr_template 10143, 10143, gOamData_83ACA98, gUnknown_83E66CC, NULL, gUnknown_83E6978, sub_80B14F0 gUnknown_83E6994:: @ 83E6994 - .incbin "baserom.gba", 0x3E6994, 0x14 + obj_image_anim_frame 0, 5 + obj_image_anim_frame 8, 5 + obj_image_anim_frame 16, 5 + obj_image_anim_frame 24, 5 + obj_image_anim_end gUnknown_83E69A8:: @ 83E69A8 - .incbin "baserom.gba", 0x3E69A8, 0x4 + .4byte gUnknown_83E6994 gUnknown_83E69AC:: @ 83E69AC spr_template 10151, 10151, gOamData_83ACA18, gUnknown_83E69A8, NULL, gDummySpriteAffineAnimTable, AnimSpriteOnMonPos gUnknown_83E69C4:: @ 83E69C4 - .incbin "baserom.gba", 0x3E69C4, 0x18 + obj_image_anim_frame 0, 1 + obj_image_anim_end + +gUnknown_83E69CC:: @ 83E69CC + obj_image_anim_frame 4, 1 + obj_image_anim_end + +gUnknown_83E69D4:: @ 83E69D4 + obj_image_anim_frame 8, 1 + obj_image_anim_end gUnknown_83E69DC:: @ 83E69DC - .incbin "baserom.gba", 0x3E69DC, 0x4 + .4byte gUnknown_83E69C4 gUnknown_83E69E0:: @ 83E69E0 - .incbin "baserom.gba", 0x3E69E0, 0x4 + .4byte gUnknown_83E69CC gUnknown_83E69E4:: @ 83E69E4 - .incbin "baserom.gba", 0x3E69E4, 0x34 + .4byte gUnknown_83E69D4 + +gUnknown_83E69E8:: @ 83E69E8 + obj_rot_scal_anim_frame 352, 352, 0, 0 + obj_rot_scal_anim_frame -10, -10, 0, 10 + obj_rot_scal_anim_frame 10, 10, 0, 10 + obj_rot_scal_anim_jump 0 + +gUnknown_83E6A08:: @ 83E6A08 + obj_rot_scal_anim_frame 236, 236, 0, 0 + obj_rot_scal_anim_end gUnknown_83E6A18:: @ 83E6A18 - .incbin "baserom.gba", 0x3E6A18, 0x4 + .4byte gUnknown_83E69E8 gUnknown_83E6A1C:: @ 83E6A1C - .incbin "baserom.gba", 0x3E6A1C, 0x4 + .4byte gUnknown_83E6A08 gUnknown_83E6A20:: @ 83E6A20 spr_template 10150, 10150, gOamData_83ACA90, gUnknown_83E69DC, NULL, gUnknown_83E6A18, sub_80B1620 @@ -1481,22 +2446,27 @@ gUnknown_83E6A50:: @ 83E6A50 spr_template 10150, 10150, gOamData_83ACA30, gUnknown_83E69E4, NULL, gUnknown_83E6A1C, sub_80B1744 gUnknown_83E6A68:: @ 83E6A68 - .incbin "baserom.gba", 0x3E6A68, 0x18 + obj_rot_scal_anim_frame -16, 16, 0, 6 + obj_rot_scal_anim_frame 16, -16, 0, 6 + obj_rot_scal_anim_jump 0 gUnknown_83E6A80:: @ 83E6A80 - .incbin "baserom.gba", 0x3E6A80, 0x4 + .4byte gUnknown_83E6A68 gUnknown_83E6A84:: @ 83E6A84 spr_template 10150, 10150, gOamData_83ACA90, gUnknown_83E69E0, NULL, gUnknown_83E6A80, sub_80B17C4 gUnknown_83E6A9C:: @ 83E6A9C - .incbin "baserom.gba", 0x3E6A9C, 0x18 + obj_rot_scal_anim_frame 156, 156, 0, 0 + obj_rot_scal_anim_frame 5, 5, 0, 20 + obj_rot_scal_anim_end gUnknown_83E6AB4:: @ 83E6AB4 - .incbin "baserom.gba", 0x3E6AB4, 0x4 + .4byte gUnknown_83E6A9C gUnknown_83E6AB8:: @ 83E6AB8 spr_template 10150, 10150, gOamData_83ACA30, gUnknown_83E69DC, NULL, gUnknown_83E6AB4, sub_80B1838 gUnknown_83E6AD0:: @ 83E6AD0 spr_template 10155, 10155, gOamData_83ACB50, gUnknown_83E5A78, NULL, gUnknown_83E6AB4, sub_80B1838 + From 317d8e54921659799b3e1399ccd3edbdaacc5e18 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 15 Nov 2019 10:08:09 -0500 Subject: [PATCH 04/49] Remaining data in battle_anim_effects_misc --- baserom.ips | Bin 287971 -> 281368 bytes data/battle_anim_effects_misc.s | 363 +++++++++++++++++++++++--- graphics/battle_anims/unk_83E4874.bin | Bin 0 -> 4096 bytes graphics/battle_anims/unk_83E4874.png | Bin 0 -> 286 bytes src/dark.c | 2 +- 5 files changed, 329 insertions(+), 36 deletions(-) create mode 100644 graphics/battle_anims/unk_83E4874.bin create mode 100644 graphics/battle_anims/unk_83E4874.png diff --git a/baserom.ips b/baserom.ips index 1bb7dc529d7c11b0a7cbb8f4cb4684e431800abf..ede2692ce0b93ec109e3c96bfdb2095f6298d391 100644 GIT binary patch delta 27 hcmaESQgFsJ!G;#bElj`J+m9(S0WtITV~Q-Y&H$#h3Y`D| delta 5833 zcmeHLPiP!f82@H>c6YK(?QF7bLW${?rkxa8*v*7C#xf>t0x^h<2cb&SBu%^Y&}s$A zuBWLe?jj0>pwUBVdefVrD1wJMgpyVdK}zvZWLtCa5G2(Q`zOu#d+*Kc%1nIY&)74&okZB@`EA3cLa zZvo~3O8~jUP?CT)Kqug;c2(=T*{v+15MuHB!2F~yt{5FNbeW~YN|zn1IJn-ys)Lgb zCVJP=7g%xVdI!(I`A>jbfIEPBzye?iu+m|eimV$-J>Z0PLYqUMlQ<(O-sfirkX2_J zog<1Pqc|ymdVoqh0TD_9nrR!)fM^gpgU}g-&LHHk1Nx!U51r#&r>)aa1^{U-&4Zmc zLAcR+UuMz1qUI;=)j=XP6Fo8GOoxolQc!67g&82$gy zF%Z~zZk`5I=&{v`59NpjmOn3fi(sz+KQTj`xM$z9nZEnfjP50xb}w?N+v_pEdYG)V zn0u7Z--z=V^LP)QV2|?gn{nluc1;`o(RnK{P~S0>-4~gD9dZog2NT8*Cd^A1c-~Nk zXozQ02RSu(nT$f#q&4w(cM@l&ln1_I4#yP37^R*^HhzWR$7z|@uwq9!?bfnlKelnL zVxjFaZl2Mu+<2jd(#tl&#t2uwU^Bd6CpjIbzd7wTs%+GIyq(lh`YYJB-t(liwk$NO zJC|FG-dR$9)wXHRXm|ieiJId~9S>sJ-pbPTGU!t&H8rt6l!_RAOO2N%?}l2Zn(j+m zORC#R=he)3&MAcw2_n5wqU@mr6Yv)S={ zu23u%iuoe@!^#URXu;xqzSW-t0&q0>%8MOR0eh2_$DZPQTa?={_AaR~HP$Kbn4Hfv zOfH5lTu^l+Gk%CN*{rHhZ#s#gSBUq@*8O9*I25~oH%Kkl zo`ay&wP9{N9Y42bxQh1^waUMLq0U@A-AT2yc4PhFJsU4oNAA7Y=^fo*2AZ){ohONaTUJgSe6?00+ zFM{{l9X5N4VD=P2kr5Ob!O$&&sZ)ejO;r04lt#1>UhNk+Gsmpj?_p?+&QYp+X7-LU zyV%ved_A82<3X1?d;NBI>s)*NTzYA?A)Pi(TWt2ykNo<1|E$v(Q)ySUSQYr^++MCuq?}wC{|2Slse-qD^$YbvM?6p&@j#(p!PE*DfMbe tqCZOs^=N6g`fVvgN5H#XO3+&+N&UH$QTLU07aqkzfbe&ZVsh)Te*mG`3v>Vg diff --git a/data/battle_anim_effects_misc.s b/data/battle_anim_effects_misc.s index 14e5d514b..cccdb2793 100644 --- a/data/battle_anim_effects_misc.s +++ b/data/battle_anim_effects_misc.s @@ -521,7 +521,66 @@ gUnknown_83E3160:: @ 83E3160 spr_template 10287, 10287, gOamData_83AC9D8, gUnknown_83E3140, NULL, gDummySpriteAffineAnimTable, sub_80A4450 gUnknown_83E3178:: @ 83E3178 - .incbin "baserom.gba", 0x3E3178, 0x104 + obj_image_anim_frame 0x0000, 4 + obj_image_anim_frame 0x0010, 4 + obj_image_anim_frame 0x0020, 4 + obj_image_anim_frame 0x0030, 4 + obj_image_anim_frame 0x0040, 5 + obj_image_anim_end + +gUnknown_83E3190:: @ 83E3190 + .4byte gUnknown_83E3178 + +gUnknown_83E3194:: @ 83E3194 + spr_template 10021, 10021, gOamData_83AC9D8, gUnknown_83E3190, NULL, gDummySpriteAffineAnimTable, sub_80A43F8 + +gUnknown_83E31AC:: @ 83E31AC + spr_template 10022, 10022, gOamData_83AC9D8, gUnknown_83E3190, NULL, gDummySpriteAffineAnimTable, sub_80A43F8 + +gUnknown_83E31C4:: @ 83E31C4 + obj_rot_scal_anim_frame 256, 256, 0, 0 + obj_rot_scal_anim_end + +gUnknown_83E31D4:: + obj_rot_scal_anim_frame 256, 256, 32, 0 + obj_rot_scal_anim_end + +gUnknown_83E31E4:: + obj_rot_scal_anim_frame 256, 256, 64, 0 + obj_rot_scal_anim_end + +gUnknown_83E31F4:: + obj_rot_scal_anim_frame 256, 256, 96, 0 + obj_rot_scal_anim_end + +gUnknown_83E3204:: + obj_rot_scal_anim_frame 256, 256, 128, 0 + obj_rot_scal_anim_end + +gUnknown_83E3214:: + obj_rot_scal_anim_frame 256, 256, 160, 0 + obj_rot_scal_anim_end + +gUnknown_83E3224:: + obj_rot_scal_anim_frame 256, 256, 192, 0 + obj_rot_scal_anim_end + +gUnknown_83E3234:: + obj_rot_scal_anim_frame 256, 256, 224, 0 + obj_rot_scal_anim_end + +gUnknown_83E3244:: + .4byte gUnknown_83E31C4 + .4byte gUnknown_83E31D4 + .4byte gUnknown_83E31E4 + .4byte gUnknown_83E31F4 + .4byte gUnknown_83E3204 + .4byte gUnknown_83E3214 + .4byte gUnknown_83E3224 + .4byte gUnknown_83E3234 + +gUnknown_83E3264:: + spr_template 10143, 10143, gOamData_83ACA38, gDummySpriteAnimTable, NULL, gUnknown_83E3244, sub_80A4494 gUnknown_83E327C:: @ 83E327C obj_image_anim_frame 0, 5 @@ -540,7 +599,59 @@ gUnknown_83E32AC:: @ 83E32AC spr_template 10138, 10138, gOamData_83ACAF8, gUnknown_83E3290, NULL, gDummySpriteAffineAnimTable, sub_80A4588 gUnknown_83E32C4:: @ 83E32C4 - .incbin "baserom.gba", 0x3E32C4, 0x90 + obj_image_anim_frame 0x0000, 1 + obj_image_anim_end + +gUnknown_83E32CC:: + obj_image_anim_frame 0x0004, 1 + obj_image_anim_end + +gUnknown_83E32D4:: + obj_image_anim_frame 0x0008, 1 + obj_image_anim_end + +gUnknown_83E32DC:: + obj_image_anim_frame 0x000c, 1 + obj_image_anim_end + +gUnknown_83E32E4:: + obj_image_anim_frame 0x0010, 1 + obj_image_anim_end + +gUnknown_83E32EC:: + obj_image_anim_frame 0x0014, 1 + obj_image_anim_end + +gUnknown_83E32F4:: + obj_image_anim_frame 0x0000, 1, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_end + +gUnknown_83E32FC:: + obj_image_anim_frame 0x0004, 1, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_end + +gUnknown_83E3304:: + obj_image_anim_frame 0x0008, 1, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_end + +gUnknown_83E330C:: + obj_image_anim_frame 0x000c, 1, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_end + +gUnknown_83E3314:: + .4byte gUnknown_83E32C4 + .4byte gUnknown_83E32CC + .4byte gUnknown_83E32D4 + .4byte gUnknown_83E32DC + .4byte gUnknown_83E32E4 + .4byte gUnknown_83E32EC + .4byte gUnknown_83E32F4 + .4byte gUnknown_83E32FC + .4byte gUnknown_83E3304 + .4byte gUnknown_83E330C + +gUnknown_83E333C:: + spr_template 10072, 10072, gOamData_83AC9D0, gUnknown_83E3314, NULL, gDummySpriteAffineAnimTable, sub_80A481C gUnknown_83E3354:: @ 83E3354 spr_template 10280, 10280, gOamData_83ACB00, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A48F0 @@ -585,7 +696,33 @@ gUnknown_83E340C:: @ 83E340C spr_template 10049, 10049, gOamData_83AC9D8, gUnknown_83E33F0, NULL, gDummySpriteAffineAnimTable, sub_80A4D5C gUnknown_83E3424:: @ 83E3424 - .incbin "baserom.gba", 0x3E3424, 0x68 + obj_image_anim_frame 0x0000, 10 + obj_image_anim_frame 0x0004, 10 + obj_image_anim_frame 0x0008, 10 + obj_image_anim_frame 0x000c, 10 + obj_image_anim_frame 0x0010, 26 + obj_image_anim_frame 0x0010, 5 + obj_image_anim_frame 0x0014, 5 + obj_image_anim_frame 0x0018, 15 + obj_image_anim_end + +gUnknown_83E3448:: + obj_image_anim_frame 0x0000, 10, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 0x0004, 10, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 0x0008, 10, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 0x000c, 10, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 0x0010, 26, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 0x0010, 5, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 0x0014, 5, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 0x0018, 15, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end + +gUnknown_83E346C:: + .4byte gUnknown_83E3424 + .4byte gUnknown_83E3448 + +gUnknown_83E3474:: + spr_template 10032, 10032, gOamData_83AC9D0, gUnknown_83E346C, NULL, gDummySpriteAffineAnimTable, sub_80A4E40 gUnknown_83E348C:: @ 83E348C obj_image_anim_frame 0, 40 @@ -600,7 +737,9 @@ gUnknown_83E3498:: @ 83E3498 obj_rot_scal_anim_end gUnknown_83E34B0:: @ 83E34B0 - .incbin "baserom.gba", 0x3E34B0, 0x18 + obj_rot_scal_anim_loop 0 + obj_rot_scal_anim_frame 0, 0, 1, 24 + obj_rot_scal_anim_loop 10 gUnknown_83E34C8:: @ 83E34C8 obj_rot_scal_anim_frame 20, 20, 30, 0 @@ -608,7 +747,9 @@ gUnknown_83E34C8:: @ 83E34C8 obj_rot_scal_anim_end gUnknown_83E34E0:: @ 83E34E0 - .incbin "baserom.gba", 0x3E34E0, 0x18 + obj_rot_scal_anim_loop 0 + obj_rot_scal_anim_frame 0, 0, 255, 24 + obj_rot_scal_anim_loop 10 gUnknown_83E34F8:: @ 83E34F8 .4byte gUnknown_83E3498 @@ -790,22 +931,32 @@ gUnknown_83E37EC:: @ 83E37EC spr_template 10192, 10192, gOamData_83AC9D8, gUnknown_83E37E8, NULL, gDummySpriteAffineAnimTable, sub_80A65CC gUnknown_83E3804:: @ 83E3804 - .incbin "baserom.gba", 0x3E3804, 0x8 + obj_image_anim_frame 0x0000, 10 + obj_image_anim_end gOamData_83E380C:: - .incbin "baserom.gba", 0x3E380C, 0x8 + obj_image_anim_frame 0x0004, 10 + obj_image_anim_end gUnknown_83E3814:: @ 83E3814 - .incbin "baserom.gba", 0x3E3814, 0x8 + obj_image_anim_frame 0x0008, 41 + obj_image_anim_end gUnknown_83E381C:: @ 83E381C - .incbin "baserom.gba", 0x3E381C, 0x8 + obj_image_anim_frame 0x000c, 10 + obj_image_anim_end gUnknown_83E3824:: @ 83E3824 - .incbin "baserom.gba", 0x3E3824, 0x8 + obj_image_anim_frame 0x0010, 10 + obj_image_anim_end gUnknown_83E382C:: @ 83E382C - .incbin "baserom.gba", 0x3E382C, 0x18 + obj_image_anim_frame 0x0014, 10 + obj_image_anim_end + obj_image_anim_frame 0x0000, 10, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_end + obj_image_anim_frame 0x0004, 10, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_end gUnknown_83E3844:: @ 83E3844 spr_template 14340, 2110, gOamData_83E380C, gUnknown_83E3814, gUnknown_83E381C, gUnknown_83E3824, gUnknown_83E382C @@ -896,7 +1047,15 @@ gUnknown_83E39BC:: @ 83E39BC obj_rot_scal_anim_end gUnknown_83E39E4:: @ 83E39E4 - .incbin "baserom.gba", 0x3E39E4, 0x48 + obj_rot_scal_anim_frame 16, 16, 0, 0 + obj_rot_scal_anim_frame 30, 30, 0, 8 + obj_rot_scal_anim_frame 0, 0, 0, 16 + obj_rot_scal_anim_loop 0 + obj_rot_scal_anim_frame 0, 0, 4, 11 + obj_rot_scal_anim_frame 0, 0, 252, 11 + obj_rot_scal_anim_loop 2 + obj_rot_scal_anim_frame -30, -30, 0, 8 + obj_rot_scal_anim_end gUnknown_83E3A2C:: @ 83E3A2C .4byte gUnknown_83E39A4 @@ -944,10 +1103,46 @@ gUnknown_83E3AB4:: @ 83E3AB4 gUnknown_83E3AC4:: @ 83E3AC4 spr_template 10214, 10214, gOamData_83AC9D8, gUnknown_83E3AB4, NULL, gDummySpriteAffineAnimTable, sub_80A6D90 + +gUnknown_83E3ADC:: spr_template 10064, 10064, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A6E48 gUnknown_83E3AF4:: @ 83E3AF4 - .incbin "baserom.gba", 0x3E3AF4, 0xA0 + obj_image_anim_frame 0x0004, 1 + obj_image_anim_end + +gUnknown_83E3AFC:: + .4byte gUnknown_83E3AF4 + +gUnknown_83E3B00:: + spr_template 10072, 10072, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A6E98 + +gUnknown_83E3B18:: + spr_template 0, 0, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A6F8C + +gUnknown_83E3B30:: + spr_template 10145, 10145, gOamData_83ACB60, gDummySpriteAnimTable, NULL, gUnknown_83E7910, sub_80A7020 + +gUnknown_83E3B48:: + obj_image_anim_frame 0x0000, 9 + obj_image_anim_frame 0x0010, 3 + obj_image_anim_frame 0x0020, 3 + obj_image_anim_frame 0x0030, 3 + obj_image_anim_end + +gUnknown_83E3B5C:: + .4byte gUnknown_83E3B48 + +gUnknown_83E3B60:: + obj_rot_scal_anim_frame 80, 80, 0, 0 + obj_rot_scal_anim_frame 9, 9, 0, 18 + obj_rot_scal_anim_end + +gUnknown_83E3B78:: + .4byte gUnknown_83E3B60 + +gUnknown_83E3B7C:: + spr_template 10007, 10007, gOamData_83ACA38, gUnknown_83E3B5C, NULL, gUnknown_83E3B78, AnimSpriteOnMonPos gUnknown_83E3B94:: @ 83E3B94 obj_image_anim_frame 0, 3, OBJ_IMAGE_ANIM_H_FLIP @@ -1103,10 +1298,16 @@ gUnknown_83E3E48:: @ 83E3E48 spr_template 10138, 10138, gOamData_83ACAF8, gUnknown_83E3E40, NULL, gDummySpriteAffineAnimTable, sub_80A7E14 gUnknown_83E3E60:: @ 83E3E60 - .incbin "baserom.gba", 0x3E3E60, 0x20 + obj_rot_scal_anim_frame -6, 4, 0, 8 + obj_rot_scal_anim_frame 10, -10, 0, 8 + obj_rot_scal_anim_frame -4, 6, 0, 8 + obj_rot_scal_anim_end gUnknown_83E3E80:: @ 83E3E80 - .incbin "baserom.gba", 0x3E3E80, 0x20 + obj_rot_scal_anim_frame -4, -5, 0, 12 + obj_rot_scal_anim_frame 0, 0, 0, 24 + obj_rot_scal_anim_frame 4, 5, 0, 12 + obj_rot_scal_anim_end gUnknown_83E3EA0:: @ 83E3EA0 obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP @@ -1141,7 +1342,12 @@ gUnknown_83E3F04:: @ 83E3F04 spr_template 10087, 10087, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E3F00, sub_80A85AC gUnknown_83E3F1C:: @ 83E3F1C - .incbin "baserom.gba", 0x3E3F1C, 0x30 + obj_rot_scal_anim_frame -10, 9, 0, 7 + obj_rot_scal_anim_frame 20, -20, 0, 7 + obj_rot_scal_anim_frame -20, 20, 0, 7 + obj_rot_scal_anim_frame 10, -9, 0, 7 + obj_rot_scal_anim_loop 2 + obj_rot_scal_anim_end gUnknown_83E3F4C:: @ 83E3F4C spr_template 10002, 10002, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A8A1C @@ -1236,7 +1442,8 @@ gUnknown_83E4110:: @ 83E4110 spr_template 10203, 10203, gOamData_83ACBC0, gDummySpriteAnimTable, NULL, gUnknown_83E4088, sub_80A8EE8 gUnknown_83E4128:: @ 83E4128 - .incbin "baserom.gba", 0x3E4128, 0x10 + obj_rot_scal_anim_frame 96, -13, 0, 8 + obj_rot_scal_anim_end gUnknown_83E4138:: @ 83E4138 obj_image_anim_frame 0, 3 @@ -1253,7 +1460,7 @@ gUnknown_83E4154:: @ 83E4154 spr_template 10207, 10207, gOamData_83AC9D0, gUnknown_83E4150, NULL, gDummySpriteAffineAnimTable, sub_80A9648 gUnknown_83E416C:: @ 83E416C - .incbin "baserom.gba", 0x3E416C, 0x8 + .byte 0x1e, 0x1c, 0xec, 0x18, 0x10, 0x1a, 0xf6, 0x1c gUnknown_83E4174:: @ 83E4174 obj_image_anim_frame 0, 6 @@ -1278,8 +1485,9 @@ gUnknown_83E41B0:: @ 83E41B0 spr_template 10205, 10205, gOamData_83AC9D8, gUnknown_83E41AC, NULL, gDummySpriteAffineAnimTable, AnimSpriteOnMonPos gUnknown_83E41C8:: @ 83E41C8 - .incbin "baserom.gba", 0x3E41C8, 0x8 + .2byte 10206, 9999, 9998 + .align 2 gUnknown_83E41D0:: @ 83E41D0 spr_template 10206, 10206, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A97E8 @@ -1287,7 +1495,9 @@ gUnknown_83E41E8:: @ 83E41E8 spr_template 10210, 10210, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A9860 gUnknown_83E4200:: @ 83E4200 - .incbin "baserom.gba", 0x3E4200, 0x18 + obj_rot_scal_anim_frame 10, -13, 0, 10 + obj_rot_scal_anim_frame -10, 13, 0, 10 + obj_rot_scal_anim_end gUnknown_83E4218:: @ 83E4218 spr_template 10216, 10216, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A9B40 @@ -1408,7 +1618,10 @@ gUnknown_83E43F8:: @ 83E43F8 spr_template 10215, 10215, gOamData_83AC9D8, gUnknown_83E43F0, NULL, gDummySpriteAffineAnimTable, sub_80AA708 gUnknown_83E4410:: @ 83E4410 - .incbin "baserom.gba", 0x3E4410, 0x20 + obj_rot_scal_anim_frame -12, 8, 0, 4 + obj_rot_scal_anim_frame 20, -20, 0, 4 + obj_rot_scal_anim_frame -8, 12, 0, 4 + obj_rot_scal_anim_end gUnknown_83E4430:: @ 83E4430 spr_template 10225, 10225, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AA838 @@ -1452,7 +1665,10 @@ gUnknown_83E44DC:: @ 83E44DC spr_template 10244, 10244, gOamData_83ACBE0, gDummySpriteAnimTable, NULL, gUnknown_83E44D4, sub_80AAAE4 gUnknown_83E44F4:: @ 83E44F4 - .incbin "baserom.gba", 0x3E44F4, 0x1380 + .incbin "graphics/battle_anims/unk_83E4874.4bpp" + +gUnknown_83E4874:: + .incbin "graphics/battle_anims/unk_83E4874.bin" gUnknown_83E5874:: @ 83E5874 obj_image_anim_frame 0, 2 @@ -1717,7 +1933,16 @@ gUnknown_83E5CA0:: @ 83E5CA0 spr_template 10029, 10029, gOamData_83AC9D8, gUnknown_83E5C50, NULL, gDummySpriteAffineAnimTable, sub_80AC990 gUnknown_83E5CD0:: @ 83E5CD0 - .incbin "baserom.gba", 0x3E5CD0, 0x2C + obj_image_anim_frame 0x0010, 6 + obj_image_anim_frame 0x0020, 6 + obj_image_anim_frame 0x0030, 6 + obj_image_anim_jump 0 + +gUnknown_83E5CE0:: + .4byte gUnknown_83E5CD0 + +gUnknown_83E5CE4:: + spr_template 10029, 10029, gOamData_83AC9D8, gUnknown_83E5CE0, NULL, gDummySpriteAffineAnimTable, sub_80ACAA8 gUnknown_83E5CFC:: @ 83E5CFC obj_rot_scal_anim_frame 80, 80, 0, 0 @@ -1762,7 +1987,16 @@ gUnknown_83E5DB8:: @ 83E5DB8 .4byte gUnknown_83E5DAC gUnknown_83E5DBC:: @ 83E5DBC - .incbin "baserom.gba", 0x3E5DBC, 0x28 + obj_rot_scal_anim_frame 0, 0, 0, 1 + obj_rot_scal_anim_end + +gUnknown_83E5DCC:: + obj_rot_scal_anim_frame 160, 160, 0, 0 + obj_rot_scal_anim_end + +gUnknown_83E55DC:: + .4byte gUnknown_83E5DBC + .4byte gUnknown_83E5DCC gUnknown_83E5DE4:: @ 83E5DE4 spr_template 10029, 10029, gOamData_83AC9D8, gUnknown_83E5DB8, NULL, gDummySpriteAffineAnimTable, sub_80ACDA8 @@ -1777,7 +2011,7 @@ gUnknown_83E5E2C:: @ 83E5E2C spr_template 10201, 10201, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AD330 gUnknown_83E5E44:: @ 83E5E44 - .incbin "baserom.gba", 0x3E5E44, 0x1C + .2byte 0xfffe, 0xfffb, 0xffff, 0xffff, 0x0003, 0xfffa, 0x0004, 0xfffe, 0x0002, 0xfff8, 0xfffb, 0xfffb, 0x0004, 0xfff9 gUnknown_83E5E60:: @ 83E5E60 spr_template 10201, 10201, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AD454 @@ -1824,10 +2058,10 @@ gUnknown_83E5EE4:: @ 83E5EE4 spr_template 10232, 10232, gOamData_83AC9D8, gUnknown_83E5EE0, NULL, gDummySpriteAffineAnimTable, sub_80AD6F4 gUnknown_83E5EFC:: @ 83E5EFC - .incbin "baserom.gba", 0x3E5EFC, 0x10 + .byte 0xff, 0xff, 0x00, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x01, 0x01, 0x00, 0x00, 0xff, 0x00, 0x01 gUnknown_83E5F0C:: @ 83E5F0C - .incbin "baserom.gba", 0x3E5F0C, 0x10 + .byte 0xff, 0x00, 0x01, 0x00, 0xff, 0x01, 0x00, 0xff, 0x00, 0x01, 0x00, 0xff, 0x00, 0x01, 0x00, 0x01 gUnknown_83E5F1C:: @ 83E5F1C obj_image_anim_frame 0, 5 @@ -1844,7 +2078,31 @@ gUnknown_83E5F38:: @ 83E5F38 spr_template 10037, 10037, gOamData_83AC9D8, gUnknown_83E5F34, NULL, gDummySpriteAffineAnimTable, sub_80ADBEC gUnknown_83E5F50:: @ 83E5F50 - .incbin "baserom.gba", 0x3E5F50, 0x74 + obj_rot_scal_anim_frame 256, 256, 0, 0 + obj_rot_scal_anim_frame 0, 0, 0, 20 + obj_rot_scal_anim_frame 0, 0, 240, 60 + obj_rot_scal_anim_end + +gUnknown_83E5F70:: + .4byte gUnknown_83E5F50 + +gUnknown_83E5F74:: + spr_template 10143, 10143, gOamData_83ACA38, gDummySpriteAnimTable, NULL, gUnknown_83E5F70, sub_80ADC58 + +gUnknown_83E5F8C:: + obj_image_anim_frame 0x0000, 5 + obj_image_anim_frame 0x0010, 5 + obj_image_anim_frame 0x0020, 5 + obj_image_anim_frame 0x0030, 5 + obj_image_anim_frame 0x0040, 5 + obj_image_anim_frame 0x0050, 5 + obj_image_anim_jump 0 + +gUnknown_83E5FA8:: + .4byte gUnknown_83E5F8C + +gUnknown_83E5FAC:: + spr_template 10079, 10079, gOamData_83AC9D8, gUnknown_83E5FA8, NULL, gDummySpriteAffineAnimTable, sub_80ADCB8 gUnknown_83E5FC4:: @ 83E5FC4 spr_template 10011, 10011, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80ADD4C @@ -1896,7 +2154,22 @@ gUnknown_83E60B8:: @ 83E60B8 spr_template 10173, 10173, gOamData_83AC9F8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AE470 gUnknown_83E60D0:: @ 83E60D0 - .incbin "baserom.gba", 0x3E60D0, 0x20 + .byte 0x3a, 0xc4 + .byte 0xc8, 0xdc + .byte 0x08, 0xc8 + .byte 0xf0, 0x38 + .byte 0x3a, 0xf6 + .byte 0xc6, 0x0a + .byte 0x30, 0xee + .byte 0xf8, 0x38 + .byte 0x10, 0xc8 + .byte 0xc6, 0xd6 + .byte 0x3a, 0x1e + .byte 0xd0, 0x28 + .byte 0x0c, 0xd0 + .byte 0x30, 0xf4 + .byte 0xc8, 0x12 + .byte 0x30, 0x30 gUnknown_83E60F0:: @ 83E60F0 obj_image_anim_frame 3, 1 @@ -2006,7 +2279,19 @@ gUnknown_83E62A8:: @ 83E62A8 spr_template 10001, 10001, gOamData_83AC9C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AEF60 gUnknown_83E62C0:: @ 83E62C0 - .incbin "baserom.gba", 0x3E62C0, 0x30 + obj_image_anim_frame 0x0000, 5, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 0x0001, 5, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_jump 0 + +gUnknown_83E62CC:: + .4byte gUnknown_83E62C0 + +gUnknown_83E62D0:: + spr_template 10141, 10141, gOamData_83AC9C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AF108 + +gUnknown_83E62E8:: + obj_image_anim_frame 0, 1 + obj_image_anim_end gUnknown_83E62F0:: @ 83E62F0 obj_image_anim_frame 4, 1 @@ -2030,7 +2315,7 @@ gUnknown_83E6310:: @ 83E6310 obj_image_anim_jump 0 gUnknown_83E631C:: @ 83E631C - .incbin "baserom.gba", 0x3E631C, 0x4 + .4byte gUnknown_83E62E8 gUnknown_83E6320:: @ 83E6320 .4byte gUnknown_83E62F0 @@ -2128,19 +2413,28 @@ gUnknown_83E64BC:: @ 83E64BC spr_template 10172, 10172, gOamData_83ACB18, gUnknown_83E64A0, NULL, gDummySpriteAffineAnimTable, sub_80AF914 gUnknown_83E64D4:: @ 83E64D4 - .incbin "baserom.gba", 0x3E64D4, 0x14 + .byte 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x03, 0x04, 0x04, 0x04, 0x05, 0x06, 0x06, 0x06, 0x06, 0x07, 0x08, 0x08, 0x08, 0x09 gUnknown_83E64E8:: @ 83E64E8 spr_template 10155, 10155, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AFD4C gUnknown_83E6500:: @ 83E6500 - .incbin "baserom.gba", 0x3E6500, 0x14 + .byte 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05 gUnknown_83E6514:: @ 83E6514 spr_template 10172, 10172, gOamData_83ACB18, gUnknown_83E64A0, NULL, gDummySpriteAffineAnimTable, sub_80AFFD4 gUnknown_83E652C:: @ 83E652C - .incbin "baserom.gba", 0x3E652C, 0x28 + .2byte 0xe064, 0x2001 + .2byte 0xe055, 0x0001 + .2byte 0xe0f2, 0x1011 + .2byte 0xe042, 0x1021 + .2byte 0xe0b6, 0x0031 + .2byte 0xe03c, 0x2001 + .2byte 0xe0d6, 0x0011 + .2byte 0xe071, 0x1001 + .2byte 0xe0d2, 0x1031 + .2byte 0xe026, 0x0021 gUnknown_83E6554:: @ 83E6554 obj_rot_scal_anim_frame 256, 256, 0, 0 @@ -2469,4 +2763,3 @@ gUnknown_83E6AB8:: @ 83E6AB8 gUnknown_83E6AD0:: @ 83E6AD0 spr_template 10155, 10155, gOamData_83ACB50, gUnknown_83E5A78, NULL, gUnknown_83E6AB4, sub_80B1838 - diff --git a/graphics/battle_anims/unk_83E4874.bin b/graphics/battle_anims/unk_83E4874.bin new file mode 100644 index 0000000000000000000000000000000000000000..dc2990b0a5f4dccacdb5a94bcc0edb77a8c8db13 GIT binary patch literal 4096 zcmeH|O>P1)425Z-1;nN;Q*r;B_-M?VC(Cy1bOzBKA)3Uo{rN8oZgLxIOkhl4Okhl4 zOyFfEu#-1=m;J;2D)%Md@*~&He9L{xLGZ2p`?egYY5uTq_V~y#7YMT4p>6rdU6(51 zO@ev-u6)aBf8Mu}TkbGtoR+MWch>P8z%ZkEK=UzwSbC}zcg}>_*xh;7Lc(dw-&Fo> z?9^koNERVWo~Lz^tc#rHhStlxd0J)G5~Ey}%1^F-+Q}&C8O#Zbwqqi_RsGs|)2Fv@ z@m}|#hwmUW>^tjoWtgzW(vx2CmPu-Ijy!W^tB8GXrFv)e>edUWTwB)YtM{@*ebqtq zu&h;NsbGhw~qXr Kb~k=cP2dhS()e`% literal 0 HcmV?d00001 diff --git a/graphics/battle_anims/unk_83E4874.png b/graphics/battle_anims/unk_83E4874.png new file mode 100644 index 0000000000000000000000000000000000000000..c4a27b929b45af7e48dd1c97fcca4701ed6f5b0d GIT binary patch literal 286 zcmV+(0pb3MP)-!>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 literal 0 HcmV?d00001 diff --git a/src/dark.c b/src/dark.c index b6d13afe3..368f5cbd5 100644 --- a/src/dark.c +++ b/src/dark.c @@ -82,7 +82,7 @@ static const union AffineAnimCmd gUnknown_83E7900[] = AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const gUnknown_83E7910[] = +const union AffineAnimCmd *const gUnknown_83E7910[] = { gUnknown_83E7890, gUnknown_83E78A0, From 46602859cd1cf7b3ecbc3f0730eebe2e60ef3845 Mon Sep 17 00:00:00 2001 From: Evan Date: Sat, 16 Nov 2019 19:45:55 -0700 Subject: [PATCH 05/49] remove compile errors --- asm/option_menu.s | 1337 --------------------------------------------- data/strings.s | 14 +- include/global.h | 10 +- include/strings.h | 11 + ld_script.txt | 2 +- src/option_menu.c | 594 ++++++++++++++++++++ sym_ewram.txt | 2 +- 7 files changed, 619 insertions(+), 1351 deletions(-) delete mode 100644 asm/option_menu.s create mode 100644 src/option_menu.c diff --git a/asm/option_menu.s b/asm/option_menu.s deleted file mode 100644 index 3b08810c5..000000000 --- a/asm/option_menu.s +++ /dev/null @@ -1,1337 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_808835C -sub_808835C: @ 808835C - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_808835C - - thumb_func_start sub_8088374 -sub_8088374: @ 8088374 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_8088374 - - thumb_func_start CB2_OptionsMenuFromStartMenu -CB2_OptionsMenuFromStartMenu: @ 8088388 - push {r4-r6,lr} - ldr r1, _08088418 @ =gMain - ldr r0, [r1, 0x8] - cmp r0, 0 - bne _08088396 - ldr r0, _0808841C @ =CB2_ReturnToStartMenu - str r0, [r1, 0x8] -_08088396: - ldr r4, _08088420 @ =gUnknown_2039620 - movs r0, 0x14 - bl AllocZeroed - str r0, [r4] - movs r1, 0 - strb r1, [r0, 0x10] - ldr r0, [r4] - strb r1, [r0, 0x12] - ldr r0, [r4] - strb r1, [r0, 0x11] - ldr r2, [r4] - strh r1, [r2, 0xE] - ldr r0, _08088424 @ =gSaveBlock2Ptr - ldr r1, [r0] - ldrb r0, [r1, 0x14] - lsls r0, 29 - lsrs r0, 29 - strh r0, [r2] - ldrb r0, [r1, 0x15] - lsls r0, 29 - lsrs r0, 31 - strh r0, [r2, 0x2] - ldrb r0, [r1, 0x15] - lsls r0, 30 - lsrs r0, 31 - strh r0, [r2, 0x4] - ldrb r0, [r1, 0x15] - lsls r0, 31 - lsrs r0, 31 - strh r0, [r2, 0x6] - ldrb r0, [r1, 0x13] - strh r0, [r2, 0x8] - ldrb r0, [r1, 0x14] - lsrs r0, 3 - strh r0, [r2, 0xA] - movs r3, 0 - adds r6, r4, 0 - ldr r5, _08088428 @ =gUnknown_83CC304 - movs r4, 0 -_080883E6: - ldr r1, [r6] - lsls r0, r3, 1 - adds r2, r1, r0 - ldrh r1, [r2] - adds r0, r5 - ldrh r0, [r0] - subs r0, 0x1 - cmp r1, r0 - ble _080883FA - strh r4, [r2] -_080883FA: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x5 - bls _080883E6 - movs r0, 0xD - bl HelpSystem_SetSomeVariable2 - ldr r0, _0808842C @ =sub_8088454 - bl SetMainCallback2 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08088418: .4byte gMain -_0808841C: .4byte CB2_ReturnToStartMenu -_08088420: .4byte gUnknown_2039620 -_08088424: .4byte gSaveBlock2Ptr -_08088428: .4byte gUnknown_83CC304 -_0808842C: .4byte sub_8088454 - thumb_func_end CB2_OptionsMenuFromStartMenu - - thumb_func_start sub_8088430 -sub_8088430: @ 8088430 - push {lr} - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - bl SetHBlankCallback - pop {r0} - bx r0 - thumb_func_end sub_8088430 - - thumb_func_start sub_8088444 -sub_8088444: @ 8088444 - push {lr} - ldr r0, _08088450 @ =sub_8088374 - bl SetVBlankCallback - pop {r0} - bx r0 - .align 2, 0 -_08088450: .4byte sub_8088374 - thumb_func_end sub_8088444 - - thumb_func_start sub_8088454 -sub_8088454: @ 8088454 - push {r4,lr} - ldr r0, _0808846C @ =gUnknown_2039620 - ldr r0, [r0] - ldrb r0, [r0, 0x11] - cmp r0, 0x9 - bhi _080884FA - lsls r0, 2 - ldr r1, _08088470 @ =_08088474 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808846C: .4byte gUnknown_2039620 -_08088470: .4byte _08088474 - .align 2, 0 -_08088474: - .4byte _0808849C - .4byte _080884A2 - .4byte _080884A8 - .4byte _080884AE - .4byte _080884BC - .4byte _080884C2 - .4byte _080884C8 - .4byte _080884CE - .4byte _080884E2 - .4byte _080884F4 -_0808849C: - bl sub_8088430 - b _080884FE -_080884A2: - bl sub_8088530 - b _080884FE -_080884A8: - bl sub_80886D4 - b _080884FE -_080884AE: - bl sub_80886F0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08088508 - b _080884FE -_080884BC: - bl sub_8088BD0 - b _080884FE -_080884C2: - bl sub_8088C0C - b _080884FE -_080884C8: - bl sub_8088D8C - b _080884FE -_080884CE: - movs r4, 0 -_080884D0: - adds r0, r4, 0 - bl sub_80889A8 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bls _080884D0 - b _080884FE -_080884E2: - ldr r0, _080884F0 @ =gUnknown_2039620 - ldr r0, [r0] - ldrh r0, [r0, 0xE] - bl sub_8088DE0 - b _080884FE - .align 2, 0 -_080884F0: .4byte gUnknown_2039620 -_080884F4: - bl sub_8088680 - b _080884FE -_080884FA: - bl sub_8088514 -_080884FE: - ldr r0, _08088510 @ =gUnknown_2039620 - ldr r1, [r0] - ldrb r0, [r1, 0x11] - adds r0, 0x1 - strb r0, [r1, 0x11] -_08088508: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08088510: .4byte gUnknown_2039620 - thumb_func_end sub_8088454 - - thumb_func_start sub_8088514 -sub_8088514: @ 8088514 - push {lr} - ldr r0, _08088528 @ =sub_8088780 - movs r1, 0 - bl CreateTask - ldr r0, _0808852C @ =sub_808835C - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_08088528: .4byte sub_8088780 -_0808852C: .4byte sub_808835C - thumb_func_end sub_8088514 - - thumb_func_start sub_8088530 -sub_8088530: @ 8088530 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r3, 0xC0 - lsls r3, 19 - movs r4, 0xC0 - lsls r4, 9 - add r0, sp, 0x4 - mov r8, r0 - mov r2, sp - movs r6, 0 - ldr r1, _08088670 @ =0x040000d4 - movs r5, 0x80 - lsls r5, 5 - ldr r7, _08088674 @ =0x81000800 - movs r0, 0x81 - lsls r0, 24 - mov r12, r0 -_08088556: - strh r6, [r2] - mov r0, sp - str r0, [r1] - str r3, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r5 - subs r4, r5 - cmp r4, r5 - bhi _08088556 - strh r6, [r2] - mov r2, sp - str r2, [r1] - str r3, [r1, 0x4] - lsrs r0, r4, 1 - mov r2, r12 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0xE0 - lsls r0, 19 - movs r3, 0x80 - lsls r3, 3 - movs r4, 0 - str r4, [sp, 0x4] - ldr r2, _08088670 @ =0x040000d4 - mov r1, r8 - str r1, [r2] - str r0, [r2, 0x4] - lsrs r0, r3, 2 - movs r1, 0x85 - lsls r1, 24 - orrs r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r1, 0xA0 - lsls r1, 19 - mov r0, sp - strh r4, [r0] - str r0, [r2] - str r1, [r2, 0x4] - lsrs r3, 1 - movs r0, 0x81 - lsls r0, 24 - orrs r3, r0 - str r3, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _08088678 @ =gUnknown_83CC2D8 - movs r0, 0 - movs r2, 0x3 - bl InitBgsFromTemplates - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - ldr r0, _0808867C @ =gUnknown_83CC2B8 - bl InitWindows - bl DeactivateAllTextPrinters - movs r0, 0x50 - movs r1, 0xC1 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0x2 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0x1 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0x27 - bl SetGpuReg - movs r1, 0xC1 - lsls r1, 6 - movs r0, 0 - bl SetGpuReg - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08088670: .4byte 0x040000d4 -_08088674: .4byte 0x81000800 -_08088678: .4byte gUnknown_83CC2D8 -_0808867C: .4byte gUnknown_83CC2B8 - thumb_func_end sub_8088530 - - thumb_func_start sub_8088680 -sub_8088680: @ 8088680 - push {r4,r5,lr} - sub sp, 0xC - ldr r5, _080886CC @ =gUnknown_8419E57 - movs r0, 0 - adds r1, r5, 0 - movs r2, 0 - bl GetStringWidth - movs r4, 0xE4 - subs r4, r0 - movs r0, 0x2 - movs r1, 0xFF - bl FillWindowPixelBuffer - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080886D0 @ =gUnknown_83CC360 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x2 - movs r1, 0 - adds r2, r4, 0 - movs r3, 0 - bl AddTextPrinterParameterized3 - movs r0, 0x2 - bl PutWindowTilemap - movs r0, 0x2 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080886CC: .4byte gUnknown_8419E57 -_080886D0: .4byte gUnknown_83CC360 - thumb_func_end sub_8088680 - - thumb_func_start sub_80886D4 -sub_80886D4: @ 80886D4 - push {lr} - bl ResetSpriteData - bl ResetPaletteFade - bl FreeAllSpritePalettes - bl ResetTasks - bl ScanlineEffect_Stop - pop {r0} - bx r0 - thumb_func_end sub_80886D4 - - thumb_func_start sub_80886F0 -sub_80886F0: @ 80886F0 - push {lr} - ldr r0, _08088708 @ =gUnknown_2039620 - ldr r0, [r0] - ldrb r1, [r0, 0x12] - cmp r1, 0x1 - beq _0808872E - cmp r1, 0x1 - bgt _0808870C - cmp r1, 0 - beq _08088716 - b _08088768 - .align 2, 0 -_08088708: .4byte gUnknown_2039620 -_0808870C: - cmp r1, 0x2 - beq _0808873A - cmp r1, 0x3 - beq _08088758 - b _08088768 -_08088716: - ldrb r0, [r0, 0xA] - bl GetUserFrameGraphicsInfo - ldr r1, [r0] - movs r2, 0x90 - lsls r2, 1 - movs r3, 0xD5 - lsls r3, 1 - movs r0, 0x1 - bl LoadBgTiles - b _0808876C -_0808872E: - ldrb r0, [r0, 0xA] - bl GetUserFrameGraphicsInfo - ldr r0, [r0, 0x4] - movs r1, 0x20 - b _0808874C -_0808873A: - ldr r0, _08088754 @ =gUnknown_83CC2E4 - movs r1, 0x10 - movs r2, 0x20 - bl LoadPalette - movs r0, 0x2 - bl stdpal_get - movs r1, 0xF0 -_0808874C: - movs r2, 0x20 - bl LoadPalette - b _0808876C - .align 2, 0 -_08088754: .4byte gUnknown_83CC2E4 -_08088758: - ldr r1, _08088764 @ =0x000001b3 - movs r0, 0x1 - movs r2, 0x30 - bl sub_814FDA0 - b _0808876C - .align 2, 0 -_08088764: .4byte 0x000001b3 -_08088768: - movs r0, 0x1 - b _08088778 -_0808876C: - ldr r0, _0808877C @ =gUnknown_2039620 - ldr r1, [r0] - ldrb r0, [r1, 0x12] - adds r0, 0x1 - strb r0, [r1, 0x12] - movs r0, 0 -_08088778: - pop {r1} - bx r1 - .align 2, 0 -_0808877C: .4byte gUnknown_2039620 - thumb_func_end sub_80886F0 - - thumb_func_start sub_8088780 -sub_8088780: @ 8088780 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080887A0 @ =gUnknown_2039620 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - adds r3, r1, 0 - cmp r0, 0x5 - bls _08088796 - b _080888B6 -_08088796: - lsls r0, 2 - ldr r1, _080887A4 @ =_080887A8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080887A0: .4byte gUnknown_2039620 -_080887A4: .4byte _080887A8 - .align 2, 0 -_080887A8: - .4byte _080887C0 - .4byte _08088894 - .4byte _080887E0 - .4byte _08088878 - .4byte _08088894 - .4byte _080888B0 -_080887C0: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - bl sub_8088444 - ldr r0, _080887DC @ =gUnknown_2039620 - ldr r1, [r0] - b _080888A2 - .align 2, 0 -_080887DC: .4byte gUnknown_2039620 -_080887E0: - bl sub_80BF72C - cmp r0, 0x1 - beq _080888B6 - bl sub_80888C0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _080888B6 - lsls r0, 2 - ldr r1, _08088800 @ =_08088804 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08088800: .4byte _08088804 - .align 2, 0 -_08088804: - .4byte _080888B6 - .4byte _08088818 - .4byte _08088824 - .4byte _08088858 - .4byte _08088868 -_08088818: - ldr r0, _08088820 @ =gUnknown_2039620 - ldr r1, [r0] - b _080888A2 - .align 2, 0 -_08088820: .4byte gUnknown_2039620 -_08088824: - ldr r4, _08088854 @ =gUnknown_2039620 - ldr r0, [r4] - ldrb r0, [r0, 0xA] - bl GetUserFrameGraphicsInfo - ldr r1, [r0] - movs r2, 0x90 - lsls r2, 1 - movs r3, 0xD5 - lsls r3, 1 - movs r0, 0x1 - bl LoadBgTiles - ldr r0, [r4] - ldrb r0, [r0, 0xA] - bl GetUserFrameGraphicsInfo - ldr r0, [r0, 0x4] - movs r1, 0x20 - movs r2, 0x20 - bl LoadPalette - ldr r0, [r4] - b _0808886C - .align 2, 0 -_08088854: .4byte gUnknown_2039620 -_08088858: - ldr r0, _08088864 @ =gUnknown_2039620 - ldr r0, [r0] - ldrh r0, [r0, 0xE] - bl sub_8088DE0 - b _080888B6 - .align 2, 0 -_08088864: .4byte gUnknown_2039620 -_08088868: - ldr r0, _08088874 @ =gUnknown_2039620 - ldr r0, [r0] -_0808886C: - ldrb r0, [r0, 0xE] - bl sub_80889A8 - b _080888B6 - .align 2, 0 -_08088874: .4byte gUnknown_2039620 -_08088878: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08088890 @ =gUnknown_2039620 - ldr r1, [r0] - b _080888A2 - .align 2, 0 -_08088890: .4byte gUnknown_2039620 -_08088894: - ldr r0, _080888AC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080888B6 - ldr r1, [r3] -_080888A2: - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _080888B6 - .align 2, 0 -_080888AC: .4byte gPaletteFade -_080888B0: - adds r0, r2, 0 - bl sub_8088B00 -_080888B6: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8088780 - - thumb_func_start sub_80888C0 -sub_80888C0: @ 80888C0 - push {r4,lr} - ldr r3, _080888EC @ =gMain - ldrh r1, [r3, 0x30] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08088906 - ldr r2, _080888F0 @ =gUnknown_2039620 - ldr r1, [r2] - ldrh r0, [r1, 0xE] - lsls r0, 1 - adds r3, r1, r0 - ldrh r4, [r3] - ldr r1, _080888F4 @ =gUnknown_83CC304 - adds r0, r1 - ldrh r0, [r0] - subs r0, 0x1 - cmp r4, r0 - bne _080888F8 - movs r0, 0 - b _080888FA - .align 2, 0 -_080888EC: .4byte gMain -_080888F0: .4byte gUnknown_2039620 -_080888F4: .4byte gUnknown_83CC304 -_080888F8: - adds r0, r4, 0x1 -_080888FA: - strh r0, [r3] - ldr r0, [r2] - ldrh r0, [r0, 0xE] - cmp r0, 0x5 - beq _08088930 - b _0808893C -_08088906: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08088940 - ldr r2, _08088934 @ =gUnknown_2039620 - ldr r1, [r2] - ldrh r0, [r1, 0xE] - lsls r3, r0, 1 - adds r1, r3 - ldrh r0, [r1] - cmp r0, 0 - bne _08088924 - ldr r0, _08088938 @ =gUnknown_83CC304 - adds r0, r3, r0 - ldrh r0, [r0] -_08088924: - subs r0, 0x1 - strh r0, [r1] - ldr r0, [r2] - ldrh r0, [r0, 0xE] - cmp r0, 0x5 - bne _0808893C -_08088930: - movs r0, 0x2 - b _080889A0 - .align 2, 0 -_08088934: .4byte gUnknown_2039620 -_08088938: .4byte gUnknown_83CC304 -_0808893C: - movs r0, 0x4 - b _080889A0 -_08088940: - movs r0, 0x40 - ands r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - beq _08088964 - ldr r0, _0808895C @ =gUnknown_2039620 - ldr r1, [r0] - ldrh r0, [r1, 0xE] - cmp r0, 0 - bne _08088960 - movs r0, 0x6 - b _08088982 - .align 2, 0 -_0808895C: .4byte gUnknown_2039620 -_08088960: - subs r0, 0x1 - b _08088982 -_08088964: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08088988 - ldr r0, _0808897C @ =gUnknown_2039620 - ldr r1, [r0] - ldrh r0, [r1, 0xE] - cmp r0, 0x6 - bne _08088980 - strh r2, [r1, 0xE] - b _08088984 - .align 2, 0 -_0808897C: .4byte gUnknown_2039620 -_08088980: - adds r0, 0x1 -_08088982: - strh r0, [r1, 0xE] -_08088984: - movs r0, 0x3 - b _080889A0 -_08088988: - ldrh r1, [r3, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0808899A - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0808899E -_0808899A: - movs r0, 0x1 - b _080889A0 -_0808899E: - movs r0, 0 -_080889A0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80888C0 - - thumb_func_start sub_80889A8 -sub_80889A8: @ 80889A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x30 - lsls r0, 24 - lsrs r5, r0, 24 - add r4, sp, 0x2C - ldr r1, _08088A08 @ =gUnknown_83CC363 - adds r0, r4, 0 - movs r2, 0x3 - bl memcpy - movs r0, 0x82 - mov r8, r0 - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - muls r0, r5 - adds r0, 0x2 - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x46 - str r1, [sp] - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x82 - adds r3, r7, 0 - bl FillWindowPixelRect - adds r6, r4, 0 - cmp r5, 0x5 - bhi _08088ADE - lsls r0, r5, 2 - ldr r1, _08088A0C @ =_08088A10 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08088A08: .4byte gUnknown_83CC363 -_08088A0C: .4byte _08088A10 - .align 2, 0 -_08088A10: - .4byte _08088A28 - .4byte _08088A38 - .4byte _08088A48 - .4byte _08088A58 - .4byte _08088A68 - .4byte _08088A9C -_08088A28: - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r2, _08088A34 @ =gUnknown_83CC330 - b _08088A72 - .align 2, 0 -_08088A34: .4byte gUnknown_83CC330 -_08088A38: - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r2, _08088A44 @ =gUnknown_83CC33C - b _08088A72 - .align 2, 0 -_08088A44: .4byte gUnknown_83CC33C -_08088A48: - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r2, _08088A54 @ =gUnknown_83CC344 - b _08088A72 - .align 2, 0 -_08088A54: .4byte gUnknown_83CC344 -_08088A58: - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r2, _08088A64 @ =gUnknown_83CC34C - b _08088A72 - .align 2, 0 -_08088A64: .4byte gUnknown_83CC34C -_08088A68: - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r2, _08088A94 @ =gUnknown_83CC354 -_08088A72: - ldr r0, _08088A98 @ =gUnknown_2039620 - ldr r0, [r0] - lsls r1, r5, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - mov r2, r8 - adds r3, r7, 0 - bl AddTextPrinterParameterized3 - b _08088ADE - .align 2, 0 -_08088A94: .4byte gUnknown_83CC354 -_08088A98: .4byte gUnknown_2039620 -_08088A9C: - ldr r1, _08088AF8 @ =gUnknown_8419E52 - add r0, sp, 0xC - bl StringCopy - add r4, sp, 0x20 - ldr r0, _08088AFC @ =gUnknown_2039620 - ldr r0, [r0] - lsls r1, r5, 1 - adds r0, r1 - ldrh r1, [r0] - adds r1, 0x1 - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - add r0, sp, 0xC - adds r1, r4, 0 - movs r2, 0x3 - bl StringAppendN - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - add r0, sp, 0xC - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - mov r2, r8 - adds r3, r7, 0 - bl AddTextPrinterParameterized3 -_08088ADE: - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x1 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0x30 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08088AF8: .4byte gUnknown_8419E52 -_08088AFC: .4byte gUnknown_2039620 - thumb_func_end sub_80889A8 - - thumb_func_start sub_8088B00 -sub_8088B00: @ 8088B00 - push {r4-r6,lr} - mov r6, r8 - push {r6} - mov r8, r0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _08088BBC @ =gFieldCallback - ldr r0, _08088BC0 @ =sub_807DF64 - str r0, [r1] - ldr r0, _08088BC4 @ =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 - bl FreeAllWindowBuffers - ldr r3, _08088BC8 @ =gSaveBlock2Ptr - ldr r5, [r3] - ldr r4, _08088BCC @ =gUnknown_2039620 - ldr r0, [r4] - movs r2, 0x7 - ldrb r1, [r0] - ands r1, r2 - ldrb r2, [r5, 0x14] - movs r0, 0x8 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x14] - ldr r5, [r3] - ldr r0, [r4] - movs r6, 0x1 - ldrb r1, [r0, 0x2] - ands r1, r6 - lsls r1, 2 - ldrb r2, [r5, 0x15] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x15] - ldr r5, [r3] - ldr r0, [r4] - ldrb r1, [r0, 0x4] - ands r1, r6 - lsls r1, 1 - ldrb r2, [r5, 0x15] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x15] - ldr r5, [r3] - ldr r0, [r4] - ldrb r1, [r0, 0x6] - ands r1, r6 - ldrb r2, [r5, 0x15] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x15] - ldr r1, [r3] - ldr r0, [r4] - ldrh r0, [r0, 0x8] - movs r6, 0 - strb r0, [r1, 0x13] - ldr r5, [r3] - ldr r0, [r4] - ldrb r1, [r0, 0xA] - lsls r1, 3 - ldrb r2, [r5, 0x14] - movs r0, 0x7 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x14] - ldr r0, [r3] - ldrb r0, [r0, 0x15] - lsls r0, 31 - lsrs r0, 31 - bl SetPokemonCryStereo - ldr r0, [r4] - bl Free - str r6, [r4] - mov r0, r8 - bl DestroyTask - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08088BBC: .4byte gFieldCallback -_08088BC0: .4byte sub_807DF64 -_08088BC4: .4byte gMain -_08088BC8: .4byte gSaveBlock2Ptr -_08088BCC: .4byte gUnknown_2039620 - thumb_func_end sub_8088B00 - - thumb_func_start sub_8088BD0 -sub_8088BD0: @ 8088BD0 - push {lr} - sub sp, 0xC - movs r0, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r2, _08088C08 @ =gUnknown_8419DCC - movs r0, 0x1 - str r0, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - movs r1, 0x2 - movs r3, 0x8 - bl AddTextPrinterParameterized - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_08088C08: .4byte gUnknown_8419DCC - thumb_func_end sub_8088BD0 - - thumb_func_start sub_8088C0C -sub_8088C0C: @ 8088C0C - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0xC - movs r6, 0x2 - ldr r1, _08088D6C @ =0x000001b3 - movs r4, 0x1 - str r4, [sp] - str r4, [sp, 0x4] - movs r5, 0x3 - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x2 - bl FillBgTilemapBufferRect - movs r1, 0xDA - lsls r1, 1 - movs r0, 0x1B - mov r8, r0 - str r0, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x2 - movs r3, 0x2 - bl FillBgTilemapBufferRect - ldr r1, _08088D70 @ =0x000001b5 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x2 - bl FillBgTilemapBufferRect - movs r1, 0xDB - lsls r1, 1 - str r4, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x3 - bl FillBgTilemapBufferRect - movs r1, 0xDC - lsls r1, 1 - str r4, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x3 - bl FillBgTilemapBufferRect - ldr r1, _08088D74 @ =0x000001b9 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x5 - bl FillBgTilemapBufferRect - movs r1, 0xDD - lsls r1, 1 - mov r0, r8 - str r0, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x2 - movs r3, 0x5 - bl FillBgTilemapBufferRect - ldr r1, _08088D78 @ =0x000001bb - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x5 - bl FillBgTilemapBufferRect - movs r1, 0xD5 - lsls r1, 1 - str r4, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x6 - bl FillBgTilemapBufferRect - ldr r1, _08088D7C @ =0x000001ab - movs r0, 0x1A - mov r8, r0 - str r0, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x2 - movs r3, 0x6 - bl FillBgTilemapBufferRect - movs r1, 0xD6 - lsls r1, 1 - str r4, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x6 - bl FillBgTilemapBufferRect - ldr r1, _08088D80 @ =0x000001ad - str r4, [sp] - movs r5, 0x10 - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x7 - bl FillBgTilemapBufferRect - ldr r1, _08088D84 @ =0x000001af - str r4, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x7 - bl FillBgTilemapBufferRect - movs r1, 0xD8 - lsls r1, 1 - str r4, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x13 - bl FillBgTilemapBufferRect - ldr r1, _08088D88 @ =0x000001b1 - mov r0, r8 - str r0, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x2 - movs r3, 0x13 - bl FillBgTilemapBufferRect - movs r1, 0xD9 - lsls r1, 1 - str r4, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x13 - bl FillBgTilemapBufferRect - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08088D6C: .4byte 0x000001b3 -_08088D70: .4byte 0x000001b5 -_08088D74: .4byte 0x000001b9 -_08088D78: .4byte 0x000001bb -_08088D7C: .4byte 0x000001ab -_08088D80: .4byte 0x000001ad -_08088D84: .4byte 0x000001af -_08088D88: .4byte 0x000001b1 - thumb_func_end sub_8088C0C - - thumb_func_start sub_8088D8C -sub_8088D8C: @ 8088D8C - push {r4,lr} - sub sp, 0xC - movs r0, 0x1 - movs r1, 0x11 - bl FillWindowPixelBuffer - movs r4, 0 -_08088D9A: - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - adds r1, r4, 0 - muls r1, r0 - adds r1, 0x2 - subs r1, r4 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _08088DDC @ =gUnknown_83CC314 - lsls r0, r4, 2 - adds r0, r2 - ldr r2, [r0] - str r1, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - movs r3, 0x8 - bl AddTextPrinterParameterized - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bls _08088D9A - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08088DDC: .4byte gUnknown_83CC314 - thumb_func_end sub_8088D8C - - thumb_func_start sub_8088DE0 -sub_8088DE0: @ 8088DE0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - lsls r0, 24 - lsrs r0, 24 - subs r1, r0, 0x1 - adds r2, r4, 0 - muls r2, r1 - adds r2, 0x3A - lsls r2, 16 - lsrs r2, 16 - lsls r1, r2, 8 - adds r2, r0 - orrs r1, r2 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x44 - bl SetGpuReg - movs r1, 0x87 - lsls r1, 5 - movs r0, 0x40 - bl SetGpuReg - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8088DE0 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/strings.s b/data/strings.s index 101946475..14a4472e3 100644 --- a/data/strings.s +++ b/data/strings.s @@ -2907,25 +2907,25 @@ gUnknown_8419D89:: @ 8419D89 gUnknown_8419DCC:: @ 8419DCC .string "OPTION$" -gUnknown_8419DD3:: @ 0x8419DD3 +gText_TextSpeed:: @ 0x8419DD3 .string "TEXT SPEED$" -gUnknown_8419DDE:: @ 0x8419DDE +gText_BattleScene:: @ 0x8419DDE .string "BATTLE SCENE$" -gUnknown_8419DEB:: @ 0x8419DEB +gText_BattleStyle:: @ 0x8419DEB .string "BATTLE STYLE$" -gUnknown_8419DF8:: @ 0x8419DF8 +gText_Sound:: @ 0x8419DF8 .string "SOUND$" -gUnknown_8419DFE:: @ 0x8419DFE +gText_ButtonMode:: @ 0x8419DFE .string "BUTTON MODE$" -gUnknown_8419E0A:: @ 0x8419E0A +gText_Frame:: @ 0x8419E0A .string "FRAME$" -gUnknown_8419E10:: @ 0x8419E10 +gText_OptionMenuCancel:: @ 0x8419E10 .string "CANCEL$" gUnknown_8419E17:: @ 0x8419E17 diff --git a/include/global.h b/include/global.h index 2f34de1a0..63c6923bd 100644 --- a/include/global.h +++ b/include/global.h @@ -291,11 +291,11 @@ struct SaveBlock2 /*0x012*/ u8 playTimeVBlanks; /*0x013*/ u8 optionsButtonMode; // OPTIONS_BUTTON_MODE_[NORMAL/LR/L_EQUALS_A] /*0x014*/ u16 optionsTextSpeed:3; // OPTIONS_TEXT_SPEED_[SLOW/MID/FAST] - u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes - u16 optionsSound:1; // OPTIONS_SOUND_[MONO/STEREO] - u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET] - u16 optionsBattleSceneOff:1; // whether battle animations are disabled - u16 regionMapZoom:1; // whether the map is zoomed in + u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes + /*0x15*/ u16 optionsSound:1; // OPTIONS_SOUND_[MONO/STEREO] + u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET] + u16 optionsBattleSceneOff:1; // whether battle animations are disabled + u16 regionMapZoom:1; // whether the map is zoomed in /*0x018*/ struct Pokedex pokedex; /*0x090*/ u8 filler_90[0x8]; /*0x098*/ struct Time localTimeOffset; diff --git a/include/strings.h b/include/strings.h index 6ad76e2fa..bdef1b956 100644 --- a/include/strings.h +++ b/include/strings.h @@ -741,4 +741,15 @@ extern const u8 gText_DecimalPoint[]; // map_name_popup extern const u8 gUnknown_841D18D[]; +// options menu +extern const u8 gText_TextSpeed[]; +extern const u8 gText_BattleScene[]; +extern const u8 gText_BattleStyle[]; +extern const u8 gText_Sound[]; +extern const u8 gText_ButtonMode[]; +extern const u8 gText_Frame[]; +extern const u8 gText_OptionMenuCancel[]; +extern const u8 gText_PickSwitchCancel[]; + + #endif //GUARD_STRINGS_H diff --git a/ld_script.txt b/ld_script.txt index d84a70c7a..5a98f75cc 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -128,7 +128,7 @@ SECTIONS { src/wild_encounter.o(.text); asm/field_effect.o(.text); src/scanline_effect.o(.text); - asm/option_menu.o(.text); + src/option_menu.o(.text); src/pokedex.o(.text); asm/trainer_card.o(.text); asm/pokemon_storage_system.o(.text); diff --git a/src/option_menu.c b/src/option_menu.c new file mode 100644 index 000000000..57de35f11 --- /dev/null +++ b/src/option_menu.c @@ -0,0 +1,594 @@ +#include "global.h" +#include "gpu_regs.h" +#include "scanline_effect.h" +#include "text_window_graphics.h" +#include "menu.h" +#include "menu_helpers.h" +#include "task.h" +#include "palette.h" +#include "overworld.h" +#include "malloc.h" +#include "help_system.h" +#include "main.h" +#include "bg.h" +#include "window.h" +#include "text.h" +#include "text_window.h" +#include "string_util.h" +#include "strings.h" +#include "field_fadetransition.h" +#include "gba/m4a_internal.h" + + +// Menu items +enum +{ + MENUITEM_TEXTSPEED = 0, + MENUITEM_BATTLESCENE, + MENUITEM_BATTLESTYLE, + MENUITEM_SOUND, + MENUITEM_BUTTONMODE, + MENUITEM_FRAMETYPE, + MENUITEM_CANCEL, + MENUITEM_COUNT, +}; +// Window Ids +enum +{ + WIN_TEXT_OPTION, + WIN_OPTIONS +}; + +//This file's functions +static void sub_808835C(void); +static void sub_8088374(void); +static void sub_8088430(void); +static void sub_8088444(void); +static void sub_8088454(void); +static void sub_8088514(void); +static void sub_8088530(void); +static void sub_8088680(void); +static void sub_80886D4(void); +static bool8 sub_80886F0(void); +static void sub_8088780(u8 taskId); +static u8 sub_80888C0(void); +static void sub_80889A8(u8 selection); +static void sub_8088B00(u8 taskId); +static void sub_8088BD0(void); +static void sub_8088C0C(void); +static void sub_8088D8C(void); +static void sub_8088DE0(u8 selection); + +extern const u16 gUnknown_83CC304[]; //sOptionsMenuItemCounts +extern const struct BgTemplate gUnknown_83CC2D8[]; +extern const u8 gUnknown_83CC360[]; +extern const u16 gUnknown_83CC2E4[]; +extern const struct WindowTemplate gUnknown_83CC2B8[]; +extern const u8 gUnknown_83CC363[]; +extern const u8 gUnknown_83CC330[]; +extern const u8 gUnknown_83CC33C[]; +extern const u8 gUnknown_83CC344[]; +extern const u8 gUnknown_83CC34C[]; +extern const u8 gUnknown_83CC354[]; +extern const u8 gUnknown_8419E52[]; +extern const u8 gUnknown_8419DCC[]; +extern const u8* gUnknown_83CC314[MENUITEM_COUNT]; +extern const u8 gUnknown_8419E57[]; + +struct OptionsMenu +{ + /*0x00*/ u16 option[7]; + /*0x0E*/ u16 unkE; + /*0x10*/ u8 state3; + /*0x11*/ u8 state; + /*0x12*/ u8 state2; + /*0x13*/ u8 unk13; +}; + +EWRAM_DATA struct OptionsMenu *sOptionsMenu = {0}; + + +//CB2_InitOptionsMenu +static void sub_808835C(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + + +//VBlankCB_OptionsMenu +static void sub_8088374(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + + +//sub_8088388 +void CB2_OptionsMenuFromStartMenu(void) +{ + int i; + + if (gMain.savedCallback == NULL) + gMain.savedCallback = CB2_ReturnToStartMenu; + sOptionsMenu = AllocZeroed(sizeof(struct OptionsMenu)); + sOptionsMenu->state3 = 0; + sOptionsMenu->state2 = 0; + sOptionsMenu->state = 0; + sOptionsMenu->unkE = 0; + sOptionsMenu->option[MENUITEM_TEXTSPEED] = gSaveBlock2Ptr->optionsTextSpeed; + sOptionsMenu->option[MENUITEM_BATTLESCENE] = gSaveBlock2Ptr->optionsBattleSceneOff; + sOptionsMenu->option[MENUITEM_BATTLESTYLE] = gSaveBlock2Ptr->optionsBattleStyle; + sOptionsMenu->option[MENUITEM_SOUND] = gSaveBlock2Ptr->optionsSound; + sOptionsMenu->option[MENUITEM_BUTTONMODE] = gSaveBlock2Ptr->optionsButtonMode; + sOptionsMenu->option[MENUITEM_FRAMETYPE] = gSaveBlock2Ptr->optionsWindowFrameType; + + for (i = 0; i < MENUITEM_COUNT-2; i++) + { + if (sOptionsMenu->option[i] > gUnknown_83CC304[i]-1) + sOptionsMenu->option[i] = 0; + } + HelpSystem_SetSomeVariable2(0xD); + SetMainCallback2(sub_8088454); +} + + +//sub_8088430 +static void sub_8088430(void) +{ + SetVBlankCallback(0); + SetHBlankCallback(0); +} + + +//sub_8088444 +static void sub_8088444(void) +{ + SetVBlankCallback(sub_8088374); +} + +//sub_8088454 +static void sub_8088454(void) +{ + int i; + switch (sOptionsMenu->state) + { + case 0: + sub_8088430(); + sOptionsMenu->state++; + break; + case 1: + sub_8088530(); + sOptionsMenu->state++; + break; + case 2: + sub_80886D4(); + sOptionsMenu->state++; + break; + case 3: + if (!(sub_80886F0())); + return; + sOptionsMenu->state++; + break; + case 4: + sub_8088BD0(); + sOptionsMenu->state++; + break; + case 5: + sub_8088C0C(); + sOptionsMenu->state++; + break; + case 6: + sub_8088D8C(); + sOptionsMenu->state++; + break; + case 7: + for (i = 0; i < MENUITEM_COUNT; i++) + sub_80889A8(i); + sOptionsMenu->state++; + break; + case 8: + sub_8088DE0(sOptionsMenu->unkE); + sOptionsMenu->state++; + break; + case 9: + sub_8088680(); + sOptionsMenu->state++; + break; + default: + sub_8088514(); + return; + } +} + +//sub_8088514 +static void sub_8088514(void) +{ + CreateTask(sub_8088780, 0); + SetMainCallback2(sub_808835C); +} + + +//sub_8088530 +static void sub_8088530(void) +{ + void * dest = (void *) VRAM; + DmaClearLarge16(3, dest, VRAM_SIZE, 0x1000); + + DmaClear32(3, (void *)OAM, OAM_SIZE); + DmaClear16(3, (void *)PLTT, PLTT_SIZE); + SetGpuReg(REG_OFFSET_DISPCNT, 0); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_83CC2D8, 3); //3 -> ARRAY_COUNT(gUnknown_83CC2D8) + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgX(3, 0, 0); + ChangeBgY(3, 0, 0); + InitWindows(gUnknown_83CC2B8); + DeactivateAllTextPrinters(); + SetGpuReg(REG_OFFSET_BLDCNT, 193); + SetGpuReg(REG_OFFSET_BLDY, 2); + SetGpuReg(REG_OFFSET_WININ, 1); + SetGpuReg(REG_OFFSET_WINOUT, 27); + SetGpuReg(0, 0x3040); + ShowBg(0); + ShowBg(1); + ShowBg(2); +}; + +//sub_8088680 +static void sub_8088680(void) +{ + s32 x; + x = 0xE4 - GetStringWidth(0, gUnknown_8419E57, 0); + FillWindowPixelBuffer(WIN_OPTIONS, 0xFF); + AddTextPrinterParameterized3(2, 0, x, 0, gUnknown_83CC360, 0, gUnknown_8419E57); + PutWindowTilemap(2); + CopyWindowToVram(2, 3); +} + + +//sub_80886D4 +static void sub_80886D4(void) +{ + ResetSpriteData(); + ResetPaletteFade(); + FreeAllSpritePalettes(); + ResetTasks(); + ScanlineEffect_Stop(); +} + +//sub_80886F0 +static bool8 sub_80886F0(void) +{ + switch (sOptionsMenu->state2) + { + case 0: + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->tiles, 0x120, 0x1AA); + break; + case 1: + LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->palette, 0x20, 0x20); + break; + case 2: + LoadPalette(gUnknown_83CC2E4, 0x10, 0x20); + LoadPalette(stdpal_get(2), 0xF0, 0x20); + break; + case 3: + sub_814FDA0(1, 0x1B3, 0x30); + break; + default: + return TRUE; + } + sOptionsMenu->state2++; + return FALSE; +} + + +//sub_8088780 +static void sub_8088780(u8 taskId) +{ + switch (sOptionsMenu->state3) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); + sub_8088444(); + sOptionsMenu->state3++; + break; + case 2: + if (sub_80BF72C) + return; + switch (sub_80888C0()) + { + case 0: + return; + case 1: + sOptionsMenu->state3++; + break; + case 2: + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->tiles, 0x120, 0x1AA); + LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->palette, 0x20, 0x20); + sub_80889A8(sOptionsMenu->unkE); + return; + case 3: + sub_8088DE0(sOptionsMenu->unkE); + return; + case 4: + sub_80889A8(sOptionsMenu->unkE); + return; + default: + return; + } + case 3: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + sOptionsMenu->state3++; + break; + case 1: + case 4: + if (gPaletteFade.active) + return; + sOptionsMenu->state3++; + return; + case 5: + sub_8088B00(taskId); + return; + default: + return; + } +} + + +//OptionsMenu_ProcessInput +static u8 sub_80888C0(void) +{ + u16 current, selection; + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + selection = 2 * sOptionsMenu->unkE; + current = sOptionsMenu->option[selection]; + + if (current == gUnknown_83CC304[selection] - 1) + sOptionsMenu->option[selection] = 0; + else + sOptionsMenu->option[selection] = current + 1; + if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE) + return 2; + else + return 4; + } + else if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + selection = 2*sOptionsMenu->unkE; + current = sOptionsMenu->option[selection]; + if (current == 0) + sOptionsMenu->option[selection] = gUnknown_83CC304[selection] - 1; + else + sOptionsMenu->option[selection] = current - 1; + if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE) + return 2; + else + return 4; + } + else if (gMain.newAndRepeatedKeys & DPAD_UP) + { + selection = sOptionsMenu->unkE; + if (selection == MENUITEM_TEXTSPEED) + sOptionsMenu->unkE = MENUITEM_CANCEL; + else + sOptionsMenu->unkE = selection - 1; + return 3; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + selection = sOptionsMenu->unkE; + if (selection == MENUITEM_CANCEL) + sOptionsMenu->unkE = MENUITEM_TEXTSPEED; + else + sOptionsMenu->unkE = selection + 1; + return 3; + } + else if ((gMain.newKeys & B_BUTTON) || (gMain.newKeys & A_BUTTON)) + { + return 1; + } + else + { + return 0; + } +} + +/* +// must match with goto :( +bool sub_80888C0() +{ + int v0; // r0@2 + _WORD *v1; // r3@2 + int v2; // r4@2 + __int16 v3; // r0@3 + int v4; // r3@8 + __int16 v5; // r0@8 + int v7; // r1@14 + signed __int16 v8; // r0@15 + int v9; // r0@18 + + if (gMain.buttons4_new_and_keyrepeat & DPAD_RIGHT) + { + v0 = 2 * *(_WORD *)(sOptionsMenu + 14); + v1 = (_WORD *)(sOptionsMenu + v0); + v2 = *(_WORD *)(sOptionsMenu + v0); + if ( v2 == *(_WORD *)((char *)&sOptionsMenuItemCounts + v0) - 1 ) + v3 = 0; + else + v3 = v2 + 1; + *v1 = v3; + if ( *(_WORD *)(sOptionsMenu + 14) != 5 ) + return 4; + return 2; + } + if ( gMain.buttons4_new_and_keyrepeat & DPAD_LEFT ) + { + v4 = 2 * *(_WORD *)(sOptionsMenu + 14); + v5 = *(_WORD *)(sOptionsMenu + v4); + if ( !*(_WORD *)(sOptionsMenu + v4) ) + v5 = *(_WORD *)((char *)&sOptionsMenuItemCounts + v4); + *(_WORD *)(sOptionsMenu + v4) = v5 - 1; + if ( *(_WORD *)(sOptionsMenu + 14) != 5 ) + return 4; + return 2; + } + if ( gMain.buttons4_new_and_keyrepeat & 0x40 ) + { + v7 = sOptionsMenu; + if ( *(_WORD *)(sOptionsMenu + 14) ) + v8 = *(_WORD *)(sOptionsMenu + 14) - 1; + else + v8 = 6; + goto LABEL_21; + } + if ( gMain.buttons4_new_and_keyrepeat & 0x80 ) + { + v7 = sOptionsMenu; + v9 = *(_WORD *)(sOptionsMenu + 14); + if ( v9 == 6 ) + { + *(_WORD *)(sOptionsMenu + 14) = 0; + return 3; + } + v8 = v9 + 1; +LABEL_21: + *(_WORD *)(v7 + 14) = v8; + return 3; + } + return gMain.buttons3_new_remapped & 2 || gMain.buttons3_new_remapped & 1; +} +*/ + + +//sub_80889A8 +static void sub_80889A8(u8 selection) +{ + u8* dst; + u8* str; + u8* v8; + u8 x, y; + + x = 0x82; + memcpy(dst, gUnknown_83CC363, 3); + y = ((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) - 1) * selection) + 2; + FillWindowPixelRect(1, 1, x, y, 0x46, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); + switch (selection) + { + case MENUITEM_TEXTSPEED: + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC330); + break; + case MENUITEM_BATTLESCENE: + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC33C); + break; + case MENUITEM_BATTLESTYLE: + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC344); + break; + case MENUITEM_SOUND: + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC34C); + break; + case MENUITEM_BUTTONMODE: + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC354); + break; + case MENUITEM_FRAMETYPE: + StringCopy(str, gUnknown_8419E52); + ConvertIntToDecimalStringN(v8, sOptionsMenu->option[2*selection] + 1, 1, 2); + StringAppendN(str, v8, 3); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, str); + break; + default: + break; + } + PutWindowTilemap(1); + CopyWindowToVram(1, 3); +} + + +//sub_8088B00 +static void sub_8088B00(u8 taskId) +{ + gFieldCallback = sub_807DF64; + SetMainCallback2(gMain.savedCallback); + FreeAllWindowBuffers(); + + gSaveBlock2Ptr->optionsTextSpeed = sOptionsMenu->option[MENUITEM_TEXTSPEED] & 0x7; + gSaveBlock2Ptr->optionsBattleSceneOff = sOptionsMenu->option[MENUITEM_BATTLESCENE] & 0x1; + gSaveBlock2Ptr->optionsBattleStyle = sOptionsMenu->option[MENUITEM_BATTLESTYLE] & 0x1; + gSaveBlock2Ptr->optionsSound = sOptionsMenu->option[MENUITEM_SOUND] & 0x1; + gSaveBlock2Ptr->optionsButtonMode = sOptionsMenu->option[MENUITEM_BUTTONMODE]; + gSaveBlock2Ptr->optionsWindowFrameType = sOptionsMenu->option[MENUITEM_FRAMETYPE]; + + SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); + Free(sOptionsMenu); + sOptionsMenu = NULL; + DestroyTask(taskId); +} + + +//sub_8088BD0 +static void sub_8088BD0(void) +{ + FillWindowPixelBuffer(0, 0x11); + AddTextPrinterParameterized(WIN_TEXT_OPTION, 2, gUnknown_8419DCC, 8, 1, TEXT_SPEED_FF, NULL); + PutWindowTilemap(0); + CopyWindowToVram(0, 3); +} + + +//sub_8088C0C +static void sub_8088C0C(void) +{ + FillBgTilemapBufferRect(1, 0x1B3, 1, 2, 1, 1, 3); + FillBgTilemapBufferRect(1, 0x1B4, 2, 2, 0x1B, 1, 3); + FillBgTilemapBufferRect(1, 0x1B5, 0x1C, 2, 1, 1, 3); + FillBgTilemapBufferRect(1, 0x1B6, 1, 3, 1, 2, 3); + FillBgTilemapBufferRect(1, 0x1B8, 1, 0x1C, 1, 2, 3); + FillBgTilemapBufferRect(1, 0x1B9, 1, 5, 1, 1, 3); + FillBgTilemapBufferRect(1, 0x1BA, 2, 5, 0x1B, 1, 3); + FillBgTilemapBufferRect(1, 0x1BB, 0x1C, 5, 1, 1, 3); + FillBgTilemapBufferRect(1, 0x1AA, 1, 6, 1, 1, 2); + FillBgTilemapBufferRect(1, 0x1AB, 2, 6, 0x1A, 1, 2); + FillBgTilemapBufferRect(1, 0x1AC, 0x1C, 6, 1, 1, 2); + FillBgTilemapBufferRect(1, 0x1AD, 1, 7, 1, 0x10, 2); + FillBgTilemapBufferRect(1, 0x1AF, 0x1C, 7, 1, 0x10, 2); + FillBgTilemapBufferRect(1, 0x1B0, 1, 0x13, 1, 1, 2); + FillBgTilemapBufferRect(1, 0x1B1, 2, 0x13, 0x1A, 1, 2); + FillBgTilemapBufferRect(1, 0x1B2, 0x1C, 0x13, 1, 1, 2); + CopyBgTilemapBufferToVram(1); +} + + +//sub_8088D8C +static void sub_8088D8C(void) +{ + int i; + u8 attr; + + FillWindowPixelBuffer(1, 0x11); + + for (i = 0; i < MENUITEM_COUNT; i++) + { + attr = (((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))*i) + 2) - i; + AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, attr, 0xFF, 0); + } +} + + +//sub_8088DE0 +static void sub_8088DE0(u8 selection) +{ + u8 attr; + attr = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT); + SetGpuReg(0x44, ((selection * (attr - 1) + 58) << 8) | (selection * (attr - 1) + 58 + attr)); + SetGpuReg(0x40, 4320); +} + diff --git a/sym_ewram.txt b/sym_ewram.txt index a892eb532..cec65b59c 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -226,7 +226,7 @@ gFieldEffectArguments: @ 20386E0 .include "src/scanline_effect.o" .align 2 -gUnknown_2039620: @ 2039620 +sOptionsMenu: @ 2039620 .space 0x4 gTrainerCards: @ 2039624 From fa759aca98c213294f9b654caba9702ecb391551 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 18 Nov 2019 09:26:03 -0500 Subject: [PATCH 06/49] Disassemble evolution_graphics --- data/evolution_graphics.s | 28 +++++++++++++++++---- graphics/misc/evolution_sprite_841EEA4.png | Bin 0 -> 167 bytes 2 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 graphics/misc/evolution_sprite_841EEA4.png diff --git a/data/evolution_graphics.s b/data/evolution_graphics.s index 08276557a..71b31c0cc 100644 --- a/data/evolution_graphics.s +++ b/data/evolution_graphics.s @@ -7,16 +7,34 @@ .align 2 gUnknown_841EE84:: @ 841EE84 - .incbin "baserom.gba", 0x41EE84, 0x40 + .incbin "graphics/misc/evolution_sprite_841EEA4.gbapal" + +gUnknown_841EEA4:: + .incbin "graphics/misc/evolution_sprite_841EEA4.4bpp.lz" gUnknown_841EEC4:: @ 841EEC4 - .incbin "baserom.gba", 0x41EEC4, 0x10 + obj_tiles gUnknown_841EEA4, 0x0020, 1001 + null_obj_tiles gUnknown_841EED4:: @ 841EED4 - .incbin "baserom.gba", 0x41EED4, 0x24 + obj_pal gUnknown_841EE84, 1001 + null_obj_pal + +gOamData_841EEE4:: + .4byte 0x000000a0, 0x00000400 + +gUnknown_841EEEC:: + obj_image_anim_frame 0x0000, 8 + obj_image_anim_end + +gUnknown_841EEF4:: + .4byte gUnknown_841EEEC gUnknown_841EEF8:: @ 841EEF8 - .incbin "baserom.gba", 0x41EEF8, 0x18 + spr_template 1001, 1001, gOamData_841EEE4, gUnknown_841EEF4, NULL, gDummySpriteAffineAnimTable, nullsub_85 gUnknown_841EF10:: @ 841EF10 - .incbin "baserom.gba", 0x41EF10, 0x2B8 + .2byte 0x03c0, 0x0380, 0x0340, 0x0300, 0x02c0, 0x0280, 0x0240, 0x0200, 0x01c0, 0x0180, 0x0140, 0x0100 + +gUnknown_841EF28:: @ 841EF28 + .incbin "baserom.gba", 0x41EF28, 0x2A0 diff --git a/graphics/misc/evolution_sprite_841EEA4.png b/graphics/misc/evolution_sprite_841EEA4.png new file mode 100644 index 0000000000000000000000000000000000000000..c942e5b4ffce444c91cc6ee268004dec02f3ce0a GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^93afX3?$7I7w-U41_3@Hu0R?qFboO`%F4=WZtk8l zXUUc=N6((U_w3pK|Nj?7xSj`UU@Qsp3ubV5b|VeQQT23j4B?oWoUr5jw8qBw|Npb| qd Date: Mon, 18 Nov 2019 09:42:02 -0500 Subject: [PATCH 07/49] Dump remainder of data/evolution_graphics.s --- baserom.ips | Bin 281368 -> 280527 bytes data/evolution_graphics.s | 12 +++++++++++- graphics/unknown/unk_841EF48.png | Bin 0 -> 230 bytes 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 graphics/unknown/unk_841EF48.png diff --git a/baserom.ips b/baserom.ips index ede2692ce0b93ec109e3c96bfdb2095f6298d391..b18fbddfe33bf70b0f6dda5920775b89f7a6ea42 100644 GIT binary patch delta 27 hcmbO+P4IlbU_%Sz7N&Cs?cyd(K+L>d+=PWu8~}`~2rmEt delta 814 zcmah`F>BjU5I*U75R}wPGjvD>L#J*cP{?SP66ny7wSmrEUGf8@!O$^7pcJ~K&?#99 z1s8&UfxC2la)vCS(Tj$TkuKjSS+d-v2j9E9_nq!Oz58{t`T5gkGV#9q^C%v9Q;1od;jHF<8Z)&ER`$O$5N;+O4YkOG~uIgE8LcEZWIjU#x!jv$XA)j z8HpZ`KvYF;EB?k@yVs-OFA`GsJI{hQZ~MW_BxY#D%>2Y3`r^;L#2b3z-D`-^k(7Ff zCS&nrEWR9ykqEuR)2~mq;vCI6paJ_bgWWl|uuF3`v(8@DY|T4ZOC$aXTjxs!U$7>{ z$A5r^r^isyxX)%Q)DcD1yhtT*fwV$uvx@})ZI!o(yEy-kP0;`-rp}f0F%H{BC5ECJ z1&9kI4Qe5+z#L@+DtMRUk842`i5I-k6do~iqB9F3%2=mq23VpXI7pWQ;Do?ceaB?& zy;>n8D&v}fjL**XagE$&!*flm)eWs>(kb{9)4b1wbj7mj{Pd&;_j4^=k#zU+u?gW?>+oFnGH9xvXYES literal 0 HcmV?d00001 From f697e85ef5e02bccae929bb63aa71a53b72f9d1c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 18 Nov 2019 10:34:40 -0500 Subject: [PATCH 08/49] Reassign unk gfx to new_menu_helpers and rename ewram vars --- data/evolution_graphics.s | 3 --- src/new_menu_helpers.c | 50 ++++++++++++++++++++------------------- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/data/evolution_graphics.s b/data/evolution_graphics.s index 716f8de57..cae5cb417 100644 --- a/data/evolution_graphics.s +++ b/data/evolution_graphics.s @@ -45,6 +45,3 @@ gUnknown_841EF28:: @ 841EF28 .2byte 2, 0x50 .2byte 3, 0x30 .2byte 4, 0x10 - -gUnknown_841EF48:: - .incbin "graphics/unknown/unk_841EF48.4bpp" diff --git a/src/new_menu_helpers.c b/src/new_menu_helpers.c index 84befe63e..f879e6810 100644 --- a/src/new_menu_helpers.c +++ b/src/new_menu_helpers.c @@ -21,11 +21,13 @@ #define STD_WINDOW_PALETTE_NUM 14 #define STD_WINDOW_BASE_TILE_NUM 0x214 -static EWRAM_DATA bool8 gUnknown_203AB58[4] = {FALSE}; // knizz: bgmaps_that_need_syncing -static EWRAM_DATA u16 gUnknown_203AB5C = {0}; -static EWRAM_DATA void *gUnknown_203AB60[0x20] = {NULL}; +static EWRAM_DATA bool8 sScheduledBgCopiesToVram[4] = {FALSE}; +static EWRAM_DATA u16 sTempTileDataBufferCursor = {0}; +static EWRAM_DATA void *sTempTileDataBuffers[0x20] = {NULL}; static EWRAM_DATA u8 sStartMenuWindowId = {0}; +static const u16 gUnknown_841EF48[] = INCBIN_U16("graphics/unknown/unk_841EF48.4bpp"); + const u16 gUnknown_841F1C8[] = INCBIN_U16("graphics/text_window/unk_841F1C8.4bpp"); const u16 gTMCaseMainWindowPalette[] = INCBIN_U16("graphics/tm_case/unk_841F408.gbapal"); @@ -169,35 +171,35 @@ static void TaskFreeBufAfterCopyingTileDataToVram(u8 taskId); void ClearScheduledBgCopiesToVram(void) { - memset(gUnknown_203AB58, 0, sizeof(gUnknown_203AB58)); + memset(sScheduledBgCopiesToVram, 0, sizeof(sScheduledBgCopiesToVram)); } void ScheduleBgCopyTilemapToVram(u8 bgId) { - gUnknown_203AB58[bgId] = TRUE; + sScheduledBgCopiesToVram[bgId] = TRUE; } void DoScheduledBgTilemapCopiesToVram(void) { - if (gUnknown_203AB58[0] == TRUE) + if (sScheduledBgCopiesToVram[0] == TRUE) { CopyBgTilemapBufferToVram(0); - gUnknown_203AB58[0] = FALSE; + sScheduledBgCopiesToVram[0] = FALSE; } - if (gUnknown_203AB58[1] == TRUE) + if (sScheduledBgCopiesToVram[1] == TRUE) { CopyBgTilemapBufferToVram(1); - gUnknown_203AB58[1] = FALSE; + sScheduledBgCopiesToVram[1] = FALSE; } - if (gUnknown_203AB58[2] == TRUE) + if (sScheduledBgCopiesToVram[2] == TRUE) { CopyBgTilemapBufferToVram(2); - gUnknown_203AB58[2] = FALSE; + sScheduledBgCopiesToVram[2] = FALSE; } - if (gUnknown_203AB58[3] == TRUE) + if (sScheduledBgCopiesToVram[3] == TRUE) { CopyBgTilemapBufferToVram(3); - gUnknown_203AB58[3] = FALSE; + sScheduledBgCopiesToVram[3] = FALSE; } } @@ -205,11 +207,11 @@ void ResetTempTileDataBuffers(void) { int i; - for (i = 0; i < (s32)NELEMS(gUnknown_203AB60); i++) + for (i = 0; i < (s32)NELEMS(sTempTileDataBuffers); i++) { - gUnknown_203AB60[i] = NULL; + sTempTileDataBuffers[i] = NULL; } - gUnknown_203AB5C = 0; + sTempTileDataBufferCursor = 0; } bool8 FreeTempTileDataBuffersIfPossible(void) @@ -218,13 +220,13 @@ bool8 FreeTempTileDataBuffersIfPossible(void) if (!IsDma3ManagerBusyWithBgCopy()) { - if (gUnknown_203AB5C) + if (sTempTileDataBufferCursor) { - for (i = 0; i < gUnknown_203AB5C; i++) + for (i = 0; i < sTempTileDataBufferCursor; i++) { - FREE_AND_SET_NULL(gUnknown_203AB60[i]); + FREE_AND_SET_NULL(sTempTileDataBuffers[i]); } - gUnknown_203AB5C = 0; + sTempTileDataBufferCursor = 0; } return FALSE; } @@ -238,7 +240,7 @@ void *DecompressAndCopyTileDataToVram(u8 bgId, const void *src, u32 size, u16 of { u32 sizeOut; - if (gUnknown_203AB5C < NELEMS(gUnknown_203AB60)) + if (sTempTileDataBufferCursor < NELEMS(sTempTileDataBuffers)) { void *ptr = MallocAndDecompress(src, &sizeOut); if (!size) @@ -246,7 +248,7 @@ void *DecompressAndCopyTileDataToVram(u8 bgId, const void *src, u32 size, u16 of if (ptr) { CopyDecompressedTileDataToVram(bgId, ptr, size, offset, mode); - gUnknown_203AB60[gUnknown_203AB5C++] = ptr; + sTempTileDataBuffers[sTempTileDataBufferCursor++] = ptr; } return ptr; } @@ -257,7 +259,7 @@ void *DecompressAndCopyTileDataToVram2(u8 bgId, const void *src, u32 size, u16 o { u32 sizeOut; - if (gUnknown_203AB5C < NELEMS(gUnknown_203AB60)) + if (sTempTileDataBufferCursor < NELEMS(sTempTileDataBuffers)) { void *ptr = MallocAndDecompress(src, &sizeOut); if (sizeOut > size) @@ -265,7 +267,7 @@ void *DecompressAndCopyTileDataToVram2(u8 bgId, const void *src, u32 size, u16 o if (ptr) { CopyDecompressedTileDataToVram(bgId, ptr, sizeOut, offset, mode); - gUnknown_203AB60[gUnknown_203AB5C++] = ptr; + sTempTileDataBuffers[sTempTileDataBufferCursor++] = ptr; } return ptr; } From bef38578aafdc99e34b4683c53a021c46793f24b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 18 Nov 2019 11:57:56 -0500 Subject: [PATCH 09/49] Move nullsub_85 to its rightful place --- asm/clear_save_data_screen.s | 5 ----- asm/evolution_graphics.s | 5 +++++ 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/asm/clear_save_data_screen.s b/asm/clear_save_data_screen.s index 5d9d2ac03..367f12814 100644 --- a/asm/clear_save_data_screen.s +++ b/asm/clear_save_data_screen.s @@ -466,9 +466,4 @@ _080F5944: .4byte gUnknown_841EE64 _080F5948: .4byte gUnknown_841EE68 thumb_func_end sub_80F5820 - thumb_func_start nullsub_85 -nullsub_85: @ 80F594C - bx lr - thumb_func_end nullsub_85 - .align 2, 0 @ Don't pad with nop. diff --git a/asm/evolution_graphics.s b/asm/evolution_graphics.s index 64edbdf7a..a3c0f364c 100644 --- a/asm/evolution_graphics.s +++ b/asm/evolution_graphics.s @@ -5,6 +5,11 @@ .text + thumb_func_start nullsub_85 +nullsub_85: @ 80F594C + bx lr + thumb_func_end nullsub_85 + thumb_func_start SetEvoSparklesMatrices SetEvoSparklesMatrices: @ 80F5950 push {r4,r5,lr} From b2070e0681d3bdc89d07d068cdd356aa2fff2e89 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 18 Nov 2019 15:16:08 -0500 Subject: [PATCH 10/49] Decompile evolution_graphics.c --- asm/evolution_graphics.s | 1830 ------------------------------------- data/evolution_graphics.s | 47 - include/evolution_scene.h | 1 + ld_script.txt | 4 +- src/evolution_graphics.c | 624 +++++++++++++ 5 files changed, 627 insertions(+), 1879 deletions(-) delete mode 100644 asm/evolution_graphics.s delete mode 100644 data/evolution_graphics.s create mode 100644 src/evolution_graphics.c diff --git a/asm/evolution_graphics.s b/asm/evolution_graphics.s deleted file mode 100644 index a3c0f364c..000000000 --- a/asm/evolution_graphics.s +++ /dev/null @@ -1,1830 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start nullsub_85 -nullsub_85: @ 80F594C - bx lr - thumb_func_end nullsub_85 - - thumb_func_start SetEvoSparklesMatrices -SetEvoSparklesMatrices: @ 80F5950 - push {r4,r5,lr} - sub sp, 0x4 - movs r4, 0 - ldr r5, _080F5984 @ =gUnknown_841EF10 -_080F5958: - adds r0, r4, 0 - adds r0, 0x14 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r4, 1 - adds r1, r5 - ldrh r1, [r1] - str r1, [sp] - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0xB - bls _080F5958 - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F5984: .4byte gUnknown_841EF10 - thumb_func_end SetEvoSparklesMatrices - - thumb_func_start SpriteCB_PreEvoSparkleSet1 -SpriteCB_PreEvoSparkleSet1: @ 80F5988 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x22 - ldrsh r0, [r4, r1] - cmp r0, 0x8 - ble _080F5A36 - movs r2, 0x3C - ldrsh r0, [r4, r2] - adds r1, r0, 0 - muls r1, r0 - adds r0, r1, 0 - movs r1, 0x50 - bl __divsi3 - movs r1, 0x58 - subs r1, r0 - strh r1, [r4, 0x22] - ldrh r0, [r4, 0x3A] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080F59C2 - adds r0, 0x3 -_080F59C2: - asrs r0, 2 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3A] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x3A] - adds r0, 0x4 - strh r0, [r4, 0x3A] - ldrh r1, [r4, 0x3C] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F59EC - ldrh r0, [r4, 0x38] - subs r0, 0x1 - strh r0, [r4, 0x38] -_080F59EC: - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] - movs r1, 0x26 - ldrsh r0, [r4, r1] - cmp r0, 0 - ble _080F5A02 - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1 - b _080F5A08 -_080F5A02: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x14 -_080F5A08: - strb r0, [r1] - movs r2, 0x38 - ldrsh r0, [r4, r2] - cmp r0, 0 - bge _080F5A14 - adds r0, 0x3 -_080F5A14: - asrs r0, 2 - adds r0, 0x14 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x1F - bls _080F5A22 - movs r2, 0x1F -_080F5A22: - movs r0, 0x1F - ands r2, r0 - lsls r2, 1 - ldrb r1, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x3] - b _080F5A3C -_080F5A36: - adds r0, r4, 0 - bl DestroySprite -_080F5A3C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end SpriteCB_PreEvoSparkleSet1 - - thumb_func_start CreatePreEvoSparkleSet1 -CreatePreEvoSparkleSet1: @ 80F5A44 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080F5A94 @ =gUnknown_841EEF8 - movs r1, 0x78 - movs r2, 0x58 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _080F5A8E - ldr r4, _080F5A98 @ =gSprites - lsls r3, r0, 4 - adds r3, r0 - lsls r3, 2 - adds r2, r3, r4 - movs r1, 0 - movs r0, 0x30 - strh r0, [r2, 0x38] - strh r5, [r2, 0x3A] - strh r1, [r2, 0x3C] - ldrb r1, [r2, 0x1] - subs r0, 0x34 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x1] - ldrb r0, [r2, 0x3] - movs r1, 0x3E - orrs r0, r1 - strb r0, [r2, 0x3] - adds r4, 0x1C - adds r3, r4 - ldr r0, _080F5A9C @ =SpriteCB_PreEvoSparkleSet1 - str r0, [r3] -_080F5A8E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F5A94: .4byte gUnknown_841EEF8 -_080F5A98: .4byte gSprites -_080F5A9C: .4byte SpriteCB_PreEvoSparkleSet1 - thumb_func_end CreatePreEvoSparkleSet1 - - thumb_func_start SpriteCB_PreEvoSparkleSet2 -SpriteCB_PreEvoSparkleSet2: @ 80F5AA0 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x22 - ldrsh r0, [r4, r1] - cmp r0, 0x57 - bgt _080F5B06 - movs r2, 0x3C - ldrsh r0, [r4, r2] - adds r1, r0, 0 - muls r1, r0 - adds r0, r1, 0 - movs r1, 0x5 - bl __divsi3 - adds r0, 0x8 - strh r0, [r4, 0x22] - ldrh r0, [r4, 0x3A] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080F5AD8 - adds r0, 0x3 -_080F5AD8: - asrs r0, 2 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3A] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x3C - ldrsh r0, [r4, r1] - lsls r0, 26 - lsrs r0, 24 - movs r1, 0x28 - bl Sin - adds r0, 0x8 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] - b _080F5B0C -_080F5B06: - adds r0, r4, 0 - bl DestroySprite -_080F5B0C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end SpriteCB_PreEvoSparkleSet2 - - thumb_func_start CreatePreEvoSparkleSet2 -CreatePreEvoSparkleSet2: @ 80F5B14 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080F5B70 @ =gUnknown_841EEF8 - movs r1, 0x78 - movs r2, 0x8 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _080F5B6A - ldr r4, _080F5B74 @ =gSprites - lsls r3, r0, 4 - adds r3, r0 - lsls r3, 2 - adds r2, r3, r4 - movs r1, 0 - movs r0, 0x8 - strh r0, [r2, 0x38] - strh r5, [r2, 0x3A] - strh r1, [r2, 0x3C] - ldrb r1, [r2, 0x1] - subs r0, 0xC - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x1] - ldrb r1, [r2, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x32 - orrs r0, r1 - strb r0, [r2, 0x3] - adds r2, 0x43 - movs r0, 0x1 - strb r0, [r2] - adds r4, 0x1C - adds r3, r4 - ldr r0, _080F5B78 @ =SpriteCB_PreEvoSparkleSet2 - str r0, [r3] -_080F5B6A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F5B70: .4byte gUnknown_841EEF8 -_080F5B74: .4byte gSprites -_080F5B78: .4byte SpriteCB_PreEvoSparkleSet2 - thumb_func_end CreatePreEvoSparkleSet2 - - thumb_func_start SpriteCB_PostEvoSparkleSet1 -SpriteCB_PostEvoSparkleSet1: @ 80F5B7C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x8 - ble _080F5BB8 - ldrh r0, [r4, 0x3A] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3A] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x38] - ldrh r1, [r4, 0x34] - subs r0, r1 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x3A] - adds r0, 0x4 - strh r0, [r4, 0x3A] - b _080F5BBE -_080F5BB8: - adds r0, r4, 0 - bl DestroySprite -_080F5BBE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end SpriteCB_PostEvoSparkleSet1 - - thumb_func_start CreatePostEvoSparkleSet1 -CreatePostEvoSparkleSet1: @ 80F5BC4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r0, _080F5C20 @ =gUnknown_841EEF8 - movs r1, 0x78 - movs r2, 0x38 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _080F5C1A - ldr r4, _080F5C24 @ =gSprites - lsls r3, r0, 4 - adds r3, r0 - lsls r3, 2 - adds r2, r3, r4 - movs r1, 0 - strh r5, [r2, 0x34] - movs r0, 0x78 - strh r0, [r2, 0x38] - strh r6, [r2, 0x3A] - strh r1, [r2, 0x3C] - ldrb r1, [r2, 0x1] - subs r0, 0x7C - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x1] - ldrb r0, [r2, 0x3] - movs r1, 0x3E - orrs r0, r1 - strb r0, [r2, 0x3] - adds r2, 0x43 - movs r0, 0x1 - strb r0, [r2] - adds r4, 0x1C - adds r3, r4 - ldr r0, _080F5C28 @ =SpriteCB_PostEvoSparkleSet1 - str r0, [r3] -_080F5C1A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F5C20: .4byte gUnknown_841EEF8 -_080F5C24: .4byte gSprites -_080F5C28: .4byte SpriteCB_PostEvoSparkleSet1 - thumb_func_end CreatePostEvoSparkleSet1 - - thumb_func_start SpriteCB_PostEvoSparkleSet2 -SpriteCB_PostEvoSparkleSet2: @ 80F5C2C - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x3C] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - bne _080F5C40 - ldrh r0, [r4, 0x22] - adds r0, 0x1 - strh r0, [r4, 0x22] -_080F5C40: - ldrh r1, [r4, 0x3A] - movs r2, 0x3A - ldrsh r0, [r4, r2] - cmp r0, 0x7F - bgt _080F5CF0 - lsls r0, r1, 24 - lsrs r0, 24 - movs r5, 0x38 - ldrsh r1, [r4, r5] - bl Sin - negs r0, r0 - strh r0, [r4, 0x26] - movs r0, 0x34 - ldrsh r1, [r4, r0] - movs r2, 0x3C - ldrsh r0, [r4, r2] - muls r0, r1 - movs r1, 0x3 - bl __divsi3 - adds r0, 0x78 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x3A] - adds r3, r0, 0x1 - strh r3, [r4, 0x3A] - movs r5, 0x3A - ldrsh r1, [r4, r5] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - cmp r0, 0 - bge _080F5C84 - adds r0, 0x7F -_080F5C84: - asrs r0, 7 - movs r1, 0x1F - subs r1, r0 - lsls r1, 24 - lsrs r2, r1, 24 - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, 0x40 - ble _080F5CA0 - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1 - strb r0, [r1] - b _080F5CD0 -_080F5CA0: - adds r3, r4, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x14 - strb r0, [r1] - ldrh r1, [r4, 0x3A] - movs r5, 0x3A - ldrsh r0, [r4, r5] - cmp r0, 0x70 - ble _080F5CD0 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F5CD0 - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r3] -_080F5CD0: - cmp r2, 0x13 - bhi _080F5CD6 - movs r2, 0x14 -_080F5CD6: - movs r0, 0x1F - ands r2, r0 - lsls r2, 1 - ldrb r1, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x3] - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] - b _080F5CF6 -_080F5CF0: - adds r0, r4, 0 - bl DestroySprite -_080F5CF6: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end SpriteCB_PostEvoSparkleSet2 - - thumb_func_start CreatePostEvoSparkleSet2 -CreatePostEvoSparkleSet2: @ 80F5CFC - push {r4-r6,lr} - mov r6, r8 - push {r6} - ldr r0, _080F5D78 @ =gUnknown_841EEF8 - movs r1, 0x78 - movs r2, 0x38 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x40 - beq _080F5D6C - bl Random - ldr r6, _080F5D7C @ =gSprites - lsls r5, r4, 4 - adds r5, r4 - lsls r5, 2 - adds r4, r5, r6 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x7 - bl __umodsi3 - movs r1, 0x3 - subs r1, r0 - movs r0, 0 - mov r8, r0 - strh r1, [r4, 0x34] - bl Random - movs r1, 0x3F - ands r1, r0 - adds r1, 0x30 - strh r1, [r4, 0x38] - mov r0, r8 - strh r0, [r4, 0x3C] - ldrb r1, [r4, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x3] - movs r1, 0x3E - orrs r0, r1 - strb r0, [r4, 0x3] - adds r4, 0x43 - movs r0, 0x14 - strb r0, [r4] - adds r6, 0x1C - adds r5, r6 - ldr r0, _080F5D80 @ =SpriteCB_PostEvoSparkleSet2 - str r0, [r5] -_080F5D6C: - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F5D78: .4byte gUnknown_841EEF8 -_080F5D7C: .4byte gSprites -_080F5D80: .4byte SpriteCB_PostEvoSparkleSet2 - thumb_func_end CreatePostEvoSparkleSet2 - - thumb_func_start LoadEvoSparkleSpriteAndPal -LoadEvoSparkleSpriteAndPal: @ 80F5D84 - push {lr} - ldr r0, _080F5D98 @ =gUnknown_841EEC4 - bl LoadCompressedSpriteSheetUsingHeap - ldr r0, _080F5D9C @ =gUnknown_841EED4 - bl LoadSpritePalettes - pop {r0} - bx r0 - .align 2, 0 -_080F5D98: .4byte gUnknown_841EEC4 -_080F5D9C: .4byte gUnknown_841EED4 - thumb_func_end LoadEvoSparkleSpriteAndPal - - thumb_func_start LaunchTask_PreEvoSparklesSet1 -LaunchTask_PreEvoSparklesSet1: @ 80F5DA0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, _080F5DC8 @ =sub_80F5DD0 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080F5DCC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xA] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F5DC8: .4byte sub_80F5DD0 -_080F5DCC: .4byte gTasks - thumb_func_end LaunchTask_PreEvoSparklesSet1 - - thumb_func_start sub_80F5DD0 -sub_80F5DD0: @ 80F5DD0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl SetEvoSparklesMatrices - ldr r0, _080F5E14 @ =gTasks - lsls r5, r4, 2 - adds r5, r4 - lsls r5, 3 - adds r5, r0 - movs r0, 0 - strh r0, [r5, 0x26] - movs r0, 0xA - ldrsh r1, [r5, r0] - movs r0, 0x3 - lsls r0, r1 - ldr r1, _080F5E18 @ =0x00007fff - str r1, [sp] - movs r1, 0xA - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _080F5E1C @ =EvoTask_CreatePreEvoSparkleSet1 - str r0, [r5] - movs r0, 0x85 - bl PlaySE - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F5E14: .4byte gTasks -_080F5E18: .4byte 0x00007fff -_080F5E1C: .4byte EvoTask_CreatePreEvoSparkleSet1 - thumb_func_end sub_80F5DD0 - - thumb_func_start EvoTask_CreatePreEvoSparkleSet1 -EvoTask_CreatePreEvoSparkleSet1: @ 80F5E20 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080F5E78 @ =gTasks - lsls r3, r5, 2 - adds r0, r3, r5 - lsls r0, 3 - adds r1, r0, r1 - ldrh r2, [r1, 0x26] - movs r4, 0x26 - ldrsh r0, [r1, r4] - cmp r0, 0x3F - bgt _080F5E7C - movs r0, 0x7 - ands r0, r2 - adds r7, r3, 0 - cmp r0, 0 - bne _080F5E66 - movs r4, 0 - adds r6, r1, 0 -_080F5E48: - ldrh r1, [r6, 0x26] - movs r0, 0x78 - ands r0, r1 - lsls r0, 1 - lsls r1, r4, 6 - adds r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl CreatePreEvoSparkleSet1 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080F5E48 -_080F5E66: - ldr r0, _080F5E78 @ =gTasks - adds r1, r7, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _080F5E84 - .align 2, 0 -_080F5E78: .4byte gTasks -_080F5E7C: - movs r0, 0x60 - strh r0, [r1, 0x26] - ldr r0, _080F5E8C @ =EvoTask_WaitForPre1SparklesToGoUp - str r0, [r1] -_080F5E84: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F5E8C: .4byte EvoTask_WaitForPre1SparklesToGoUp - thumb_func_end EvoTask_CreatePreEvoSparkleSet1 - - thumb_func_start EvoTask_WaitForPre1SparklesToGoUp -EvoTask_WaitForPre1SparklesToGoUp: @ 80F5E90 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080F5EB0 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0, r1 - ldrh r3, [r1, 0x26] - movs r4, 0x26 - ldrsh r0, [r1, r4] - cmp r0, 0 - beq _080F5EB4 - subs r0, r3, 0x1 - strh r0, [r1, 0x26] - b _080F5EBA - .align 2, 0 -_080F5EB0: .4byte gTasks -_080F5EB4: - adds r0, r2, 0 - bl DestroyTask -_080F5EBA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end EvoTask_WaitForPre1SparklesToGoUp - - thumb_func_start sub_80F5EC0 -sub_80F5EC0: @ 80F5EC0 - push {lr} - ldr r0, _080F5ED4 @ =sub_80F5ED8 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_080F5ED4: .4byte sub_80F5ED8 - thumb_func_end sub_80F5EC0 - - thumb_func_start sub_80F5ED8 -sub_80F5ED8: @ 80F5ED8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl SetEvoSparklesMatrices - ldr r1, _080F5F04 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x26] - ldr r1, _080F5F08 @ =EvoTask_CreatePreEvoSparklesSet2 - str r1, [r0] - movs r0, 0xB0 - bl PlaySE - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F5F04: .4byte gTasks -_080F5F08: .4byte EvoTask_CreatePreEvoSparklesSet2 - thumb_func_end sub_80F5ED8 - - thumb_func_start EvoTask_CreatePreEvoSparklesSet2 -EvoTask_CreatePreEvoSparklesSet2: @ 80F5F0C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080F5F50 @ =gTasks - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 3 - adds r1, r0, r1 - movs r3, 0x26 - ldrsh r0, [r1, r3] - cmp r0, 0x5F - bgt _080F5F54 - adds r6, r2, 0 - cmp r0, 0x5 - bgt _080F5F3E - movs r4, 0 -_080F5F2C: - lsls r0, r4, 28 - lsrs r0, 24 - bl CreatePreEvoSparkleSet2 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x8 - bls _080F5F2C -_080F5F3E: - ldr r0, _080F5F50 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _080F5F58 - .align 2, 0 -_080F5F50: .4byte gTasks -_080F5F54: - ldr r0, _080F5F60 @ =sub_80F5F64 - str r0, [r1] -_080F5F58: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F5F60: .4byte sub_80F5F64 - thumb_func_end EvoTask_CreatePreEvoSparklesSet2 - - thumb_func_start sub_80F5F64 -sub_80F5F64: @ 80F5F64 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - pop {r0} - bx r0 - thumb_func_end sub_80F5F64 - - thumb_func_start sub_80F5F74 -sub_80F5F74: @ 80F5F74 - push {lr} - ldr r0, _080F5F88 @ =sub_80F5F8C - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_080F5F88: .4byte sub_80F5F8C - thumb_func_end sub_80F5F74 - - thumb_func_start sub_80F5F8C -sub_80F5F8C: @ 80F5F8C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl SetEvoSparklesMatrices - ldr r1, _080F5FB8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x26] - ldr r1, _080F5FBC @ =EvoTask_CreatePostEvoSparklesSet1 - str r1, [r0] - movs r0, 0x5F - bl PlaySE - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F5FB8: .4byte gTasks -_080F5FBC: .4byte EvoTask_CreatePostEvoSparklesSet1 - thumb_func_end sub_80F5F8C - - thumb_func_start EvoTask_CreatePostEvoSparklesSet1 -EvoTask_CreatePostEvoSparklesSet1: @ 80F5FC0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080F602C @ =gTasks - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 3 - adds r1, r0, r1 - movs r3, 0x26 - ldrsh r0, [r1, r3] - cmp r0, 0x2F - bgt _080F6030 - adds r6, r2, 0 - cmp r0, 0 - bne _080F5FF4 - movs r4, 0 -_080F5FE0: - lsls r0, r4, 28 - lsrs r0, 24 - movs r1, 0x4 - bl CreatePostEvoSparkleSet1 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _080F5FE0 -_080F5FF4: - ldr r0, _080F602C @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - movs r2, 0x26 - ldrsh r0, [r1, r2] - cmp r0, 0x20 - bne _080F601A - movs r4, 0 -_080F6006: - lsls r0, r4, 28 - lsrs r0, 24 - movs r1, 0x8 - bl CreatePostEvoSparkleSet1 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _080F6006 -_080F601A: - ldr r0, _080F602C @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _080F6034 - .align 2, 0 -_080F602C: .4byte gTasks -_080F6030: - ldr r0, _080F603C @ =sub_80F6040 - str r0, [r1] -_080F6034: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F603C: .4byte sub_80F6040 - thumb_func_end EvoTask_CreatePostEvoSparklesSet1 - - thumb_func_start sub_80F6040 -sub_80F6040: @ 80F6040 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - pop {r0} - bx r0 - thumb_func_end sub_80F6040 - - thumb_func_start LaunchTask_PostEvoSparklesSet2AndFlash -LaunchTask_PostEvoSparklesSet2AndFlash: @ 80F6050 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, _080F6078 @ =sub_80F6080 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080F607C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xC] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F6078: .4byte sub_80F6080 -_080F607C: .4byte gTasks - thumb_func_end LaunchTask_PostEvoSparklesSet2AndFlash - - thumb_func_start sub_80F6080 -sub_80F6080: @ 80F6080 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl SetEvoSparklesMatrices - ldr r0, _080F60CC @ =gTasks - lsls r5, r4, 2 - adds r5, r4 - lsls r5, 3 - adds r5, r0 - movs r0, 0 - strh r0, [r5, 0x26] - bl sub_80D0474 - ldr r0, _080F60D0 @ =gPlttBufferFaded + 0x40 - ldr r1, _080F60D4 @ =gPlttBufferUnfaded + 0x40 - movs r2, 0x30 - bl CpuSet - ldr r0, _080F60D8 @ =0xfff90f1c - ldr r1, _080F60DC @ =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _080F60E0 @ =sub_80F60E4 - str r0, [r5] - movs r0, 0xC3 - bl PlaySE - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F60CC: .4byte gTasks -_080F60D0: .4byte gPlttBufferFaded + 0x40 -_080F60D4: .4byte gPlttBufferUnfaded + 0x40 -_080F60D8: .4byte 0xfff90f1c -_080F60DC: .4byte 0x00007fff -_080F60E0: .4byte sub_80F60E4 - thumb_func_end sub_80F6080 - - thumb_func_start sub_80F60E4 -sub_80F60E4: @ 80F60E4 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080F611C @ =gTasks - lsls r5, r6, 2 - adds r0, r5, r6 - lsls r0, 3 - adds r1, r0, r1 - movs r0, 0x26 - ldrsh r2, [r1, r0] - cmp r2, 0x7F - bgt _080F6160 - adds r0, r2, 0 - cmp r0, 0 - beq _080F6120 - cmp r0, 0x20 - beq _080F6134 - cmp r2, 0x31 - bgt _080F6144 - bl Random - movs r1, 0x7 - ands r0, r1 - bl CreatePostEvoSparkleSet2 - b _080F6144 - .align 2, 0 -_080F611C: .4byte gTasks -_080F6120: - movs r4, 0 -_080F6122: - adds r0, r4, 0 - bl CreatePostEvoSparkleSet2 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _080F6122 - b _080F6144 -_080F6134: - ldr r0, _080F6154 @ =0xffff0f1c - ldr r1, _080F6158 @ =0x00007fff - str r1, [sp] - movs r1, 0x10 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_080F6144: - ldr r0, _080F615C @ =gTasks - adds r1, r5, r6 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _080F6164 - .align 2, 0 -_080F6154: .4byte 0xffff0f1c -_080F6158: .4byte 0x00007fff -_080F615C: .4byte gTasks -_080F6160: - ldr r0, _080F616C @ =sub_80F6170 - str r0, [r1] -_080F6164: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F616C: .4byte sub_80F6170 - thumb_func_end sub_80F60E4 - - thumb_func_start sub_80F6170 -sub_80F6170: @ 80F6170 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080F618C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080F6188 - adds r0, r2, 0 - bl DestroyTask -_080F6188: - pop {r0} - bx r0 - .align 2, 0 -_080F618C: .4byte gPaletteFade - thumb_func_end sub_80F6170 - - thumb_func_start sub_80F6190 -sub_80F6190: @ 80F6190 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, _080F61B8 @ =sub_80F61C0 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080F61BC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xC] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F61B8: .4byte sub_80F61C0 -_080F61BC: .4byte gTasks - thumb_func_end sub_80F6190 - - thumb_func_start sub_80F61C0 -sub_80F61C0: @ 80F61C0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl SetEvoSparklesMatrices - ldr r0, _080F620C @ =gTasks - lsls r5, r4, 2 - adds r5, r4 - lsls r5, 3 - adds r5, r0 - movs r0, 0 - strh r0, [r5, 0x26] - bl sub_80D0474 - ldr r0, _080F6210 @ =gPlttBufferFaded + 0x40 - ldr r1, _080F6214 @ =gPlttBufferUnfaded + 0x40 - movs r2, 0x30 - bl CpuSet - ldr r0, _080F6218 @ =0xfff90f00 - ldr r1, _080F621C @ =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _080F6220 @ =sub_80F6224 - str r0, [r5] - movs r0, 0xC3 - bl PlaySE - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F620C: .4byte gTasks -_080F6210: .4byte gPlttBufferFaded + 0x40 -_080F6214: .4byte gPlttBufferUnfaded + 0x40 -_080F6218: .4byte 0xfff90f00 -_080F621C: .4byte 0x00007fff -_080F6220: .4byte sub_80F6224 - thumb_func_end sub_80F61C0 - - thumb_func_start sub_80F6224 -sub_80F6224: @ 80F6224 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080F625C @ =gTasks - lsls r5, r6, 2 - adds r0, r5, r6 - lsls r0, 3 - adds r1, r0, r1 - movs r0, 0x26 - ldrsh r2, [r1, r0] - cmp r2, 0x7F - bgt _080F62A0 - adds r0, r2, 0 - cmp r0, 0 - beq _080F6260 - cmp r0, 0x20 - beq _080F6274 - cmp r2, 0x31 - bgt _080F6284 - bl Random - movs r1, 0x7 - ands r0, r1 - bl CreatePostEvoSparkleSet2 - b _080F6284 - .align 2, 0 -_080F625C: .4byte gTasks -_080F6260: - movs r4, 0 -_080F6262: - adds r0, r4, 0 - bl CreatePostEvoSparkleSet2 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _080F6262 - b _080F6284 -_080F6274: - ldr r0, _080F6294 @ =0xffff0f00 - ldr r1, _080F6298 @ =0x00007fff - str r1, [sp] - movs r1, 0x10 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_080F6284: - ldr r0, _080F629C @ =gTasks - adds r1, r5, r6 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _080F62A4 - .align 2, 0 -_080F6294: .4byte 0xffff0f00 -_080F6298: .4byte 0x00007fff -_080F629C: .4byte gTasks -_080F62A0: - ldr r0, _080F62AC @ =sub_80F6170 - str r0, [r1] -_080F62A4: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F62AC: .4byte sub_80F6170 - thumb_func_end sub_80F6224 - - thumb_func_start nullsub_86 -nullsub_86: @ 80F62B0 - bx lr - thumb_func_end nullsub_86 - - thumb_func_start sub_80F62B4 -sub_80F62B4: @ 80F62B4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - movs r1, 0 - ldr r3, _080F63E8 @ =sub_80F6400 - ldr r2, _080F63EC @ =0x00007fff -_080F62CE: - lsls r0, r1, 1 - add r0, sp - adds r0, 0x4 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0xF - bls _080F62CE - adds r0, r3, 0 - movs r1, 0 - bl CreateTask - mov r8, r0 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _080F63F0 @ =gTasks - mov r1, r8 - lsls r6, r1, 2 - add r6, r8 - lsls r6, 3 - adds r6, r0 - strh r5, [r6, 0xA] - strh r7, [r6, 0xC] - movs r1, 0x80 - lsls r1, 1 - strh r1, [r6, 0xE] - movs r0, 0x10 - strh r0, [r6, 0x10] - movs r4, 0x80 - lsls r4, 9 - str r1, [sp] - movs r0, 0x1E - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - movs r0, 0x10 - ldrsh r1, [r6, r0] - adds r0, r4, 0 - bl __divsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - movs r0, 0x1F - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - ldr r1, _080F63F4 @ =gSprites - mov r9, r1 - lsls r2, r5, 4 - adds r2, r5 - lsls r2, 2 - mov r3, r9 - adds r3, 0x1C - adds r0, r2, r3 - ldr r1, _080F63F8 @ =nullsub_86 - str r1, [r0] - add r2, r9 - ldrb r1, [r2, 0x1] - movs r4, 0x4 - negs r4, r4 - adds r0, r4, 0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x1] - ldrb r1, [r2, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x3C - orrs r0, r1 - strb r0, [r2, 0x3] - movs r0, 0x3E - adds r0, r2 - mov r10, r0 - ldrb r1, [r0] - movs r5, 0x5 - negs r5, r5 - adds r0, r5, 0 - ands r0, r1 - mov r1, r10 - strb r0, [r1] - ldrb r1, [r2, 0x5] - lsrs r1, 4 - lsls r1, 5 - ldr r0, _080F63FC @ =gPlttBufferFaded + 0x200 - mov r10, r0 - add r1, r10 - add r0, sp, 0x4 - movs r2, 0x10 - str r3, [sp, 0x24] - bl CpuSet - lsls r1, r7, 4 - adds r1, r7 - lsls r1, 2 - ldr r3, [sp, 0x24] - adds r3, r1, r3 - ldr r0, _080F63F8 @ =nullsub_86 - str r0, [r3] - add r1, r9 - ldrb r0, [r1, 0x1] - ands r4, r0 - movs r0, 0x1 - orrs r4, r0 - strb r4, [r1, 0x1] - ldrb r0, [r1, 0x3] - movs r2, 0x3E - orrs r0, r2 - strb r0, [r1, 0x3] - adds r2, r1, 0 - adds r2, 0x3E - ldrb r0, [r2] - ands r5, r0 - strb r5, [r2] - ldrb r1, [r1, 0x5] - lsrs r1, 4 - lsls r1, 5 - add r1, r10 - add r0, sp, 0x4 - movs r2, 0x10 - bl CpuSet - movs r1, 0 - strh r1, [r6, 0x18] - mov r0, r8 - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080F63E8: .4byte sub_80F6400 -_080F63EC: .4byte 0x00007fff -_080F63F0: .4byte gTasks -_080F63F4: .4byte gSprites -_080F63F8: .4byte nullsub_86 -_080F63FC: .4byte gPlttBufferFaded + 0x200 - thumb_func_end sub_80F62B4 - - thumb_func_start sub_80F6400 -sub_80F6400: @ 80F6400 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080F641C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0x12] - movs r0, 0x8 - strh r0, [r1, 0x14] - ldr r0, _080F6420 @ =sub_80F6424 - str r0, [r1] - bx lr - .align 2, 0 -_080F641C: .4byte gTasks -_080F6420: .4byte sub_80F6424 - thumb_func_end sub_80F6400 - - thumb_func_start sub_80F6424 -sub_80F6424: @ 80F6424 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _080F6444 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r2, r0, r1 - movs r1, 0x18 - ldrsh r0, [r2, r1] - cmp r0, 0 - beq _080F6448 - adds r0, r3, 0 - bl PreEvoVisible_PostEvoInvisible_KillTask - b _080F646A - .align 2, 0 -_080F6444: .4byte gTasks -_080F6448: - ldrh r1, [r2, 0x14] - movs r4, 0x14 - ldrsh r0, [r2, r4] - cmp r0, 0x80 - bne _080F645A - adds r0, r3, 0 - bl PreEvoInvisible_PostEvoVisible_KillTask - b _080F646A -_080F645A: - adds r0, r1, 0x2 - strh r0, [r2, 0x14] - ldrh r0, [r2, 0x12] - movs r1, 0x1 - eors r0, r1 - strh r0, [r2, 0x12] - ldr r0, _080F6470 @ =sub_80F6474 - str r0, [r2] -_080F646A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F6470: .4byte sub_80F6474 - thumb_func_end sub_80F6424 - - thumb_func_start sub_80F6474 -sub_80F6474: @ 80F6474 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080F6498 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r1 - movs r3, 0x18 - ldrsh r0, [r2, r3] - adds r5, r1, 0 - cmp r0, 0 - beq _080F64A0 - ldr r0, _080F649C @ =PreEvoVisible_PostEvoInvisible_KillTask - str r0, [r2] - b _080F6584 - .align 2, 0 -_080F6498: .4byte gTasks -_080F649C: .4byte PreEvoVisible_PostEvoInvisible_KillTask -_080F64A0: - movs r6, 0 - movs r7, 0x12 - ldrsh r0, [r2, r7] - cmp r0, 0 - bne _080F64F0 - movs r0, 0xE - ldrsh r1, [r2, r0] - movs r3, 0x14 - ldrsh r0, [r2, r3] - movs r3, 0x80 - lsls r3, 1 - subs r0, r3, r0 - cmp r1, r0 - bge _080F64C6 - ldrh r0, [r2, 0x14] - ldrh r7, [r2, 0xE] - adds r0, r7 - strh r0, [r2, 0xE] - b _080F64CA -_080F64C6: - strh r3, [r2, 0xE] - movs r6, 0x1 -_080F64CA: - lsls r2, r4, 2 - adds r0, r2, r4 - lsls r0, 3 - adds r3, r0, r5 - movs r0, 0x10 - ldrsh r1, [r3, r0] - movs r7, 0x14 - ldrsh r0, [r3, r7] - adds r0, 0x10 - cmp r1, r0 - ble _080F64EA - ldrh r0, [r3, 0x10] - ldrh r1, [r3, 0x14] - subs r0, r1 - strh r0, [r3, 0x10] - b _080F653A -_080F64EA: - movs r0, 0x10 - strh r0, [r3, 0x10] - b _080F6534 -_080F64F0: - movs r0, 0x10 - ldrsh r1, [r2, r0] - movs r3, 0x14 - ldrsh r0, [r2, r3] - movs r3, 0x80 - lsls r3, 1 - subs r0, r3, r0 - cmp r1, r0 - bge _080F650C - ldrh r0, [r2, 0x14] - ldrh r7, [r2, 0x10] - adds r0, r7 - strh r0, [r2, 0x10] - b _080F6510 -_080F650C: - strh r3, [r2, 0x10] - movs r6, 0x1 -_080F6510: - lsls r2, r4, 2 - adds r0, r2, r4 - lsls r0, 3 - adds r3, r0, r5 - movs r0, 0xE - ldrsh r1, [r3, r0] - movs r7, 0x14 - ldrsh r0, [r3, r7] - adds r0, 0x10 - cmp r1, r0 - ble _080F6530 - ldrh r0, [r3, 0xE] - ldrh r1, [r3, 0x14] - subs r0, r1 - strh r0, [r3, 0xE] - b _080F653A -_080F6530: - movs r0, 0x10 - strh r0, [r3, 0xE] -_080F6534: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_080F653A: - adds r0, r2, r4 - lsls r0, 3 - adds r5, r0, r5 - movs r0, 0xE - ldrsh r1, [r5, r0] - movs r4, 0x80 - lsls r4, 9 - adds r0, r4, 0 - bl __divsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - movs r0, 0x1E - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - movs r3, 0x10 - ldrsh r1, [r5, r3] - adds r0, r4, 0 - bl __divsi3 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - movs r0, 0x1F - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - cmp r6, 0x2 - bne _080F6584 - ldr r0, _080F658C @ =sub_80F6424 - str r0, [r5] -_080F6584: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F658C: .4byte sub_80F6424 - thumb_func_end sub_80F6474 - - thumb_func_start PreEvoInvisible_PostEvoVisible_KillTask -PreEvoInvisible_PostEvoVisible_KillTask: @ 80F6590 - push {r4-r6,lr} - mov r6, r8 - push {r6} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080F6638 @ =gSprites - mov r8, r1 - ldr r1, _080F663C @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - movs r2, 0xA - ldrsh r1, [r4, r2] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - add r2, r8 - ldrb r3, [r2, 0x1] - movs r6, 0x4 - negs r6, r6 - adds r1, r6, 0 - ands r1, r3 - strb r1, [r2, 0x1] - movs r2, 0xA - ldrsh r1, [r4, r2] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - add r2, r8 - ldrb r3, [r2, 0x3] - movs r5, 0x3F - negs r5, r5 - adds r1, r5, 0 - ands r1, r3 - strb r1, [r2, 0x3] - movs r1, 0xA - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - adds r1, 0x3E - ldrb r2, [r1] - movs r3, 0x4 - orrs r2, r3 - strb r2, [r1] - movs r1, 0xC - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - ldrb r2, [r1, 0x1] - ands r6, r2 - strb r6, [r1, 0x1] - movs r1, 0xC - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - ldrb r2, [r1, 0x3] - ands r5, r2 - strb r5, [r1, 0x3] - movs r1, 0xC - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - adds r1, 0x3E - ldrb r3, [r1] - movs r2, 0x5 - negs r2, r2 - ands r2, r3 - strb r2, [r1] - bl DestroyTask - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F6638: .4byte gSprites -_080F663C: .4byte gTasks - thumb_func_end PreEvoInvisible_PostEvoVisible_KillTask - - thumb_func_start PreEvoVisible_PostEvoInvisible_KillTask -PreEvoVisible_PostEvoInvisible_KillTask: @ 80F6640 - push {r4-r6,lr} - mov r6, r8 - push {r6} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080F66E8 @ =gSprites - mov r8, r1 - ldr r1, _080F66EC @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - movs r2, 0xA - ldrsh r1, [r4, r2] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - add r2, r8 - ldrb r3, [r2, 0x1] - movs r6, 0x4 - negs r6, r6 - adds r1, r6, 0 - ands r1, r3 - strb r1, [r2, 0x1] - movs r2, 0xA - ldrsh r1, [r4, r2] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - add r2, r8 - ldrb r3, [r2, 0x3] - movs r5, 0x3F - negs r5, r5 - adds r1, r5, 0 - ands r1, r3 - strb r1, [r2, 0x3] - movs r1, 0xA - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - adds r1, 0x3E - ldrb r3, [r1] - movs r2, 0x5 - negs r2, r2 - ands r2, r3 - strb r2, [r1] - movs r1, 0xC - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - ldrb r2, [r1, 0x1] - ands r6, r2 - strb r6, [r1, 0x1] - movs r1, 0xC - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - ldrb r2, [r1, 0x3] - ands r5, r2 - strb r5, [r1, 0x3] - movs r1, 0xC - ldrsh r2, [r4, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r8 - adds r1, 0x3E - ldrb r2, [r1] - movs r3, 0x4 - orrs r2, r3 - strb r2, [r1] - bl DestroyTask - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F66E8: .4byte gSprites -_080F66EC: .4byte gTasks - thumb_func_end PreEvoVisible_PostEvoInvisible_KillTask - - .align 2, 0 @ Don't pad with nop. diff --git a/data/evolution_graphics.s b/data/evolution_graphics.s deleted file mode 100644 index cae5cb417..000000000 --- a/data/evolution_graphics.s +++ /dev/null @@ -1,47 +0,0 @@ -#include "constants/region_map.h" -#include "constants/flags.h" -#include "constants/moves.h" - .include "asm/macros.inc" - .include "constants/constants.inc" - .section .rodata - .align 2 - -gUnknown_841EE84:: @ 841EE84 - .incbin "graphics/misc/evolution_sprite_841EEA4.gbapal" - -gUnknown_841EEA4:: - .incbin "graphics/misc/evolution_sprite_841EEA4.4bpp.lz" - -gUnknown_841EEC4:: @ 841EEC4 - obj_tiles gUnknown_841EEA4, 0x0020, 1001 - null_obj_tiles - -gUnknown_841EED4:: @ 841EED4 - obj_pal gUnknown_841EE84, 1001 - null_obj_pal - -gOamData_841EEE4:: - .4byte 0x000000a0, 0x00000400 - -gUnknown_841EEEC:: - obj_image_anim_frame 0x0000, 8 - obj_image_anim_end - -gUnknown_841EEF4:: - .4byte gUnknown_841EEEC - -gUnknown_841EEF8:: @ 841EEF8 - spr_template 1001, 1001, gOamData_841EEE4, gUnknown_841EEF4, NULL, gDummySpriteAffineAnimTable, nullsub_85 - -gUnknown_841EF10:: @ 841EF10 - .2byte 0x03c0, 0x0380, 0x0340, 0x0300, 0x02c0, 0x0280, 0x0240, 0x0200, 0x01c0, 0x0180, 0x0140, 0x0100 - -gUnknown_841EF28:: @ 841EF28 - .2byte -4, 0x10 - .2byte -3, 0x30 - .2byte -2, 0x50 - .2byte -1, 0x70 - .2byte 1, 0x70 - .2byte 2, 0x50 - .2byte 3, 0x30 - .2byte 4, 0x10 diff --git a/include/evolution_scene.h b/include/evolution_scene.h index 6ceed99c1..75b64dadc 100644 --- a/include/evolution_scene.h +++ b/include/evolution_scene.h @@ -8,5 +8,6 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8, u8 partyID); void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID); extern void (*gCB2_AfterEvolution)(void); +void sub_80D0474(void); #endif // GUARD_EVOLUTION_SCENE_H diff --git a/ld_script.txt b/ld_script.txt index d84a70c7a..a081fc537 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -218,7 +218,7 @@ SECTIONS { src/diploma.o(.text); asm/save_failed_screen.o(.text); asm/clear_save_data_screen.o(.text); - asm/evolution_graphics.o(.text); + src/evolution_graphics.o(.text); src/fldeff_teleport.o(.text); src/new_menu_helpers.o(.text); asm/box_party_pokemon_dropdown.o(.text); @@ -489,7 +489,7 @@ SECTIONS { data/strings.o(.rodata); data/save_failed_screen.o(.rodata); data/clear_save_data_screen.o(.rodata); - data/evolution_graphics.o(.rodata); + src/evolution_graphics.o(.rodata); src/new_menu_helpers.o(.rodata); data/box_party_pokemon_dropdown.o(.rodata); src/map_preview_screen.o(.rodata); diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c new file mode 100644 index 000000000..ff58c4df8 --- /dev/null +++ b/src/evolution_graphics.c @@ -0,0 +1,624 @@ +#include "global.h" +#include "trig.h" +#include "random.h" +#include "decompress.h" +#include "palette.h" +#include "sound.h" +#include "task.h" +#include "evolution_scene.h" +#include "evolution_graphics.h" +#include "constants/songs.h" + +void nullsub_85(struct Sprite * sprite); +void sub_80F5DD0(u8 taskId); +void EvoTask_CreatePreEvoSparkleSet1(u8 taskId); +void EvoTask_WaitForPre1SparklesToGoUp(u8 taskId); +void sub_80F5ED8(u8 taskId); +void EvoTask_CreatePreEvoSparklesSet2(u8 taskId); +void sub_80F5F64(u8 taskId); +void sub_80F5F8C(u8 taskId); +void EvoTask_CreatePostEvoSparklesSet1(u8 taskId); +void sub_80F6040(u8 taskId); +void sub_80F6080(u8 taskId); +void sub_80F60E4(u8 taskId); +void sub_80F6170(u8 taskId); +void sub_80F61C0(u8 taskId); +void sub_80F6224(u8 taskId); +void sub_80F6400(u8 taskId); +void sub_80F6424(u8 taskId); +void sub_80F6474(u8 taskId); +void PreEvoInvisible_PostEvoVisible_KillTask(u8 taskId); +void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskId); + +static const u16 gUnknown_841EE84[] = INCBIN_U16("graphics/misc/evolution_sprite_841EEA4.gbapal"); +static const u32 gUnknown_841EEA4[] = INCBIN_U32("graphics/misc/evolution_sprite_841EEA4.4bpp.lz"); + +static const struct CompressedSpriteSheet gUnknown_841EEC4[] = { + { gUnknown_841EEA4, 0x20, 1001 }, + {} +}; +static const struct SpritePalette gUnknown_841EED4[] = { + { gUnknown_841EE84, 1001 }, + {} +}; + +static const struct OamData gOamData_841EEE4 = { + .y = 160, + .priority = 1 +}; + +static const union AnimCmd gUnknown_841EEEC[] = { + ANIMCMD_FRAME(0, 8), + ANIMCMD_END +}; + +static const union AnimCmd *const gUnknown_841EEF4[] = { + gUnknown_841EEEC +}; + +static const struct SpriteTemplate gUnknown_841EEF8 = { + .tileTag = 1001, + .paletteTag = 1001, + .oam = &gOamData_841EEE4, + .anims = gUnknown_841EEF4, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = nullsub_85 +}; + +static const u16 gUnknown_841EF10[12] = { + 0x3C0, + 0x380, + 0x340, + 0x300, + 0x2C0, + 0x280, + 0x240, + 0x200, + 0x1C0, + 0x180, + 0x140, + 0x100 +}; + +static const s16 gUnknown_841EF28[][2] = { + {-4, 0x10}, + {-3, 0x30}, + {-2, 0x50}, + {-1, 0x70}, + { 1, 0x70}, + { 2, 0x50}, + { 3, 0x30}, + { 4, 0x10} +}; + +void nullsub_85(struct Sprite * sprite) +{ + +} + +void SetEvoSparklesMatrices(void) +{ + u16 i; + for (i = 0; i < NELEMS(gUnknown_841EF10); i++) + SetOamMatrix(i + 20, gUnknown_841EF10[i], 0, 0, gUnknown_841EF10[i]); +} + +void SpriteCB_PreEvoSparkleSet1(struct Sprite * sprite) +{ + u8 mnum; + if (sprite->pos1.y > 8) + { + sprite->pos1.y = 88 - sprite->data[7] * sprite->data[7] / 80; + sprite->pos2.y = Sin((u8)sprite->data[6], sprite->data[5]) / 4; + sprite->pos2.x = Cos((u8) sprite->data[6], sprite->data[5]); + sprite->data[6] += 4; + if (sprite->data[7] & 1) + sprite->data[5]--; + sprite->data[7]++; + if (sprite->pos2.y > 0) + sprite->subpriority = 1; + else + sprite->subpriority = 20; + mnum = sprite->data[5] / 4 + 20; + if (mnum > 31) + mnum = 31; + sprite->oam.matrixNum = mnum; + } + else + { + DestroySprite(sprite); + } +} + +void CreatePreEvoSparkleSet1(u8 a0) +{ + u8 spriteId = CreateSprite(&gUnknown_841EEF8, 120, 88, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[5] = 48; + gSprites[spriteId].data[6] = a0; + gSprites[spriteId].data[7] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteId].oam.matrixNum = 31; + gSprites[spriteId].callback = SpriteCB_PreEvoSparkleSet1; + } +} + +void SpriteCB_PreEvoSparkleSet2(struct Sprite * sprite) +{ + if (sprite->pos1.y < 88) + { + sprite->pos1.y = 8 + sprite->data[7] * sprite->data[7] / 5; + sprite->pos2.y = Sin((u8)sprite->data[6], sprite->data[5]) / 4; + sprite->pos2.x = Cos((u8)sprite->data[6], sprite->data[5]); + sprite->data[5] = Sin((u8)(sprite->data[7] * 4), 40) + 8; + sprite->data[7]++; + } + else + { + DestroySprite(sprite); + } +} + +void CreatePreEvoSparkleSet2(u8 a0) +{ + u8 spriteId = CreateSprite(&gUnknown_841EEF8, 120, 8, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[5] = 8; + gSprites[spriteId].data[6] = a0; + gSprites[spriteId].data[7] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteId].oam.matrixNum = 25; + gSprites[spriteId].subpriority = 1; + gSprites[spriteId].callback = SpriteCB_PreEvoSparkleSet2; + } +} + +void SpriteCB_PostEvoSparkleSet1(struct Sprite * sprite) +{ + if (sprite->data[5] > 8) + { + sprite->pos2.y = Sin((u8)sprite->data[6], sprite->data[5]); + sprite->pos2.x = Cos((u8)sprite->data[6], sprite->data[5]); + sprite->data[5] -= sprite->data[3]; + sprite->data[6] += 4; + } + else + { + DestroySprite(sprite); + } +} + +void CreatePostEvoSparkleSet1(u8 a0, u8 a1) +{ + u8 spriteId = CreateSprite(&gUnknown_841EEF8, 120, 56, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[3] = a1; + gSprites[spriteId].data[5] = 120; + gSprites[spriteId].data[6] = a0; + gSprites[spriteId].data[7] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteId].oam.matrixNum = 31; + gSprites[spriteId].subpriority = 1; + gSprites[spriteId].callback = SpriteCB_PostEvoSparkleSet1; + } +} + +void SpriteCB_PostEvoSparkleSet2(struct Sprite * sprite) +{ + u8 mnum; + if ((sprite->data[7] & 3) == 0) + sprite->pos1.y++; + if (sprite->data[6] < 128) + { + sprite->pos2.y = -Sin((u8)sprite->data[6], sprite->data[5]); + sprite->pos1.x = 120 + sprite->data[3] * sprite->data[7] / 3; + sprite->data[6]++; + mnum = 31 - sprite->data[6] * 12 / 128; + if (sprite->data[6] > 64) + { + sprite->subpriority = 1; + } + else + { + sprite->invisible = FALSE; + sprite->subpriority = 20; + if (sprite->data[6] > 112 && (sprite->data[6] & 1)) + sprite->invisible = TRUE; + } + if (mnum < 20) + mnum = 20; + sprite->oam.matrixNum = mnum; + sprite->data[7]++; + } + else + { + DestroySprite(sprite); + } +} + +void CreatePostEvoSparkleSet2(u8 unused) +{ + u8 spriteId = CreateSprite(&gUnknown_841EEF8, 120, 56, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[3] = 3 - (Random() % 7); + gSprites[spriteId].data[5] = 48 + (Random() & 63); + gSprites[spriteId].data[7] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteId].oam.matrixNum = 31; + gSprites[spriteId].subpriority = 20; + gSprites[spriteId].callback = SpriteCB_PostEvoSparkleSet2; + } +} + +void LoadEvoSparkleSpriteAndPal(void) +{ + LoadCompressedSpriteSheetUsingHeap(gUnknown_841EEC4); + LoadSpritePalettes(gUnknown_841EED4); +} + +u8 LaunchTask_PreEvoSparklesSet1(u16 a0) +{ + u8 taskId = CreateTask(sub_80F5DD0, 0); + gTasks[taskId].data[1] = a0; + return taskId; +} + +void sub_80F5DD0(u8 taskId) +{ + SetEvoSparklesMatrices(); + gTasks[taskId].data[15] = 0; + BeginNormalPaletteFade(3 << gTasks[taskId].data[1], 10, 0, 16, RGB_WHITE); + gTasks[taskId].func = EvoTask_CreatePreEvoSparkleSet1; + PlaySE(SE_W025); +} + +void EvoTask_CreatePreEvoSparkleSet1(u8 taskId) +{ + u8 i; + if (gTasks[taskId].data[15] < 64) + { + if ((gTasks[taskId].data[15] & 7) == 0) + { + for (i = 0; i < 4; i++) + CreatePreEvoSparkleSet1(2 * (gTasks[taskId].data[15] & 0x78) + 64 * i); + } + gTasks[taskId].data[15]++; + } + else + { + gTasks[taskId].data[15] = 96; + gTasks[taskId].func = EvoTask_WaitForPre1SparklesToGoUp; + } +} + +void EvoTask_WaitForPre1SparklesToGoUp(u8 taskId) +{ + if (gTasks[taskId].data[15] != 0) + gTasks[taskId].data[15]--; + else + DestroyTask(taskId); +} + +u8 sub_80F5EC0(void) +{ + u8 taskId = CreateTask(sub_80F5ED8, 0); + return taskId; +} + +void sub_80F5ED8(u8 taskId) +{ + SetEvoSparklesMatrices(); + gTasks[taskId].data[15] = 0; + gTasks[taskId].func = EvoTask_CreatePreEvoSparklesSet2; + PlaySE(SE_W062B); +} + +void EvoTask_CreatePreEvoSparklesSet2(u8 taskId) +{ + u8 i; + if (gTasks[taskId].data[15] < 96) + { + if (gTasks[taskId].data[15] < 6) + { + for (i = 0; i < 9; i++) + CreatePreEvoSparkleSet2(16 * i); + } + gTasks[taskId].data[15]++; + } + else + { + gTasks[taskId].func = sub_80F5F64; + } +} + +void sub_80F5F64(u8 taskId) +{ + DestroyTask(taskId); +} + +u8 sub_80F5F74(void) +{ + u8 taskId = CreateTask(sub_80F5F8C, 0); + return taskId; +} + +void sub_80F5F8C(u8 taskId) +{ + SetEvoSparklesMatrices(); + gTasks[taskId].data[15] = 0; + gTasks[taskId].func = EvoTask_CreatePostEvoSparklesSet1; + PlaySE(SE_REAPOKE); +} + +void EvoTask_CreatePostEvoSparklesSet1(u8 taskId) +{ + u8 i; + if (gTasks[taskId].data[15] < 48) + { + if (gTasks[taskId].data[15] == 0) + { + for (i = 0; i < 16; i++) + { + CreatePostEvoSparkleSet1(i * 16, 4); + } + } + if (gTasks[taskId].data[15] == 32) + { + for (i = 0; i < 16; i++) + { + CreatePostEvoSparkleSet1(i * 16, 8); + } + } + gTasks[taskId].data[15]++; + } + else + { + gTasks[taskId].func = sub_80F6040; + } +} + +void sub_80F6040(u8 taskId) +{ + DestroyTask(taskId); +} + +u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 a0) +{ + u8 taskId = CreateTask(sub_80F6080, 0); + gTasks[taskId].data[2] = a0; + return taskId; +} + +void sub_80F6080(u8 taskId) +{ + SetEvoSparklesMatrices(); + gTasks[taskId].data[15] = 0; + sub_80D0474(); + CpuCopy16(&gPlttBufferFaded[32], &gPlttBufferUnfaded[32], 96); + BeginNormalPaletteFade(0xFFF90F1C, 0, 0, 16, RGB_WHITE); + gTasks[taskId].func = sub_80F60E4; + PlaySE(SE_W080); +} + +void sub_80F60E4(u8 taskId) +{ + u8 i; + if (gTasks[taskId].data[15] < 128) + { + switch (gTasks[taskId].data[15]) + { + default: + if (gTasks[taskId].data[15] < 50) + CreatePostEvoSparkleSet2(Random() & 7); + break; + case 0: + for (i = 0; i < 8; i++) + CreatePostEvoSparkleSet2(i); + break; + case 32: + BeginNormalPaletteFade(0xFFFF0F1C, 16, 16, 0, RGB_WHITE); + break; + } + gTasks[taskId].data[15]++; + } + else + { + gTasks[taskId].func = sub_80F6170; + } +} + +void sub_80F6170(u8 taskId) +{ + if (!gPaletteFade.active) + DestroyTask(taskId); +} + +u8 sub_80F6190(u16 a0) +{ + u8 taskId = CreateTask(sub_80F61C0, 0); + gTasks[taskId].data[2] = a0; + return taskId; +} + +void sub_80F61C0(u8 taskId) +{ + SetEvoSparklesMatrices(); + gTasks[taskId].data[15] = 0; + sub_80D0474(); + CpuCopy16(&gPlttBufferFaded[32], &gPlttBufferUnfaded[32], 96); + BeginNormalPaletteFade(0xFFF90F00, 0, 0, 16, RGB_WHITE); + gTasks[taskId].func = sub_80F6224; + PlaySE(SE_W080); +} + +void sub_80F6224(u8 taskId) +{ + u8 i; + if (gTasks[taskId].data[15] < 128) + { + switch (gTasks[taskId].data[15]) + { + default: + if (gTasks[taskId].data[15] < 50) + CreatePostEvoSparkleSet2(Random() & 7); + break; + case 0: + for (i = 0; i < 8; i++) + CreatePostEvoSparkleSet2(i); + break; + case 32: + BeginNormalPaletteFade(0xFFFF0F00, 16, 16, 0, RGB_WHITE); + break; + } + gTasks[taskId].data[15]++; + } + else + { + gTasks[taskId].func = sub_80F6170; + } +} + +void nullsub_86(struct Sprite * sprite) +{ + +} + +u8 sub_80F62B4(u8 a0, u8 a1) +{ + u16 i; + u8 taskId; + u16 palette[16]; + for (i = 0; i < 16; i++) + palette[i] = RGB_WHITE; + taskId = CreateTask(sub_80F6400, 0); + gTasks[taskId].data[1] = a0; + gTasks[taskId].data[2] = a1; + gTasks[taskId].data[3] = 256; + gTasks[taskId].data[4] = 16; + SetOamMatrix(30, 0x10000 / gTasks[taskId].data[3], 0, 0, 0x10000 / gTasks[taskId].data[3]); + SetOamMatrix(31, 0x10000 / gTasks[taskId].data[4], 0, 0, 0x10000 / gTasks[taskId].data[4]); + gSprites[a0].callback = nullsub_86; + gSprites[a0].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[a0].oam.matrixNum = 30; + gSprites[a0].invisible = FALSE; + CpuCopy16(palette, &gPlttBufferFaded[256 + 16 * gSprites[a0].oam.paletteNum], 32); + gSprites[a1].callback = nullsub_86; + gSprites[a1].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[a1].oam.matrixNum = 31; + gSprites[a1].invisible = FALSE; + CpuCopy16(palette, &gPlttBufferFaded[256 + 16 * gSprites[a1].oam.paletteNum], 32); + gTasks[taskId].data[8] = 0; + return taskId; +} + +void sub_80F6400(u8 taskId) +{ + gTasks[taskId].data[5] = FALSE; + gTasks[taskId].data[6] = 8; + gTasks[taskId].func = sub_80F6424; +} + +void sub_80F6424(u8 taskId) +{ + if (gTasks[taskId].data[8] != 0) + { + PreEvoVisible_PostEvoInvisible_KillTask(taskId); + } + else if (gTasks[taskId].data[6] == 128) + { + PreEvoInvisible_PostEvoVisible_KillTask(taskId); + } + else + { + gTasks[taskId].data[6] += 2; + gTasks[taskId].data[5] ^= TRUE; + gTasks[taskId].func = sub_80F6474; + } +} + +void sub_80F6474(u8 taskId) +{ + u8 r6; + if (gTasks[taskId].data[8] != 0) + { + gTasks[taskId].func = PreEvoVisible_PostEvoInvisible_KillTask; + } + else + { + r6 = 0; + if (gTasks[taskId].data[5] == 0) + { + if (gTasks[taskId].data[3] < 0x100 - gTasks[taskId].data[6]) + { + gTasks[taskId].data[3] += gTasks[taskId].data[6]; + } + else + { + gTasks[taskId].data[3] = 0x100; + r6 = 1; + } + if (gTasks[taskId].data[4] > 0x10 + gTasks[taskId].data[6]) + { + gTasks[taskId].data[4] -= gTasks[taskId].data[6]; + } + else + { + gTasks[taskId].data[4] = 0x10; + r6++; + } + } + else + { + if (gTasks[taskId].data[4] < 0x100 - gTasks[taskId].data[6]) + { + gTasks[taskId].data[4] += gTasks[taskId].data[6]; + } + else + { + gTasks[taskId].data[4] = 0x100; + r6 = 1; + } + if (gTasks[taskId].data[3] > 0x10 + gTasks[taskId].data[6]) + { + gTasks[taskId].data[3] -= gTasks[taskId].data[6]; + } + else + { + gTasks[taskId].data[3] = 0x10; + r6++; + } + } + SetOamMatrix(30, 0x10000 / gTasks[taskId].data[3], 0, 0, 0x10000 / gTasks[taskId].data[3]); + SetOamMatrix(31, 0x10000 / gTasks[taskId].data[4], 0, 0, 0x10000 / gTasks[taskId].data[4]); + if (r6 == 2) + { + gTasks[taskId].func = sub_80F6424; + } + } +} + +void PreEvoInvisible_PostEvoVisible_KillTask(u8 taskId) +{ + gSprites[gTasks[taskId].data[1]].oam.affineMode = ST_OAM_AFFINE_OFF; + gSprites[gTasks[taskId].data[1]].oam.matrixNum = 0; + gSprites[gTasks[taskId].data[1]].invisible = TRUE; + gSprites[gTasks[taskId].data[2]].oam.affineMode = ST_OAM_AFFINE_OFF; + gSprites[gTasks[taskId].data[2]].oam.matrixNum = 0; + gSprites[gTasks[taskId].data[2]].invisible = FALSE; + DestroyTask(taskId); +} + +void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskId) +{ + gSprites[gTasks[taskId].data[1]].oam.affineMode = ST_OAM_AFFINE_OFF; + gSprites[gTasks[taskId].data[1]].oam.matrixNum = 0; + gSprites[gTasks[taskId].data[1]].invisible = FALSE; + gSprites[gTasks[taskId].data[2]].oam.affineMode = ST_OAM_AFFINE_OFF; + gSprites[gTasks[taskId].data[2]].oam.matrixNum = 0; + gSprites[gTasks[taskId].data[2]].invisible = TRUE; + DestroyTask(taskId); +} From d13375a4e03519feb3e9a6b0f7784f09b55b7709 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 18 Nov 2019 15:33:14 -0500 Subject: [PATCH 11/49] Documentation of evolution_graphics --- asm/evolution_scene.s | 14 +- src/evolution_graphics.c | 304 ++++++++++++++++++++------------------- 2 files changed, 167 insertions(+), 151 deletions(-) diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index dac85320e..a1aff00ea 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -1619,7 +1619,7 @@ _080CEBA6: ldr r1, [r0] movs r0, 0x1 strb r0, [r1, 0x3] - bl sub_80F5EC0 + bl LaunchTask_PreEvoSparklesSet2 strb r0, [r4, 0x2] bl _080CF528 .align 2, 0 @@ -1641,7 +1641,7 @@ _080CEBE6: ldr r1, [r0] ldrb r0, [r1] ldrb r1, [r1, 0x1] - bl sub_80F62B4 + bl LaunchTask_PrePostEvoMonSprites strb r0, [r4, 0x2] mov r0, r8 adds r1, r0, r7 @@ -1685,7 +1685,7 @@ _080CEC38: _080CEC44: .4byte gUnknown_2039A20 _080CEC48: .4byte gBattleCommunication _080CEC4C: - bl sub_80F5F74 + bl LaunchTask_PostEvoSparklesSet1 ldr r1, _080CEC60 @ =gBattleCommunication strb r0, [r1, 0x2] ldr r0, _080CEC64 @ =gTasks @@ -2953,7 +2953,7 @@ _080CF752: ldr r1, [r0] movs r0, 0x1 strb r0, [r1, 0x3] - bl sub_80F5EC0 + bl LaunchTask_PreEvoSparklesSet2 strb r0, [r4, 0x2] bl _080D003A .align 2, 0 @@ -2975,7 +2975,7 @@ _080CF78E: ldr r1, [r0] ldrb r0, [r1] ldrb r1, [r1, 0x1] - bl sub_80F62B4 + bl LaunchTask_PrePostEvoMonSprites strb r0, [r4, 0x2] adds r1, r7, r6 lsls r1, 3 @@ -3017,7 +3017,7 @@ _080CF7DC: _080CF7E4: .4byte gUnknown_2039A20 _080CF7E8: .4byte gBattleCommunication _080CF7EC: - bl sub_80F5F74 + bl LaunchTask_PostEvoSparklesSet1 ldr r1, _080CF800 @ =gBattleCommunication strb r0, [r1, 0x2] ldr r0, _080CF804 @ =gTasks @@ -3045,7 +3045,7 @@ _080CF820: lsls r4, 3 adds r4, r5 ldrh r0, [r4, 0xC] - bl sub_80F6190 + bl LaunchTask_PostEvoSparklesSet2Alt mov r1, r8 strb r0, [r1, 0x2] b _080CFA90 diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c index ff58c4df8..da6ada735 100644 --- a/src/evolution_graphics.c +++ b/src/evolution_graphics.c @@ -9,63 +9,63 @@ #include "evolution_graphics.h" #include "constants/songs.h" -void nullsub_85(struct Sprite * sprite); -void sub_80F5DD0(u8 taskId); -void EvoTask_CreatePreEvoSparkleSet1(u8 taskId); -void EvoTask_WaitForPre1SparklesToGoUp(u8 taskId); -void sub_80F5ED8(u8 taskId); -void EvoTask_CreatePreEvoSparklesSet2(u8 taskId); -void sub_80F5F64(u8 taskId); -void sub_80F5F8C(u8 taskId); -void EvoTask_CreatePostEvoSparklesSet1(u8 taskId); -void sub_80F6040(u8 taskId); -void sub_80F6080(u8 taskId); -void sub_80F60E4(u8 taskId); -void sub_80F6170(u8 taskId); -void sub_80F61C0(u8 taskId); -void sub_80F6224(u8 taskId); -void sub_80F6400(u8 taskId); -void sub_80F6424(u8 taskId); -void sub_80F6474(u8 taskId); -void PreEvoInvisible_PostEvoVisible_KillTask(u8 taskId); -void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskId); +static void SpriteCallbackDummy_EvoSparkles(struct Sprite * sprite); +static void EvoTask_PreEvoSparkleSet1Init(u8 taskId); +static void EvoTask_CreatePreEvoSparkleSet1(u8 taskId); +static void EvoTask_WaitForPre1SparklesToGoUp(u8 taskId); +static void EvoTask_PreEvoSparkleSet2Init(u8 taskId); +static void EvoTask_CreatePreEvoSparklesSet2(u8 taskId); +static void EvoTask_PreEvoSparkleSet2Teardown(u8 taskId); +static void EvoTask_PostEvoSparklesSet1Init(u8 taskId); +static void EvoTask_CreatePostEvoSparklesSet1(u8 taskId); +static void EvoTask_PostEvoSparklesSet1Teardown(u8 taskId); +static void EvoTask_PostEvoSparklesSet2Init(u8 taskId); +static void EvoTask_CreatePostEvoSparklesSet2(u8 taskId); +static void EvoTask_PostEvoSparklesSet2Teardown(u8 taskId); +static void EvoTask_PostEvoSparklesSet2AltInit(u8 taskId); +static void EvoTask_CreatePostEvoSparklesSet2Alt(u8 taskId); +static void EvoTask_PrePostEvoMonSpritesInit(u8 taskId); +static void EvoTask_ChooseNextEvoSpriteAnim(u8 taskId); +static void EvoTask_ShrinkOrExpandEvoSprites(u8 taskId); +static void PreEvoInvisible_PostEvoVisible_KillTask(u8 taskId); +static void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskId); -static const u16 gUnknown_841EE84[] = INCBIN_U16("graphics/misc/evolution_sprite_841EEA4.gbapal"); -static const u32 gUnknown_841EEA4[] = INCBIN_U32("graphics/misc/evolution_sprite_841EEA4.4bpp.lz"); +static const u16 sEvolutionSparklesPalData[] = INCBIN_U16("graphics/misc/evolution_sprite_841EEA4.gbapal"); +static const u32 sEvolutionSparklesTileData[] = INCBIN_U32("graphics/misc/evolution_sprite_841EEA4.4bpp.lz"); -static const struct CompressedSpriteSheet gUnknown_841EEC4[] = { - { gUnknown_841EEA4, 0x20, 1001 }, +static const struct CompressedSpriteSheet sSpriteSheet_EvolutionSparkles[] = { + { sEvolutionSparklesTileData, 0x20, 1001 }, {} }; -static const struct SpritePalette gUnknown_841EED4[] = { - { gUnknown_841EE84, 1001 }, +static const struct SpritePalette sSpritePalette_EvolutionSparkles[] = { + { sEvolutionSparklesPalData, 1001 }, {} }; -static const struct OamData gOamData_841EEE4 = { +static const struct OamData sOamData_EvolutionSparkles = { .y = 160, .priority = 1 }; -static const union AnimCmd gUnknown_841EEEC[] = { +static const union AnimCmd sSpriteAnim_EvolutionSparkles_0[] = { ANIMCMD_FRAME(0, 8), ANIMCMD_END }; -static const union AnimCmd *const gUnknown_841EEF4[] = { - gUnknown_841EEEC +static const union AnimCmd *const sSpriteAnimTable_EvolutionSparkles[] = { + sSpriteAnim_EvolutionSparkles_0 }; -static const struct SpriteTemplate gUnknown_841EEF8 = { +static const struct SpriteTemplate sSpriteTemplate_EvolutionSparkles = { .tileTag = 1001, .paletteTag = 1001, - .oam = &gOamData_841EEE4, - .anims = gUnknown_841EEF4, + .oam = &sOamData_EvolutionSparkles, + .anims = sSpriteAnimTable_EvolutionSparkles, .affineAnims = gDummySpriteAffineAnimTable, - .callback = nullsub_85 + .callback = SpriteCallbackDummy_EvoSparkles }; -static const u16 gUnknown_841EF10[12] = { +static const u16 sEvolutionSparkleMatrixScales[12] = { 0x3C0, 0x380, 0x340, @@ -80,7 +80,7 @@ static const u16 gUnknown_841EF10[12] = { 0x100 }; -static const s16 gUnknown_841EF28[][2] = { +static const s16 sUnref_841EF28[][2] = { {-4, 0x10}, {-3, 0x30}, {-2, 0x50}, @@ -91,19 +91,19 @@ static const s16 gUnknown_841EF28[][2] = { { 4, 0x10} }; -void nullsub_85(struct Sprite * sprite) +static void SpriteCallbackDummy_EvoSparkles(struct Sprite * sprite) { } -void SetEvoSparklesMatrices(void) +static void SetEvoSparklesMatrices(void) { u16 i; - for (i = 0; i < NELEMS(gUnknown_841EF10); i++) - SetOamMatrix(i + 20, gUnknown_841EF10[i], 0, 0, gUnknown_841EF10[i]); + for (i = 0; i < NELEMS(sEvolutionSparkleMatrixScales); i++) + SetOamMatrix(i + 20, sEvolutionSparkleMatrixScales[i], 0, 0, sEvolutionSparkleMatrixScales[i]); } -void SpriteCB_PreEvoSparkleSet1(struct Sprite * sprite) +static void SpriteCB_PreEvoSparkleSet1(struct Sprite * sprite) { u8 mnum; if (sprite->pos1.y > 8) @@ -130,9 +130,9 @@ void SpriteCB_PreEvoSparkleSet1(struct Sprite * sprite) } } -void CreatePreEvoSparkleSet1(u8 a0) +static void CreatePreEvoSparkleSet1(u8 a0) { - u8 spriteId = CreateSprite(&gUnknown_841EEF8, 120, 88, 0); + u8 spriteId = CreateSprite(&sSpriteTemplate_EvolutionSparkles, 120, 88, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].data[5] = 48; @@ -144,7 +144,7 @@ void CreatePreEvoSparkleSet1(u8 a0) } } -void SpriteCB_PreEvoSparkleSet2(struct Sprite * sprite) +static void SpriteCB_PreEvoSparkleSet2(struct Sprite * sprite) { if (sprite->pos1.y < 88) { @@ -160,9 +160,9 @@ void SpriteCB_PreEvoSparkleSet2(struct Sprite * sprite) } } -void CreatePreEvoSparkleSet2(u8 a0) +static void CreatePreEvoSparkleSet2(u8 a0) { - u8 spriteId = CreateSprite(&gUnknown_841EEF8, 120, 8, 0); + u8 spriteId = CreateSprite(&sSpriteTemplate_EvolutionSparkles, 120, 8, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].data[5] = 8; @@ -175,7 +175,7 @@ void CreatePreEvoSparkleSet2(u8 a0) } } -void SpriteCB_PostEvoSparkleSet1(struct Sprite * sprite) +static void SpriteCB_PostEvoSparkleSet1(struct Sprite * sprite) { if (sprite->data[5] > 8) { @@ -190,9 +190,9 @@ void SpriteCB_PostEvoSparkleSet1(struct Sprite * sprite) } } -void CreatePostEvoSparkleSet1(u8 a0, u8 a1) +static void CreatePostEvoSparkleSet1(u8 a0, u8 a1) { - u8 spriteId = CreateSprite(&gUnknown_841EEF8, 120, 56, 0); + u8 spriteId = CreateSprite(&sSpriteTemplate_EvolutionSparkles, 120, 56, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].data[3] = a1; @@ -206,7 +206,7 @@ void CreatePostEvoSparkleSet1(u8 a0, u8 a1) } } -void SpriteCB_PostEvoSparkleSet2(struct Sprite * sprite) +static void SpriteCB_PostEvoSparkleSet2(struct Sprite * sprite) { u8 mnum; if ((sprite->data[7] & 3) == 0) @@ -239,9 +239,9 @@ void SpriteCB_PostEvoSparkleSet2(struct Sprite * sprite) } } -void CreatePostEvoSparkleSet2(u8 unused) +static void CreatePostEvoSparkleSet2(u8 unused) { - u8 spriteId = CreateSprite(&gUnknown_841EEF8, 120, 56, 0); + u8 spriteId = CreateSprite(&sSpriteTemplate_EvolutionSparkles, 120, 56, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].data[3] = 3 - (Random() % 7); @@ -256,18 +256,18 @@ void CreatePostEvoSparkleSet2(u8 unused) void LoadEvoSparkleSpriteAndPal(void) { - LoadCompressedSpriteSheetUsingHeap(gUnknown_841EEC4); - LoadSpritePalettes(gUnknown_841EED4); + LoadCompressedSpriteSheetUsingHeap(sSpriteSheet_EvolutionSparkles); + LoadSpritePalettes(sSpritePalette_EvolutionSparkles); } u8 LaunchTask_PreEvoSparklesSet1(u16 a0) { - u8 taskId = CreateTask(sub_80F5DD0, 0); + u8 taskId = CreateTask(EvoTask_PreEvoSparkleSet1Init, 0); gTasks[taskId].data[1] = a0; return taskId; } -void sub_80F5DD0(u8 taskId) +static void EvoTask_PreEvoSparkleSet1Init(u8 taskId) { SetEvoSparklesMatrices(); gTasks[taskId].data[15] = 0; @@ -276,7 +276,7 @@ void sub_80F5DD0(u8 taskId) PlaySE(SE_W025); } -void EvoTask_CreatePreEvoSparkleSet1(u8 taskId) +static void EvoTask_CreatePreEvoSparkleSet1(u8 taskId) { u8 i; if (gTasks[taskId].data[15] < 64) @@ -295,7 +295,7 @@ void EvoTask_CreatePreEvoSparkleSet1(u8 taskId) } } -void EvoTask_WaitForPre1SparklesToGoUp(u8 taskId) +static void EvoTask_WaitForPre1SparklesToGoUp(u8 taskId) { if (gTasks[taskId].data[15] != 0) gTasks[taskId].data[15]--; @@ -303,13 +303,13 @@ void EvoTask_WaitForPre1SparklesToGoUp(u8 taskId) DestroyTask(taskId); } -u8 sub_80F5EC0(void) +u8 LaunchTask_PreEvoSparklesSet2(void) { - u8 taskId = CreateTask(sub_80F5ED8, 0); + u8 taskId = CreateTask(EvoTask_PreEvoSparkleSet2Init, 0); return taskId; } -void sub_80F5ED8(u8 taskId) +static void EvoTask_PreEvoSparkleSet2Init(u8 taskId) { SetEvoSparklesMatrices(); gTasks[taskId].data[15] = 0; @@ -317,7 +317,7 @@ void sub_80F5ED8(u8 taskId) PlaySE(SE_W062B); } -void EvoTask_CreatePreEvoSparklesSet2(u8 taskId) +static void EvoTask_CreatePreEvoSparklesSet2(u8 taskId) { u8 i; if (gTasks[taskId].data[15] < 96) @@ -331,22 +331,22 @@ void EvoTask_CreatePreEvoSparklesSet2(u8 taskId) } else { - gTasks[taskId].func = sub_80F5F64; + gTasks[taskId].func = EvoTask_PreEvoSparkleSet2Teardown; } } -void sub_80F5F64(u8 taskId) +static void EvoTask_PreEvoSparkleSet2Teardown(u8 taskId) { DestroyTask(taskId); } -u8 sub_80F5F74(void) +u8 LaunchTask_PostEvoSparklesSet1(void) { - u8 taskId = CreateTask(sub_80F5F8C, 0); + u8 taskId = CreateTask(EvoTask_PostEvoSparklesSet1Init, 0); return taskId; } -void sub_80F5F8C(u8 taskId) +static void EvoTask_PostEvoSparklesSet1Init(u8 taskId) { SetEvoSparklesMatrices(); gTasks[taskId].data[15] = 0; @@ -354,7 +354,7 @@ void sub_80F5F8C(u8 taskId) PlaySE(SE_REAPOKE); } -void EvoTask_CreatePostEvoSparklesSet1(u8 taskId) +static void EvoTask_CreatePostEvoSparklesSet1(u8 taskId) { u8 i; if (gTasks[taskId].data[15] < 48) @@ -377,34 +377,34 @@ void EvoTask_CreatePostEvoSparklesSet1(u8 taskId) } else { - gTasks[taskId].func = sub_80F6040; + gTasks[taskId].func = EvoTask_PostEvoSparklesSet1Teardown; } } -void sub_80F6040(u8 taskId) +static void EvoTask_PostEvoSparklesSet1Teardown(u8 taskId) { DestroyTask(taskId); } u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 a0) { - u8 taskId = CreateTask(sub_80F6080, 0); + u8 taskId = CreateTask(EvoTask_PostEvoSparklesSet2Init, 0); gTasks[taskId].data[2] = a0; return taskId; } -void sub_80F6080(u8 taskId) +static void EvoTask_PostEvoSparklesSet2Init(u8 taskId) { SetEvoSparklesMatrices(); gTasks[taskId].data[15] = 0; sub_80D0474(); CpuCopy16(&gPlttBufferFaded[32], &gPlttBufferUnfaded[32], 96); BeginNormalPaletteFade(0xFFF90F1C, 0, 0, 16, RGB_WHITE); - gTasks[taskId].func = sub_80F60E4; + gTasks[taskId].func = EvoTask_CreatePostEvoSparklesSet2; PlaySE(SE_W080); } -void sub_80F60E4(u8 taskId) +static void EvoTask_CreatePostEvoSparklesSet2(u8 taskId) { u8 i; if (gTasks[taskId].data[15] < 128) @@ -427,35 +427,35 @@ void sub_80F60E4(u8 taskId) } else { - gTasks[taskId].func = sub_80F6170; + gTasks[taskId].func = EvoTask_PostEvoSparklesSet2Teardown; } } -void sub_80F6170(u8 taskId) +static void EvoTask_PostEvoSparklesSet2Teardown(u8 taskId) { if (!gPaletteFade.active) DestroyTask(taskId); } -u8 sub_80F6190(u16 a0) +u8 LaunchTask_PostEvoSparklesSet2Alt(u16 a0) { - u8 taskId = CreateTask(sub_80F61C0, 0); + u8 taskId = CreateTask(EvoTask_PostEvoSparklesSet2AltInit, 0); gTasks[taskId].data[2] = a0; return taskId; } -void sub_80F61C0(u8 taskId) +static void EvoTask_PostEvoSparklesSet2AltInit(u8 taskId) { SetEvoSparklesMatrices(); gTasks[taskId].data[15] = 0; sub_80D0474(); CpuCopy16(&gPlttBufferFaded[32], &gPlttBufferUnfaded[32], 96); BeginNormalPaletteFade(0xFFF90F00, 0, 0, 16, RGB_WHITE); - gTasks[taskId].func = sub_80F6224; + gTasks[taskId].func = EvoTask_CreatePostEvoSparklesSet2Alt; PlaySE(SE_W080); } -void sub_80F6224(u8 taskId) +static void EvoTask_CreatePostEvoSparklesSet2Alt(u8 taskId) { u8 i; if (gTasks[taskId].data[15] < 128) @@ -478,147 +478,163 @@ void sub_80F6224(u8 taskId) } else { - gTasks[taskId].func = sub_80F6170; + gTasks[taskId].func = EvoTask_PostEvoSparklesSet2Teardown; } } -void nullsub_86(struct Sprite * sprite) +static void SpriteCallbackDummy_MonSprites(struct Sprite * sprite) { } -u8 sub_80F62B4(u8 a0, u8 a1) +#define tPreEvoSpriteId data[1] +#define tPostEvoSpriteId data[2] +#define tPreEvoScale data[3] +#define tPostEvoScale data[4] +#define tDirection data[5] +#define tSpeed data[6] +#define tBButtonCancel data[8] + +u8 LaunchTask_PrePostEvoMonSprites(u8 preEvoSpriteId, u8 postEvoSpriteId) { u16 i; u8 taskId; u16 palette[16]; for (i = 0; i < 16; i++) palette[i] = RGB_WHITE; - taskId = CreateTask(sub_80F6400, 0); - gTasks[taskId].data[1] = a0; - gTasks[taskId].data[2] = a1; - gTasks[taskId].data[3] = 256; - gTasks[taskId].data[4] = 16; - SetOamMatrix(30, 0x10000 / gTasks[taskId].data[3], 0, 0, 0x10000 / gTasks[taskId].data[3]); - SetOamMatrix(31, 0x10000 / gTasks[taskId].data[4], 0, 0, 0x10000 / gTasks[taskId].data[4]); - gSprites[a0].callback = nullsub_86; - gSprites[a0].oam.affineMode = ST_OAM_AFFINE_NORMAL; - gSprites[a0].oam.matrixNum = 30; - gSprites[a0].invisible = FALSE; - CpuCopy16(palette, &gPlttBufferFaded[256 + 16 * gSprites[a0].oam.paletteNum], 32); - gSprites[a1].callback = nullsub_86; - gSprites[a1].oam.affineMode = ST_OAM_AFFINE_NORMAL; - gSprites[a1].oam.matrixNum = 31; - gSprites[a1].invisible = FALSE; - CpuCopy16(palette, &gPlttBufferFaded[256 + 16 * gSprites[a1].oam.paletteNum], 32); - gTasks[taskId].data[8] = 0; + taskId = CreateTask(EvoTask_PrePostEvoMonSpritesInit, 0); + gTasks[taskId].tPreEvoSpriteId = preEvoSpriteId; + gTasks[taskId].tPostEvoSpriteId = postEvoSpriteId; + gTasks[taskId].tPreEvoScale = 256; + gTasks[taskId].tPostEvoScale = 16; + SetOamMatrix(30, 0x10000 / gTasks[taskId].tPreEvoScale, 0, 0, 0x10000 / gTasks[taskId].tPreEvoScale); + SetOamMatrix(31, 0x10000 / gTasks[taskId].tPostEvoScale, 0, 0, 0x10000 / gTasks[taskId].tPostEvoScale); + gSprites[preEvoSpriteId].callback = SpriteCallbackDummy_MonSprites; + gSprites[preEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[preEvoSpriteId].oam.matrixNum = 30; + gSprites[preEvoSpriteId].invisible = FALSE; + CpuCopy16(palette, &gPlttBufferFaded[256 + 16 * gSprites[preEvoSpriteId].oam.paletteNum], 32); + gSprites[postEvoSpriteId].callback = SpriteCallbackDummy_MonSprites; + gSprites[postEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[postEvoSpriteId].oam.matrixNum = 31; + gSprites[postEvoSpriteId].invisible = FALSE; + CpuCopy16(palette, &gPlttBufferFaded[256 + 16 * gSprites[postEvoSpriteId].oam.paletteNum], 32); + gTasks[taskId].tBButtonCancel = FALSE; return taskId; } -void sub_80F6400(u8 taskId) +static void EvoTask_PrePostEvoMonSpritesInit(u8 taskId) { - gTasks[taskId].data[5] = FALSE; - gTasks[taskId].data[6] = 8; - gTasks[taskId].func = sub_80F6424; + gTasks[taskId].tDirection = FALSE; + gTasks[taskId].tSpeed = 8; + gTasks[taskId].func = EvoTask_ChooseNextEvoSpriteAnim; } -void sub_80F6424(u8 taskId) +static void EvoTask_ChooseNextEvoSpriteAnim(u8 taskId) { - if (gTasks[taskId].data[8] != 0) + if (gTasks[taskId].tBButtonCancel) { PreEvoVisible_PostEvoInvisible_KillTask(taskId); } - else if (gTasks[taskId].data[6] == 128) + else if (gTasks[taskId].tSpeed == 128) { PreEvoInvisible_PostEvoVisible_KillTask(taskId); } else { - gTasks[taskId].data[6] += 2; - gTasks[taskId].data[5] ^= TRUE; - gTasks[taskId].func = sub_80F6474; + gTasks[taskId].tSpeed += 2; + gTasks[taskId].tDirection ^= TRUE; + gTasks[taskId].func = EvoTask_ShrinkOrExpandEvoSprites; } } -void sub_80F6474(u8 taskId) +static void EvoTask_ShrinkOrExpandEvoSprites(u8 taskId) { u8 r6; - if (gTasks[taskId].data[8] != 0) + if (gTasks[taskId].tBButtonCancel) { gTasks[taskId].func = PreEvoVisible_PostEvoInvisible_KillTask; } else { r6 = 0; - if (gTasks[taskId].data[5] == 0) + if (!gTasks[taskId].tDirection) { - if (gTasks[taskId].data[3] < 0x100 - gTasks[taskId].data[6]) + if (gTasks[taskId].tPreEvoScale < 0x100 - gTasks[taskId].tSpeed) { - gTasks[taskId].data[3] += gTasks[taskId].data[6]; + gTasks[taskId].tPreEvoScale += gTasks[taskId].tSpeed; } else { - gTasks[taskId].data[3] = 0x100; + gTasks[taskId].tPreEvoScale = 0x100; r6 = 1; } - if (gTasks[taskId].data[4] > 0x10 + gTasks[taskId].data[6]) + if (gTasks[taskId].tPostEvoScale > 0x10 + gTasks[taskId].tSpeed) { - gTasks[taskId].data[4] -= gTasks[taskId].data[6]; + gTasks[taskId].tPostEvoScale -= gTasks[taskId].tSpeed; } else { - gTasks[taskId].data[4] = 0x10; + gTasks[taskId].tPostEvoScale = 0x10; r6++; } } else { - if (gTasks[taskId].data[4] < 0x100 - gTasks[taskId].data[6]) + if (gTasks[taskId].tPostEvoScale < 0x100 - gTasks[taskId].tSpeed) { - gTasks[taskId].data[4] += gTasks[taskId].data[6]; + gTasks[taskId].tPostEvoScale += gTasks[taskId].tSpeed; } else { - gTasks[taskId].data[4] = 0x100; + gTasks[taskId].tPostEvoScale = 0x100; r6 = 1; } - if (gTasks[taskId].data[3] > 0x10 + gTasks[taskId].data[6]) + if (gTasks[taskId].tPreEvoScale > 0x10 + gTasks[taskId].tSpeed) { - gTasks[taskId].data[3] -= gTasks[taskId].data[6]; + gTasks[taskId].tPreEvoScale -= gTasks[taskId].tSpeed; } else { - gTasks[taskId].data[3] = 0x10; + gTasks[taskId].tPreEvoScale = 0x10; r6++; } } - SetOamMatrix(30, 0x10000 / gTasks[taskId].data[3], 0, 0, 0x10000 / gTasks[taskId].data[3]); - SetOamMatrix(31, 0x10000 / gTasks[taskId].data[4], 0, 0, 0x10000 / gTasks[taskId].data[4]); + SetOamMatrix(30, 0x10000 / gTasks[taskId].tPreEvoScale, 0, 0, 0x10000 / gTasks[taskId].tPreEvoScale); + SetOamMatrix(31, 0x10000 / gTasks[taskId].tPostEvoScale, 0, 0, 0x10000 / gTasks[taskId].tPostEvoScale); if (r6 == 2) { - gTasks[taskId].func = sub_80F6424; + gTasks[taskId].func = EvoTask_ChooseNextEvoSpriteAnim; } } } -void PreEvoInvisible_PostEvoVisible_KillTask(u8 taskId) +static void PreEvoInvisible_PostEvoVisible_KillTask(u8 taskId) { - gSprites[gTasks[taskId].data[1]].oam.affineMode = ST_OAM_AFFINE_OFF; - gSprites[gTasks[taskId].data[1]].oam.matrixNum = 0; - gSprites[gTasks[taskId].data[1]].invisible = TRUE; - gSprites[gTasks[taskId].data[2]].oam.affineMode = ST_OAM_AFFINE_OFF; - gSprites[gTasks[taskId].data[2]].oam.matrixNum = 0; - gSprites[gTasks[taskId].data[2]].invisible = FALSE; + gSprites[gTasks[taskId].tPreEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_OFF; + gSprites[gTasks[taskId].tPreEvoSpriteId].oam.matrixNum = 0; + gSprites[gTasks[taskId].tPreEvoSpriteId].invisible = TRUE; + gSprites[gTasks[taskId].tPostEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_OFF; + gSprites[gTasks[taskId].tPostEvoSpriteId].oam.matrixNum = 0; + gSprites[gTasks[taskId].tPostEvoSpriteId].invisible = FALSE; DestroyTask(taskId); } -void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskId) +static void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskId) { - gSprites[gTasks[taskId].data[1]].oam.affineMode = ST_OAM_AFFINE_OFF; - gSprites[gTasks[taskId].data[1]].oam.matrixNum = 0; - gSprites[gTasks[taskId].data[1]].invisible = FALSE; - gSprites[gTasks[taskId].data[2]].oam.affineMode = ST_OAM_AFFINE_OFF; - gSprites[gTasks[taskId].data[2]].oam.matrixNum = 0; - gSprites[gTasks[taskId].data[2]].invisible = TRUE; + gSprites[gTasks[taskId].tPreEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_OFF; + gSprites[gTasks[taskId].tPreEvoSpriteId].oam.matrixNum = 0; + gSprites[gTasks[taskId].tPreEvoSpriteId].invisible = FALSE; + gSprites[gTasks[taskId].tPostEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_OFF; + gSprites[gTasks[taskId].tPostEvoSpriteId].oam.matrixNum = 0; + gSprites[gTasks[taskId].tPostEvoSpriteId].invisible = TRUE; DestroyTask(taskId); } + +#undef tPreEvoSpriteId +#undef tPostEvoSpriteId +#undef tPreEvoScale +#undef tPostEvoScale +#undef tDirection +#undef tSpeed +#undef tBButtonCancel From 186e17b7ebec8f5abcbcb4a7e06de5c87aa7162c Mon Sep 17 00:00:00 2001 From: Evan Date: Mon, 18 Nov 2019 15:21:22 -0700 Subject: [PATCH 12/49] matching up to sub_8088D8C --- include/menu_helpers.h | 2 +- src/menu_helpers.c | 2 +- src/option_menu.c | 655 ++++++++++++++++++++++++++++++----------- 3 files changed, 488 insertions(+), 171 deletions(-) diff --git a/include/menu_helpers.h b/include/menu_helpers.h index 6ea771500..8d042825c 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -12,7 +12,7 @@ struct YesNoFuncTable }; bool16 RunTextPrinters_CheckActive(u8 textPrinterId); -bool8 sub_80BF72C(void); +bool32 sub_80BF72C(void); bool8 sub_80BF748(void); bool8 MenuHelpers_LinkSomething(void); void SetVBlankHBlankCallbacksToNull(void); diff --git a/src/menu_helpers.c b/src/menu_helpers.c index 06e7bb08b..027280beb 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -125,7 +125,7 @@ bool8 MenuHelpers_LinkSomething(void) return FALSE; } -bool8 sub_80BF72C(void) +bool32 sub_80BF72C(void) { if (!MenuHelpers_LinkSomething()) return FALSE; diff --git a/src/option_menu.c b/src/option_menu.c index 57de35f11..c98a2ec7b 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -39,6 +39,65 @@ enum WIN_OPTIONS }; +/* +static const struct WindowTemplate gUnknown_83CC2B8[] = //sOptionMenuWinTemplates +{ + { + .bg = 1, + .tilemapLeft = 2, + .tilemapTop = 3, + .width = 26, + .height = 2, + .paletteNum = 1, + .baseBlock = 2 + }, + { + .bg = 0, + .tilemapLeft = 2, + .tilemapTop =7, + .width = 26, + .height = 12, + .paletteNum = 1, + .baseBlock = 0x36 + }, + DUMMY_WIN_TEMPLATE +}; +static const struct BgTemplate gUnknown_83CC2D8[] = //sOptionMenuBgTemplates +{ + { + .bg = 1, + .charBaseIndex = 1, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + { + .bg = 0, + .charBaseIndex = 1, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0 + } +}; + + +static const u16 gUnknown_83CC304[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0}; //sOptionsMenuItemCounts +static const u8* gUnknown_83CC314[MENUITEM_COUNT] = //sOptionMenuItemsNames +{ + [MENUITEM_TEXTSPEED] = gText_TextSpeed, + [MENUITEM_BATTLESCENE] = gText_BattleScene, + [MENUITEM_BATTLESTYLE] = gText_BattleStyle, + [MENUITEM_SOUND] = gText_Sound, + [MENUITEM_BUTTONMODE] = gText_ButtonMode, + [MENUITEM_FRAMETYPE] = gText_Frame, + [MENUITEM_CANCEL] = gText_OptionMenuCancel, +}; +*/ + //This file's functions static void sub_808835C(void); static void sub_8088374(void); @@ -57,27 +116,27 @@ static void sub_8088B00(u8 taskId); static void sub_8088BD0(void); static void sub_8088C0C(void); static void sub_8088D8C(void); -static void sub_8088DE0(u8 selection); +static void sub_8088DE0(u16 selection); -extern const u16 gUnknown_83CC304[]; //sOptionsMenuItemCounts -extern const struct BgTemplate gUnknown_83CC2D8[]; -extern const u8 gUnknown_83CC360[]; -extern const u16 gUnknown_83CC2E4[]; -extern const struct WindowTemplate gUnknown_83CC2B8[]; -extern const u8 gUnknown_83CC363[]; -extern const u8 gUnknown_83CC330[]; -extern const u8 gUnknown_83CC33C[]; -extern const u8 gUnknown_83CC344[]; -extern const u8 gUnknown_83CC34C[]; -extern const u8 gUnknown_83CC354[]; -extern const u8 gUnknown_8419E52[]; -extern const u8 gUnknown_8419DCC[]; +extern const struct WindowTemplate gUnknown_83CC2B8[3]; +extern const struct BgTemplate gUnknown_83CC2D8[2]; +extern const u16 gUnknown_83CC2E4[0x20]; +extern const u16 gUnknown_83CC304[MENUITEM_COUNT]; //sOptionsMenuItemCounts extern const u8* gUnknown_83CC314[MENUITEM_COUNT]; +extern const u8 gUnknown_83CC330[0xC]; +extern const u8 gUnknown_83CC33C[0x8]; +extern const u8 gUnknown_83CC344[0x8]; +extern const u8 gUnknown_83CC34C[0x8]; +extern const u8 gUnknown_83CC354[0xC]; +extern const u8 gUnknown_83CC360[0x3]; +extern const u8 gUnknown_83CC363[0x3]; +extern const u8 gUnknown_8419DCC[]; +extern const u8 gUnknown_8419E52[]; extern const u8 gUnknown_8419E57[]; struct OptionsMenu { - /*0x00*/ u16 option[7]; + /*0x00*/ u16 option[7]; //0,2,4,6,8,a,c /*0x0E*/ u16 unkE; /*0x10*/ u8 state3; /*0x11*/ u8 state; @@ -110,7 +169,7 @@ static void sub_8088374(void) //sub_8088388 void CB2_OptionsMenuFromStartMenu(void) { - int i; + u8 i; if (gMain.savedCallback == NULL) gMain.savedCallback = CB2_ReturnToStartMenu; @@ -126,10 +185,10 @@ void CB2_OptionsMenuFromStartMenu(void) sOptionsMenu->option[MENUITEM_BUTTONMODE] = gSaveBlock2Ptr->optionsButtonMode; sOptionsMenu->option[MENUITEM_FRAMETYPE] = gSaveBlock2Ptr->optionsWindowFrameType; - for (i = 0; i < MENUITEM_COUNT-2; i++) + for (i = 0; i < MENUITEM_COUNT-1; i++) { - if (sOptionsMenu->option[i] > gUnknown_83CC304[i]-1) - sOptionsMenu->option[i] = 0; + if (sOptionsMenu->option[i] > (gUnknown_83CC304[i])-1) + sOptionsMenu->option[i] = 0; } HelpSystem_SetSomeVariable2(0xD); SetMainCallback2(sub_8088454); @@ -153,55 +212,46 @@ static void sub_8088444(void) //sub_8088454 static void sub_8088454(void) { - int i; - switch (sOptionsMenu->state) + u8 i, state; + state = sOptionsMenu->state; + switch (state) { case 0: sub_8088430(); - sOptionsMenu->state++; break; case 1: sub_8088530(); - sOptionsMenu->state++; break; case 2: sub_80886D4(); - sOptionsMenu->state++; break; case 3: - if (!(sub_80886F0())); + if (sub_80886F0() != TRUE) //silly matching quirk return; - sOptionsMenu->state++; break; case 4: sub_8088BD0(); - sOptionsMenu->state++; break; case 5: sub_8088C0C(); - sOptionsMenu->state++; break; case 6: sub_8088D8C(); - sOptionsMenu->state++; break; case 7: for (i = 0; i < MENUITEM_COUNT; i++) sub_80889A8(i); - sOptionsMenu->state++; break; case 8: sub_8088DE0(sOptionsMenu->unkE); - sOptionsMenu->state++; break; case 9: sub_8088680(); - sOptionsMenu->state++; break; default: sub_8088514(); - return; } + sOptionsMenu->state++; } //sub_8088514 @@ -217,12 +267,12 @@ static void sub_8088530(void) { void * dest = (void *) VRAM; DmaClearLarge16(3, dest, VRAM_SIZE, 0x1000); - + DmaClear32(3, (void *)OAM, OAM_SIZE); DmaClear16(3, (void *)PLTT, PLTT_SIZE); SetGpuReg(REG_OFFSET_DISPCNT, 0); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_83CC2D8, 3); //3 -> ARRAY_COUNT(gUnknown_83CC2D8) + InitBgsFromTemplates(0, gUnknown_83CC2D8, 3); //3 -> ARRAY_COUNT(gUnknown_83CC2D8) ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); ChangeBgX(1, 0, 0); @@ -233,10 +283,10 @@ static void sub_8088530(void) ChangeBgY(3, 0, 0); InitWindows(gUnknown_83CC2B8); DeactivateAllTextPrinters(); - SetGpuReg(REG_OFFSET_BLDCNT, 193); + SetGpuReg(REG_OFFSET_BLDCNT, 0xC1); SetGpuReg(REG_OFFSET_BLDY, 2); SetGpuReg(REG_OFFSET_WININ, 1); - SetGpuReg(REG_OFFSET_WINOUT, 27); + SetGpuReg(REG_OFFSET_WINOUT, 0x27); SetGpuReg(0, 0x3040); ShowBg(0); ShowBg(1); @@ -248,7 +298,7 @@ static void sub_8088680(void) { s32 x; x = 0xE4 - GetStringWidth(0, gUnknown_8419E57, 0); - FillWindowPixelBuffer(WIN_OPTIONS, 0xFF); + FillWindowPixelBuffer(2, 0xFF); AddTextPrinterParameterized3(2, 0, x, 0, gUnknown_83CC360, 0, gUnknown_8419E57); PutWindowTilemap(2); CopyWindowToVram(2, 3); @@ -271,10 +321,10 @@ static bool8 sub_80886F0(void) switch (sOptionsMenu->state2) { case 0: - LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->tiles, 0x120, 0x1AA); + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); break; case 1: - LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->palette, 0x20, 0x20); + LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); break; case 2: LoadPalette(gUnknown_83CC2E4, 0x10, 0x20); @@ -291,72 +341,228 @@ static bool8 sub_80886F0(void) } -//sub_8088780 + +// I could not get this function to match. GOTO statements weren't even compiling correctly. +#ifdef NONMATCHING static void sub_8088780(u8 taskId) { + u8 v2, v5; + struct OptionsMenu v4; + switch (sOptionsMenu->state3) { case 0: - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); sub_8088444(); sOptionsMenu->state3++; break; case 2: - if (sub_80BF72C) + if (sub_80BF72C() == TRUE) return; switch (sub_80888C0()) { - case 0: - return; case 1: sOptionsMenu->state3++; break; case 2: - LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->tiles, 0x120, 0x1AA); - LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->palette, 0x20, 0x20); + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); + LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); sub_80889A8(sOptionsMenu->unkE); - return; + sOptionsMenu->state3++; + break; case 3: sub_8088DE0(sOptionsMenu->unkE); - return; + break; case 4: sub_80889A8(sOptionsMenu->unkE); - return; + sOptionsMenu->state3++; + break; default: return; } case 3: - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); sOptionsMenu->state3++; - break; case 1: case 4: if (gPaletteFade.active) return; sOptionsMenu->state3++; - return; case 5: sub_8088B00(taskId); - return; + break; default: return; } } - - +#else +NAKED +static void sub_8088780(u8 taskId) +{ + asm_unified("\tpush {r4,lr}\n" + "\tsub sp, 0x4\n" + "\tlsls r0, 24\n" + "\tlsrs r2, r0, 24\n" + "\tldr r1, _080887A0 @ =sOptionsMenu\n" + "\tldr r0, [r1]\n" + "\tldrb r0, [r0, 0x10]\n" + "\tadds r3, r1, 0\n" + "\tcmp r0, 0x5\n" + "\tbls _08088796\n" + "\tb _080888B6\n" + "_08088796:\n" + "\tlsls r0, 2\n" + "\tldr r1, _080887A4 @ =_080887A8\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_080887A0: .4byte sOptionsMenu\n" + "_080887A4: .4byte _080887A8\n" + "\t.align 2, 0\n" + "_080887A8:\n" + "\t.4byte _080887C0\n" + "\t.4byte _08088894\n" + "\t.4byte _080887E0\n" + "\t.4byte _08088878\n" + "\t.4byte _08088894\n" + "\t.4byte _080888B0\n" + "_080887C0:\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tmovs r1, 0\n" + "\tstr r1, [sp]\n" + "\tmovs r2, 0x10\n" + "\tmovs r3, 0\n" + "\tbl BeginNormalPaletteFade\n" + "\tbl sub_8088444\n" + "\tldr r0, _080887DC @ =sOptionsMenu\n" + "\tldr r1, [r0]\n" + "\tb _080888A2\n" + "\t.align 2, 0\n" + "_080887DC: .4byte sOptionsMenu\n" + "_080887E0:\n" + "\tbl sub_80BF72C\n" + "\tcmp r0, 0x1\n" + "\tbeq _080888B6\n" + "\tbl sub_80888C0\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x4\n" + "\tbhi _080888B6\n" + "\tlsls r0, 2\n" + "\tldr r1, _08088800 @ =_08088804\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_08088800: .4byte _08088804\n" + "\t.align 2, 0\n" + "_08088804:\n" + "\t.4byte _080888B6\n" + "\t.4byte _08088818\n" + "\t.4byte _08088824\n" + "\t.4byte _08088858\n" + "\t.4byte _08088868\n" + "_08088818:\n" + "\tldr r0, _08088820 @ =sOptionsMenu\n" + "\tldr r1, [r0]\n" + "\tb _080888A2\n" + "\t.align 2, 0\n" + "_08088820: .4byte sOptionsMenu\n" + "_08088824:\n" + "\tldr r4, _08088854 @ =sOptionsMenu\n" + "\tldr r0, [r4]\n" + "\tldrb r0, [r0, 0xA]\n" + "\tbl GetUserFrameGraphicsInfo\n" + "\tldr r1, [r0]\n" + "\tmovs r2, 0x90\n" + "\tlsls r2, 1\n" + "\tmovs r3, 0xD5\n" + "\tlsls r3, 1\n" + "\tmovs r0, 0x1\n" + "\tbl LoadBgTiles\n" + "\tldr r0, [r4]\n" + "\tldrb r0, [r0, 0xA]\n" + "\tbl GetUserFrameGraphicsInfo\n" + "\tldr r0, [r0, 0x4]\n" + "\tmovs r1, 0x20\n" + "\tmovs r2, 0x20\n" + "\tbl LoadPalette\n" + "\tldr r0, [r4]\n" + "\tb _0808886C\n" + "\t.align 2, 0\n" + "_08088854: .4byte sOptionsMenu\n" + "_08088858:\n" + "\tldr r0, _08088864 @ =sOptionsMenu\n" + "\tldr r0, [r0]\n" + "\tldrh r0, [r0, 0xE]\n" + "\tbl sub_8088DE0\n" + "\tb _080888B6\n" + "\t.align 2, 0\n" + "_08088864: .4byte sOptionsMenu\n" + "_08088868:\n" + "\tldr r0, _08088874 @ =sOptionsMenu\n" + "\tldr r0, [r0]\n" + "_0808886C:\n" + "\tldrb r0, [r0, 0xE]\n" + "\tbl sub_80889A8\n" + "\tb _080888B6\n" + "\t.align 2, 0\n" + "_08088874: .4byte sOptionsMenu\n" + "_08088878:\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tmovs r1, 0\n" + "\tstr r1, [sp]\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0x10\n" + "\tbl BeginNormalPaletteFade\n" + "\tldr r0, _08088890 @ =sOptionsMenu\n" + "\tldr r1, [r0]\n" + "\tb _080888A2\n" + "\t.align 2, 0\n" + "_08088890: .4byte sOptionsMenu\n" + "_08088894:\n" + "\tldr r0, _080888AC @ =gPaletteFade\n" + "\tldrb r1, [r0, 0x7]\n" + "\tmovs r0, 0x80\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _080888B6\n" + "\tldr r1, [r3]\n" + "_080888A2:\n" + "\tldrb r0, [r1, 0x10]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1, 0x10]\n" + "\tb _080888B6\n" + "\t.align 2, 0\n" + "_080888AC: .4byte gPaletteFade\n" + "_080888B0:\n" + "\tadds r0, r2, 0\n" + "\tbl sub_8088B00\n" + "_080888B6:\n" + "\tadd sp, 0x4\n" + "\tpop {r4}\n" + "\tpop {r0}\n" + "\tbx r0\n"); +} +#endif + + + //OptionsMenu_ProcessInput static u8 sub_80888C0(void) { - u16 current, selection; + u16 current; + u16* curr; if (gMain.newAndRepeatedKeys & DPAD_RIGHT) { - selection = 2 * sOptionsMenu->unkE; - current = sOptionsMenu->option[selection]; - - if (current == gUnknown_83CC304[selection] - 1) - sOptionsMenu->option[selection] = 0; + current = sOptionsMenu->option[(sOptionsMenu->unkE)]; + if (current == (gUnknown_83CC304[sOptionsMenu->unkE] - 1)) + sOptionsMenu->option[sOptionsMenu->unkE] = 0; else - sOptionsMenu->option[selection] = current + 1; + sOptionsMenu->option[sOptionsMenu->unkE] = current + 1; if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE) return 2; else @@ -364,12 +570,12 @@ static u8 sub_80888C0(void) } else if (gMain.newAndRepeatedKeys & DPAD_LEFT) { - selection = 2*sOptionsMenu->unkE; - current = sOptionsMenu->option[selection]; - if (current == 0) - sOptionsMenu->option[selection] = gUnknown_83CC304[selection] - 1; + curr = &sOptionsMenu->option[sOptionsMenu->unkE]; + if (*curr == 0) + *curr = gUnknown_83CC304[sOptionsMenu->unkE] - 1; else - sOptionsMenu->option[selection] = current - 1; + --*(curr); + if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE) return 2; else @@ -377,20 +583,18 @@ static u8 sub_80888C0(void) } else if (gMain.newAndRepeatedKeys & DPAD_UP) { - selection = sOptionsMenu->unkE; - if (selection == MENUITEM_TEXTSPEED) + if (sOptionsMenu->unkE == MENUITEM_TEXTSPEED) sOptionsMenu->unkE = MENUITEM_CANCEL; else - sOptionsMenu->unkE = selection - 1; + sOptionsMenu->unkE = sOptionsMenu->unkE - 1; return 3; } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - selection = sOptionsMenu->unkE; - if (selection == MENUITEM_CANCEL) + if (sOptionsMenu->unkE == MENUITEM_CANCEL) sOptionsMenu->unkE = MENUITEM_TEXTSPEED; else - sOptionsMenu->unkE = selection + 1; + sOptionsMenu->unkE = sOptionsMenu->unkE + 1; return 3; } else if ((gMain.newKeys & B_BUTTON) || (gMain.newKeys & A_BUTTON)) @@ -403,85 +607,22 @@ static u8 sub_80888C0(void) } } -/* -// must match with goto :( -bool sub_80888C0() -{ - int v0; // r0@2 - _WORD *v1; // r3@2 - int v2; // r4@2 - __int16 v3; // r0@3 - int v4; // r3@8 - __int16 v5; // r0@8 - int v7; // r1@14 - signed __int16 v8; // r0@15 - int v9; // r0@18 - - if (gMain.buttons4_new_and_keyrepeat & DPAD_RIGHT) - { - v0 = 2 * *(_WORD *)(sOptionsMenu + 14); - v1 = (_WORD *)(sOptionsMenu + v0); - v2 = *(_WORD *)(sOptionsMenu + v0); - if ( v2 == *(_WORD *)((char *)&sOptionsMenuItemCounts + v0) - 1 ) - v3 = 0; - else - v3 = v2 + 1; - *v1 = v3; - if ( *(_WORD *)(sOptionsMenu + 14) != 5 ) - return 4; - return 2; - } - if ( gMain.buttons4_new_and_keyrepeat & DPAD_LEFT ) - { - v4 = 2 * *(_WORD *)(sOptionsMenu + 14); - v5 = *(_WORD *)(sOptionsMenu + v4); - if ( !*(_WORD *)(sOptionsMenu + v4) ) - v5 = *(_WORD *)((char *)&sOptionsMenuItemCounts + v4); - *(_WORD *)(sOptionsMenu + v4) = v5 - 1; - if ( *(_WORD *)(sOptionsMenu + 14) != 5 ) - return 4; - return 2; - } - if ( gMain.buttons4_new_and_keyrepeat & 0x40 ) - { - v7 = sOptionsMenu; - if ( *(_WORD *)(sOptionsMenu + 14) ) - v8 = *(_WORD *)(sOptionsMenu + 14) - 1; - else - v8 = 6; - goto LABEL_21; - } - if ( gMain.buttons4_new_and_keyrepeat & 0x80 ) - { - v7 = sOptionsMenu; - v9 = *(_WORD *)(sOptionsMenu + 14); - if ( v9 == 6 ) - { - *(_WORD *)(sOptionsMenu + 14) = 0; - return 3; - } - v8 = v9 + 1; -LABEL_21: - *(_WORD *)(v7 + 14) = v8; - return 3; - } - return gMain.buttons3_new_remapped & 2 || gMain.buttons3_new_remapped & 1; -} -*/ - //sub_80889A8 +#ifdef NONMATCHING // could not get it to match perfectly, no idea how they put so many vars on the stack static void sub_80889A8(u8 selection) { u8* dst; u8* str; - u8* v8; + u8* v8; u8 x, y; + u8** col; - x = 0x82; - memcpy(dst, gUnknown_83CC363, 3); + memcpy(&dst, gUnknown_83CC363, 3); y = ((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) - 1) * selection) + 2; + x = 0x82; FillWindowPixelRect(1, 1, x, y, 0x46, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); + switch (selection) { case MENUITEM_TEXTSPEED: @@ -501,7 +642,7 @@ static void sub_80889A8(u8 selection) break; case MENUITEM_FRAMETYPE: StringCopy(str, gUnknown_8419E52); - ConvertIntToDecimalStringN(v8, sOptionsMenu->option[2*selection] + 1, 1, 2); + ConvertIntToDecimalStringN(v8, sOptionsMenu->option[2*selection] + 1, 1, 2); StringAppendN(str, v8, 3); AddTextPrinterParameterized3(1, 2, x, y, dst, -1, str); break; @@ -511,6 +652,173 @@ static void sub_80889A8(u8 selection) PutWindowTilemap(1); CopyWindowToVram(1, 3); } +#else +NAKED +static void sub_80889A8(u8 selection) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r8\n" + "\tpush {r7}\n" + "\tsub sp, 0x30\n" + "\tlsls r0, 24\n" + "\tlsrs r5, r0, 24\n" + "\tadd r4, sp, 0x2C\n" + "\tldr r1, _08088A08 @ =gUnknown_83CC363\n" + "\tadds r0, r4, 0\n" + "\tmovs r2, 0x3\n" + "\tbl memcpy\n" + "\tmovs r0, 0x82\n" + "\tmov r8, r0\n" + "\tmovs r0, 0x2\n" + "\tmovs r1, 0x1\n" + "\tbl GetFontAttribute\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tsubs r0, 0x1\n" + "\tmuls r0, r5\n" + "\tadds r0, 0x2\n" + "\tlsls r0, 24\n" + "\tlsrs r7, r0, 24\n" + "\tmovs r0, 0x2\n" + "\tmovs r1, 0x1\n" + "\tbl GetFontAttribute\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmovs r1, 0x46\n" + "\tstr r1, [sp]\n" + "\tstr r0, [sp, 0x4]\n" + "\tmovs r0, 0x1\n" + "\tmovs r1, 0x1\n" + "\tmovs r2, 0x82\n" + "\tadds r3, r7, 0\n" + "\tbl FillWindowPixelRect\n" + "\tadds r6, r4, 0\n" + "\tcmp r5, 0x5\n" + "\tbhi _08088ADE\n" + "\tlsls r0, r5, 2\n" + "\tldr r1, _08088A0C @ =_08088A10\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_08088A08: .4byte gUnknown_83CC363\n" + "_08088A0C: .4byte _08088A10\n" + "\t.align 2, 0\n" + "_08088A10:\n" + "\t.4byte _08088A28\n" + "\t.4byte _08088A38\n" + "\t.4byte _08088A48\n" + "\t.4byte _08088A58\n" + "\t.4byte _08088A68\n" + "\t.4byte _08088A9C\n" + "_08088A28:\n" + "\tstr r6, [sp]\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tstr r0, [sp, 0x4]\n" + "\tldr r2, _08088A34 @ =gUnknown_83CC330\n" + "\tb _08088A72\n" + "\t.align 2, 0\n" + "_08088A34: .4byte gUnknown_83CC330\n" + "_08088A38:\n" + "\tstr r6, [sp]\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tstr r0, [sp, 0x4]\n" + "\tldr r2, _08088A44 @ =gUnknown_83CC33C\n" + "\tb _08088A72\n" + "\t.align 2, 0\n" + "_08088A44: .4byte gUnknown_83CC33C\n" + "_08088A48:\n" + "\tstr r6, [sp]\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tstr r0, [sp, 0x4]\n" + "\tldr r2, _08088A54 @ =gUnknown_83CC344\n" + "\tb _08088A72\n" + "\t.align 2, 0\n" + "_08088A54: .4byte gUnknown_83CC344\n" + "_08088A58:\n" + "\tstr r6, [sp]\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tstr r0, [sp, 0x4]\n" + "\tldr r2, _08088A64 @ =gUnknown_83CC34C\n" + "\tb _08088A72\n" + "\t.align 2, 0\n" + "_08088A64: .4byte gUnknown_83CC34C\n" + "_08088A68:\n" + "\tstr r6, [sp]\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tstr r0, [sp, 0x4]\n" + "\tldr r2, _08088A94 @ =gUnknown_83CC354\n" + "_08088A72:\n" + "\tldr r0, _08088A98 @ =sOptionsMenu\n" + "\tldr r0, [r0]\n" + "\tlsls r1, r5, 1\n" + "\tadds r0, r1\n" + "\tldrh r0, [r0]\n" + "\tlsls r0, 2\n" + "\tadds r0, r2\n" + "\tldr r0, [r0]\n" + "\tstr r0, [sp, 0x8]\n" + "\tmovs r0, 0x1\n" + "\tmovs r1, 0x2\n" + "\tmov r2, r8\n" + "\tadds r3, r7, 0\n" + "\tbl AddTextPrinterParameterized3\n" + "\tb _08088ADE\n" + "\t.align 2, 0\n" + "_08088A94: .4byte gUnknown_83CC354\n" + "_08088A98: .4byte sOptionsMenu\n" + "_08088A9C:\n" + "\tldr r1, _08088AF8 @ =gUnknown_8419E52\n" + "\tadd r0, sp, 0xC\n" + "\tbl StringCopy\n" + "\tadd r4, sp, 0x20\n" + "\tldr r0, _08088AFC @ =sOptionsMenu\n" + "\tldr r0, [r0]\n" + "\tlsls r1, r5, 1\n" + "\tadds r0, r1\n" + "\tldrh r1, [r0]\n" + "\tadds r1, 0x1\n" + "\tadds r0, r4, 0\n" + "\tmovs r2, 0x1\n" + "\tmovs r3, 0x2\n" + "\tbl ConvertIntToDecimalStringN\n" + "\tadd r0, sp, 0xC\n" + "\tadds r1, r4, 0\n" + "\tmovs r2, 0x3\n" + "\tbl StringAppendN\n" + "\tstr r6, [sp]\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tstr r0, [sp, 0x4]\n" + "\tadd r0, sp, 0xC\n" + "\tstr r0, [sp, 0x8]\n" + "\tmovs r0, 0x1\n" + "\tmovs r1, 0x2\n" + "\tmov r2, r8\n" + "\tadds r3, r7, 0\n" + "\tbl AddTextPrinterParameterized3\n" + "_08088ADE:\n" + "\tmovs r0, 0x1\n" + "\tbl PutWindowTilemap\n" + "\tmovs r0, 0x1\n" + "\tmovs r1, 0x3\n" + "\tbl CopyWindowToVram\n" + "\tadd sp, 0x30\n" + "\tpop {r3}\n" + "\tmov r8, r3\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_08088AF8: .4byte gUnknown_8419E52\n" + "_08088AFC: .4byte sOptionsMenu\n"); +} +#endif //sub_8088B00 @@ -520,20 +828,20 @@ static void sub_8088B00(u8 taskId) SetMainCallback2(gMain.savedCallback); FreeAllWindowBuffers(); - gSaveBlock2Ptr->optionsTextSpeed = sOptionsMenu->option[MENUITEM_TEXTSPEED] & 0x7; - gSaveBlock2Ptr->optionsBattleSceneOff = sOptionsMenu->option[MENUITEM_BATTLESCENE] & 0x1; - gSaveBlock2Ptr->optionsBattleStyle = sOptionsMenu->option[MENUITEM_BATTLESTYLE] & 0x1; - gSaveBlock2Ptr->optionsSound = sOptionsMenu->option[MENUITEM_SOUND] & 0x1; - gSaveBlock2Ptr->optionsButtonMode = sOptionsMenu->option[MENUITEM_BUTTONMODE]; - gSaveBlock2Ptr->optionsWindowFrameType = sOptionsMenu->option[MENUITEM_FRAMETYPE]; - + gSaveBlock2Ptr->optionsTextSpeed = (u8) sOptionsMenu->option[MENUITEM_TEXTSPEED]; + gSaveBlock2Ptr->optionsBattleSceneOff = (u8) sOptionsMenu->option[MENUITEM_BATTLESCENE]; + gSaveBlock2Ptr->optionsBattleStyle = (u8) sOptionsMenu->option[MENUITEM_BATTLESTYLE]; + gSaveBlock2Ptr->optionsSound = sOptionsMenu->option[MENUITEM_SOUND]; + gSaveBlock2Ptr->optionsButtonMode = (u8) sOptionsMenu->option[MENUITEM_BUTTONMODE]; + gSaveBlock2Ptr->optionsWindowFrameType = (u8) sOptionsMenu->option[MENUITEM_FRAMETYPE]; SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); - Free(sOptionsMenu); + Free(sOptionsMenu); sOptionsMenu = NULL; - DestroyTask(taskId); + DestroyTask(taskId); } - + + //sub_8088BD0 static void sub_8088BD0(void) { @@ -545,24 +853,28 @@ static void sub_8088BD0(void) //sub_8088C0C +//double check static void sub_8088C0C(void) { + u8 h; + h = 2; + FillBgTilemapBufferRect(1, 0x1B3, 1, 2, 1, 1, 3); FillBgTilemapBufferRect(1, 0x1B4, 2, 2, 0x1B, 1, 3); FillBgTilemapBufferRect(1, 0x1B5, 0x1C, 2, 1, 1, 3); - FillBgTilemapBufferRect(1, 0x1B6, 1, 3, 1, 2, 3); - FillBgTilemapBufferRect(1, 0x1B8, 1, 0x1C, 1, 2, 3); - FillBgTilemapBufferRect(1, 0x1B9, 1, 5, 1, 1, 3); + FillBgTilemapBufferRect(1, 0x1B6, 1, 3, 1, h, 3); + FillBgTilemapBufferRect(1, 0x1B8, 1, 0x1C, 1, h, 3); + FillBgTilemapBufferRect(1, 0x1B9, 1, 5, 1, 1, 3); FillBgTilemapBufferRect(1, 0x1BA, 2, 5, 0x1B, 1, 3); FillBgTilemapBufferRect(1, 0x1BB, 0x1C, 5, 1, 1, 3); - FillBgTilemapBufferRect(1, 0x1AA, 1, 6, 1, 1, 2); - FillBgTilemapBufferRect(1, 0x1AB, 2, 6, 0x1A, 1, 2); - FillBgTilemapBufferRect(1, 0x1AC, 0x1C, 6, 1, 1, 2); - FillBgTilemapBufferRect(1, 0x1AD, 1, 7, 1, 0x10, 2); - FillBgTilemapBufferRect(1, 0x1AF, 0x1C, 7, 1, 0x10, 2); - FillBgTilemapBufferRect(1, 0x1B0, 1, 0x13, 1, 1, 2); - FillBgTilemapBufferRect(1, 0x1B1, 2, 0x13, 0x1A, 1, 2); - FillBgTilemapBufferRect(1, 0x1B2, 0x1C, 0x13, 1, 1, 2); + FillBgTilemapBufferRect(1, 0x1AA, 1, 6, 1, 1, h); + FillBgTilemapBufferRect(1, 0x1AB, 2, 6, 0x1A, 1, h); + FillBgTilemapBufferRect(1, 0x1AC, 0x1C, 6, 1, 1, h); + FillBgTilemapBufferRect(1, 0x1AD, 1, 7, 1, 0x10, h); + FillBgTilemapBufferRect(1, 0x1AF, 0x1C, 7, 1, 0x10, h); + FillBgTilemapBufferRect(1, 0x1B0, 1, 0x13, 1, 1, h); + FillBgTilemapBufferRect(1, 0x1B1, 2, 0x13, 0x1A, 1, h); + FillBgTilemapBufferRect(1, 0x1B2, 0x1C, 0x13, 1, 1, h); CopyBgTilemapBufferToVram(1); } @@ -571,20 +883,25 @@ static void sub_8088C0C(void) static void sub_8088D8C(void) { int i; - u8 attr; + u8 y; FillWindowPixelBuffer(1, 0x11); for (i = 0; i < MENUITEM_COUNT; i++) { - attr = (((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))*i) + 2) - i; - AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, attr, 0xFF, 0); + //AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, (u8) ((i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))) + 2) - i, 0xFF, 0); + //gets registers right, but an lsl/lsr 0x18 after GetFontAttribute that shouldn't be there + y = i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); + y += 2; + y -= i; + AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, y, 0xFF, 0); + } } //sub_8088DE0 -static void sub_8088DE0(u8 selection) +static void sub_8088DE0(u16 selection) { u8 attr; attr = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT); From 42185e5c3addd2d3041294d72996e230d6c42808 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 19 Nov 2019 06:54:40 +0800 Subject: [PATCH 13/49] OakSpeechNidoranFSetup --- src/pokemon.c | 356 +------------------------------------------------- 1 file changed, 6 insertions(+), 350 deletions(-) diff --git a/src/pokemon.c b/src/pokemon.c index c4ae0c4da..de90a9889 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -6094,7 +6094,6 @@ static void OakSpeechNidoranFSetupTemplateDummy(struct OakSpeechNidoranFStruct * } } -#ifdef NONMATCHING struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8 enable) { s32 size; @@ -6134,8 +6133,7 @@ struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8 battlePosition = 1; if (battlePosition > 8) battlePosition = 8; - // The following two statements refused to cooperate. - sOakSpeechNidoranResources->spriteCount = battlePosition; + sOakSpeechNidoranResources->spriteCount = (battlePosition << 16) >> 16; sOakSpeechNidoranResources->battlePosition = battlePosition; sOakSpeechNidoranResources->frameCount = 4; sOakSpeechNidoranResources->enable2 = FALSE; @@ -6151,8 +6149,11 @@ struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8 } else { - for (i = 0; i < (s8)sOakSpeechNidoranResources->spriteCount; ++i) - sOakSpeechNidoranResources->bufferPtrs[i] = &sOakSpeechNidoranResources->dataBuffer[sOakSpeechNidoranResources->sizePerSprite * i]; + do + { + for (i = 0; i < (s8)sOakSpeechNidoranResources->spriteCount; ++i) + sOakSpeechNidoranResources->bufferPtrs[i] = &sOakSpeechNidoranResources->dataBuffer[sOakSpeechNidoranResources->sizePerSprite * i]; + } while (0); } sOakSpeechNidoranResources->templates = AllocZeroed(sizeof(struct SpriteTemplate) * sOakSpeechNidoranResources->spriteCount); sOakSpeechNidoranResources->frameImages = AllocZeroed(sOakSpeechNidoranResources->spriteCount * sizeof(struct SpriteFrameImage) * sOakSpeechNidoranResources->frameCount); @@ -6200,351 +6201,6 @@ struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8 } return sOakSpeechNidoranResources; } -#else -NAKED -struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8 enable) -{ - asm_unified("\n\ - push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - lsls r1, 24\n\ - lsrs r5, r1, 24\n\ - movs r0, 0\n\ - mov r8, r0\n\ - ldr r4, _08044B34 @ =sOakSpeechNidoranResources\n\ - ldr r1, [r4]\n\ - cmp r1, 0\n\ - beq _08044B1E\n\ - ldrb r0, [r1, 0x2]\n\ - cmp r0, 0xA3\n\ - beq _08044B2E\n\ - adds r0, r1, 0\n\ - movs r1, 0\n\ - movs r2, 0x18\n\ - bl memset\n\ - mov r1, r8\n\ - str r1, [r4]\n\ - _08044B1E:\n\ - ldr r4, _08044B34 @ =sOakSpeechNidoranResources\n\ - movs r0, 0x18\n\ - bl AllocZeroed\n\ - adds r2, r0, 0\n\ - str r2, [r4]\n\ - cmp r2, 0\n\ - bne _08044B38\n\ - _08044B2E:\n\ - movs r0, 0\n\ - b _08044D70\n\ - .align 2, 0\n\ - _08044B34: .4byte sOakSpeechNidoranResources\n\ - _08044B38:\n\ - cmp r5, 0\n\ - beq _08044B94\n\ - cmp r5, 0x1\n\ - bne _08044B94\n\ - cmp r6, 0x4\n\ - bne _08044B5E\n\ - ldrb r1, [r2]\n\ - movs r0, 0x10\n\ - negs r0, r0\n\ - ands r0, r1\n\ - movs r1, 0x4\n\ - orrs r0, r1\n\ - strb r0, [r2]\n\ - ldr r2, [r4]\n\ - ldrb r1, [r2]\n\ - movs r0, 0xF\n\ - ands r0, r1\n\ - movs r1, 0x40\n\ - b _08044B7C\n\ - _08044B5E:\n\ - cmp r6, 0x4\n\ - bls _08044B64\n\ - movs r6, 0\n\ - _08044B64:\n\ - ldrb r1, [r2]\n\ - movs r0, 0x10\n\ - negs r0, r0\n\ - ands r0, r1\n\ - movs r1, 0x1\n\ - orrs r0, r1\n\ - strb r0, [r2]\n\ - ldr r2, [r4]\n\ - ldrb r1, [r2]\n\ - movs r0, 0xF\n\ - ands r0, r1\n\ - movs r1, 0x10\n\ - _08044B7C:\n\ - orrs r0, r1\n\ - strb r0, [r2]\n\ - ldr r2, _08044B90 @ =sOakSpeechNidoranResources\n\ - ldr r1, [r2]\n\ - movs r0, 0x4\n\ - strb r0, [r1, 0x1]\n\ - ldr r1, [r2]\n\ - movs r0, 0x1\n\ - strb r0, [r1, 0x3]\n\ - b _08044BD0\n\ - .align 2, 0\n\ - _08044B90: .4byte sOakSpeechNidoranResources\n\ - _08044B94:\n\ - cmp r6, 0\n\ - bne _08044B9A\n\ - movs r6, 0x1\n\ - _08044B9A:\n\ - cmp r6, 0x8\n\ - bls _08044BA0\n\ - movs r6, 0x8\n\ - _08044BA0:\n\ - ldr r4, _08044C10 @ =sOakSpeechNidoranResources\n\ - ldr r3, [r4]\n\ - movs r0, 0xF\n\ - adds r1, r6, 0\n\ - ands r1, r0\n\ - ldrb r2, [r3]\n\ - movs r0, 0x10\n\ - negs r0, r0\n\ - ands r0, r2\n\ - orrs r0, r1\n\ - strb r0, [r3]\n\ - ldr r2, [r4]\n\ - lsls r3, r6, 4\n\ - ldrb r1, [r2]\n\ - movs r0, 0xF\n\ - ands r0, r1\n\ - orrs r0, r3\n\ - strb r0, [r2]\n\ - ldr r1, [r4]\n\ - movs r2, 0\n\ - movs r0, 0x4\n\ - strb r0, [r1, 0x1]\n\ - ldr r0, [r4]\n\ - strb r2, [r0, 0x3]\n\ - _08044BD0:\n\ - ldr r5, _08044C10 @ =sOakSpeechNidoranResources\n\ - ldr r0, [r5]\n\ - ldrb r1, [r0, 0x1]\n\ - lsls r1, 11\n\ - str r1, [r0, 0x4]\n\ - ldrb r0, [r0]\n\ - lsls r0, 28\n\ - lsrs r0, 28\n\ - muls r0, r1\n\ - bl AllocZeroed\n\ - ldr r1, [r5]\n\ - str r0, [r1, 0x8]\n\ - ldrb r0, [r1]\n\ - lsls r0, 28\n\ - lsrs r0, 23\n\ - bl AllocZeroed\n\ - adds r2, r0, 0\n\ - ldr r1, [r5]\n\ - str r2, [r1, 0xC]\n\ - ldr r0, [r1, 0x8]\n\ - cmp r0, 0\n\ - beq _08044C04\n\ - cmp r2, 0\n\ - bne _08044C14\n\ - _08044C04:\n\ - movs r0, 0x1\n\ - mov r1, r8\n\ - orrs r1, r0\n\ - mov r8, r1\n\ - b _08044C44\n\ - .align 2, 0\n\ - _08044C10: .4byte sOakSpeechNidoranResources\n\ - _08044C14:\n\ - ldrb r0, [r1]\n\ - lsls r0, 28\n\ - movs r4, 0\n\ - adds r3, r5, 0\n\ - cmp r0, 0\n\ - beq _08044C44\n\ - _08044C20:\n\ - ldr r3, [r5]\n\ - ldr r0, [r3, 0xC]\n\ - lsls r1, r4, 2\n\ - adds r1, r0\n\ - ldr r0, [r3, 0x4]\n\ - adds r2, r0, 0\n\ - muls r2, r4\n\ - ldr r0, [r3, 0x8]\n\ - adds r0, r2\n\ - str r0, [r1]\n\ - adds r0, r4, 0x1\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - ldrb r0, [r3]\n\ - lsls r0, 28\n\ - lsrs r0, 28\n\ - cmp r4, r0\n\ - blt _08044C20\n\ - _08044C44:\n\ - ldr r5, _08044C8C @ =sOakSpeechNidoranResources\n\ - ldr r0, [r5]\n\ - ldrb r1, [r0]\n\ - lsls r1, 28\n\ - lsrs r1, 28\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r0, 3\n\ - bl AllocZeroed\n\ - ldr r2, [r5]\n\ - str r0, [r2, 0x10]\n\ - ldrb r1, [r2]\n\ - lsls r1, 28\n\ - lsrs r1, 28\n\ - ldrb r0, [r2, 0x1]\n\ - lsls r0, 3\n\ - muls r0, r1\n\ - bl AllocZeroed\n\ - adds r2, r0, 0\n\ - ldr r1, [r5]\n\ - str r2, [r1, 0x14]\n\ - ldr r0, [r1, 0x10]\n\ - cmp r0, 0\n\ - beq _08044C7C\n\ - cmp r2, 0\n\ - bne _08044C90\n\ - _08044C7C:\n\ - movs r0, 0x2\n\ - mov r1, r8\n\ - orrs r1, r0\n\ - lsls r0, r1, 24\n\ - lsrs r0, 24\n\ - mov r8, r0\n\ - b _08044CE2\n\ - .align 2, 0\n\ - _08044C8C: .4byte sOakSpeechNidoranResources\n\ - _08044C90:\n\ - movs r4, 0\n\ - ldrb r0, [r1, 0x1]\n\ - ldrb r1, [r1]\n\ - lsls r1, 28\n\ - lsrs r1, 28\n\ - muls r0, r1\n\ - adds r3, r5, 0\n\ - cmp r4, r0\n\ - bge _08044CC6\n\ - adds r7, r3, 0\n\ - movs r5, 0x80\n\ - lsls r5, 4\n\ - _08044CA8:\n\ - ldr r2, [r7]\n\ - ldr r1, [r2, 0x14]\n\ - lsls r0, r4, 3\n\ - adds r0, r1\n\ - strh r5, [r0, 0x4]\n\ - adds r0, r4, 0x1\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - ldrb r1, [r2, 0x1]\n\ - ldrb r0, [r2]\n\ - lsls r0, 28\n\ - lsrs r0, 28\n\ - muls r0, r1\n\ - cmp r4, r0\n\ - blt _08044CA8\n\ - _08044CC6:\n\ - ldr r0, [r3]\n\ - ldrb r4, [r0, 0x3]\n\ - cmp r4, 0\n\ - beq _08044CDA\n\ - cmp r4, 0x1\n\ - bne _08044CDA\n\ - adds r1, r6, 0\n\ - bl OakSpeechNidoranFSetupTemplate\n\ - b _08044CE2\n\ - _08044CDA:\n\ - ldr r0, _08044D60 @ =sOakSpeechNidoranResources\n\ - ldr r0, [r0]\n\ - bl OakSpeechNidoranFSetupTemplateDummy\n\ - _08044CE2:\n\ - movs r0, 0x2\n\ - mov r1, r8\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08044D12\n\ - ldr r4, _08044D60 @ =sOakSpeechNidoranResources\n\ - ldr r0, [r4]\n\ - ldr r0, [r0, 0x14]\n\ - cmp r0, 0\n\ - beq _08044D00\n\ - bl Free\n\ - ldr r1, [r4]\n\ - movs r0, 0\n\ - str r0, [r1, 0x14]\n\ - _08044D00:\n\ - ldr r0, [r4]\n\ - ldr r0, [r0, 0x10]\n\ - cmp r0, 0\n\ - beq _08044D12\n\ - bl Free\n\ - ldr r1, [r4]\n\ - movs r0, 0\n\ - str r0, [r1, 0x10]\n\ - _08044D12:\n\ - movs r0, 0x1\n\ - mov r1, r8\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08044D42\n\ - ldr r4, _08044D60 @ =sOakSpeechNidoranResources\n\ - ldr r0, [r4]\n\ - ldr r0, [r0, 0xC]\n\ - cmp r0, 0\n\ - beq _08044D30\n\ - bl Free\n\ - ldr r1, [r4]\n\ - movs r0, 0\n\ - str r0, [r1, 0xC]\n\ - _08044D30:\n\ - ldr r0, [r4]\n\ - ldr r0, [r0, 0x8]\n\ - cmp r0, 0\n\ - beq _08044D42\n\ - bl Free\n\ - ldr r1, [r4]\n\ - movs r0, 0\n\ - str r0, [r1, 0x8]\n\ - _08044D42:\n\ - mov r0, r8\n\ - cmp r0, 0\n\ - beq _08044D64\n\ - ldr r4, _08044D60 @ =sOakSpeechNidoranResources\n\ - ldr r0, [r4]\n\ - movs r1, 0\n\ - movs r2, 0x18\n\ - bl memset\n\ - ldr r0, [r4]\n\ - bl Free\n\ - movs r0, 0\n\ - str r0, [r4]\n\ - b _08044D6C\n\ - .align 2, 0\n\ - _08044D60: .4byte sOakSpeechNidoranResources\n\ - _08044D64:\n\ - ldr r0, _08044D7C @ =sOakSpeechNidoranResources\n\ - ldr r1, [r0]\n\ - movs r0, 0xA3\n\ - strb r0, [r1, 0x2]\n\ - _08044D6C:\n\ - ldr r0, _08044D7C @ =sOakSpeechNidoranResources\n\ - ldr r0, [r0]\n\ - _08044D70:\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ - _08044D7C: .4byte sOakSpeechNidoranResources\n\ - "); -} -#endif void OakSpeechNidoranFFreeResources(void) { From 6fb437f9eb64e0df62a8b8ad7f28bfd92a2a986f Mon Sep 17 00:00:00 2001 From: Evan Date: Mon, 18 Nov 2019 21:03:51 -0700 Subject: [PATCH 14/49] matching rom --- data/option_menu.s | 33 ++++----- data/strings.s | 30 ++++---- graphics/misc/unk_83cc2e4.pal | 19 +++++ include/menu_helpers.h | 2 +- include/strings.h | 14 ++++ src/menu_helpers.c | 2 +- src/option_menu.c | 130 ++++++++++++++++++---------------- 7 files changed, 137 insertions(+), 93 deletions(-) create mode 100644 graphics/misc/unk_83cc2e4.pal diff --git a/data/option_menu.s b/data/option_menu.s index 098e76f31..f8a590d6d 100644 --- a/data/option_menu.s +++ b/data/option_menu.s @@ -1,43 +1,44 @@ #include "constants/maps.h" #include "constants/species.h" - .include "asm/macros.inc" - .include "constants/constants.inc" + .include "asm/macros.inc" + .include "constants/constants.inc" - .section .rodata - .align 2 + .section .rodata + .align 2 gUnknown_83CC2B8:: @ 83CC2B8 - .incbin "baserom.gba", 0x3CC2B8, 0x20 + .incbin "baserom.gba", 0x3CC2B8, 0x20 gUnknown_83CC2D8:: @ 83CC2D8 - .incbin "baserom.gba", 0x3CC2D8, 0xC + .incbin "baserom.gba", 0x3CC2D8, 0xC gUnknown_83CC2E4:: @ 83CC2E4 - .incbin "baserom.gba", 0x3CC2E4, 0x20 + .incbin "baserom.gba", 0x3CC2E4, 0x20 gUnknown_83CC304:: @ 83CC304 - .incbin "baserom.gba", 0x3CC304, 0x10 + .incbin "baserom.gba", 0x3CC304, 0x10 gUnknown_83CC314:: @ 83CC314 - .incbin "baserom.gba", 0x3CC314, 0x1C + .incbin "baserom.gba", 0x3CC314, 0x1C gUnknown_83CC330:: @ 83CC330 - .incbin "baserom.gba", 0x3CC330, 0xC + .incbin "baserom.gba", 0x3CC330, 0xC gUnknown_83CC33C:: @ 83CC33C - .incbin "baserom.gba", 0x3CC33C, 0x8 + .incbin "baserom.gba", 0x3CC33C, 0x8 gUnknown_83CC344:: @ 83CC344 - .incbin "baserom.gba", 0x3CC344, 0x8 + .incbin "baserom.gba", 0x3CC344, 0x8 gUnknown_83CC34C:: @ 83CC34C - .incbin "baserom.gba", 0x3CC34C, 0x8 + .incbin "baserom.gba", 0x3CC34C, 0x8 gUnknown_83CC354:: @ 83CC354 - .incbin "baserom.gba", 0x3CC354, 0xC + .incbin "baserom.gba", 0x3CC354, 0xC gUnknown_83CC360:: @ 83CC360 - .incbin "baserom.gba", 0x3CC360, 0x3 + .incbin "baserom.gba", 0x3CC360, 0x3 gUnknown_83CC363:: @ 83CC363 - .incbin "baserom.gba", 0x3CC363, 0x3 + .incbin "baserom.gba", 0x3CC363, 0x3 + diff --git a/data/strings.s b/data/strings.s index 14a4472e3..a75671090 100644 --- a/data/strings.s +++ b/data/strings.s @@ -2904,7 +2904,7 @@ gUnknown_8419D89:: @ 8419D89 .string "Waiting for the other TRAINER to\n" .string "finish reading your TRAINER CARD.$" -gUnknown_8419DCC:: @ 8419DCC +gText_MenuOptionOption:: @ 8419DCC .string "OPTION$" gText_TextSpeed:: @ 0x8419DD3 @@ -2928,49 +2928,49 @@ gText_Frame:: @ 0x8419E0A gText_OptionMenuCancel:: @ 0x8419E10 .string "CANCEL$" -gUnknown_8419E17:: @ 0x8419E17 +gText_TextSpeedSlow:: @ 0x8419E17 .string "SLOW$" -gUnknown_8419E1C:: @ 0x8419E1C +gText_TextSpeedMid:: @ 0x8419E1C .string "MID$" -gUnknown_8419E20:: @ 0x8419E20 +gText_TextSpeedFast:: @ 0x8419E20 .string "FAST$" -gUnknown_8419E25:: @ 0x8419E25 +gText_BattleSceneOn:: @ 0x8419E25 .string "ON$" -gUnknown_8419E28:: @ 0x8419E28 +gText_BattleSceneOff:: @ 0x8419E28 .string "OFF$" -gUnknown_8419E2C:: @ 0x8419E2C +gText_BattleStyleShift:: @ 0x8419E2C .string "SHIFT$" -gUnknown_8419E32:: @ 0x8419E32 +gText_BattleStyleSet:: @ 0x8419E32 .string "SET$" -gUnknown_8419E36:: @ 0x8419E36 +gText_SoundMono:: @ 0x8419E36 .string "MONO$" -gUnknown_8419E3B:: @ 0x8419E3B +gText_SoundStereo:: @ 0x8419E3B .string "STEREO$" gUnknown_8419E42:: @ 0x8419E42 .string "タイプ$" -gUnknown_8419E46:: @ 0x8419E46 +gText_ButtonTypeNormal:: @ 0x8419E46 .string "HELP$" -gUnknown_8419E4B:: @ 0x8419E4B +gText_ButtonTypeLR:: @ 0x8419E4B .string "LゅA$" -gUnknown_8419E4F:: @ 0x8419E4F +gText_ButtonTypeLEqualsA:: @ 0x8419E4F .string "LR$" -gUnknown_8419E52:: @ 8419E52 +gText_FrameType:: @ 8419E52 .string "TYPE$" -gUnknown_8419E57:: @ 8419E57 +gText_PickSwitchCancel:: @ 8419E57 .string "{DPAD_UPDOWN}PICK {DPAD_LEFTRIGHT}SWITCH {A_BUTTON}{B_BUTTON}CANCEL$" gUnknown_8419E72:: @ 0x8419E72 diff --git a/graphics/misc/unk_83cc2e4.pal b/graphics/misc/unk_83cc2e4.pal new file mode 100644 index 000000000..b2172775f --- /dev/null +++ b/graphics/misc/unk_83cc2e4.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 255 255 +99 99 99 +214 214 206 +230 8 8 +255 189 115 +33 156 8 +148 247 148 +49 82 206 +165 197 247 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/include/menu_helpers.h b/include/menu_helpers.h index 8d042825c..6ea771500 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -12,7 +12,7 @@ struct YesNoFuncTable }; bool16 RunTextPrinters_CheckActive(u8 textPrinterId); -bool32 sub_80BF72C(void); +bool8 sub_80BF72C(void); bool8 sub_80BF748(void); bool8 MenuHelpers_LinkSomething(void); void SetVBlankHBlankCallbacksToNull(void); diff --git a/include/strings.h b/include/strings.h index bdef1b956..9f11d8fc2 100644 --- a/include/strings.h +++ b/include/strings.h @@ -749,6 +749,20 @@ extern const u8 gText_Sound[]; extern const u8 gText_ButtonMode[]; extern const u8 gText_Frame[]; extern const u8 gText_OptionMenuCancel[]; +extern const u8 gText_TextSpeedSlow[]; +extern const u8 gText_TextSpeedMid[]; +extern const u8 gText_TextSpeedFast[]; +extern const u8 gText_BattleSceneOn[]; +extern const u8 gText_BattleSceneOff[]; +extern const u8 gText_BattleStyleShift[]; +extern const u8 gText_BattleStyleSet[]; +extern const u8 gText_SoundMono[]; +extern const u8 gText_SoundStereo[]; +extern const u8 gText_ButtonTypeNormal[]; +extern const u8 gText_ButtonTypeLR[]; +extern const u8 gText_ButtonTypeLEqualsA[]; +extern const u8 gText_MenuOptionOption[]; +extern const u8 gText_FrameType[]; extern const u8 gText_PickSwitchCancel[]; diff --git a/src/menu_helpers.c b/src/menu_helpers.c index 027280beb..06e7bb08b 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -125,7 +125,7 @@ bool8 MenuHelpers_LinkSomething(void) return FALSE; } -bool32 sub_80BF72C(void) +bool8 sub_80BF72C(void) { if (!MenuHelpers_LinkSomething()) return FALSE; diff --git a/src/option_menu.c b/src/option_menu.c index c98a2ec7b..c1cde37a6 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -36,11 +36,10 @@ enum enum { WIN_TEXT_OPTION, - WIN_OPTIONS + WIN_OPTIONS, }; - /* -static const struct WindowTemplate gUnknown_83CC2B8[] = //sOptionMenuWinTemplates +static const struct WindowTemplate gUnknown_83CC2B8[] = //3CC2B8 -> sOptionMenuWinTemplates { { .bg = 1, @@ -49,20 +48,29 @@ static const struct WindowTemplate gUnknown_83CC2B8[] = //sOptionMenuWinTempl .width = 26, .height = 2, .paletteNum = 1, - .baseBlock = 2 + .baseBlock = 2, }, { .bg = 0, .tilemapLeft = 2, - .tilemapTop =7, + .tilemapTop = 7, .width = 26, .height = 12, .paletteNum = 1, - .baseBlock = 0x36 + .baseBlock = 0x36, }, - DUMMY_WIN_TEMPLATE + { + .bg = 2, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 30, + .height = 2, + .paletteNum = 0xF, + .baseBlock = 0x16e, + }, + DUMMY_WIN_TEMPLATE, }; -static const struct BgTemplate gUnknown_83CC2D8[] = //sOptionMenuBgTemplates +static const struct BgTemplate gUnknown_83CC2D8[] = //3CC2D8 -> sOptionMenuBgTemplates { { .bg = 1, @@ -81,12 +89,20 @@ static const struct BgTemplate gUnknown_83CC2D8[] = //sOptionMenuBgTemplates .paletteMode = 0, .priority = 1, .baseTile = 0 - } + }, + { + .bg = 2, + .charBaseIndex = 1, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0, + }, }; - - -static const u16 gUnknown_83CC304[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0}; //sOptionsMenuItemCounts -static const u8* gUnknown_83CC314[MENUITEM_COUNT] = //sOptionMenuItemsNames +static const u16 gUnknown_83CC2E4[] = INCBIN_U16("graphics/misc/unk_83cc2e4.gbapal"); //3CC2E4 +static const u16 gUnknown_83CC304[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0}; //3CC304 -> sOptionsMenuItemCounts +static const u8* gUnknown_83CC314[MENUITEM_COUNT] = //3CC314 -> sOptionMenuItemsNames { [MENUITEM_TEXTSPEED] = gText_TextSpeed, [MENUITEM_BATTLESCENE] = gText_BattleScene, @@ -96,8 +112,28 @@ static const u8* gUnknown_83CC314[MENUITEM_COUNT] = //sOptionMenuItemsNames [MENUITEM_FRAMETYPE] = gText_Frame, [MENUITEM_CANCEL] = gText_OptionMenuCancel, }; +static const u8* gUnknown_83CC330[] = {gText_TextSpeedSlow, gText_TextSpeedMid, gText_TextSpeedFast}; //3CC330 +static const u8* gUnknown_83CC33C[] = {gText_BattleSceneOn, gText_BattleSceneOff}; //3CC33C +static const u8* gUnknown_83CC344[] = {gText_BattleStyleShift, gText_BattleStyleSet}; //3CC344 +static const u8* gUnknown_83CC34C[] = {gText_SoundMono, gText_SoundStereo}; //3CC34C +static const u8* gUnknown_83CC354[] = {gText_ButtonTypeNormal, gText_ButtonTypeLR, gText_ButtonTypeLEqualsA}; //3CC354 +static const u8 gUnknown_83CC360[] = {0xF, 0x1, 0x2}; //3CC360 +static const u8 gUnknown_83CC363[] = {0, 5, 4, 0, 0}; //3CC363 */ +extern const struct WindowTemplate gUnknown_83CC2B8[3]; +extern const struct BgTemplate gUnknown_83CC2D8[3]; +extern const u16 gUnknown_83CC2E4[0x20]; +extern const u16 gUnknown_83CC304[MENUITEM_COUNT]; +extern const u8* gUnknown_83CC314[MENUITEM_COUNT]; +extern const u8* gUnknown_83CC330[12]; +extern const u8* gUnknown_83CC33C[8]; +extern const u8* gUnknown_83CC344[8]; +extern const u8* gUnknown_83CC34C[8]; +extern const u8* gUnknown_83CC354[12]; +extern const u8 gUnknown_83CC360[3]; +extern const u8 gUnknown_83CC363[3]; + //This file's functions static void sub_808835C(void); static void sub_8088374(void); @@ -118,25 +154,9 @@ static void sub_8088C0C(void); static void sub_8088D8C(void); static void sub_8088DE0(u16 selection); -extern const struct WindowTemplate gUnknown_83CC2B8[3]; -extern const struct BgTemplate gUnknown_83CC2D8[2]; -extern const u16 gUnknown_83CC2E4[0x20]; -extern const u16 gUnknown_83CC304[MENUITEM_COUNT]; //sOptionsMenuItemCounts -extern const u8* gUnknown_83CC314[MENUITEM_COUNT]; -extern const u8 gUnknown_83CC330[0xC]; -extern const u8 gUnknown_83CC33C[0x8]; -extern const u8 gUnknown_83CC344[0x8]; -extern const u8 gUnknown_83CC34C[0x8]; -extern const u8 gUnknown_83CC354[0xC]; -extern const u8 gUnknown_83CC360[0x3]; -extern const u8 gUnknown_83CC363[0x3]; -extern const u8 gUnknown_8419DCC[]; -extern const u8 gUnknown_8419E52[]; -extern const u8 gUnknown_8419E57[]; - struct OptionsMenu { - /*0x00*/ u16 option[7]; //0,2,4,6,8,a,c + /*0x00*/ u16 option[MENUITEM_COUNT]; //0,2,4,6,8,a,c /*0x0E*/ u16 unkE; /*0x10*/ u8 state3; /*0x11*/ u8 state; @@ -147,6 +167,7 @@ struct OptionsMenu EWRAM_DATA struct OptionsMenu *sOptionsMenu = {0}; + //CB2_InitOptionsMenu static void sub_808835C(void) { @@ -272,7 +293,7 @@ static void sub_8088530(void) DmaClear16(3, (void *)PLTT, PLTT_SIZE); SetGpuReg(REG_OFFSET_DISPCNT, 0); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_83CC2D8, 3); //3 -> ARRAY_COUNT(gUnknown_83CC2D8) + InitBgsFromTemplates(0, gUnknown_83CC2D8, ARRAY_COUNT(gUnknown_83CC2D8)); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); ChangeBgX(1, 0, 0); @@ -297,9 +318,9 @@ static void sub_8088530(void) static void sub_8088680(void) { s32 x; - x = 0xE4 - GetStringWidth(0, gUnknown_8419E57, 0); + x = 0xE4 - GetStringWidth(0, gText_PickSwitchCancel, 0); FillWindowPixelBuffer(2, 0xFF); - AddTextPrinterParameterized3(2, 0, x, 0, gUnknown_83CC360, 0, gUnknown_8419E57); + AddTextPrinterParameterized3(2, 0, x, 0, gUnknown_83CC360, 0, gText_PickSwitchCancel); PutWindowTilemap(2); CopyWindowToVram(2, 3); } @@ -357,7 +378,7 @@ static void sub_8088780(u8 taskId) sOptionsMenu->state3++; break; case 2: - if (sub_80BF72C() == TRUE) + if ((bool32) sub_80BF72C() == TRUE) //cast to bool32 to remove the lsl/lsr 0x18 after func call return; switch (sub_80888C0()) { @@ -547,10 +568,8 @@ static void sub_8088780(u8 taskId) "\tpop {r0}\n" "\tbx r0\n"); } -#endif - - - +#endif + //OptionsMenu_ProcessInput static u8 sub_80888C0(void) { @@ -616,7 +635,6 @@ static void sub_80889A8(u8 selection) u8* str; u8* v8; u8 x, y; - u8** col; memcpy(&dst, gUnknown_83CC363, 3); y = ((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) - 1) * selection) + 2; @@ -641,7 +659,7 @@ static void sub_80889A8(u8 selection) AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC354); break; case MENUITEM_FRAMETYPE: - StringCopy(str, gUnknown_8419E52); + StringCopy(str, gText_FrameType); ConvertIntToDecimalStringN(v8, sOptionsMenu->option[2*selection] + 1, 1, 2); StringAppendN(str, v8, 3); AddTextPrinterParameterized3(1, 2, x, y, dst, -1, str); @@ -773,7 +791,7 @@ static void sub_80889A8(u8 selection) "_08088A94: .4byte gUnknown_83CC354\n" "_08088A98: .4byte sOptionsMenu\n" "_08088A9C:\n" - "\tldr r1, _08088AF8 @ =gUnknown_8419E52\n" + "\tldr r1, _08088AF8 @ =gText_FrameType\n" "\tadd r0, sp, 0xC\n" "\tbl StringCopy\n" "\tadd r4, sp, 0x20\n" @@ -815,7 +833,7 @@ static void sub_80889A8(u8 selection) "\tpop {r0}\n" "\tbx r0\n" "\t.align 2, 0\n" - "_08088AF8: .4byte gUnknown_8419E52\n" + "_08088AF8: .4byte gText_FrameType\n" "_08088AFC: .4byte sOptionsMenu\n"); } #endif @@ -846,14 +864,13 @@ static void sub_8088B00(u8 taskId) static void sub_8088BD0(void) { FillWindowPixelBuffer(0, 0x11); - AddTextPrinterParameterized(WIN_TEXT_OPTION, 2, gUnknown_8419DCC, 8, 1, TEXT_SPEED_FF, NULL); + AddTextPrinterParameterized(WIN_TEXT_OPTION, 2, gText_MenuOptionOption, 8, 1, TEXT_SPEED_FF, NULL); PutWindowTilemap(0); CopyWindowToVram(0, 3); } //sub_8088C0C -//double check static void sub_8088C0C(void) { u8 h; @@ -863,7 +880,7 @@ static void sub_8088C0C(void) FillBgTilemapBufferRect(1, 0x1B4, 2, 2, 0x1B, 1, 3); FillBgTilemapBufferRect(1, 0x1B5, 0x1C, 2, 1, 1, 3); FillBgTilemapBufferRect(1, 0x1B6, 1, 3, 1, h, 3); - FillBgTilemapBufferRect(1, 0x1B8, 1, 0x1C, 1, h, 3); + FillBgTilemapBufferRect(1, 0x1B8, 0x1C, 3, 1, h, 3); FillBgTilemapBufferRect(1, 0x1B9, 1, 5, 1, 1, 3); FillBgTilemapBufferRect(1, 0x1BA, 2, 5, 0x1B, 1, 3); FillBgTilemapBufferRect(1, 0x1BB, 0x1C, 5, 1, 1, 3); @@ -878,24 +895,15 @@ static void sub_8088C0C(void) CopyBgTilemapBufferToVram(1); } - //sub_8088D8C static void sub_8088D8C(void) { - int i; - u8 y; + u8 i; FillWindowPixelBuffer(1, 0x11); - for (i = 0; i < MENUITEM_COUNT; i++) { - //AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, (u8) ((i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))) + 2) - i, 0xFF, 0); - //gets registers right, but an lsl/lsr 0x18 after GetFontAttribute that shouldn't be there - y = i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); - y += 2; - y -= i; - AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, y, 0xFF, 0); - + AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, (u8) ((i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))) + 2) - i, 0xFF, 0); } } @@ -903,9 +911,11 @@ static void sub_8088D8C(void) //sub_8088DE0 static void sub_8088DE0(u16 selection) { - u8 attr; - attr = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT); - SetGpuReg(0x44, ((selection * (attr - 1) + 58) << 8) | (selection * (attr - 1) + 58 + attr)); - SetGpuReg(0x40, 4320); + u16 v1, v2; + + v1 = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT); + v2 = selection * (v1 - 1) + 0x3A; + SetGpuReg(0x44, (v2 << 8) | (v2 + v1)); + SetGpuReg(0x40, 0x10E0); } From b8db7961d6760d3d729a080c76474f552516bb95 Mon Sep 17 00:00:00 2001 From: Evan Date: Mon, 18 Nov 2019 21:41:45 -0700 Subject: [PATCH 15/49] match baserom --- data/option_menu.s | 44 -------------------------------------------- include/strings.h | 3 +-- ld_script.txt | 2 +- src/option_menu.c | 16 +++++++++------- 4 files changed, 11 insertions(+), 54 deletions(-) delete mode 100644 data/option_menu.s diff --git a/data/option_menu.s b/data/option_menu.s deleted file mode 100644 index f8a590d6d..000000000 --- a/data/option_menu.s +++ /dev/null @@ -1,44 +0,0 @@ -#include "constants/maps.h" -#include "constants/species.h" - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnknown_83CC2B8:: @ 83CC2B8 - .incbin "baserom.gba", 0x3CC2B8, 0x20 - -gUnknown_83CC2D8:: @ 83CC2D8 - .incbin "baserom.gba", 0x3CC2D8, 0xC - -gUnknown_83CC2E4:: @ 83CC2E4 - .incbin "baserom.gba", 0x3CC2E4, 0x20 - -gUnknown_83CC304:: @ 83CC304 - .incbin "baserom.gba", 0x3CC304, 0x10 - -gUnknown_83CC314:: @ 83CC314 - .incbin "baserom.gba", 0x3CC314, 0x1C - -gUnknown_83CC330:: @ 83CC330 - .incbin "baserom.gba", 0x3CC330, 0xC - -gUnknown_83CC33C:: @ 83CC33C - .incbin "baserom.gba", 0x3CC33C, 0x8 - -gUnknown_83CC344:: @ 83CC344 - .incbin "baserom.gba", 0x3CC344, 0x8 - -gUnknown_83CC34C:: @ 83CC34C - .incbin "baserom.gba", 0x3CC34C, 0x8 - -gUnknown_83CC354:: @ 83CC354 - .incbin "baserom.gba", 0x3CC354, 0xC - -gUnknown_83CC360:: @ 83CC360 - .incbin "baserom.gba", 0x3CC360, 0x3 - -gUnknown_83CC363:: @ 83CC363 - .incbin "baserom.gba", 0x3CC363, 0x3 - diff --git a/include/strings.h b/include/strings.h index 9f11d8fc2..1170c6f30 100644 --- a/include/strings.h +++ b/include/strings.h @@ -741,7 +741,7 @@ extern const u8 gText_DecimalPoint[]; // map_name_popup extern const u8 gUnknown_841D18D[]; -// options menu +// option menu extern const u8 gText_TextSpeed[]; extern const u8 gText_BattleScene[]; extern const u8 gText_BattleStyle[]; @@ -765,5 +765,4 @@ extern const u8 gText_MenuOptionOption[]; extern const u8 gText_FrameType[]; extern const u8 gText_PickSwitchCancel[]; - #endif //GUARD_STRINGS_H diff --git a/ld_script.txt b/ld_script.txt index 5a98f75cc..f64768f9b 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -432,7 +432,7 @@ SECTIONS { data/trainer_see.o(.rodata); src/wild_encounter.o(.rodata); data/field_effect.o(.rodata); - data/option_menu.o(.rodata); + src/option_menu.o(.rodata); data/trainer_card.o(.rodata); data/pokemon_storage_system.o(.rodata); src/pokemon_icon.o(.rodata); diff --git a/src/option_menu.c b/src/option_menu.c index c1cde37a6..54b0e29cb 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -38,8 +38,8 @@ enum WIN_TEXT_OPTION, WIN_OPTIONS, }; -/* -static const struct WindowTemplate gUnknown_83CC2B8[] = //3CC2B8 -> sOptionMenuWinTemplates + +static const struct WindowTemplate gUnknown_83CC2B8[4] = //3CC2B8 -> sOptionMenuWinTemplates { { .bg = 1, @@ -70,7 +70,7 @@ static const struct WindowTemplate gUnknown_83CC2B8[] = //3CC2B8 -> sOptionMe }, DUMMY_WIN_TEMPLATE, }; -static const struct BgTemplate gUnknown_83CC2D8[] = //3CC2D8 -> sOptionMenuBgTemplates +static const struct BgTemplate gUnknown_83CC2D8[3] = //3CC2D8 -> sOptionMenuBgTemplates { { .bg = 1, @@ -79,7 +79,7 @@ static const struct BgTemplate gUnknown_83CC2D8[] = //3CC2D8 -> sOptionMenuBg .screenSize = 0, .paletteMode = 0, .priority = 0, - .baseTile = 0 + .baseTile = 0, }, { .bg = 0, @@ -88,7 +88,7 @@ static const struct BgTemplate gUnknown_83CC2D8[] = //3CC2D8 -> sOptionMenuBg .screenSize = 0, .paletteMode = 0, .priority = 1, - .baseTile = 0 + .baseTile = 0, }, { .bg = 2, @@ -119,9 +119,10 @@ static const u8* gUnknown_83CC34C[] = {gText_SoundMono, gText_SoundStereo}; //3 static const u8* gUnknown_83CC354[] = {gText_ButtonTypeNormal, gText_ButtonTypeLR, gText_ButtonTypeLEqualsA}; //3CC354 static const u8 gUnknown_83CC360[] = {0xF, 0x1, 0x2}; //3CC360 static const u8 gUnknown_83CC363[] = {0, 5, 4, 0, 0}; //3CC363 -*/ -extern const struct WindowTemplate gUnknown_83CC2B8[3]; + +/* +extern const struct WindowTemplate gUnknown_83CC2B8[4]; extern const struct BgTemplate gUnknown_83CC2D8[3]; extern const u16 gUnknown_83CC2E4[0x20]; extern const u16 gUnknown_83CC304[MENUITEM_COUNT]; @@ -133,6 +134,7 @@ extern const u8* gUnknown_83CC34C[8]; extern const u8* gUnknown_83CC354[12]; extern const u8 gUnknown_83CC360[3]; extern const u8 gUnknown_83CC363[3]; +*/ //This file's functions static void sub_808835C(void); From 854dbbdbc5d0994dab6a5b6afd7bb7fb55efe431 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 19 Nov 2019 11:15:56 -0500 Subject: [PATCH 16/49] Bump baserom.ips --- baserom.ips | Bin 280527 -> 279787 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/baserom.ips b/baserom.ips index b18fbddfe33bf70b0f6dda5920775b89f7a6ea42..21e4c79f141b731f4ab9736766f716e193c0e791 100644 GIT binary patch delta 30 mcmX@#FZjAsu%U&qg=q`(9TBDineF#Pm}LsK-)m?7xE}z&C=9#+ delta 798 zcmZ9|KWI}y9Ki9rmlS>uh4&;sQ8=Lvj)J;$3cRJ7&?OE5DTv0u6%AAzM4`N(jcxtc zJcTNV;3nA|gyN(Qj#4`~h(&M^L>C<#DoFfZnk$kYeD3b|yWict|FGs zuwIHTo0ZR{f}6?qT~ax6MdcViv{b&Jd|l-YCT^gulH63;jq1Eg9bIf&P*E)2Qu&L< zZIumF@2KSXjdyodK4R^jN^^<+j>;@-t}=>Uxn{DL#Q~I2MI8+^aTRUku=hEHGMZS! z$OC$pRledE^r6Zg%;F{9`uvefr7|{EtJRJgB1N(2S3a`Mf@PWdoJjlQ<{S;>ek=6@ zks_Rv&SBY!{iq<~px^KH7>JNl?$^WI%R<9o!#AgXAX0=23@3aZE(-M-9&6z#USm5w z-N!1iE%xWF+>CDJv>0C>d7_f((1Cc+IDEm5p}uf&Db)Xaz<+?>_YwMHd!hdU;k|M8 z=*#3AUoAO*9j0;qxRYmChdbfq&%ji}$uhnpI_booa?-^H4xM&#?TnN0vrZ-kR+;C| hIhmYxauM(O!7esq=Abb@ZO10bbDP&!;&$QFtA7H+qN)G@ From 9b81c9556457a92a3ac751b78ac7b97a4e810a1d Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 19 Nov 2019 09:46:10 -0700 Subject: [PATCH 17/49] update option menu const structs --- include/text.h | 13 +++ src/option_menu.c | 256 ++++++++++++++++++++++++---------------------- sym_ewram.txt | 2 +- 3 files changed, 145 insertions(+), 126 deletions(-) diff --git a/include/text.h b/include/text.h index c4199190f..578a0d735 100644 --- a/include/text.h +++ b/include/text.h @@ -81,6 +81,19 @@ #define TEXT_COLOR_TRANSPARENT 0x0 #define TEXT_COLOR_WHITE 0x1 #define TEXT_COLOR_DARK_GREY 0x2 +#define TEXT_COLOR_LIGHT_GREY 0x3 +#define TEXT_COLOR_RED 0x4 +#define TEXT_COLOR_LIGHT_RED 0x5 +#define TEXT_COLOR_GREEN 0x6 +#define TEXT_COLOR_LIGHT_GREEN 0x7 +#define TEXT_COLOR_BLUE 0x8 +#define TEXT_COLOR_LIGHT_BLUE 0x9 +#define TEXT_DYNAMIC_COLOR_1 0xA // Usually white +#define TEXT_DYNAMIC_COLOR_2 0xB // Usually white w/ tinge of green +#define TEXT_DYNAMIC_COLOR_3 0xC // Usually white +#define TEXT_DYNAMIC_COLOR_4 0xD // Usually aquamarine +#define TEXT_DYNAMIC_COLOR_5 0xE // Usually blue-green +#define TEXT_DYNAMIC_COLOR_6 0xF // Usually cerulean // battle placeholders are located in battle_message.h #define EXT_CTRL_CODE_COLOR 0x1 diff --git a/src/option_menu.c b/src/option_menu.c index 54b0e29cb..4898ac1cd 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -19,7 +19,6 @@ #include "field_fadetransition.h" #include "gba/m4a_internal.h" - // Menu items enum { @@ -39,7 +38,7 @@ enum WIN_OPTIONS, }; -static const struct WindowTemplate gUnknown_83CC2B8[4] = //3CC2B8 -> sOptionMenuWinTemplates +static const struct WindowTemplate sOptionMenuWinTemplates[] = //3CC2B8 { { .bg = 1, @@ -70,7 +69,7 @@ static const struct WindowTemplate gUnknown_83CC2B8[4] = //3CC2B8 -> sOptionM }, DUMMY_WIN_TEMPLATE, }; -static const struct BgTemplate gUnknown_83CC2D8[3] = //3CC2D8 -> sOptionMenuBgTemplates +static const struct BgTemplate sOptionMenuBgTemplates[] = //3CC2D8 { { .bg = 1, @@ -100,9 +99,9 @@ static const struct BgTemplate gUnknown_83CC2D8[3] = //3CC2D8 -> sOptionMenuB .baseTile = 0, }, }; -static const u16 gUnknown_83CC2E4[] = INCBIN_U16("graphics/misc/unk_83cc2e4.gbapal"); //3CC2E4 -static const u16 gUnknown_83CC304[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0}; //3CC304 -> sOptionsMenuItemCounts -static const u8* gUnknown_83CC314[MENUITEM_COUNT] = //3CC314 -> sOptionMenuItemsNames +static const u16 sOptionsMenuPalette[] = INCBIN_U16("graphics/misc/unk_83cc2e4.gbapal"); //3CC2E4 +static const u16 sOptionsMenuItemCounts[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0}; //3CC304 +static const u8 *const sOptionMenuItemsNames[MENUITEM_COUNT] = //3CC314 { [MENUITEM_TEXTSPEED] = gText_TextSpeed, [MENUITEM_BATTLESCENE] = gText_BattleScene, @@ -112,30 +111,37 @@ static const u8* gUnknown_83CC314[MENUITEM_COUNT] = //3CC314 -> sOptionMenuI [MENUITEM_FRAMETYPE] = gText_Frame, [MENUITEM_CANCEL] = gText_OptionMenuCancel, }; -static const u8* gUnknown_83CC330[] = {gText_TextSpeedSlow, gText_TextSpeedMid, gText_TextSpeedFast}; //3CC330 -static const u8* gUnknown_83CC33C[] = {gText_BattleSceneOn, gText_BattleSceneOff}; //3CC33C -static const u8* gUnknown_83CC344[] = {gText_BattleStyleShift, gText_BattleStyleSet}; //3CC344 -static const u8* gUnknown_83CC34C[] = {gText_SoundMono, gText_SoundStereo}; //3CC34C -static const u8* gUnknown_83CC354[] = {gText_ButtonTypeNormal, gText_ButtonTypeLR, gText_ButtonTypeLEqualsA}; //3CC354 -static const u8 gUnknown_83CC360[] = {0xF, 0x1, 0x2}; //3CC360 -static const u8 gUnknown_83CC363[] = {0, 5, 4, 0, 0}; //3CC363 +static const u8 *const sTextSpeedOptions[] = //3CC330 +{ + gText_TextSpeedSlow, + gText_TextSpeedMid, + gText_TextSpeedFast +}; +static const u8 *const sBattleSceneOptions[] = //3CC33C +{ + gText_BattleSceneOn, + gText_BattleSceneOff +}; +static const u8 *const sBattleStyleOptions[] = //3CC344 +{ + gText_BattleStyleShift, + gText_BattleStyleSet +}; +static const u8 *const sSoundOptions[] = //3CC34C +{ + gText_SoundMono, + gText_SoundStereo +}; +static const u8 *const sButtonTypeOptions[] = //3CC354 +{ + gText_ButtonTypeNormal, + gText_ButtonTypeLEqualsA, + gText_ButtonTypeLR, +}; +static const u8 sOptionsMenuPickSwitchCancelTextColor[] = {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}; //3CC360 +static const u8 sOptionsMenuTextColor[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_RED, TEXT_COLOR_RED}; //3CC363 -/* -extern const struct WindowTemplate gUnknown_83CC2B8[4]; -extern const struct BgTemplate gUnknown_83CC2D8[3]; -extern const u16 gUnknown_83CC2E4[0x20]; -extern const u16 gUnknown_83CC304[MENUITEM_COUNT]; -extern const u8* gUnknown_83CC314[MENUITEM_COUNT]; -extern const u8* gUnknown_83CC330[12]; -extern const u8* gUnknown_83CC33C[8]; -extern const u8* gUnknown_83CC344[8]; -extern const u8* gUnknown_83CC34C[8]; -extern const u8* gUnknown_83CC354[12]; -extern const u8 gUnknown_83CC360[3]; -extern const u8 gUnknown_83CC363[3]; -*/ - //This file's functions static void sub_808835C(void); static void sub_8088374(void); @@ -166,7 +172,7 @@ struct OptionsMenu /*0x13*/ u8 unk13; }; -EWRAM_DATA struct OptionsMenu *sOptionsMenu = {0}; +EWRAM_DATA struct OptionsMenu *sOptionsMenuPtr = {0}; @@ -196,22 +202,22 @@ void CB2_OptionsMenuFromStartMenu(void) if (gMain.savedCallback == NULL) gMain.savedCallback = CB2_ReturnToStartMenu; - sOptionsMenu = AllocZeroed(sizeof(struct OptionsMenu)); - sOptionsMenu->state3 = 0; - sOptionsMenu->state2 = 0; - sOptionsMenu->state = 0; - sOptionsMenu->unkE = 0; - sOptionsMenu->option[MENUITEM_TEXTSPEED] = gSaveBlock2Ptr->optionsTextSpeed; - sOptionsMenu->option[MENUITEM_BATTLESCENE] = gSaveBlock2Ptr->optionsBattleSceneOff; - sOptionsMenu->option[MENUITEM_BATTLESTYLE] = gSaveBlock2Ptr->optionsBattleStyle; - sOptionsMenu->option[MENUITEM_SOUND] = gSaveBlock2Ptr->optionsSound; - sOptionsMenu->option[MENUITEM_BUTTONMODE] = gSaveBlock2Ptr->optionsButtonMode; - sOptionsMenu->option[MENUITEM_FRAMETYPE] = gSaveBlock2Ptr->optionsWindowFrameType; + sOptionsMenuPtr = AllocZeroed(sizeof(struct OptionsMenu)); + sOptionsMenuPtr->state3 = 0; + sOptionsMenuPtr->state2 = 0; + sOptionsMenuPtr->state = 0; + sOptionsMenuPtr->unkE = 0; + sOptionsMenuPtr->option[MENUITEM_TEXTSPEED] = gSaveBlock2Ptr->optionsTextSpeed; + sOptionsMenuPtr->option[MENUITEM_BATTLESCENE] = gSaveBlock2Ptr->optionsBattleSceneOff; + sOptionsMenuPtr->option[MENUITEM_BATTLESTYLE] = gSaveBlock2Ptr->optionsBattleStyle; + sOptionsMenuPtr->option[MENUITEM_SOUND] = gSaveBlock2Ptr->optionsSound; + sOptionsMenuPtr->option[MENUITEM_BUTTONMODE] = gSaveBlock2Ptr->optionsButtonMode; + sOptionsMenuPtr->option[MENUITEM_FRAMETYPE] = gSaveBlock2Ptr->optionsWindowFrameType; for (i = 0; i < MENUITEM_COUNT-1; i++) { - if (sOptionsMenu->option[i] > (gUnknown_83CC304[i])-1) - sOptionsMenu->option[i] = 0; + if (sOptionsMenuPtr->option[i] > (sOptionsMenuItemCounts[i])-1) + sOptionsMenuPtr->option[i] = 0; } HelpSystem_SetSomeVariable2(0xD); SetMainCallback2(sub_8088454); @@ -236,7 +242,7 @@ static void sub_8088444(void) static void sub_8088454(void) { u8 i, state; - state = sOptionsMenu->state; + state = sOptionsMenuPtr->state; switch (state) { case 0: @@ -266,7 +272,7 @@ static void sub_8088454(void) sub_80889A8(i); break; case 8: - sub_8088DE0(sOptionsMenu->unkE); + sub_8088DE0(sOptionsMenuPtr->unkE); break; case 9: sub_8088680(); @@ -274,7 +280,7 @@ static void sub_8088454(void) default: sub_8088514(); } - sOptionsMenu->state++; + sOptionsMenuPtr->state++; } //sub_8088514 @@ -295,7 +301,7 @@ static void sub_8088530(void) DmaClear16(3, (void *)PLTT, PLTT_SIZE); SetGpuReg(REG_OFFSET_DISPCNT, 0); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_83CC2D8, ARRAY_COUNT(gUnknown_83CC2D8)); + InitBgsFromTemplates(0, sOptionMenuBgTemplates, ARRAY_COUNT(sOptionMenuBgTemplates)); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); ChangeBgX(1, 0, 0); @@ -304,7 +310,7 @@ static void sub_8088530(void) ChangeBgY(2, 0, 0); ChangeBgX(3, 0, 0); ChangeBgY(3, 0, 0); - InitWindows(gUnknown_83CC2B8); + InitWindows(sOptionMenuWinTemplates); DeactivateAllTextPrinters(); SetGpuReg(REG_OFFSET_BLDCNT, 0xC1); SetGpuReg(REG_OFFSET_BLDY, 2); @@ -322,7 +328,7 @@ static void sub_8088680(void) s32 x; x = 0xE4 - GetStringWidth(0, gText_PickSwitchCancel, 0); FillWindowPixelBuffer(2, 0xFF); - AddTextPrinterParameterized3(2, 0, x, 0, gUnknown_83CC360, 0, gText_PickSwitchCancel); + AddTextPrinterParameterized3(2, 0, x, 0, sOptionsMenuPickSwitchCancelTextColor, 0, gText_PickSwitchCancel); PutWindowTilemap(2); CopyWindowToVram(2, 3); } @@ -341,16 +347,16 @@ static void sub_80886D4(void) //sub_80886F0 static bool8 sub_80886F0(void) { - switch (sOptionsMenu->state2) + switch (sOptionsMenuPtr->state2) { case 0: - LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenuPtr->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); break; case 1: - LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); + LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenuPtr->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); break; case 2: - LoadPalette(gUnknown_83CC2E4, 0x10, 0x20); + LoadPalette(sOptionsMenuPalette, 0x10, 0x20); LoadPalette(stdpal_get(2), 0xF0, 0x20); break; case 3: @@ -359,7 +365,7 @@ static bool8 sub_80886F0(void) default: return TRUE; } - sOptionsMenu->state2++; + sOptionsMenuPtr->state2++; return FALSE; } @@ -372,12 +378,12 @@ static void sub_8088780(u8 taskId) u8 v2, v5; struct OptionsMenu v4; - switch (sOptionsMenu->state3) + switch (sOptionsMenuPtr->state3) { case 0: BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); sub_8088444(); - sOptionsMenu->state3++; + sOptionsMenuPtr->state3++; break; case 2: if ((bool32) sub_80BF72C() == TRUE) //cast to bool32 to remove the lsl/lsr 0x18 after func call @@ -385,32 +391,32 @@ static void sub_8088780(u8 taskId) switch (sub_80888C0()) { case 1: - sOptionsMenu->state3++; + sOptionsMenuPtr->state3++; break; case 2: - LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); - LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); - sub_80889A8(sOptionsMenu->unkE); - sOptionsMenu->state3++; + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenuPtr->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); + LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenuPtr->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); + sub_80889A8(sOptionsMenuPtr->unkE); + sOptionsMenuPtr->state3++; break; case 3: - sub_8088DE0(sOptionsMenu->unkE); + sub_8088DE0(sOptionsMenuPtr->unkE); break; case 4: - sub_80889A8(sOptionsMenu->unkE); - sOptionsMenu->state3++; + sub_80889A8(sOptionsMenuPtr->unkE); + sOptionsMenuPtr->state3++; break; default: return; } case 3: BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - sOptionsMenu->state3++; + sOptionsMenuPtr->state3++; case 1: case 4: if (gPaletteFade.active) return; - sOptionsMenu->state3++; + sOptionsMenuPtr->state3++; case 5: sub_8088B00(taskId); break; @@ -426,7 +432,7 @@ static void sub_8088780(u8 taskId) "\tsub sp, 0x4\n" "\tlsls r0, 24\n" "\tlsrs r2, r0, 24\n" - "\tldr r1, _080887A0 @ =sOptionsMenu\n" + "\tldr r1, _080887A0 @ =sOptionsMenuPtr\n" "\tldr r0, [r1]\n" "\tldrb r0, [r0, 0x10]\n" "\tadds r3, r1, 0\n" @@ -440,7 +446,7 @@ static void sub_8088780(u8 taskId) "\tldr r0, [r0]\n" "\tmov pc, r0\n" "\t.align 2, 0\n" - "_080887A0: .4byte sOptionsMenu\n" + "_080887A0: .4byte sOptionsMenuPtr\n" "_080887A4: .4byte _080887A8\n" "\t.align 2, 0\n" "_080887A8:\n" @@ -459,11 +465,11 @@ static void sub_8088780(u8 taskId) "\tmovs r3, 0\n" "\tbl BeginNormalPaletteFade\n" "\tbl sub_8088444\n" - "\tldr r0, _080887DC @ =sOptionsMenu\n" + "\tldr r0, _080887DC @ =sOptionsMenuPtr\n" "\tldr r1, [r0]\n" "\tb _080888A2\n" "\t.align 2, 0\n" - "_080887DC: .4byte sOptionsMenu\n" + "_080887DC: .4byte sOptionsMenuPtr\n" "_080887E0:\n" "\tbl sub_80BF72C\n" "\tcmp r0, 0x1\n" @@ -488,13 +494,13 @@ static void sub_8088780(u8 taskId) "\t.4byte _08088858\n" "\t.4byte _08088868\n" "_08088818:\n" - "\tldr r0, _08088820 @ =sOptionsMenu\n" + "\tldr r0, _08088820 @ =sOptionsMenuPtr\n" "\tldr r1, [r0]\n" "\tb _080888A2\n" "\t.align 2, 0\n" - "_08088820: .4byte sOptionsMenu\n" + "_08088820: .4byte sOptionsMenuPtr\n" "_08088824:\n" - "\tldr r4, _08088854 @ =sOptionsMenu\n" + "\tldr r4, _08088854 @ =sOptionsMenuPtr\n" "\tldr r0, [r4]\n" "\tldrb r0, [r0, 0xA]\n" "\tbl GetUserFrameGraphicsInfo\n" @@ -515,24 +521,24 @@ static void sub_8088780(u8 taskId) "\tldr r0, [r4]\n" "\tb _0808886C\n" "\t.align 2, 0\n" - "_08088854: .4byte sOptionsMenu\n" + "_08088854: .4byte sOptionsMenuPtr\n" "_08088858:\n" - "\tldr r0, _08088864 @ =sOptionsMenu\n" + "\tldr r0, _08088864 @ =sOptionsMenuPtr\n" "\tldr r0, [r0]\n" "\tldrh r0, [r0, 0xE]\n" "\tbl sub_8088DE0\n" "\tb _080888B6\n" "\t.align 2, 0\n" - "_08088864: .4byte sOptionsMenu\n" + "_08088864: .4byte sOptionsMenuPtr\n" "_08088868:\n" - "\tldr r0, _08088874 @ =sOptionsMenu\n" + "\tldr r0, _08088874 @ =sOptionsMenuPtr\n" "\tldr r0, [r0]\n" "_0808886C:\n" "\tldrb r0, [r0, 0xE]\n" "\tbl sub_80889A8\n" "\tb _080888B6\n" "\t.align 2, 0\n" - "_08088874: .4byte sOptionsMenu\n" + "_08088874: .4byte sOptionsMenuPtr\n" "_08088878:\n" "\tmovs r0, 0x1\n" "\tnegs r0, r0\n" @@ -541,11 +547,11 @@ static void sub_8088780(u8 taskId) "\tmovs r2, 0\n" "\tmovs r3, 0x10\n" "\tbl BeginNormalPaletteFade\n" - "\tldr r0, _08088890 @ =sOptionsMenu\n" + "\tldr r0, _08088890 @ =sOptionsMenuPtr\n" "\tldr r1, [r0]\n" "\tb _080888A2\n" "\t.align 2, 0\n" - "_08088890: .4byte sOptionsMenu\n" + "_08088890: .4byte sOptionsMenuPtr\n" "_08088894:\n" "\tldr r0, _080888AC @ =gPaletteFade\n" "\tldrb r1, [r0, 0x7]\n" @@ -579,43 +585,43 @@ static u8 sub_80888C0(void) u16* curr; if (gMain.newAndRepeatedKeys & DPAD_RIGHT) { - current = sOptionsMenu->option[(sOptionsMenu->unkE)]; - if (current == (gUnknown_83CC304[sOptionsMenu->unkE] - 1)) - sOptionsMenu->option[sOptionsMenu->unkE] = 0; + current = sOptionsMenuPtr->option[(sOptionsMenuPtr->unkE)]; + if (current == (sOptionsMenuItemCounts[sOptionsMenuPtr->unkE] - 1)) + sOptionsMenuPtr->option[sOptionsMenuPtr->unkE] = 0; else - sOptionsMenu->option[sOptionsMenu->unkE] = current + 1; - if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE) + sOptionsMenuPtr->option[sOptionsMenuPtr->unkE] = current + 1; + if (sOptionsMenuPtr->unkE == MENUITEM_FRAMETYPE) return 2; else return 4; } else if (gMain.newAndRepeatedKeys & DPAD_LEFT) { - curr = &sOptionsMenu->option[sOptionsMenu->unkE]; + curr = &sOptionsMenuPtr->option[sOptionsMenuPtr->unkE]; if (*curr == 0) - *curr = gUnknown_83CC304[sOptionsMenu->unkE] - 1; + *curr = sOptionsMenuItemCounts[sOptionsMenuPtr->unkE] - 1; else --*(curr); - if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE) + if (sOptionsMenuPtr->unkE == MENUITEM_FRAMETYPE) return 2; else return 4; } else if (gMain.newAndRepeatedKeys & DPAD_UP) { - if (sOptionsMenu->unkE == MENUITEM_TEXTSPEED) - sOptionsMenu->unkE = MENUITEM_CANCEL; + if (sOptionsMenuPtr->unkE == MENUITEM_TEXTSPEED) + sOptionsMenuPtr->unkE = MENUITEM_CANCEL; else - sOptionsMenu->unkE = sOptionsMenu->unkE - 1; + sOptionsMenuPtr->unkE = sOptionsMenuPtr->unkE - 1; return 3; } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - if (sOptionsMenu->unkE == MENUITEM_CANCEL) - sOptionsMenu->unkE = MENUITEM_TEXTSPEED; + if (sOptionsMenuPtr->unkE == MENUITEM_CANCEL) + sOptionsMenuPtr->unkE = MENUITEM_TEXTSPEED; else - sOptionsMenu->unkE = sOptionsMenu->unkE + 1; + sOptionsMenuPtr->unkE = sOptionsMenuPtr->unkE + 1; return 3; } else if ((gMain.newKeys & B_BUTTON) || (gMain.newKeys & A_BUTTON)) @@ -638,7 +644,7 @@ static void sub_80889A8(u8 selection) u8* v8; u8 x, y; - memcpy(&dst, gUnknown_83CC363, 3); + memcpy(&dst, sOptionsMenuTextColor, 3); y = ((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) - 1) * selection) + 2; x = 0x82; FillWindowPixelRect(1, 1, x, y, 0x46, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); @@ -646,23 +652,23 @@ static void sub_80889A8(u8 selection) switch (selection) { case MENUITEM_TEXTSPEED: - AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC330); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sTextSpeedOptions); break; case MENUITEM_BATTLESCENE: - AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC33C); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sBattleSceneOptions); break; case MENUITEM_BATTLESTYLE: - AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC344); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sBattleStyleOptions); break; case MENUITEM_SOUND: - AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC34C); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sSoundOptions); break; case MENUITEM_BUTTONMODE: - AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC354); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sButtonTypeOptions); break; case MENUITEM_FRAMETYPE: StringCopy(str, gText_FrameType); - ConvertIntToDecimalStringN(v8, sOptionsMenu->option[2*selection] + 1, 1, 2); + ConvertIntToDecimalStringN(v8, sOptionsMenuPtr->option[2*selection] + 1, 1, 2); StringAppendN(str, v8, 3); AddTextPrinterParameterized3(1, 2, x, y, dst, -1, str); break; @@ -683,7 +689,7 @@ static void sub_80889A8(u8 selection) "\tlsls r0, 24\n" "\tlsrs r5, r0, 24\n" "\tadd r4, sp, 0x2C\n" - "\tldr r1, _08088A08 @ =gUnknown_83CC363\n" + "\tldr r1, _08088A08 @ =sOptionsMenuTextColor\n" "\tadds r0, r4, 0\n" "\tmovs r2, 0x3\n" "\tbl memcpy\n" @@ -721,7 +727,7 @@ static void sub_80889A8(u8 selection) "\tldr r0, [r0]\n" "\tmov pc, r0\n" "\t.align 2, 0\n" - "_08088A08: .4byte gUnknown_83CC363\n" + "_08088A08: .4byte sOptionsMenuTextColor\n" "_08088A0C: .4byte _08088A10\n" "\t.align 2, 0\n" "_08088A10:\n" @@ -736,45 +742,45 @@ static void sub_80889A8(u8 selection) "\tmovs r0, 0x1\n" "\tnegs r0, r0\n" "\tstr r0, [sp, 0x4]\n" - "\tldr r2, _08088A34 @ =gUnknown_83CC330\n" + "\tldr r2, _08088A34 @ =sTextSpeedOptions\n" "\tb _08088A72\n" "\t.align 2, 0\n" - "_08088A34: .4byte gUnknown_83CC330\n" + "_08088A34: .4byte sTextSpeedOptions\n" "_08088A38:\n" "\tstr r6, [sp]\n" "\tmovs r0, 0x1\n" "\tnegs r0, r0\n" "\tstr r0, [sp, 0x4]\n" - "\tldr r2, _08088A44 @ =gUnknown_83CC33C\n" + "\tldr r2, _08088A44 @ =sBattleSceneOptions\n" "\tb _08088A72\n" "\t.align 2, 0\n" - "_08088A44: .4byte gUnknown_83CC33C\n" + "_08088A44: .4byte sBattleSceneOptions\n" "_08088A48:\n" "\tstr r6, [sp]\n" "\tmovs r0, 0x1\n" "\tnegs r0, r0\n" "\tstr r0, [sp, 0x4]\n" - "\tldr r2, _08088A54 @ =gUnknown_83CC344\n" + "\tldr r2, _08088A54 @ =sBattleStyleOptions\n" "\tb _08088A72\n" "\t.align 2, 0\n" - "_08088A54: .4byte gUnknown_83CC344\n" + "_08088A54: .4byte sBattleStyleOptions\n" "_08088A58:\n" "\tstr r6, [sp]\n" "\tmovs r0, 0x1\n" "\tnegs r0, r0\n" "\tstr r0, [sp, 0x4]\n" - "\tldr r2, _08088A64 @ =gUnknown_83CC34C\n" + "\tldr r2, _08088A64 @ =sSoundOptions\n" "\tb _08088A72\n" "\t.align 2, 0\n" - "_08088A64: .4byte gUnknown_83CC34C\n" + "_08088A64: .4byte sSoundOptions\n" "_08088A68:\n" "\tstr r6, [sp]\n" "\tmovs r0, 0x1\n" "\tnegs r0, r0\n" "\tstr r0, [sp, 0x4]\n" - "\tldr r2, _08088A94 @ =gUnknown_83CC354\n" + "\tldr r2, _08088A94 @ =sButtonTypeOptions\n" "_08088A72:\n" - "\tldr r0, _08088A98 @ =sOptionsMenu\n" + "\tldr r0, _08088A98 @ =sOptionsMenuPtr\n" "\tldr r0, [r0]\n" "\tlsls r1, r5, 1\n" "\tadds r0, r1\n" @@ -790,14 +796,14 @@ static void sub_80889A8(u8 selection) "\tbl AddTextPrinterParameterized3\n" "\tb _08088ADE\n" "\t.align 2, 0\n" - "_08088A94: .4byte gUnknown_83CC354\n" - "_08088A98: .4byte sOptionsMenu\n" + "_08088A94: .4byte sButtonTypeOptions\n" + "_08088A98: .4byte sOptionsMenuPtr\n" "_08088A9C:\n" "\tldr r1, _08088AF8 @ =gText_FrameType\n" "\tadd r0, sp, 0xC\n" "\tbl StringCopy\n" "\tadd r4, sp, 0x20\n" - "\tldr r0, _08088AFC @ =sOptionsMenu\n" + "\tldr r0, _08088AFC @ =sOptionsMenuPtr\n" "\tldr r0, [r0]\n" "\tlsls r1, r5, 1\n" "\tadds r0, r1\n" @@ -836,7 +842,7 @@ static void sub_80889A8(u8 selection) "\tbx r0\n" "\t.align 2, 0\n" "_08088AF8: .4byte gText_FrameType\n" - "_08088AFC: .4byte sOptionsMenu\n"); + "_08088AFC: .4byte sOptionsMenuPtr\n"); } #endif @@ -848,15 +854,15 @@ static void sub_8088B00(u8 taskId) SetMainCallback2(gMain.savedCallback); FreeAllWindowBuffers(); - gSaveBlock2Ptr->optionsTextSpeed = (u8) sOptionsMenu->option[MENUITEM_TEXTSPEED]; - gSaveBlock2Ptr->optionsBattleSceneOff = (u8) sOptionsMenu->option[MENUITEM_BATTLESCENE]; - gSaveBlock2Ptr->optionsBattleStyle = (u8) sOptionsMenu->option[MENUITEM_BATTLESTYLE]; - gSaveBlock2Ptr->optionsSound = sOptionsMenu->option[MENUITEM_SOUND]; - gSaveBlock2Ptr->optionsButtonMode = (u8) sOptionsMenu->option[MENUITEM_BUTTONMODE]; - gSaveBlock2Ptr->optionsWindowFrameType = (u8) sOptionsMenu->option[MENUITEM_FRAMETYPE]; + gSaveBlock2Ptr->optionsTextSpeed = (u8) sOptionsMenuPtr->option[MENUITEM_TEXTSPEED]; + gSaveBlock2Ptr->optionsBattleSceneOff = (u8) sOptionsMenuPtr->option[MENUITEM_BATTLESCENE]; + gSaveBlock2Ptr->optionsBattleStyle = (u8) sOptionsMenuPtr->option[MENUITEM_BATTLESTYLE]; + gSaveBlock2Ptr->optionsSound = sOptionsMenuPtr->option[MENUITEM_SOUND]; + gSaveBlock2Ptr->optionsButtonMode = (u8) sOptionsMenuPtr->option[MENUITEM_BUTTONMODE]; + gSaveBlock2Ptr->optionsWindowFrameType = (u8) sOptionsMenuPtr->option[MENUITEM_FRAMETYPE]; SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); - Free(sOptionsMenu); - sOptionsMenu = NULL; + Free(sOptionsMenuPtr); + sOptionsMenuPtr = NULL; DestroyTask(taskId); } @@ -905,7 +911,7 @@ static void sub_8088D8C(void) FillWindowPixelBuffer(1, 0x11); for (i = 0; i < MENUITEM_COUNT; i++) { - AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, (u8) ((i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))) + 2) - i, 0xFF, 0); + AddTextPrinterParameterized(1, 2, sOptionMenuItemsNames[i], 8, (u8) ((i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))) + 2) - i, 0xFF, 0); } } diff --git a/sym_ewram.txt b/sym_ewram.txt index cec65b59c..8ff8247d9 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -226,7 +226,7 @@ gFieldEffectArguments: @ 20386E0 .include "src/scanline_effect.o" .align 2 -sOptionsMenu: @ 2039620 +sOptionsMenuPtr: @ 2039620 .space 0x4 gTrainerCards: @ 2039624 From 789eb58882732b74bbe5aebadf3d8ea8ff9e5b7e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 19 Nov 2019 11:49:21 -0500 Subject: [PATCH 18/49] Address review comments --- asm/evolution_scene.s | 2 +- include/dynamic_placeholder_text_util.h | 6 +++--- include/evolution_graphics.h | 2 +- src/evolution_graphics.c | 20 ++++++++++---------- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index a1aff00ea..efa6ccff7 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -3045,7 +3045,7 @@ _080CF820: lsls r4, 3 adds r4, r5 ldrh r0, [r4, 0xC] - bl LaunchTask_PostEvoSparklesSet2Alt + bl LaunchTask_PostEvoSparklesSet2AndFlash_Trade mov r1, r8 strb r0, [r1, 0x2] b _080CFA90 diff --git a/include/dynamic_placeholder_text_util.h b/include/dynamic_placeholder_text_util.h index 31cfe8d30..bae92eb01 100644 --- a/include/dynamic_placeholder_text_util.h +++ b/include/dynamic_placeholder_text_util.h @@ -1,5 +1,5 @@ -#ifndef GUARD_UNK_TEXT_UTIL_H -#define GUARD_UNK_TEXT_UTIL_H +#ifndef GUARD_DYNAMIC_PLACEHOLDER_TEXT_UTIL_H +#define GUARD_DYNAMIC_PLACEHOLDER_TEXT_UTIL_H #include "global.h" @@ -9,4 +9,4 @@ u8 *DynamicPlaceholderTextUtil_ExpandPlaceholders(u8 *dest, const u8 *src); const u8 *DynamicPlaceholderTextUtil_GetPlaceholderPtr(u8 idx); u8 GetColorFromTextColorTable(u16 graphicId); -#endif //GUARD_UNK_TEXT_UTIL_H +#endif //GUARD_DYNAMIC_PLACEHOLDER_TEXT_UTIL_H diff --git a/include/evolution_graphics.h b/include/evolution_graphics.h index 21f133872..e4fbf0fc0 100644 --- a/include/evolution_graphics.h +++ b/include/evolution_graphics.h @@ -10,7 +10,7 @@ u8 LaunchTask_PreEvoSparklesSet2(void); u8 LaunchTask_PostEvoSparklesSet1(void); u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 species); u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 species); -u8 sub_817C3A0(u8 preEvoSpriteID, u8 postEvoSpriteID); +u8 LaunchTask_PrePostEvoMonSprites(u8 preEvoSpriteId, u8 postEvoSpriteId); #define EvoGraphicsTaskEvoStop data[8] diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c index da6ada735..7088679ba 100644 --- a/src/evolution_graphics.c +++ b/src/evolution_graphics.c @@ -22,8 +22,8 @@ static void EvoTask_PostEvoSparklesSet1Teardown(u8 taskId); static void EvoTask_PostEvoSparklesSet2Init(u8 taskId); static void EvoTask_CreatePostEvoSparklesSet2(u8 taskId); static void EvoTask_PostEvoSparklesSet2Teardown(u8 taskId); -static void EvoTask_PostEvoSparklesSet2AltInit(u8 taskId); -static void EvoTask_CreatePostEvoSparklesSet2Alt(u8 taskId); +static void EvoTask_PostEvoSparklesSet2TradeInit(u8 taskId); +static void EvoTask_CreatePostEvoSparklesSet2Trade(u8 taskId); static void EvoTask_PrePostEvoMonSpritesInit(u8 taskId); static void EvoTask_ChooseNextEvoSpriteAnim(u8 taskId); static void EvoTask_ShrinkOrExpandEvoSprites(u8 taskId); @@ -386,10 +386,10 @@ static void EvoTask_PostEvoSparklesSet1Teardown(u8 taskId) DestroyTask(taskId); } -u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 a0) +u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 species) { u8 taskId = CreateTask(EvoTask_PostEvoSparklesSet2Init, 0); - gTasks[taskId].data[2] = a0; + gTasks[taskId].data[2] = species; return taskId; } @@ -437,25 +437,25 @@ static void EvoTask_PostEvoSparklesSet2Teardown(u8 taskId) DestroyTask(taskId); } -u8 LaunchTask_PostEvoSparklesSet2Alt(u16 a0) +u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 species) { - u8 taskId = CreateTask(EvoTask_PostEvoSparklesSet2AltInit, 0); - gTasks[taskId].data[2] = a0; + u8 taskId = CreateTask(EvoTask_PostEvoSparklesSet2TradeInit, 0); + gTasks[taskId].data[2] = species; return taskId; } -static void EvoTask_PostEvoSparklesSet2AltInit(u8 taskId) +static void EvoTask_PostEvoSparklesSet2TradeInit(u8 taskId) { SetEvoSparklesMatrices(); gTasks[taskId].data[15] = 0; sub_80D0474(); CpuCopy16(&gPlttBufferFaded[32], &gPlttBufferUnfaded[32], 96); BeginNormalPaletteFade(0xFFF90F00, 0, 0, 16, RGB_WHITE); - gTasks[taskId].func = EvoTask_CreatePostEvoSparklesSet2Alt; + gTasks[taskId].func = EvoTask_CreatePostEvoSparklesSet2Trade; PlaySE(SE_W080); } -static void EvoTask_CreatePostEvoSparklesSet2Alt(u8 taskId) +static void EvoTask_CreatePostEvoSparklesSet2Trade(u8 taskId) { u8 i; if (gTasks[taskId].data[15] < 128) From 486ea736cf87b90ae9d8e26784ca1e7b6d72910d Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 19 Nov 2019 09:53:23 -0700 Subject: [PATCH 19/49] fix formatting on option menu --- ld_script.txt | 2 +- src/option_menu.c | 70 +++++++++++++++++++++++------------------------ 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/ld_script.txt b/ld_script.txt index f64768f9b..92efeabda 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -128,7 +128,7 @@ SECTIONS { src/wild_encounter.o(.text); asm/field_effect.o(.text); src/scanline_effect.o(.text); - src/option_menu.o(.text); + src/option_menu.o(.text); src/pokedex.o(.text); asm/trainer_card.o(.text); asm/pokemon_storage_system.o(.text); diff --git a/src/option_menu.c b/src/option_menu.c index 4898ac1cd..8450633f5 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -58,15 +58,15 @@ static const struct WindowTemplate sOptionMenuWinTemplates[] = //3CC2B8 .paletteNum = 1, .baseBlock = 0x36, }, - { - .bg = 2, - .tilemapLeft = 0, - .tilemapTop = 0, - .width = 30, - .height = 2, - .paletteNum = 0xF, - .baseBlock = 0x16e, - }, + { + .bg = 2, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 30, + .height = 2, + .paletteNum = 0xF, + .baseBlock = 0x16e, + }, DUMMY_WIN_TEMPLATE, }; static const struct BgTemplate sOptionMenuBgTemplates[] = //3CC2D8 @@ -90,16 +90,16 @@ static const struct BgTemplate sOptionMenuBgTemplates[] = //3CC2D8 .baseTile = 0, }, { - .bg = 2, - .charBaseIndex = 1, - .mapBaseIndex = 29, - .screenSize = 0, - .paletteMode = 0, - .priority = 2, - .baseTile = 0, + .bg = 2, + .charBaseIndex = 1, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0, }, }; -static const u16 sOptionsMenuPalette[] = INCBIN_U16("graphics/misc/unk_83cc2e4.gbapal"); //3CC2E4 +static const u16 sOptionsMenuPalette[] = INCBIN_U16("graphics/misc/unk_83cc2e4.gbapal"); //3CC2E4 static const u16 sOptionsMenuItemCounts[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0}; //3CC304 static const u8 *const sOptionMenuItemsNames[MENUITEM_COUNT] = //3CC314 { @@ -111,35 +111,35 @@ static const u8 *const sOptionMenuItemsNames[MENUITEM_COUNT] = //3CC314 [MENUITEM_FRAMETYPE] = gText_Frame, [MENUITEM_CANCEL] = gText_OptionMenuCancel, }; -static const u8 *const sTextSpeedOptions[] = //3CC330 +static const u8 *const sTextSpeedOptions[] = //3CC330 { - gText_TextSpeedSlow, - gText_TextSpeedMid, - gText_TextSpeedFast + gText_TextSpeedSlow, + gText_TextSpeedMid, + gText_TextSpeedFast }; -static const u8 *const sBattleSceneOptions[] = //3CC33C +static const u8 *const sBattleSceneOptions[] = //3CC33C { - gText_BattleSceneOn, - gText_BattleSceneOff + gText_BattleSceneOn, + gText_BattleSceneOff }; static const u8 *const sBattleStyleOptions[] = //3CC344 { - gText_BattleStyleShift, - gText_BattleStyleSet + gText_BattleStyleShift, + gText_BattleStyleSet }; -static const u8 *const sSoundOptions[] = //3CC34C +static const u8 *const sSoundOptions[] = //3CC34C { - gText_SoundMono, - gText_SoundStereo + gText_SoundMono, + gText_SoundStereo }; -static const u8 *const sButtonTypeOptions[] = //3CC354 +static const u8 *const sButtonTypeOptions[] = //3CC354 { - gText_ButtonTypeNormal, - gText_ButtonTypeLEqualsA, - gText_ButtonTypeLR, + gText_ButtonTypeNormal, + gText_ButtonTypeLEqualsA, + gText_ButtonTypeLR, }; -static const u8 sOptionsMenuPickSwitchCancelTextColor[] = {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}; //3CC360 -static const u8 sOptionsMenuTextColor[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_RED, TEXT_COLOR_RED}; //3CC363 +static const u8 sOptionsMenuPickSwitchCancelTextColor[] = {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}; //3CC360 +static const u8 sOptionsMenuTextColor[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_RED, TEXT_COLOR_RED}; //3CC363 //This file's functions From 009732cb4c099c7311410c41a5945a50449c41de Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 19 Nov 2019 11:54:21 -0500 Subject: [PATCH 20/49] EvoGraphicsTaskEvoStop --- src/evolution_graphics.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c index 7088679ba..175ebf81e 100644 --- a/src/evolution_graphics.c +++ b/src/evolution_graphics.c @@ -493,7 +493,6 @@ static void SpriteCallbackDummy_MonSprites(struct Sprite * sprite) #define tPostEvoScale data[4] #define tDirection data[5] #define tSpeed data[6] -#define tBButtonCancel data[8] u8 LaunchTask_PrePostEvoMonSprites(u8 preEvoSpriteId, u8 postEvoSpriteId) { @@ -519,7 +518,7 @@ u8 LaunchTask_PrePostEvoMonSprites(u8 preEvoSpriteId, u8 postEvoSpriteId) gSprites[postEvoSpriteId].oam.matrixNum = 31; gSprites[postEvoSpriteId].invisible = FALSE; CpuCopy16(palette, &gPlttBufferFaded[256 + 16 * gSprites[postEvoSpriteId].oam.paletteNum], 32); - gTasks[taskId].tBButtonCancel = FALSE; + gTasks[taskId].EvoGraphicsTaskEvoStop = FALSE; return taskId; } @@ -532,7 +531,7 @@ static void EvoTask_PrePostEvoMonSpritesInit(u8 taskId) static void EvoTask_ChooseNextEvoSpriteAnim(u8 taskId) { - if (gTasks[taskId].tBButtonCancel) + if (gTasks[taskId].EvoGraphicsTaskEvoStop) { PreEvoVisible_PostEvoInvisible_KillTask(taskId); } @@ -551,7 +550,7 @@ static void EvoTask_ChooseNextEvoSpriteAnim(u8 taskId) static void EvoTask_ShrinkOrExpandEvoSprites(u8 taskId) { u8 r6; - if (gTasks[taskId].tBButtonCancel) + if (gTasks[taskId].EvoGraphicsTaskEvoStop) { gTasks[taskId].func = PreEvoVisible_PostEvoInvisible_KillTask; } @@ -637,4 +636,3 @@ static void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskId) #undef tPostEvoScale #undef tDirection #undef tSpeed -#undef tBButtonCancel From 5a56fc245b2c159e45650564c1fd7c3b352bb9d0 Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 19 Nov 2019 09:55:31 -0700 Subject: [PATCH 21/49] fix tab vs space format --- include/global.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/global.h b/include/global.h index 63c6923bd..744d23eb3 100644 --- a/include/global.h +++ b/include/global.h @@ -291,11 +291,11 @@ struct SaveBlock2 /*0x012*/ u8 playTimeVBlanks; /*0x013*/ u8 optionsButtonMode; // OPTIONS_BUTTON_MODE_[NORMAL/LR/L_EQUALS_A] /*0x014*/ u16 optionsTextSpeed:3; // OPTIONS_TEXT_SPEED_[SLOW/MID/FAST] - u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes + u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes /*0x15*/ u16 optionsSound:1; // OPTIONS_SOUND_[MONO/STEREO] - u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET] - u16 optionsBattleSceneOff:1; // whether battle animations are disabled - u16 regionMapZoom:1; // whether the map is zoomed in + u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET] + u16 optionsBattleSceneOff:1; // whether battle animations are disabled + u16 regionMapZoom:1; // whether the map is zoomed in /*0x018*/ struct Pokedex pokedex; /*0x090*/ u8 filler_90[0x8]; /*0x098*/ struct Time localTimeOffset; From 6958f7e02b9d8a8554ab01f5905f482f3b5f219e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 19 Nov 2019 15:23:22 -0500 Subject: [PATCH 22/49] Poke field_map_obj with a long pole --- data/field_map_obj.s | 13 +++++++++---- graphics/map_objects/unk_835B988.pal | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 graphics/map_objects/unk_835B988.pal diff --git a/data/field_map_obj.s b/data/field_map_obj.s index e4fe9ceca..19f0fac9f 100644 --- a/data/field_map_obj.s +++ b/data/field_map_obj.s @@ -3,19 +3,24 @@ .section .rodata .align 2 gUnknown_835B934:: @ 835B934 - .incbin "baserom.gba", 0x35B934, 0x10 + .byte 0x01, 0x01, 0x06, 0x07, 0x08, 0x09, 0x06, 0x07, 0x08, 0x09, 0x0b, 0x0b, 0x00, 0x00, 0x00, 0x00 gUnknown_835B944:: @ 835B944 - .incbin "baserom.gba", 0x35B944, 0x18 + spr_template 0, 65535, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, ObjectCB_CameraObject gUnknown_835B95C:: @ 835B95C - .incbin "baserom.gba", 0x35B95C, 0xC + .4byte CameraObject_0 + .4byte CameraObject_1 + .4byte CameraObject_2 gUnknown_835B968:: @ 835B968 .incbin "graphics/map_objects/0.gbapal" gUnknown_835B988:: - .incbin "baserom.gba", 0x35B988, 0x1E0 + .incbin "graphics/map_objects/unk_835B988.gbapal" + +gUnknown_835B9A0:: + .space 0x1C0 gUnknown_835BB68:: @ 835BB68 .incbin "graphics/map_objects/000.4bpp" diff --git a/graphics/map_objects/unk_835B988.pal b/graphics/map_objects/unk_835B988.pal new file mode 100644 index 000000000..27436be92 --- /dev/null +++ b/graphics/map_objects/unk_835B988.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 164 +172 123 65 +255 197 148 +222 148 115 +123 65 65 +65 65 213 +57 57 123 +115 164 197 +106 41 41 +238 238 255 +180 180 213 +255 106 74 +197 57 57 +255 222 90 +189 156 57 +0 0 0 From 475078911da8b1c3bf57209bae2bb8a86728d4c0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 19 Nov 2019 15:29:57 -0500 Subject: [PATCH 23/49] Dump smokescreen data --- baserom.ips | Bin 279787 -> 279077 bytes data/smokescreen.s | 50 +++++++++++++++++++++++++++++++++++++++------ 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/baserom.ips b/baserom.ips index 21e4c79f141b731f4ab9736766f716e193c0e791..ba29beb15e89d98ea2beb21c9575405b450a16ce 100644 GIT binary patch delta 42 vcmaFeDY&#nkSoA3#M#4idkW))joU9UHZNdlU%iUhe+j25#}*(y0>oE<`1Q5d*X97}CqT?#0W|K9 zj4}u7N*0bQyPk72FhpJlTI;~T!vJLczb3+^%JBgx53&}d?r#_~hw1hdCYFs{7Z}4C z8QIu5I6;`38>E5(XyFr}Dr6l~f3kAy1>&DTZ1{_n!*pi{;{(3nuZr^C(N_G59GTB; s`jXa)?5)3+wO{pzOuc@&+~$K!hZvi0F}B}g1Yss1X5M~_k;U5q04vN`GXMYp diff --git a/data/smokescreen.s b/data/smokescreen.s index 17d611d3c..19dceec00 100644 --- a/data/smokescreen.s +++ b/data/smokescreen.s @@ -1,17 +1,55 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" .section .rodata - .balign 4 + .align 2 gUnknown_825098C:: @ 825098C - .incbin "baserom.gba", 0x25098C, 0x8 + obj_tiles gFile_graphics_battle_anims_sprites_smokescreen_impact_sheet, 0x0180, 55019 gUnknown_8250994:: @ 8250994 - .incbin "baserom.gba", 0x250994, 0x60 + obj_pal gFile_graphics_battle_anims_sprites_smokescreen_impact_palette, 55019 + +gOamData_835099C:: + .4byte 0x40000000, 0x00000400 + +gAnimCmd_82509A4:: + obj_image_anim_frame 0, 4 + obj_image_anim_frame 4, 4 + obj_image_anim_frame 8, 4 + obj_image_anim_end + +gAnimCmd_82509B4:: + obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end + +gAnimCmd_82509C4:: + obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_end + +gAnimCmd_82509D4:: + obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_end + +gSpriteAnimTable_82509E4:: + .4byte gAnimCmd_82509A4 + .4byte gAnimCmd_82509B4 + .4byte gAnimCmd_82509C4 + .4byte gAnimCmd_82509D4 gUnknown_82509F4:: @ 82509F4 - .incbin "baserom.gba", 0x2509F4, 0x18 + spr_template 55019, 55019, gOamData_835099C, gSpriteAnimTable_82509E4, NULL, gDummySpriteAffineAnimTable, sub_804A904 gSpriteSheet_EnemyShadow:: @ 8250A0C - .incbin "baserom.gba", 0x250A0C, 0x10 + obj_tiles gFile_graphics_battle_interface_enemy_mon_shadow_sheet, 0x0080, 55129 + +gOamData_8250A14:: + .4byte 0x40004000, 0x00000c00 gSpriteTemplate_EnemyShadow:: @ 8250A1C - .incbin "baserom.gba", 0x250A1C, 0x18 + spr_template 55129, 55039, gOamData_8250A14, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCB_SetInvisible From a48e03b78c0e4f1b72e9e62b4c927f4c59836339 Mon Sep 17 00:00:00 2001 From: Evan Date: Sat, 16 Nov 2019 19:45:55 -0700 Subject: [PATCH 24/49] remove compile errors --- asm/option_menu.s | 1337 --------------------------------------------- data/strings.s | 14 +- include/global.h | 10 +- include/strings.h | 11 + ld_script.txt | 2 +- src/option_menu.c | 594 ++++++++++++++++++++ sym_ewram.txt | 2 +- 7 files changed, 619 insertions(+), 1351 deletions(-) delete mode 100644 asm/option_menu.s create mode 100644 src/option_menu.c diff --git a/asm/option_menu.s b/asm/option_menu.s deleted file mode 100644 index 3b08810c5..000000000 --- a/asm/option_menu.s +++ /dev/null @@ -1,1337 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_808835C -sub_808835C: @ 808835C - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_808835C - - thumb_func_start sub_8088374 -sub_8088374: @ 8088374 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_8088374 - - thumb_func_start CB2_OptionsMenuFromStartMenu -CB2_OptionsMenuFromStartMenu: @ 8088388 - push {r4-r6,lr} - ldr r1, _08088418 @ =gMain - ldr r0, [r1, 0x8] - cmp r0, 0 - bne _08088396 - ldr r0, _0808841C @ =CB2_ReturnToStartMenu - str r0, [r1, 0x8] -_08088396: - ldr r4, _08088420 @ =gUnknown_2039620 - movs r0, 0x14 - bl AllocZeroed - str r0, [r4] - movs r1, 0 - strb r1, [r0, 0x10] - ldr r0, [r4] - strb r1, [r0, 0x12] - ldr r0, [r4] - strb r1, [r0, 0x11] - ldr r2, [r4] - strh r1, [r2, 0xE] - ldr r0, _08088424 @ =gSaveBlock2Ptr - ldr r1, [r0] - ldrb r0, [r1, 0x14] - lsls r0, 29 - lsrs r0, 29 - strh r0, [r2] - ldrb r0, [r1, 0x15] - lsls r0, 29 - lsrs r0, 31 - strh r0, [r2, 0x2] - ldrb r0, [r1, 0x15] - lsls r0, 30 - lsrs r0, 31 - strh r0, [r2, 0x4] - ldrb r0, [r1, 0x15] - lsls r0, 31 - lsrs r0, 31 - strh r0, [r2, 0x6] - ldrb r0, [r1, 0x13] - strh r0, [r2, 0x8] - ldrb r0, [r1, 0x14] - lsrs r0, 3 - strh r0, [r2, 0xA] - movs r3, 0 - adds r6, r4, 0 - ldr r5, _08088428 @ =gUnknown_83CC304 - movs r4, 0 -_080883E6: - ldr r1, [r6] - lsls r0, r3, 1 - adds r2, r1, r0 - ldrh r1, [r2] - adds r0, r5 - ldrh r0, [r0] - subs r0, 0x1 - cmp r1, r0 - ble _080883FA - strh r4, [r2] -_080883FA: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x5 - bls _080883E6 - movs r0, 0xD - bl HelpSystem_SetSomeVariable2 - ldr r0, _0808842C @ =sub_8088454 - bl SetMainCallback2 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08088418: .4byte gMain -_0808841C: .4byte CB2_ReturnToStartMenu -_08088420: .4byte gUnknown_2039620 -_08088424: .4byte gSaveBlock2Ptr -_08088428: .4byte gUnknown_83CC304 -_0808842C: .4byte sub_8088454 - thumb_func_end CB2_OptionsMenuFromStartMenu - - thumb_func_start sub_8088430 -sub_8088430: @ 8088430 - push {lr} - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - bl SetHBlankCallback - pop {r0} - bx r0 - thumb_func_end sub_8088430 - - thumb_func_start sub_8088444 -sub_8088444: @ 8088444 - push {lr} - ldr r0, _08088450 @ =sub_8088374 - bl SetVBlankCallback - pop {r0} - bx r0 - .align 2, 0 -_08088450: .4byte sub_8088374 - thumb_func_end sub_8088444 - - thumb_func_start sub_8088454 -sub_8088454: @ 8088454 - push {r4,lr} - ldr r0, _0808846C @ =gUnknown_2039620 - ldr r0, [r0] - ldrb r0, [r0, 0x11] - cmp r0, 0x9 - bhi _080884FA - lsls r0, 2 - ldr r1, _08088470 @ =_08088474 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808846C: .4byte gUnknown_2039620 -_08088470: .4byte _08088474 - .align 2, 0 -_08088474: - .4byte _0808849C - .4byte _080884A2 - .4byte _080884A8 - .4byte _080884AE - .4byte _080884BC - .4byte _080884C2 - .4byte _080884C8 - .4byte _080884CE - .4byte _080884E2 - .4byte _080884F4 -_0808849C: - bl sub_8088430 - b _080884FE -_080884A2: - bl sub_8088530 - b _080884FE -_080884A8: - bl sub_80886D4 - b _080884FE -_080884AE: - bl sub_80886F0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08088508 - b _080884FE -_080884BC: - bl sub_8088BD0 - b _080884FE -_080884C2: - bl sub_8088C0C - b _080884FE -_080884C8: - bl sub_8088D8C - b _080884FE -_080884CE: - movs r4, 0 -_080884D0: - adds r0, r4, 0 - bl sub_80889A8 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bls _080884D0 - b _080884FE -_080884E2: - ldr r0, _080884F0 @ =gUnknown_2039620 - ldr r0, [r0] - ldrh r0, [r0, 0xE] - bl sub_8088DE0 - b _080884FE - .align 2, 0 -_080884F0: .4byte gUnknown_2039620 -_080884F4: - bl sub_8088680 - b _080884FE -_080884FA: - bl sub_8088514 -_080884FE: - ldr r0, _08088510 @ =gUnknown_2039620 - ldr r1, [r0] - ldrb r0, [r1, 0x11] - adds r0, 0x1 - strb r0, [r1, 0x11] -_08088508: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08088510: .4byte gUnknown_2039620 - thumb_func_end sub_8088454 - - thumb_func_start sub_8088514 -sub_8088514: @ 8088514 - push {lr} - ldr r0, _08088528 @ =sub_8088780 - movs r1, 0 - bl CreateTask - ldr r0, _0808852C @ =sub_808835C - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_08088528: .4byte sub_8088780 -_0808852C: .4byte sub_808835C - thumb_func_end sub_8088514 - - thumb_func_start sub_8088530 -sub_8088530: @ 8088530 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r3, 0xC0 - lsls r3, 19 - movs r4, 0xC0 - lsls r4, 9 - add r0, sp, 0x4 - mov r8, r0 - mov r2, sp - movs r6, 0 - ldr r1, _08088670 @ =0x040000d4 - movs r5, 0x80 - lsls r5, 5 - ldr r7, _08088674 @ =0x81000800 - movs r0, 0x81 - lsls r0, 24 - mov r12, r0 -_08088556: - strh r6, [r2] - mov r0, sp - str r0, [r1] - str r3, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r5 - subs r4, r5 - cmp r4, r5 - bhi _08088556 - strh r6, [r2] - mov r2, sp - str r2, [r1] - str r3, [r1, 0x4] - lsrs r0, r4, 1 - mov r2, r12 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0xE0 - lsls r0, 19 - movs r3, 0x80 - lsls r3, 3 - movs r4, 0 - str r4, [sp, 0x4] - ldr r2, _08088670 @ =0x040000d4 - mov r1, r8 - str r1, [r2] - str r0, [r2, 0x4] - lsrs r0, r3, 2 - movs r1, 0x85 - lsls r1, 24 - orrs r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r1, 0xA0 - lsls r1, 19 - mov r0, sp - strh r4, [r0] - str r0, [r2] - str r1, [r2, 0x4] - lsrs r3, 1 - movs r0, 0x81 - lsls r0, 24 - orrs r3, r0 - str r3, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _08088678 @ =gUnknown_83CC2D8 - movs r0, 0 - movs r2, 0x3 - bl InitBgsFromTemplates - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - ldr r0, _0808867C @ =gUnknown_83CC2B8 - bl InitWindows - bl DeactivateAllTextPrinters - movs r0, 0x50 - movs r1, 0xC1 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0x2 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0x1 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0x27 - bl SetGpuReg - movs r1, 0xC1 - lsls r1, 6 - movs r0, 0 - bl SetGpuReg - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08088670: .4byte 0x040000d4 -_08088674: .4byte 0x81000800 -_08088678: .4byte gUnknown_83CC2D8 -_0808867C: .4byte gUnknown_83CC2B8 - thumb_func_end sub_8088530 - - thumb_func_start sub_8088680 -sub_8088680: @ 8088680 - push {r4,r5,lr} - sub sp, 0xC - ldr r5, _080886CC @ =gUnknown_8419E57 - movs r0, 0 - adds r1, r5, 0 - movs r2, 0 - bl GetStringWidth - movs r4, 0xE4 - subs r4, r0 - movs r0, 0x2 - movs r1, 0xFF - bl FillWindowPixelBuffer - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080886D0 @ =gUnknown_83CC360 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x2 - movs r1, 0 - adds r2, r4, 0 - movs r3, 0 - bl AddTextPrinterParameterized3 - movs r0, 0x2 - bl PutWindowTilemap - movs r0, 0x2 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080886CC: .4byte gUnknown_8419E57 -_080886D0: .4byte gUnknown_83CC360 - thumb_func_end sub_8088680 - - thumb_func_start sub_80886D4 -sub_80886D4: @ 80886D4 - push {lr} - bl ResetSpriteData - bl ResetPaletteFade - bl FreeAllSpritePalettes - bl ResetTasks - bl ScanlineEffect_Stop - pop {r0} - bx r0 - thumb_func_end sub_80886D4 - - thumb_func_start sub_80886F0 -sub_80886F0: @ 80886F0 - push {lr} - ldr r0, _08088708 @ =gUnknown_2039620 - ldr r0, [r0] - ldrb r1, [r0, 0x12] - cmp r1, 0x1 - beq _0808872E - cmp r1, 0x1 - bgt _0808870C - cmp r1, 0 - beq _08088716 - b _08088768 - .align 2, 0 -_08088708: .4byte gUnknown_2039620 -_0808870C: - cmp r1, 0x2 - beq _0808873A - cmp r1, 0x3 - beq _08088758 - b _08088768 -_08088716: - ldrb r0, [r0, 0xA] - bl GetUserFrameGraphicsInfo - ldr r1, [r0] - movs r2, 0x90 - lsls r2, 1 - movs r3, 0xD5 - lsls r3, 1 - movs r0, 0x1 - bl LoadBgTiles - b _0808876C -_0808872E: - ldrb r0, [r0, 0xA] - bl GetUserFrameGraphicsInfo - ldr r0, [r0, 0x4] - movs r1, 0x20 - b _0808874C -_0808873A: - ldr r0, _08088754 @ =gUnknown_83CC2E4 - movs r1, 0x10 - movs r2, 0x20 - bl LoadPalette - movs r0, 0x2 - bl stdpal_get - movs r1, 0xF0 -_0808874C: - movs r2, 0x20 - bl LoadPalette - b _0808876C - .align 2, 0 -_08088754: .4byte gUnknown_83CC2E4 -_08088758: - ldr r1, _08088764 @ =0x000001b3 - movs r0, 0x1 - movs r2, 0x30 - bl sub_814FDA0 - b _0808876C - .align 2, 0 -_08088764: .4byte 0x000001b3 -_08088768: - movs r0, 0x1 - b _08088778 -_0808876C: - ldr r0, _0808877C @ =gUnknown_2039620 - ldr r1, [r0] - ldrb r0, [r1, 0x12] - adds r0, 0x1 - strb r0, [r1, 0x12] - movs r0, 0 -_08088778: - pop {r1} - bx r1 - .align 2, 0 -_0808877C: .4byte gUnknown_2039620 - thumb_func_end sub_80886F0 - - thumb_func_start sub_8088780 -sub_8088780: @ 8088780 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080887A0 @ =gUnknown_2039620 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - adds r3, r1, 0 - cmp r0, 0x5 - bls _08088796 - b _080888B6 -_08088796: - lsls r0, 2 - ldr r1, _080887A4 @ =_080887A8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080887A0: .4byte gUnknown_2039620 -_080887A4: .4byte _080887A8 - .align 2, 0 -_080887A8: - .4byte _080887C0 - .4byte _08088894 - .4byte _080887E0 - .4byte _08088878 - .4byte _08088894 - .4byte _080888B0 -_080887C0: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - bl sub_8088444 - ldr r0, _080887DC @ =gUnknown_2039620 - ldr r1, [r0] - b _080888A2 - .align 2, 0 -_080887DC: .4byte gUnknown_2039620 -_080887E0: - bl sub_80BF72C - cmp r0, 0x1 - beq _080888B6 - bl sub_80888C0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _080888B6 - lsls r0, 2 - ldr r1, _08088800 @ =_08088804 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08088800: .4byte _08088804 - .align 2, 0 -_08088804: - .4byte _080888B6 - .4byte _08088818 - .4byte _08088824 - .4byte _08088858 - .4byte _08088868 -_08088818: - ldr r0, _08088820 @ =gUnknown_2039620 - ldr r1, [r0] - b _080888A2 - .align 2, 0 -_08088820: .4byte gUnknown_2039620 -_08088824: - ldr r4, _08088854 @ =gUnknown_2039620 - ldr r0, [r4] - ldrb r0, [r0, 0xA] - bl GetUserFrameGraphicsInfo - ldr r1, [r0] - movs r2, 0x90 - lsls r2, 1 - movs r3, 0xD5 - lsls r3, 1 - movs r0, 0x1 - bl LoadBgTiles - ldr r0, [r4] - ldrb r0, [r0, 0xA] - bl GetUserFrameGraphicsInfo - ldr r0, [r0, 0x4] - movs r1, 0x20 - movs r2, 0x20 - bl LoadPalette - ldr r0, [r4] - b _0808886C - .align 2, 0 -_08088854: .4byte gUnknown_2039620 -_08088858: - ldr r0, _08088864 @ =gUnknown_2039620 - ldr r0, [r0] - ldrh r0, [r0, 0xE] - bl sub_8088DE0 - b _080888B6 - .align 2, 0 -_08088864: .4byte gUnknown_2039620 -_08088868: - ldr r0, _08088874 @ =gUnknown_2039620 - ldr r0, [r0] -_0808886C: - ldrb r0, [r0, 0xE] - bl sub_80889A8 - b _080888B6 - .align 2, 0 -_08088874: .4byte gUnknown_2039620 -_08088878: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08088890 @ =gUnknown_2039620 - ldr r1, [r0] - b _080888A2 - .align 2, 0 -_08088890: .4byte gUnknown_2039620 -_08088894: - ldr r0, _080888AC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080888B6 - ldr r1, [r3] -_080888A2: - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _080888B6 - .align 2, 0 -_080888AC: .4byte gPaletteFade -_080888B0: - adds r0, r2, 0 - bl sub_8088B00 -_080888B6: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8088780 - - thumb_func_start sub_80888C0 -sub_80888C0: @ 80888C0 - push {r4,lr} - ldr r3, _080888EC @ =gMain - ldrh r1, [r3, 0x30] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08088906 - ldr r2, _080888F0 @ =gUnknown_2039620 - ldr r1, [r2] - ldrh r0, [r1, 0xE] - lsls r0, 1 - adds r3, r1, r0 - ldrh r4, [r3] - ldr r1, _080888F4 @ =gUnknown_83CC304 - adds r0, r1 - ldrh r0, [r0] - subs r0, 0x1 - cmp r4, r0 - bne _080888F8 - movs r0, 0 - b _080888FA - .align 2, 0 -_080888EC: .4byte gMain -_080888F0: .4byte gUnknown_2039620 -_080888F4: .4byte gUnknown_83CC304 -_080888F8: - adds r0, r4, 0x1 -_080888FA: - strh r0, [r3] - ldr r0, [r2] - ldrh r0, [r0, 0xE] - cmp r0, 0x5 - beq _08088930 - b _0808893C -_08088906: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08088940 - ldr r2, _08088934 @ =gUnknown_2039620 - ldr r1, [r2] - ldrh r0, [r1, 0xE] - lsls r3, r0, 1 - adds r1, r3 - ldrh r0, [r1] - cmp r0, 0 - bne _08088924 - ldr r0, _08088938 @ =gUnknown_83CC304 - adds r0, r3, r0 - ldrh r0, [r0] -_08088924: - subs r0, 0x1 - strh r0, [r1] - ldr r0, [r2] - ldrh r0, [r0, 0xE] - cmp r0, 0x5 - bne _0808893C -_08088930: - movs r0, 0x2 - b _080889A0 - .align 2, 0 -_08088934: .4byte gUnknown_2039620 -_08088938: .4byte gUnknown_83CC304 -_0808893C: - movs r0, 0x4 - b _080889A0 -_08088940: - movs r0, 0x40 - ands r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - beq _08088964 - ldr r0, _0808895C @ =gUnknown_2039620 - ldr r1, [r0] - ldrh r0, [r1, 0xE] - cmp r0, 0 - bne _08088960 - movs r0, 0x6 - b _08088982 - .align 2, 0 -_0808895C: .4byte gUnknown_2039620 -_08088960: - subs r0, 0x1 - b _08088982 -_08088964: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08088988 - ldr r0, _0808897C @ =gUnknown_2039620 - ldr r1, [r0] - ldrh r0, [r1, 0xE] - cmp r0, 0x6 - bne _08088980 - strh r2, [r1, 0xE] - b _08088984 - .align 2, 0 -_0808897C: .4byte gUnknown_2039620 -_08088980: - adds r0, 0x1 -_08088982: - strh r0, [r1, 0xE] -_08088984: - movs r0, 0x3 - b _080889A0 -_08088988: - ldrh r1, [r3, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0808899A - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0808899E -_0808899A: - movs r0, 0x1 - b _080889A0 -_0808899E: - movs r0, 0 -_080889A0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80888C0 - - thumb_func_start sub_80889A8 -sub_80889A8: @ 80889A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x30 - lsls r0, 24 - lsrs r5, r0, 24 - add r4, sp, 0x2C - ldr r1, _08088A08 @ =gUnknown_83CC363 - adds r0, r4, 0 - movs r2, 0x3 - bl memcpy - movs r0, 0x82 - mov r8, r0 - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - muls r0, r5 - adds r0, 0x2 - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x46 - str r1, [sp] - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x82 - adds r3, r7, 0 - bl FillWindowPixelRect - adds r6, r4, 0 - cmp r5, 0x5 - bhi _08088ADE - lsls r0, r5, 2 - ldr r1, _08088A0C @ =_08088A10 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08088A08: .4byte gUnknown_83CC363 -_08088A0C: .4byte _08088A10 - .align 2, 0 -_08088A10: - .4byte _08088A28 - .4byte _08088A38 - .4byte _08088A48 - .4byte _08088A58 - .4byte _08088A68 - .4byte _08088A9C -_08088A28: - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r2, _08088A34 @ =gUnknown_83CC330 - b _08088A72 - .align 2, 0 -_08088A34: .4byte gUnknown_83CC330 -_08088A38: - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r2, _08088A44 @ =gUnknown_83CC33C - b _08088A72 - .align 2, 0 -_08088A44: .4byte gUnknown_83CC33C -_08088A48: - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r2, _08088A54 @ =gUnknown_83CC344 - b _08088A72 - .align 2, 0 -_08088A54: .4byte gUnknown_83CC344 -_08088A58: - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r2, _08088A64 @ =gUnknown_83CC34C - b _08088A72 - .align 2, 0 -_08088A64: .4byte gUnknown_83CC34C -_08088A68: - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r2, _08088A94 @ =gUnknown_83CC354 -_08088A72: - ldr r0, _08088A98 @ =gUnknown_2039620 - ldr r0, [r0] - lsls r1, r5, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - mov r2, r8 - adds r3, r7, 0 - bl AddTextPrinterParameterized3 - b _08088ADE - .align 2, 0 -_08088A94: .4byte gUnknown_83CC354 -_08088A98: .4byte gUnknown_2039620 -_08088A9C: - ldr r1, _08088AF8 @ =gUnknown_8419E52 - add r0, sp, 0xC - bl StringCopy - add r4, sp, 0x20 - ldr r0, _08088AFC @ =gUnknown_2039620 - ldr r0, [r0] - lsls r1, r5, 1 - adds r0, r1 - ldrh r1, [r0] - adds r1, 0x1 - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - add r0, sp, 0xC - adds r1, r4, 0 - movs r2, 0x3 - bl StringAppendN - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - add r0, sp, 0xC - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - mov r2, r8 - adds r3, r7, 0 - bl AddTextPrinterParameterized3 -_08088ADE: - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x1 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0x30 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08088AF8: .4byte gUnknown_8419E52 -_08088AFC: .4byte gUnknown_2039620 - thumb_func_end sub_80889A8 - - thumb_func_start sub_8088B00 -sub_8088B00: @ 8088B00 - push {r4-r6,lr} - mov r6, r8 - push {r6} - mov r8, r0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _08088BBC @ =gFieldCallback - ldr r0, _08088BC0 @ =sub_807DF64 - str r0, [r1] - ldr r0, _08088BC4 @ =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 - bl FreeAllWindowBuffers - ldr r3, _08088BC8 @ =gSaveBlock2Ptr - ldr r5, [r3] - ldr r4, _08088BCC @ =gUnknown_2039620 - ldr r0, [r4] - movs r2, 0x7 - ldrb r1, [r0] - ands r1, r2 - ldrb r2, [r5, 0x14] - movs r0, 0x8 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x14] - ldr r5, [r3] - ldr r0, [r4] - movs r6, 0x1 - ldrb r1, [r0, 0x2] - ands r1, r6 - lsls r1, 2 - ldrb r2, [r5, 0x15] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x15] - ldr r5, [r3] - ldr r0, [r4] - ldrb r1, [r0, 0x4] - ands r1, r6 - lsls r1, 1 - ldrb r2, [r5, 0x15] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x15] - ldr r5, [r3] - ldr r0, [r4] - ldrb r1, [r0, 0x6] - ands r1, r6 - ldrb r2, [r5, 0x15] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x15] - ldr r1, [r3] - ldr r0, [r4] - ldrh r0, [r0, 0x8] - movs r6, 0 - strb r0, [r1, 0x13] - ldr r5, [r3] - ldr r0, [r4] - ldrb r1, [r0, 0xA] - lsls r1, 3 - ldrb r2, [r5, 0x14] - movs r0, 0x7 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x14] - ldr r0, [r3] - ldrb r0, [r0, 0x15] - lsls r0, 31 - lsrs r0, 31 - bl SetPokemonCryStereo - ldr r0, [r4] - bl Free - str r6, [r4] - mov r0, r8 - bl DestroyTask - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08088BBC: .4byte gFieldCallback -_08088BC0: .4byte sub_807DF64 -_08088BC4: .4byte gMain -_08088BC8: .4byte gSaveBlock2Ptr -_08088BCC: .4byte gUnknown_2039620 - thumb_func_end sub_8088B00 - - thumb_func_start sub_8088BD0 -sub_8088BD0: @ 8088BD0 - push {lr} - sub sp, 0xC - movs r0, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r2, _08088C08 @ =gUnknown_8419DCC - movs r0, 0x1 - str r0, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - movs r1, 0x2 - movs r3, 0x8 - bl AddTextPrinterParameterized - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_08088C08: .4byte gUnknown_8419DCC - thumb_func_end sub_8088BD0 - - thumb_func_start sub_8088C0C -sub_8088C0C: @ 8088C0C - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0xC - movs r6, 0x2 - ldr r1, _08088D6C @ =0x000001b3 - movs r4, 0x1 - str r4, [sp] - str r4, [sp, 0x4] - movs r5, 0x3 - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x2 - bl FillBgTilemapBufferRect - movs r1, 0xDA - lsls r1, 1 - movs r0, 0x1B - mov r8, r0 - str r0, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x2 - movs r3, 0x2 - bl FillBgTilemapBufferRect - ldr r1, _08088D70 @ =0x000001b5 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x2 - bl FillBgTilemapBufferRect - movs r1, 0xDB - lsls r1, 1 - str r4, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x3 - bl FillBgTilemapBufferRect - movs r1, 0xDC - lsls r1, 1 - str r4, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x3 - bl FillBgTilemapBufferRect - ldr r1, _08088D74 @ =0x000001b9 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x5 - bl FillBgTilemapBufferRect - movs r1, 0xDD - lsls r1, 1 - mov r0, r8 - str r0, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x2 - movs r3, 0x5 - bl FillBgTilemapBufferRect - ldr r1, _08088D78 @ =0x000001bb - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x5 - bl FillBgTilemapBufferRect - movs r1, 0xD5 - lsls r1, 1 - str r4, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x6 - bl FillBgTilemapBufferRect - ldr r1, _08088D7C @ =0x000001ab - movs r0, 0x1A - mov r8, r0 - str r0, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x2 - movs r3, 0x6 - bl FillBgTilemapBufferRect - movs r1, 0xD6 - lsls r1, 1 - str r4, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x6 - bl FillBgTilemapBufferRect - ldr r1, _08088D80 @ =0x000001ad - str r4, [sp] - movs r5, 0x10 - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x7 - bl FillBgTilemapBufferRect - ldr r1, _08088D84 @ =0x000001af - str r4, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x7 - bl FillBgTilemapBufferRect - movs r1, 0xD8 - lsls r1, 1 - str r4, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x13 - bl FillBgTilemapBufferRect - ldr r1, _08088D88 @ =0x000001b1 - mov r0, r8 - str r0, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x2 - movs r3, 0x13 - bl FillBgTilemapBufferRect - movs r1, 0xD9 - lsls r1, 1 - str r4, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x13 - bl FillBgTilemapBufferRect - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08088D6C: .4byte 0x000001b3 -_08088D70: .4byte 0x000001b5 -_08088D74: .4byte 0x000001b9 -_08088D78: .4byte 0x000001bb -_08088D7C: .4byte 0x000001ab -_08088D80: .4byte 0x000001ad -_08088D84: .4byte 0x000001af -_08088D88: .4byte 0x000001b1 - thumb_func_end sub_8088C0C - - thumb_func_start sub_8088D8C -sub_8088D8C: @ 8088D8C - push {r4,lr} - sub sp, 0xC - movs r0, 0x1 - movs r1, 0x11 - bl FillWindowPixelBuffer - movs r4, 0 -_08088D9A: - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - adds r1, r4, 0 - muls r1, r0 - adds r1, 0x2 - subs r1, r4 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _08088DDC @ =gUnknown_83CC314 - lsls r0, r4, 2 - adds r0, r2 - ldr r2, [r0] - str r1, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - movs r3, 0x8 - bl AddTextPrinterParameterized - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bls _08088D9A - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08088DDC: .4byte gUnknown_83CC314 - thumb_func_end sub_8088D8C - - thumb_func_start sub_8088DE0 -sub_8088DE0: @ 8088DE0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - lsls r0, 24 - lsrs r0, 24 - subs r1, r0, 0x1 - adds r2, r4, 0 - muls r2, r1 - adds r2, 0x3A - lsls r2, 16 - lsrs r2, 16 - lsls r1, r2, 8 - adds r2, r0 - orrs r1, r2 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x44 - bl SetGpuReg - movs r1, 0x87 - lsls r1, 5 - movs r0, 0x40 - bl SetGpuReg - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8088DE0 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/strings.s b/data/strings.s index 101946475..14a4472e3 100644 --- a/data/strings.s +++ b/data/strings.s @@ -2907,25 +2907,25 @@ gUnknown_8419D89:: @ 8419D89 gUnknown_8419DCC:: @ 8419DCC .string "OPTION$" -gUnknown_8419DD3:: @ 0x8419DD3 +gText_TextSpeed:: @ 0x8419DD3 .string "TEXT SPEED$" -gUnknown_8419DDE:: @ 0x8419DDE +gText_BattleScene:: @ 0x8419DDE .string "BATTLE SCENE$" -gUnknown_8419DEB:: @ 0x8419DEB +gText_BattleStyle:: @ 0x8419DEB .string "BATTLE STYLE$" -gUnknown_8419DF8:: @ 0x8419DF8 +gText_Sound:: @ 0x8419DF8 .string "SOUND$" -gUnknown_8419DFE:: @ 0x8419DFE +gText_ButtonMode:: @ 0x8419DFE .string "BUTTON MODE$" -gUnknown_8419E0A:: @ 0x8419E0A +gText_Frame:: @ 0x8419E0A .string "FRAME$" -gUnknown_8419E10:: @ 0x8419E10 +gText_OptionMenuCancel:: @ 0x8419E10 .string "CANCEL$" gUnknown_8419E17:: @ 0x8419E17 diff --git a/include/global.h b/include/global.h index 2f34de1a0..63c6923bd 100644 --- a/include/global.h +++ b/include/global.h @@ -291,11 +291,11 @@ struct SaveBlock2 /*0x012*/ u8 playTimeVBlanks; /*0x013*/ u8 optionsButtonMode; // OPTIONS_BUTTON_MODE_[NORMAL/LR/L_EQUALS_A] /*0x014*/ u16 optionsTextSpeed:3; // OPTIONS_TEXT_SPEED_[SLOW/MID/FAST] - u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes - u16 optionsSound:1; // OPTIONS_SOUND_[MONO/STEREO] - u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET] - u16 optionsBattleSceneOff:1; // whether battle animations are disabled - u16 regionMapZoom:1; // whether the map is zoomed in + u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes + /*0x15*/ u16 optionsSound:1; // OPTIONS_SOUND_[MONO/STEREO] + u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET] + u16 optionsBattleSceneOff:1; // whether battle animations are disabled + u16 regionMapZoom:1; // whether the map is zoomed in /*0x018*/ struct Pokedex pokedex; /*0x090*/ u8 filler_90[0x8]; /*0x098*/ struct Time localTimeOffset; diff --git a/include/strings.h b/include/strings.h index 377b6ea39..286a65190 100644 --- a/include/strings.h +++ b/include/strings.h @@ -763,4 +763,15 @@ extern const u8 gText_DecimalPoint[]; // map_name_popup extern const u8 gUnknown_841D18D[]; +// options menu +extern const u8 gText_TextSpeed[]; +extern const u8 gText_BattleScene[]; +extern const u8 gText_BattleStyle[]; +extern const u8 gText_Sound[]; +extern const u8 gText_ButtonMode[]; +extern const u8 gText_Frame[]; +extern const u8 gText_OptionMenuCancel[]; +extern const u8 gText_PickSwitchCancel[]; + + #endif //GUARD_STRINGS_H diff --git a/ld_script.txt b/ld_script.txt index 495647b45..4125a926d 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -128,7 +128,7 @@ SECTIONS { src/wild_encounter.o(.text); asm/field_effect.o(.text); src/scanline_effect.o(.text); - asm/option_menu.o(.text); + src/option_menu.o(.text); src/pokedex.o(.text); asm/trainer_card.o(.text); asm/pokemon_storage_system.o(.text); diff --git a/src/option_menu.c b/src/option_menu.c new file mode 100644 index 000000000..57de35f11 --- /dev/null +++ b/src/option_menu.c @@ -0,0 +1,594 @@ +#include "global.h" +#include "gpu_regs.h" +#include "scanline_effect.h" +#include "text_window_graphics.h" +#include "menu.h" +#include "menu_helpers.h" +#include "task.h" +#include "palette.h" +#include "overworld.h" +#include "malloc.h" +#include "help_system.h" +#include "main.h" +#include "bg.h" +#include "window.h" +#include "text.h" +#include "text_window.h" +#include "string_util.h" +#include "strings.h" +#include "field_fadetransition.h" +#include "gba/m4a_internal.h" + + +// Menu items +enum +{ + MENUITEM_TEXTSPEED = 0, + MENUITEM_BATTLESCENE, + MENUITEM_BATTLESTYLE, + MENUITEM_SOUND, + MENUITEM_BUTTONMODE, + MENUITEM_FRAMETYPE, + MENUITEM_CANCEL, + MENUITEM_COUNT, +}; +// Window Ids +enum +{ + WIN_TEXT_OPTION, + WIN_OPTIONS +}; + +//This file's functions +static void sub_808835C(void); +static void sub_8088374(void); +static void sub_8088430(void); +static void sub_8088444(void); +static void sub_8088454(void); +static void sub_8088514(void); +static void sub_8088530(void); +static void sub_8088680(void); +static void sub_80886D4(void); +static bool8 sub_80886F0(void); +static void sub_8088780(u8 taskId); +static u8 sub_80888C0(void); +static void sub_80889A8(u8 selection); +static void sub_8088B00(u8 taskId); +static void sub_8088BD0(void); +static void sub_8088C0C(void); +static void sub_8088D8C(void); +static void sub_8088DE0(u8 selection); + +extern const u16 gUnknown_83CC304[]; //sOptionsMenuItemCounts +extern const struct BgTemplate gUnknown_83CC2D8[]; +extern const u8 gUnknown_83CC360[]; +extern const u16 gUnknown_83CC2E4[]; +extern const struct WindowTemplate gUnknown_83CC2B8[]; +extern const u8 gUnknown_83CC363[]; +extern const u8 gUnknown_83CC330[]; +extern const u8 gUnknown_83CC33C[]; +extern const u8 gUnknown_83CC344[]; +extern const u8 gUnknown_83CC34C[]; +extern const u8 gUnknown_83CC354[]; +extern const u8 gUnknown_8419E52[]; +extern const u8 gUnknown_8419DCC[]; +extern const u8* gUnknown_83CC314[MENUITEM_COUNT]; +extern const u8 gUnknown_8419E57[]; + +struct OptionsMenu +{ + /*0x00*/ u16 option[7]; + /*0x0E*/ u16 unkE; + /*0x10*/ u8 state3; + /*0x11*/ u8 state; + /*0x12*/ u8 state2; + /*0x13*/ u8 unk13; +}; + +EWRAM_DATA struct OptionsMenu *sOptionsMenu = {0}; + + +//CB2_InitOptionsMenu +static void sub_808835C(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + + +//VBlankCB_OptionsMenu +static void sub_8088374(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + + +//sub_8088388 +void CB2_OptionsMenuFromStartMenu(void) +{ + int i; + + if (gMain.savedCallback == NULL) + gMain.savedCallback = CB2_ReturnToStartMenu; + sOptionsMenu = AllocZeroed(sizeof(struct OptionsMenu)); + sOptionsMenu->state3 = 0; + sOptionsMenu->state2 = 0; + sOptionsMenu->state = 0; + sOptionsMenu->unkE = 0; + sOptionsMenu->option[MENUITEM_TEXTSPEED] = gSaveBlock2Ptr->optionsTextSpeed; + sOptionsMenu->option[MENUITEM_BATTLESCENE] = gSaveBlock2Ptr->optionsBattleSceneOff; + sOptionsMenu->option[MENUITEM_BATTLESTYLE] = gSaveBlock2Ptr->optionsBattleStyle; + sOptionsMenu->option[MENUITEM_SOUND] = gSaveBlock2Ptr->optionsSound; + sOptionsMenu->option[MENUITEM_BUTTONMODE] = gSaveBlock2Ptr->optionsButtonMode; + sOptionsMenu->option[MENUITEM_FRAMETYPE] = gSaveBlock2Ptr->optionsWindowFrameType; + + for (i = 0; i < MENUITEM_COUNT-2; i++) + { + if (sOptionsMenu->option[i] > gUnknown_83CC304[i]-1) + sOptionsMenu->option[i] = 0; + } + HelpSystem_SetSomeVariable2(0xD); + SetMainCallback2(sub_8088454); +} + + +//sub_8088430 +static void sub_8088430(void) +{ + SetVBlankCallback(0); + SetHBlankCallback(0); +} + + +//sub_8088444 +static void sub_8088444(void) +{ + SetVBlankCallback(sub_8088374); +} + +//sub_8088454 +static void sub_8088454(void) +{ + int i; + switch (sOptionsMenu->state) + { + case 0: + sub_8088430(); + sOptionsMenu->state++; + break; + case 1: + sub_8088530(); + sOptionsMenu->state++; + break; + case 2: + sub_80886D4(); + sOptionsMenu->state++; + break; + case 3: + if (!(sub_80886F0())); + return; + sOptionsMenu->state++; + break; + case 4: + sub_8088BD0(); + sOptionsMenu->state++; + break; + case 5: + sub_8088C0C(); + sOptionsMenu->state++; + break; + case 6: + sub_8088D8C(); + sOptionsMenu->state++; + break; + case 7: + for (i = 0; i < MENUITEM_COUNT; i++) + sub_80889A8(i); + sOptionsMenu->state++; + break; + case 8: + sub_8088DE0(sOptionsMenu->unkE); + sOptionsMenu->state++; + break; + case 9: + sub_8088680(); + sOptionsMenu->state++; + break; + default: + sub_8088514(); + return; + } +} + +//sub_8088514 +static void sub_8088514(void) +{ + CreateTask(sub_8088780, 0); + SetMainCallback2(sub_808835C); +} + + +//sub_8088530 +static void sub_8088530(void) +{ + void * dest = (void *) VRAM; + DmaClearLarge16(3, dest, VRAM_SIZE, 0x1000); + + DmaClear32(3, (void *)OAM, OAM_SIZE); + DmaClear16(3, (void *)PLTT, PLTT_SIZE); + SetGpuReg(REG_OFFSET_DISPCNT, 0); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_83CC2D8, 3); //3 -> ARRAY_COUNT(gUnknown_83CC2D8) + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgX(3, 0, 0); + ChangeBgY(3, 0, 0); + InitWindows(gUnknown_83CC2B8); + DeactivateAllTextPrinters(); + SetGpuReg(REG_OFFSET_BLDCNT, 193); + SetGpuReg(REG_OFFSET_BLDY, 2); + SetGpuReg(REG_OFFSET_WININ, 1); + SetGpuReg(REG_OFFSET_WINOUT, 27); + SetGpuReg(0, 0x3040); + ShowBg(0); + ShowBg(1); + ShowBg(2); +}; + +//sub_8088680 +static void sub_8088680(void) +{ + s32 x; + x = 0xE4 - GetStringWidth(0, gUnknown_8419E57, 0); + FillWindowPixelBuffer(WIN_OPTIONS, 0xFF); + AddTextPrinterParameterized3(2, 0, x, 0, gUnknown_83CC360, 0, gUnknown_8419E57); + PutWindowTilemap(2); + CopyWindowToVram(2, 3); +} + + +//sub_80886D4 +static void sub_80886D4(void) +{ + ResetSpriteData(); + ResetPaletteFade(); + FreeAllSpritePalettes(); + ResetTasks(); + ScanlineEffect_Stop(); +} + +//sub_80886F0 +static bool8 sub_80886F0(void) +{ + switch (sOptionsMenu->state2) + { + case 0: + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->tiles, 0x120, 0x1AA); + break; + case 1: + LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->palette, 0x20, 0x20); + break; + case 2: + LoadPalette(gUnknown_83CC2E4, 0x10, 0x20); + LoadPalette(stdpal_get(2), 0xF0, 0x20); + break; + case 3: + sub_814FDA0(1, 0x1B3, 0x30); + break; + default: + return TRUE; + } + sOptionsMenu->state2++; + return FALSE; +} + + +//sub_8088780 +static void sub_8088780(u8 taskId) +{ + switch (sOptionsMenu->state3) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); + sub_8088444(); + sOptionsMenu->state3++; + break; + case 2: + if (sub_80BF72C) + return; + switch (sub_80888C0()) + { + case 0: + return; + case 1: + sOptionsMenu->state3++; + break; + case 2: + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->tiles, 0x120, 0x1AA); + LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->palette, 0x20, 0x20); + sub_80889A8(sOptionsMenu->unkE); + return; + case 3: + sub_8088DE0(sOptionsMenu->unkE); + return; + case 4: + sub_80889A8(sOptionsMenu->unkE); + return; + default: + return; + } + case 3: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + sOptionsMenu->state3++; + break; + case 1: + case 4: + if (gPaletteFade.active) + return; + sOptionsMenu->state3++; + return; + case 5: + sub_8088B00(taskId); + return; + default: + return; + } +} + + +//OptionsMenu_ProcessInput +static u8 sub_80888C0(void) +{ + u16 current, selection; + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + selection = 2 * sOptionsMenu->unkE; + current = sOptionsMenu->option[selection]; + + if (current == gUnknown_83CC304[selection] - 1) + sOptionsMenu->option[selection] = 0; + else + sOptionsMenu->option[selection] = current + 1; + if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE) + return 2; + else + return 4; + } + else if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + selection = 2*sOptionsMenu->unkE; + current = sOptionsMenu->option[selection]; + if (current == 0) + sOptionsMenu->option[selection] = gUnknown_83CC304[selection] - 1; + else + sOptionsMenu->option[selection] = current - 1; + if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE) + return 2; + else + return 4; + } + else if (gMain.newAndRepeatedKeys & DPAD_UP) + { + selection = sOptionsMenu->unkE; + if (selection == MENUITEM_TEXTSPEED) + sOptionsMenu->unkE = MENUITEM_CANCEL; + else + sOptionsMenu->unkE = selection - 1; + return 3; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + selection = sOptionsMenu->unkE; + if (selection == MENUITEM_CANCEL) + sOptionsMenu->unkE = MENUITEM_TEXTSPEED; + else + sOptionsMenu->unkE = selection + 1; + return 3; + } + else if ((gMain.newKeys & B_BUTTON) || (gMain.newKeys & A_BUTTON)) + { + return 1; + } + else + { + return 0; + } +} + +/* +// must match with goto :( +bool sub_80888C0() +{ + int v0; // r0@2 + _WORD *v1; // r3@2 + int v2; // r4@2 + __int16 v3; // r0@3 + int v4; // r3@8 + __int16 v5; // r0@8 + int v7; // r1@14 + signed __int16 v8; // r0@15 + int v9; // r0@18 + + if (gMain.buttons4_new_and_keyrepeat & DPAD_RIGHT) + { + v0 = 2 * *(_WORD *)(sOptionsMenu + 14); + v1 = (_WORD *)(sOptionsMenu + v0); + v2 = *(_WORD *)(sOptionsMenu + v0); + if ( v2 == *(_WORD *)((char *)&sOptionsMenuItemCounts + v0) - 1 ) + v3 = 0; + else + v3 = v2 + 1; + *v1 = v3; + if ( *(_WORD *)(sOptionsMenu + 14) != 5 ) + return 4; + return 2; + } + if ( gMain.buttons4_new_and_keyrepeat & DPAD_LEFT ) + { + v4 = 2 * *(_WORD *)(sOptionsMenu + 14); + v5 = *(_WORD *)(sOptionsMenu + v4); + if ( !*(_WORD *)(sOptionsMenu + v4) ) + v5 = *(_WORD *)((char *)&sOptionsMenuItemCounts + v4); + *(_WORD *)(sOptionsMenu + v4) = v5 - 1; + if ( *(_WORD *)(sOptionsMenu + 14) != 5 ) + return 4; + return 2; + } + if ( gMain.buttons4_new_and_keyrepeat & 0x40 ) + { + v7 = sOptionsMenu; + if ( *(_WORD *)(sOptionsMenu + 14) ) + v8 = *(_WORD *)(sOptionsMenu + 14) - 1; + else + v8 = 6; + goto LABEL_21; + } + if ( gMain.buttons4_new_and_keyrepeat & 0x80 ) + { + v7 = sOptionsMenu; + v9 = *(_WORD *)(sOptionsMenu + 14); + if ( v9 == 6 ) + { + *(_WORD *)(sOptionsMenu + 14) = 0; + return 3; + } + v8 = v9 + 1; +LABEL_21: + *(_WORD *)(v7 + 14) = v8; + return 3; + } + return gMain.buttons3_new_remapped & 2 || gMain.buttons3_new_remapped & 1; +} +*/ + + +//sub_80889A8 +static void sub_80889A8(u8 selection) +{ + u8* dst; + u8* str; + u8* v8; + u8 x, y; + + x = 0x82; + memcpy(dst, gUnknown_83CC363, 3); + y = ((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) - 1) * selection) + 2; + FillWindowPixelRect(1, 1, x, y, 0x46, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); + switch (selection) + { + case MENUITEM_TEXTSPEED: + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC330); + break; + case MENUITEM_BATTLESCENE: + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC33C); + break; + case MENUITEM_BATTLESTYLE: + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC344); + break; + case MENUITEM_SOUND: + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC34C); + break; + case MENUITEM_BUTTONMODE: + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC354); + break; + case MENUITEM_FRAMETYPE: + StringCopy(str, gUnknown_8419E52); + ConvertIntToDecimalStringN(v8, sOptionsMenu->option[2*selection] + 1, 1, 2); + StringAppendN(str, v8, 3); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, str); + break; + default: + break; + } + PutWindowTilemap(1); + CopyWindowToVram(1, 3); +} + + +//sub_8088B00 +static void sub_8088B00(u8 taskId) +{ + gFieldCallback = sub_807DF64; + SetMainCallback2(gMain.savedCallback); + FreeAllWindowBuffers(); + + gSaveBlock2Ptr->optionsTextSpeed = sOptionsMenu->option[MENUITEM_TEXTSPEED] & 0x7; + gSaveBlock2Ptr->optionsBattleSceneOff = sOptionsMenu->option[MENUITEM_BATTLESCENE] & 0x1; + gSaveBlock2Ptr->optionsBattleStyle = sOptionsMenu->option[MENUITEM_BATTLESTYLE] & 0x1; + gSaveBlock2Ptr->optionsSound = sOptionsMenu->option[MENUITEM_SOUND] & 0x1; + gSaveBlock2Ptr->optionsButtonMode = sOptionsMenu->option[MENUITEM_BUTTONMODE]; + gSaveBlock2Ptr->optionsWindowFrameType = sOptionsMenu->option[MENUITEM_FRAMETYPE]; + + SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); + Free(sOptionsMenu); + sOptionsMenu = NULL; + DestroyTask(taskId); +} + + +//sub_8088BD0 +static void sub_8088BD0(void) +{ + FillWindowPixelBuffer(0, 0x11); + AddTextPrinterParameterized(WIN_TEXT_OPTION, 2, gUnknown_8419DCC, 8, 1, TEXT_SPEED_FF, NULL); + PutWindowTilemap(0); + CopyWindowToVram(0, 3); +} + + +//sub_8088C0C +static void sub_8088C0C(void) +{ + FillBgTilemapBufferRect(1, 0x1B3, 1, 2, 1, 1, 3); + FillBgTilemapBufferRect(1, 0x1B4, 2, 2, 0x1B, 1, 3); + FillBgTilemapBufferRect(1, 0x1B5, 0x1C, 2, 1, 1, 3); + FillBgTilemapBufferRect(1, 0x1B6, 1, 3, 1, 2, 3); + FillBgTilemapBufferRect(1, 0x1B8, 1, 0x1C, 1, 2, 3); + FillBgTilemapBufferRect(1, 0x1B9, 1, 5, 1, 1, 3); + FillBgTilemapBufferRect(1, 0x1BA, 2, 5, 0x1B, 1, 3); + FillBgTilemapBufferRect(1, 0x1BB, 0x1C, 5, 1, 1, 3); + FillBgTilemapBufferRect(1, 0x1AA, 1, 6, 1, 1, 2); + FillBgTilemapBufferRect(1, 0x1AB, 2, 6, 0x1A, 1, 2); + FillBgTilemapBufferRect(1, 0x1AC, 0x1C, 6, 1, 1, 2); + FillBgTilemapBufferRect(1, 0x1AD, 1, 7, 1, 0x10, 2); + FillBgTilemapBufferRect(1, 0x1AF, 0x1C, 7, 1, 0x10, 2); + FillBgTilemapBufferRect(1, 0x1B0, 1, 0x13, 1, 1, 2); + FillBgTilemapBufferRect(1, 0x1B1, 2, 0x13, 0x1A, 1, 2); + FillBgTilemapBufferRect(1, 0x1B2, 0x1C, 0x13, 1, 1, 2); + CopyBgTilemapBufferToVram(1); +} + + +//sub_8088D8C +static void sub_8088D8C(void) +{ + int i; + u8 attr; + + FillWindowPixelBuffer(1, 0x11); + + for (i = 0; i < MENUITEM_COUNT; i++) + { + attr = (((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))*i) + 2) - i; + AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, attr, 0xFF, 0); + } +} + + +//sub_8088DE0 +static void sub_8088DE0(u8 selection) +{ + u8 attr; + attr = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT); + SetGpuReg(0x44, ((selection * (attr - 1) + 58) << 8) | (selection * (attr - 1) + 58 + attr)); + SetGpuReg(0x40, 4320); +} + diff --git a/sym_ewram.txt b/sym_ewram.txt index a892eb532..cec65b59c 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -226,7 +226,7 @@ gFieldEffectArguments: @ 20386E0 .include "src/scanline_effect.o" .align 2 -gUnknown_2039620: @ 2039620 +sOptionsMenu: @ 2039620 .space 0x4 gTrainerCards: @ 2039624 From 422533386dc2c92de4675fa5f9df10b81cfe6eb1 Mon Sep 17 00:00:00 2001 From: Evan Date: Mon, 18 Nov 2019 15:21:22 -0700 Subject: [PATCH 25/49] matching up to sub_8088D8C --- include/menu_helpers.h | 2 +- src/menu_helpers.c | 2 +- src/option_menu.c | 655 ++++++++++++++++++++++++++++++----------- 3 files changed, 488 insertions(+), 171 deletions(-) diff --git a/include/menu_helpers.h b/include/menu_helpers.h index 6ea771500..8d042825c 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -12,7 +12,7 @@ struct YesNoFuncTable }; bool16 RunTextPrinters_CheckActive(u8 textPrinterId); -bool8 sub_80BF72C(void); +bool32 sub_80BF72C(void); bool8 sub_80BF748(void); bool8 MenuHelpers_LinkSomething(void); void SetVBlankHBlankCallbacksToNull(void); diff --git a/src/menu_helpers.c b/src/menu_helpers.c index 06e7bb08b..027280beb 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -125,7 +125,7 @@ bool8 MenuHelpers_LinkSomething(void) return FALSE; } -bool8 sub_80BF72C(void) +bool32 sub_80BF72C(void) { if (!MenuHelpers_LinkSomething()) return FALSE; diff --git a/src/option_menu.c b/src/option_menu.c index 57de35f11..c98a2ec7b 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -39,6 +39,65 @@ enum WIN_OPTIONS }; +/* +static const struct WindowTemplate gUnknown_83CC2B8[] = //sOptionMenuWinTemplates +{ + { + .bg = 1, + .tilemapLeft = 2, + .tilemapTop = 3, + .width = 26, + .height = 2, + .paletteNum = 1, + .baseBlock = 2 + }, + { + .bg = 0, + .tilemapLeft = 2, + .tilemapTop =7, + .width = 26, + .height = 12, + .paletteNum = 1, + .baseBlock = 0x36 + }, + DUMMY_WIN_TEMPLATE +}; +static const struct BgTemplate gUnknown_83CC2D8[] = //sOptionMenuBgTemplates +{ + { + .bg = 1, + .charBaseIndex = 1, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + { + .bg = 0, + .charBaseIndex = 1, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0 + } +}; + + +static const u16 gUnknown_83CC304[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0}; //sOptionsMenuItemCounts +static const u8* gUnknown_83CC314[MENUITEM_COUNT] = //sOptionMenuItemsNames +{ + [MENUITEM_TEXTSPEED] = gText_TextSpeed, + [MENUITEM_BATTLESCENE] = gText_BattleScene, + [MENUITEM_BATTLESTYLE] = gText_BattleStyle, + [MENUITEM_SOUND] = gText_Sound, + [MENUITEM_BUTTONMODE] = gText_ButtonMode, + [MENUITEM_FRAMETYPE] = gText_Frame, + [MENUITEM_CANCEL] = gText_OptionMenuCancel, +}; +*/ + //This file's functions static void sub_808835C(void); static void sub_8088374(void); @@ -57,27 +116,27 @@ static void sub_8088B00(u8 taskId); static void sub_8088BD0(void); static void sub_8088C0C(void); static void sub_8088D8C(void); -static void sub_8088DE0(u8 selection); +static void sub_8088DE0(u16 selection); -extern const u16 gUnknown_83CC304[]; //sOptionsMenuItemCounts -extern const struct BgTemplate gUnknown_83CC2D8[]; -extern const u8 gUnknown_83CC360[]; -extern const u16 gUnknown_83CC2E4[]; -extern const struct WindowTemplate gUnknown_83CC2B8[]; -extern const u8 gUnknown_83CC363[]; -extern const u8 gUnknown_83CC330[]; -extern const u8 gUnknown_83CC33C[]; -extern const u8 gUnknown_83CC344[]; -extern const u8 gUnknown_83CC34C[]; -extern const u8 gUnknown_83CC354[]; -extern const u8 gUnknown_8419E52[]; -extern const u8 gUnknown_8419DCC[]; +extern const struct WindowTemplate gUnknown_83CC2B8[3]; +extern const struct BgTemplate gUnknown_83CC2D8[2]; +extern const u16 gUnknown_83CC2E4[0x20]; +extern const u16 gUnknown_83CC304[MENUITEM_COUNT]; //sOptionsMenuItemCounts extern const u8* gUnknown_83CC314[MENUITEM_COUNT]; +extern const u8 gUnknown_83CC330[0xC]; +extern const u8 gUnknown_83CC33C[0x8]; +extern const u8 gUnknown_83CC344[0x8]; +extern const u8 gUnknown_83CC34C[0x8]; +extern const u8 gUnknown_83CC354[0xC]; +extern const u8 gUnknown_83CC360[0x3]; +extern const u8 gUnknown_83CC363[0x3]; +extern const u8 gUnknown_8419DCC[]; +extern const u8 gUnknown_8419E52[]; extern const u8 gUnknown_8419E57[]; struct OptionsMenu { - /*0x00*/ u16 option[7]; + /*0x00*/ u16 option[7]; //0,2,4,6,8,a,c /*0x0E*/ u16 unkE; /*0x10*/ u8 state3; /*0x11*/ u8 state; @@ -110,7 +169,7 @@ static void sub_8088374(void) //sub_8088388 void CB2_OptionsMenuFromStartMenu(void) { - int i; + u8 i; if (gMain.savedCallback == NULL) gMain.savedCallback = CB2_ReturnToStartMenu; @@ -126,10 +185,10 @@ void CB2_OptionsMenuFromStartMenu(void) sOptionsMenu->option[MENUITEM_BUTTONMODE] = gSaveBlock2Ptr->optionsButtonMode; sOptionsMenu->option[MENUITEM_FRAMETYPE] = gSaveBlock2Ptr->optionsWindowFrameType; - for (i = 0; i < MENUITEM_COUNT-2; i++) + for (i = 0; i < MENUITEM_COUNT-1; i++) { - if (sOptionsMenu->option[i] > gUnknown_83CC304[i]-1) - sOptionsMenu->option[i] = 0; + if (sOptionsMenu->option[i] > (gUnknown_83CC304[i])-1) + sOptionsMenu->option[i] = 0; } HelpSystem_SetSomeVariable2(0xD); SetMainCallback2(sub_8088454); @@ -153,55 +212,46 @@ static void sub_8088444(void) //sub_8088454 static void sub_8088454(void) { - int i; - switch (sOptionsMenu->state) + u8 i, state; + state = sOptionsMenu->state; + switch (state) { case 0: sub_8088430(); - sOptionsMenu->state++; break; case 1: sub_8088530(); - sOptionsMenu->state++; break; case 2: sub_80886D4(); - sOptionsMenu->state++; break; case 3: - if (!(sub_80886F0())); + if (sub_80886F0() != TRUE) //silly matching quirk return; - sOptionsMenu->state++; break; case 4: sub_8088BD0(); - sOptionsMenu->state++; break; case 5: sub_8088C0C(); - sOptionsMenu->state++; break; case 6: sub_8088D8C(); - sOptionsMenu->state++; break; case 7: for (i = 0; i < MENUITEM_COUNT; i++) sub_80889A8(i); - sOptionsMenu->state++; break; case 8: sub_8088DE0(sOptionsMenu->unkE); - sOptionsMenu->state++; break; case 9: sub_8088680(); - sOptionsMenu->state++; break; default: sub_8088514(); - return; } + sOptionsMenu->state++; } //sub_8088514 @@ -217,12 +267,12 @@ static void sub_8088530(void) { void * dest = (void *) VRAM; DmaClearLarge16(3, dest, VRAM_SIZE, 0x1000); - + DmaClear32(3, (void *)OAM, OAM_SIZE); DmaClear16(3, (void *)PLTT, PLTT_SIZE); SetGpuReg(REG_OFFSET_DISPCNT, 0); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_83CC2D8, 3); //3 -> ARRAY_COUNT(gUnknown_83CC2D8) + InitBgsFromTemplates(0, gUnknown_83CC2D8, 3); //3 -> ARRAY_COUNT(gUnknown_83CC2D8) ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); ChangeBgX(1, 0, 0); @@ -233,10 +283,10 @@ static void sub_8088530(void) ChangeBgY(3, 0, 0); InitWindows(gUnknown_83CC2B8); DeactivateAllTextPrinters(); - SetGpuReg(REG_OFFSET_BLDCNT, 193); + SetGpuReg(REG_OFFSET_BLDCNT, 0xC1); SetGpuReg(REG_OFFSET_BLDY, 2); SetGpuReg(REG_OFFSET_WININ, 1); - SetGpuReg(REG_OFFSET_WINOUT, 27); + SetGpuReg(REG_OFFSET_WINOUT, 0x27); SetGpuReg(0, 0x3040); ShowBg(0); ShowBg(1); @@ -248,7 +298,7 @@ static void sub_8088680(void) { s32 x; x = 0xE4 - GetStringWidth(0, gUnknown_8419E57, 0); - FillWindowPixelBuffer(WIN_OPTIONS, 0xFF); + FillWindowPixelBuffer(2, 0xFF); AddTextPrinterParameterized3(2, 0, x, 0, gUnknown_83CC360, 0, gUnknown_8419E57); PutWindowTilemap(2); CopyWindowToVram(2, 3); @@ -271,10 +321,10 @@ static bool8 sub_80886F0(void) switch (sOptionsMenu->state2) { case 0: - LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->tiles, 0x120, 0x1AA); + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); break; case 1: - LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->palette, 0x20, 0x20); + LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); break; case 2: LoadPalette(gUnknown_83CC2E4, 0x10, 0x20); @@ -291,72 +341,228 @@ static bool8 sub_80886F0(void) } -//sub_8088780 + +// I could not get this function to match. GOTO statements weren't even compiling correctly. +#ifdef NONMATCHING static void sub_8088780(u8 taskId) { + u8 v2, v5; + struct OptionsMenu v4; + switch (sOptionsMenu->state3) { case 0: - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); sub_8088444(); sOptionsMenu->state3++; break; case 2: - if (sub_80BF72C) + if (sub_80BF72C() == TRUE) return; switch (sub_80888C0()) { - case 0: - return; case 1: sOptionsMenu->state3++; break; case 2: - LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->tiles, 0x120, 0x1AA); - LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->palette, 0x20, 0x20); + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); + LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); sub_80889A8(sOptionsMenu->unkE); - return; + sOptionsMenu->state3++; + break; case 3: sub_8088DE0(sOptionsMenu->unkE); - return; + break; case 4: sub_80889A8(sOptionsMenu->unkE); - return; + sOptionsMenu->state3++; + break; default: return; } case 3: - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); sOptionsMenu->state3++; - break; case 1: case 4: if (gPaletteFade.active) return; sOptionsMenu->state3++; - return; case 5: sub_8088B00(taskId); - return; + break; default: return; } } - - +#else +NAKED +static void sub_8088780(u8 taskId) +{ + asm_unified("\tpush {r4,lr}\n" + "\tsub sp, 0x4\n" + "\tlsls r0, 24\n" + "\tlsrs r2, r0, 24\n" + "\tldr r1, _080887A0 @ =sOptionsMenu\n" + "\tldr r0, [r1]\n" + "\tldrb r0, [r0, 0x10]\n" + "\tadds r3, r1, 0\n" + "\tcmp r0, 0x5\n" + "\tbls _08088796\n" + "\tb _080888B6\n" + "_08088796:\n" + "\tlsls r0, 2\n" + "\tldr r1, _080887A4 @ =_080887A8\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_080887A0: .4byte sOptionsMenu\n" + "_080887A4: .4byte _080887A8\n" + "\t.align 2, 0\n" + "_080887A8:\n" + "\t.4byte _080887C0\n" + "\t.4byte _08088894\n" + "\t.4byte _080887E0\n" + "\t.4byte _08088878\n" + "\t.4byte _08088894\n" + "\t.4byte _080888B0\n" + "_080887C0:\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tmovs r1, 0\n" + "\tstr r1, [sp]\n" + "\tmovs r2, 0x10\n" + "\tmovs r3, 0\n" + "\tbl BeginNormalPaletteFade\n" + "\tbl sub_8088444\n" + "\tldr r0, _080887DC @ =sOptionsMenu\n" + "\tldr r1, [r0]\n" + "\tb _080888A2\n" + "\t.align 2, 0\n" + "_080887DC: .4byte sOptionsMenu\n" + "_080887E0:\n" + "\tbl sub_80BF72C\n" + "\tcmp r0, 0x1\n" + "\tbeq _080888B6\n" + "\tbl sub_80888C0\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x4\n" + "\tbhi _080888B6\n" + "\tlsls r0, 2\n" + "\tldr r1, _08088800 @ =_08088804\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_08088800: .4byte _08088804\n" + "\t.align 2, 0\n" + "_08088804:\n" + "\t.4byte _080888B6\n" + "\t.4byte _08088818\n" + "\t.4byte _08088824\n" + "\t.4byte _08088858\n" + "\t.4byte _08088868\n" + "_08088818:\n" + "\tldr r0, _08088820 @ =sOptionsMenu\n" + "\tldr r1, [r0]\n" + "\tb _080888A2\n" + "\t.align 2, 0\n" + "_08088820: .4byte sOptionsMenu\n" + "_08088824:\n" + "\tldr r4, _08088854 @ =sOptionsMenu\n" + "\tldr r0, [r4]\n" + "\tldrb r0, [r0, 0xA]\n" + "\tbl GetUserFrameGraphicsInfo\n" + "\tldr r1, [r0]\n" + "\tmovs r2, 0x90\n" + "\tlsls r2, 1\n" + "\tmovs r3, 0xD5\n" + "\tlsls r3, 1\n" + "\tmovs r0, 0x1\n" + "\tbl LoadBgTiles\n" + "\tldr r0, [r4]\n" + "\tldrb r0, [r0, 0xA]\n" + "\tbl GetUserFrameGraphicsInfo\n" + "\tldr r0, [r0, 0x4]\n" + "\tmovs r1, 0x20\n" + "\tmovs r2, 0x20\n" + "\tbl LoadPalette\n" + "\tldr r0, [r4]\n" + "\tb _0808886C\n" + "\t.align 2, 0\n" + "_08088854: .4byte sOptionsMenu\n" + "_08088858:\n" + "\tldr r0, _08088864 @ =sOptionsMenu\n" + "\tldr r0, [r0]\n" + "\tldrh r0, [r0, 0xE]\n" + "\tbl sub_8088DE0\n" + "\tb _080888B6\n" + "\t.align 2, 0\n" + "_08088864: .4byte sOptionsMenu\n" + "_08088868:\n" + "\tldr r0, _08088874 @ =sOptionsMenu\n" + "\tldr r0, [r0]\n" + "_0808886C:\n" + "\tldrb r0, [r0, 0xE]\n" + "\tbl sub_80889A8\n" + "\tb _080888B6\n" + "\t.align 2, 0\n" + "_08088874: .4byte sOptionsMenu\n" + "_08088878:\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tmovs r1, 0\n" + "\tstr r1, [sp]\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0x10\n" + "\tbl BeginNormalPaletteFade\n" + "\tldr r0, _08088890 @ =sOptionsMenu\n" + "\tldr r1, [r0]\n" + "\tb _080888A2\n" + "\t.align 2, 0\n" + "_08088890: .4byte sOptionsMenu\n" + "_08088894:\n" + "\tldr r0, _080888AC @ =gPaletteFade\n" + "\tldrb r1, [r0, 0x7]\n" + "\tmovs r0, 0x80\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _080888B6\n" + "\tldr r1, [r3]\n" + "_080888A2:\n" + "\tldrb r0, [r1, 0x10]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1, 0x10]\n" + "\tb _080888B6\n" + "\t.align 2, 0\n" + "_080888AC: .4byte gPaletteFade\n" + "_080888B0:\n" + "\tadds r0, r2, 0\n" + "\tbl sub_8088B00\n" + "_080888B6:\n" + "\tadd sp, 0x4\n" + "\tpop {r4}\n" + "\tpop {r0}\n" + "\tbx r0\n"); +} +#endif + + + //OptionsMenu_ProcessInput static u8 sub_80888C0(void) { - u16 current, selection; + u16 current; + u16* curr; if (gMain.newAndRepeatedKeys & DPAD_RIGHT) { - selection = 2 * sOptionsMenu->unkE; - current = sOptionsMenu->option[selection]; - - if (current == gUnknown_83CC304[selection] - 1) - sOptionsMenu->option[selection] = 0; + current = sOptionsMenu->option[(sOptionsMenu->unkE)]; + if (current == (gUnknown_83CC304[sOptionsMenu->unkE] - 1)) + sOptionsMenu->option[sOptionsMenu->unkE] = 0; else - sOptionsMenu->option[selection] = current + 1; + sOptionsMenu->option[sOptionsMenu->unkE] = current + 1; if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE) return 2; else @@ -364,12 +570,12 @@ static u8 sub_80888C0(void) } else if (gMain.newAndRepeatedKeys & DPAD_LEFT) { - selection = 2*sOptionsMenu->unkE; - current = sOptionsMenu->option[selection]; - if (current == 0) - sOptionsMenu->option[selection] = gUnknown_83CC304[selection] - 1; + curr = &sOptionsMenu->option[sOptionsMenu->unkE]; + if (*curr == 0) + *curr = gUnknown_83CC304[sOptionsMenu->unkE] - 1; else - sOptionsMenu->option[selection] = current - 1; + --*(curr); + if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE) return 2; else @@ -377,20 +583,18 @@ static u8 sub_80888C0(void) } else if (gMain.newAndRepeatedKeys & DPAD_UP) { - selection = sOptionsMenu->unkE; - if (selection == MENUITEM_TEXTSPEED) + if (sOptionsMenu->unkE == MENUITEM_TEXTSPEED) sOptionsMenu->unkE = MENUITEM_CANCEL; else - sOptionsMenu->unkE = selection - 1; + sOptionsMenu->unkE = sOptionsMenu->unkE - 1; return 3; } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - selection = sOptionsMenu->unkE; - if (selection == MENUITEM_CANCEL) + if (sOptionsMenu->unkE == MENUITEM_CANCEL) sOptionsMenu->unkE = MENUITEM_TEXTSPEED; else - sOptionsMenu->unkE = selection + 1; + sOptionsMenu->unkE = sOptionsMenu->unkE + 1; return 3; } else if ((gMain.newKeys & B_BUTTON) || (gMain.newKeys & A_BUTTON)) @@ -403,85 +607,22 @@ static u8 sub_80888C0(void) } } -/* -// must match with goto :( -bool sub_80888C0() -{ - int v0; // r0@2 - _WORD *v1; // r3@2 - int v2; // r4@2 - __int16 v3; // r0@3 - int v4; // r3@8 - __int16 v5; // r0@8 - int v7; // r1@14 - signed __int16 v8; // r0@15 - int v9; // r0@18 - - if (gMain.buttons4_new_and_keyrepeat & DPAD_RIGHT) - { - v0 = 2 * *(_WORD *)(sOptionsMenu + 14); - v1 = (_WORD *)(sOptionsMenu + v0); - v2 = *(_WORD *)(sOptionsMenu + v0); - if ( v2 == *(_WORD *)((char *)&sOptionsMenuItemCounts + v0) - 1 ) - v3 = 0; - else - v3 = v2 + 1; - *v1 = v3; - if ( *(_WORD *)(sOptionsMenu + 14) != 5 ) - return 4; - return 2; - } - if ( gMain.buttons4_new_and_keyrepeat & DPAD_LEFT ) - { - v4 = 2 * *(_WORD *)(sOptionsMenu + 14); - v5 = *(_WORD *)(sOptionsMenu + v4); - if ( !*(_WORD *)(sOptionsMenu + v4) ) - v5 = *(_WORD *)((char *)&sOptionsMenuItemCounts + v4); - *(_WORD *)(sOptionsMenu + v4) = v5 - 1; - if ( *(_WORD *)(sOptionsMenu + 14) != 5 ) - return 4; - return 2; - } - if ( gMain.buttons4_new_and_keyrepeat & 0x40 ) - { - v7 = sOptionsMenu; - if ( *(_WORD *)(sOptionsMenu + 14) ) - v8 = *(_WORD *)(sOptionsMenu + 14) - 1; - else - v8 = 6; - goto LABEL_21; - } - if ( gMain.buttons4_new_and_keyrepeat & 0x80 ) - { - v7 = sOptionsMenu; - v9 = *(_WORD *)(sOptionsMenu + 14); - if ( v9 == 6 ) - { - *(_WORD *)(sOptionsMenu + 14) = 0; - return 3; - } - v8 = v9 + 1; -LABEL_21: - *(_WORD *)(v7 + 14) = v8; - return 3; - } - return gMain.buttons3_new_remapped & 2 || gMain.buttons3_new_remapped & 1; -} -*/ - //sub_80889A8 +#ifdef NONMATCHING // could not get it to match perfectly, no idea how they put so many vars on the stack static void sub_80889A8(u8 selection) { u8* dst; u8* str; - u8* v8; + u8* v8; u8 x, y; + u8** col; - x = 0x82; - memcpy(dst, gUnknown_83CC363, 3); + memcpy(&dst, gUnknown_83CC363, 3); y = ((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) - 1) * selection) + 2; + x = 0x82; FillWindowPixelRect(1, 1, x, y, 0x46, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); + switch (selection) { case MENUITEM_TEXTSPEED: @@ -501,7 +642,7 @@ static void sub_80889A8(u8 selection) break; case MENUITEM_FRAMETYPE: StringCopy(str, gUnknown_8419E52); - ConvertIntToDecimalStringN(v8, sOptionsMenu->option[2*selection] + 1, 1, 2); + ConvertIntToDecimalStringN(v8, sOptionsMenu->option[2*selection] + 1, 1, 2); StringAppendN(str, v8, 3); AddTextPrinterParameterized3(1, 2, x, y, dst, -1, str); break; @@ -511,6 +652,173 @@ static void sub_80889A8(u8 selection) PutWindowTilemap(1); CopyWindowToVram(1, 3); } +#else +NAKED +static void sub_80889A8(u8 selection) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r8\n" + "\tpush {r7}\n" + "\tsub sp, 0x30\n" + "\tlsls r0, 24\n" + "\tlsrs r5, r0, 24\n" + "\tadd r4, sp, 0x2C\n" + "\tldr r1, _08088A08 @ =gUnknown_83CC363\n" + "\tadds r0, r4, 0\n" + "\tmovs r2, 0x3\n" + "\tbl memcpy\n" + "\tmovs r0, 0x82\n" + "\tmov r8, r0\n" + "\tmovs r0, 0x2\n" + "\tmovs r1, 0x1\n" + "\tbl GetFontAttribute\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tsubs r0, 0x1\n" + "\tmuls r0, r5\n" + "\tadds r0, 0x2\n" + "\tlsls r0, 24\n" + "\tlsrs r7, r0, 24\n" + "\tmovs r0, 0x2\n" + "\tmovs r1, 0x1\n" + "\tbl GetFontAttribute\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmovs r1, 0x46\n" + "\tstr r1, [sp]\n" + "\tstr r0, [sp, 0x4]\n" + "\tmovs r0, 0x1\n" + "\tmovs r1, 0x1\n" + "\tmovs r2, 0x82\n" + "\tadds r3, r7, 0\n" + "\tbl FillWindowPixelRect\n" + "\tadds r6, r4, 0\n" + "\tcmp r5, 0x5\n" + "\tbhi _08088ADE\n" + "\tlsls r0, r5, 2\n" + "\tldr r1, _08088A0C @ =_08088A10\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_08088A08: .4byte gUnknown_83CC363\n" + "_08088A0C: .4byte _08088A10\n" + "\t.align 2, 0\n" + "_08088A10:\n" + "\t.4byte _08088A28\n" + "\t.4byte _08088A38\n" + "\t.4byte _08088A48\n" + "\t.4byte _08088A58\n" + "\t.4byte _08088A68\n" + "\t.4byte _08088A9C\n" + "_08088A28:\n" + "\tstr r6, [sp]\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tstr r0, [sp, 0x4]\n" + "\tldr r2, _08088A34 @ =gUnknown_83CC330\n" + "\tb _08088A72\n" + "\t.align 2, 0\n" + "_08088A34: .4byte gUnknown_83CC330\n" + "_08088A38:\n" + "\tstr r6, [sp]\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tstr r0, [sp, 0x4]\n" + "\tldr r2, _08088A44 @ =gUnknown_83CC33C\n" + "\tb _08088A72\n" + "\t.align 2, 0\n" + "_08088A44: .4byte gUnknown_83CC33C\n" + "_08088A48:\n" + "\tstr r6, [sp]\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tstr r0, [sp, 0x4]\n" + "\tldr r2, _08088A54 @ =gUnknown_83CC344\n" + "\tb _08088A72\n" + "\t.align 2, 0\n" + "_08088A54: .4byte gUnknown_83CC344\n" + "_08088A58:\n" + "\tstr r6, [sp]\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tstr r0, [sp, 0x4]\n" + "\tldr r2, _08088A64 @ =gUnknown_83CC34C\n" + "\tb _08088A72\n" + "\t.align 2, 0\n" + "_08088A64: .4byte gUnknown_83CC34C\n" + "_08088A68:\n" + "\tstr r6, [sp]\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tstr r0, [sp, 0x4]\n" + "\tldr r2, _08088A94 @ =gUnknown_83CC354\n" + "_08088A72:\n" + "\tldr r0, _08088A98 @ =sOptionsMenu\n" + "\tldr r0, [r0]\n" + "\tlsls r1, r5, 1\n" + "\tadds r0, r1\n" + "\tldrh r0, [r0]\n" + "\tlsls r0, 2\n" + "\tadds r0, r2\n" + "\tldr r0, [r0]\n" + "\tstr r0, [sp, 0x8]\n" + "\tmovs r0, 0x1\n" + "\tmovs r1, 0x2\n" + "\tmov r2, r8\n" + "\tadds r3, r7, 0\n" + "\tbl AddTextPrinterParameterized3\n" + "\tb _08088ADE\n" + "\t.align 2, 0\n" + "_08088A94: .4byte gUnknown_83CC354\n" + "_08088A98: .4byte sOptionsMenu\n" + "_08088A9C:\n" + "\tldr r1, _08088AF8 @ =gUnknown_8419E52\n" + "\tadd r0, sp, 0xC\n" + "\tbl StringCopy\n" + "\tadd r4, sp, 0x20\n" + "\tldr r0, _08088AFC @ =sOptionsMenu\n" + "\tldr r0, [r0]\n" + "\tlsls r1, r5, 1\n" + "\tadds r0, r1\n" + "\tldrh r1, [r0]\n" + "\tadds r1, 0x1\n" + "\tadds r0, r4, 0\n" + "\tmovs r2, 0x1\n" + "\tmovs r3, 0x2\n" + "\tbl ConvertIntToDecimalStringN\n" + "\tadd r0, sp, 0xC\n" + "\tadds r1, r4, 0\n" + "\tmovs r2, 0x3\n" + "\tbl StringAppendN\n" + "\tstr r6, [sp]\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tstr r0, [sp, 0x4]\n" + "\tadd r0, sp, 0xC\n" + "\tstr r0, [sp, 0x8]\n" + "\tmovs r0, 0x1\n" + "\tmovs r1, 0x2\n" + "\tmov r2, r8\n" + "\tadds r3, r7, 0\n" + "\tbl AddTextPrinterParameterized3\n" + "_08088ADE:\n" + "\tmovs r0, 0x1\n" + "\tbl PutWindowTilemap\n" + "\tmovs r0, 0x1\n" + "\tmovs r1, 0x3\n" + "\tbl CopyWindowToVram\n" + "\tadd sp, 0x30\n" + "\tpop {r3}\n" + "\tmov r8, r3\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_08088AF8: .4byte gUnknown_8419E52\n" + "_08088AFC: .4byte sOptionsMenu\n"); +} +#endif //sub_8088B00 @@ -520,20 +828,20 @@ static void sub_8088B00(u8 taskId) SetMainCallback2(gMain.savedCallback); FreeAllWindowBuffers(); - gSaveBlock2Ptr->optionsTextSpeed = sOptionsMenu->option[MENUITEM_TEXTSPEED] & 0x7; - gSaveBlock2Ptr->optionsBattleSceneOff = sOptionsMenu->option[MENUITEM_BATTLESCENE] & 0x1; - gSaveBlock2Ptr->optionsBattleStyle = sOptionsMenu->option[MENUITEM_BATTLESTYLE] & 0x1; - gSaveBlock2Ptr->optionsSound = sOptionsMenu->option[MENUITEM_SOUND] & 0x1; - gSaveBlock2Ptr->optionsButtonMode = sOptionsMenu->option[MENUITEM_BUTTONMODE]; - gSaveBlock2Ptr->optionsWindowFrameType = sOptionsMenu->option[MENUITEM_FRAMETYPE]; - + gSaveBlock2Ptr->optionsTextSpeed = (u8) sOptionsMenu->option[MENUITEM_TEXTSPEED]; + gSaveBlock2Ptr->optionsBattleSceneOff = (u8) sOptionsMenu->option[MENUITEM_BATTLESCENE]; + gSaveBlock2Ptr->optionsBattleStyle = (u8) sOptionsMenu->option[MENUITEM_BATTLESTYLE]; + gSaveBlock2Ptr->optionsSound = sOptionsMenu->option[MENUITEM_SOUND]; + gSaveBlock2Ptr->optionsButtonMode = (u8) sOptionsMenu->option[MENUITEM_BUTTONMODE]; + gSaveBlock2Ptr->optionsWindowFrameType = (u8) sOptionsMenu->option[MENUITEM_FRAMETYPE]; SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); - Free(sOptionsMenu); + Free(sOptionsMenu); sOptionsMenu = NULL; - DestroyTask(taskId); + DestroyTask(taskId); } - + + //sub_8088BD0 static void sub_8088BD0(void) { @@ -545,24 +853,28 @@ static void sub_8088BD0(void) //sub_8088C0C +//double check static void sub_8088C0C(void) { + u8 h; + h = 2; + FillBgTilemapBufferRect(1, 0x1B3, 1, 2, 1, 1, 3); FillBgTilemapBufferRect(1, 0x1B4, 2, 2, 0x1B, 1, 3); FillBgTilemapBufferRect(1, 0x1B5, 0x1C, 2, 1, 1, 3); - FillBgTilemapBufferRect(1, 0x1B6, 1, 3, 1, 2, 3); - FillBgTilemapBufferRect(1, 0x1B8, 1, 0x1C, 1, 2, 3); - FillBgTilemapBufferRect(1, 0x1B9, 1, 5, 1, 1, 3); + FillBgTilemapBufferRect(1, 0x1B6, 1, 3, 1, h, 3); + FillBgTilemapBufferRect(1, 0x1B8, 1, 0x1C, 1, h, 3); + FillBgTilemapBufferRect(1, 0x1B9, 1, 5, 1, 1, 3); FillBgTilemapBufferRect(1, 0x1BA, 2, 5, 0x1B, 1, 3); FillBgTilemapBufferRect(1, 0x1BB, 0x1C, 5, 1, 1, 3); - FillBgTilemapBufferRect(1, 0x1AA, 1, 6, 1, 1, 2); - FillBgTilemapBufferRect(1, 0x1AB, 2, 6, 0x1A, 1, 2); - FillBgTilemapBufferRect(1, 0x1AC, 0x1C, 6, 1, 1, 2); - FillBgTilemapBufferRect(1, 0x1AD, 1, 7, 1, 0x10, 2); - FillBgTilemapBufferRect(1, 0x1AF, 0x1C, 7, 1, 0x10, 2); - FillBgTilemapBufferRect(1, 0x1B0, 1, 0x13, 1, 1, 2); - FillBgTilemapBufferRect(1, 0x1B1, 2, 0x13, 0x1A, 1, 2); - FillBgTilemapBufferRect(1, 0x1B2, 0x1C, 0x13, 1, 1, 2); + FillBgTilemapBufferRect(1, 0x1AA, 1, 6, 1, 1, h); + FillBgTilemapBufferRect(1, 0x1AB, 2, 6, 0x1A, 1, h); + FillBgTilemapBufferRect(1, 0x1AC, 0x1C, 6, 1, 1, h); + FillBgTilemapBufferRect(1, 0x1AD, 1, 7, 1, 0x10, h); + FillBgTilemapBufferRect(1, 0x1AF, 0x1C, 7, 1, 0x10, h); + FillBgTilemapBufferRect(1, 0x1B0, 1, 0x13, 1, 1, h); + FillBgTilemapBufferRect(1, 0x1B1, 2, 0x13, 0x1A, 1, h); + FillBgTilemapBufferRect(1, 0x1B2, 0x1C, 0x13, 1, 1, h); CopyBgTilemapBufferToVram(1); } @@ -571,20 +883,25 @@ static void sub_8088C0C(void) static void sub_8088D8C(void) { int i; - u8 attr; + u8 y; FillWindowPixelBuffer(1, 0x11); for (i = 0; i < MENUITEM_COUNT; i++) { - attr = (((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))*i) + 2) - i; - AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, attr, 0xFF, 0); + //AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, (u8) ((i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))) + 2) - i, 0xFF, 0); + //gets registers right, but an lsl/lsr 0x18 after GetFontAttribute that shouldn't be there + y = i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); + y += 2; + y -= i; + AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, y, 0xFF, 0); + } } //sub_8088DE0 -static void sub_8088DE0(u8 selection) +static void sub_8088DE0(u16 selection) { u8 attr; attr = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT); From a26885c755c4f90900c2a592214b572be32f4edb Mon Sep 17 00:00:00 2001 From: Evan Date: Mon, 18 Nov 2019 21:03:51 -0700 Subject: [PATCH 26/49] matching rom --- data/option_menu.s | 33 ++++----- data/strings.s | 30 ++++---- graphics/misc/unk_83cc2e4.pal | 19 +++++ include/menu_helpers.h | 2 +- include/strings.h | 14 ++++ src/menu_helpers.c | 2 +- src/option_menu.c | 130 ++++++++++++++++++---------------- 7 files changed, 137 insertions(+), 93 deletions(-) create mode 100644 graphics/misc/unk_83cc2e4.pal diff --git a/data/option_menu.s b/data/option_menu.s index 098e76f31..f8a590d6d 100644 --- a/data/option_menu.s +++ b/data/option_menu.s @@ -1,43 +1,44 @@ #include "constants/maps.h" #include "constants/species.h" - .include "asm/macros.inc" - .include "constants/constants.inc" + .include "asm/macros.inc" + .include "constants/constants.inc" - .section .rodata - .align 2 + .section .rodata + .align 2 gUnknown_83CC2B8:: @ 83CC2B8 - .incbin "baserom.gba", 0x3CC2B8, 0x20 + .incbin "baserom.gba", 0x3CC2B8, 0x20 gUnknown_83CC2D8:: @ 83CC2D8 - .incbin "baserom.gba", 0x3CC2D8, 0xC + .incbin "baserom.gba", 0x3CC2D8, 0xC gUnknown_83CC2E4:: @ 83CC2E4 - .incbin "baserom.gba", 0x3CC2E4, 0x20 + .incbin "baserom.gba", 0x3CC2E4, 0x20 gUnknown_83CC304:: @ 83CC304 - .incbin "baserom.gba", 0x3CC304, 0x10 + .incbin "baserom.gba", 0x3CC304, 0x10 gUnknown_83CC314:: @ 83CC314 - .incbin "baserom.gba", 0x3CC314, 0x1C + .incbin "baserom.gba", 0x3CC314, 0x1C gUnknown_83CC330:: @ 83CC330 - .incbin "baserom.gba", 0x3CC330, 0xC + .incbin "baserom.gba", 0x3CC330, 0xC gUnknown_83CC33C:: @ 83CC33C - .incbin "baserom.gba", 0x3CC33C, 0x8 + .incbin "baserom.gba", 0x3CC33C, 0x8 gUnknown_83CC344:: @ 83CC344 - .incbin "baserom.gba", 0x3CC344, 0x8 + .incbin "baserom.gba", 0x3CC344, 0x8 gUnknown_83CC34C:: @ 83CC34C - .incbin "baserom.gba", 0x3CC34C, 0x8 + .incbin "baserom.gba", 0x3CC34C, 0x8 gUnknown_83CC354:: @ 83CC354 - .incbin "baserom.gba", 0x3CC354, 0xC + .incbin "baserom.gba", 0x3CC354, 0xC gUnknown_83CC360:: @ 83CC360 - .incbin "baserom.gba", 0x3CC360, 0x3 + .incbin "baserom.gba", 0x3CC360, 0x3 gUnknown_83CC363:: @ 83CC363 - .incbin "baserom.gba", 0x3CC363, 0x3 + .incbin "baserom.gba", 0x3CC363, 0x3 + diff --git a/data/strings.s b/data/strings.s index 14a4472e3..a75671090 100644 --- a/data/strings.s +++ b/data/strings.s @@ -2904,7 +2904,7 @@ gUnknown_8419D89:: @ 8419D89 .string "Waiting for the other TRAINER to\n" .string "finish reading your TRAINER CARD.$" -gUnknown_8419DCC:: @ 8419DCC +gText_MenuOptionOption:: @ 8419DCC .string "OPTION$" gText_TextSpeed:: @ 0x8419DD3 @@ -2928,49 +2928,49 @@ gText_Frame:: @ 0x8419E0A gText_OptionMenuCancel:: @ 0x8419E10 .string "CANCEL$" -gUnknown_8419E17:: @ 0x8419E17 +gText_TextSpeedSlow:: @ 0x8419E17 .string "SLOW$" -gUnknown_8419E1C:: @ 0x8419E1C +gText_TextSpeedMid:: @ 0x8419E1C .string "MID$" -gUnknown_8419E20:: @ 0x8419E20 +gText_TextSpeedFast:: @ 0x8419E20 .string "FAST$" -gUnknown_8419E25:: @ 0x8419E25 +gText_BattleSceneOn:: @ 0x8419E25 .string "ON$" -gUnknown_8419E28:: @ 0x8419E28 +gText_BattleSceneOff:: @ 0x8419E28 .string "OFF$" -gUnknown_8419E2C:: @ 0x8419E2C +gText_BattleStyleShift:: @ 0x8419E2C .string "SHIFT$" -gUnknown_8419E32:: @ 0x8419E32 +gText_BattleStyleSet:: @ 0x8419E32 .string "SET$" -gUnknown_8419E36:: @ 0x8419E36 +gText_SoundMono:: @ 0x8419E36 .string "MONO$" -gUnknown_8419E3B:: @ 0x8419E3B +gText_SoundStereo:: @ 0x8419E3B .string "STEREO$" gUnknown_8419E42:: @ 0x8419E42 .string "タイプ$" -gUnknown_8419E46:: @ 0x8419E46 +gText_ButtonTypeNormal:: @ 0x8419E46 .string "HELP$" -gUnknown_8419E4B:: @ 0x8419E4B +gText_ButtonTypeLR:: @ 0x8419E4B .string "LゅA$" -gUnknown_8419E4F:: @ 0x8419E4F +gText_ButtonTypeLEqualsA:: @ 0x8419E4F .string "LR$" -gUnknown_8419E52:: @ 8419E52 +gText_FrameType:: @ 8419E52 .string "TYPE$" -gUnknown_8419E57:: @ 8419E57 +gText_PickSwitchCancel:: @ 8419E57 .string "{DPAD_UPDOWN}PICK {DPAD_LEFTRIGHT}SWITCH {A_BUTTON}{B_BUTTON}CANCEL$" gUnknown_8419E72:: @ 0x8419E72 diff --git a/graphics/misc/unk_83cc2e4.pal b/graphics/misc/unk_83cc2e4.pal new file mode 100644 index 000000000..b2172775f --- /dev/null +++ b/graphics/misc/unk_83cc2e4.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 255 255 +99 99 99 +214 214 206 +230 8 8 +255 189 115 +33 156 8 +148 247 148 +49 82 206 +165 197 247 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/include/menu_helpers.h b/include/menu_helpers.h index 8d042825c..6ea771500 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -12,7 +12,7 @@ struct YesNoFuncTable }; bool16 RunTextPrinters_CheckActive(u8 textPrinterId); -bool32 sub_80BF72C(void); +bool8 sub_80BF72C(void); bool8 sub_80BF748(void); bool8 MenuHelpers_LinkSomething(void); void SetVBlankHBlankCallbacksToNull(void); diff --git a/include/strings.h b/include/strings.h index 286a65190..9d4d26ba1 100644 --- a/include/strings.h +++ b/include/strings.h @@ -771,6 +771,20 @@ extern const u8 gText_Sound[]; extern const u8 gText_ButtonMode[]; extern const u8 gText_Frame[]; extern const u8 gText_OptionMenuCancel[]; +extern const u8 gText_TextSpeedSlow[]; +extern const u8 gText_TextSpeedMid[]; +extern const u8 gText_TextSpeedFast[]; +extern const u8 gText_BattleSceneOn[]; +extern const u8 gText_BattleSceneOff[]; +extern const u8 gText_BattleStyleShift[]; +extern const u8 gText_BattleStyleSet[]; +extern const u8 gText_SoundMono[]; +extern const u8 gText_SoundStereo[]; +extern const u8 gText_ButtonTypeNormal[]; +extern const u8 gText_ButtonTypeLR[]; +extern const u8 gText_ButtonTypeLEqualsA[]; +extern const u8 gText_MenuOptionOption[]; +extern const u8 gText_FrameType[]; extern const u8 gText_PickSwitchCancel[]; diff --git a/src/menu_helpers.c b/src/menu_helpers.c index 027280beb..06e7bb08b 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -125,7 +125,7 @@ bool8 MenuHelpers_LinkSomething(void) return FALSE; } -bool32 sub_80BF72C(void) +bool8 sub_80BF72C(void) { if (!MenuHelpers_LinkSomething()) return FALSE; diff --git a/src/option_menu.c b/src/option_menu.c index c98a2ec7b..c1cde37a6 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -36,11 +36,10 @@ enum enum { WIN_TEXT_OPTION, - WIN_OPTIONS + WIN_OPTIONS, }; - /* -static const struct WindowTemplate gUnknown_83CC2B8[] = //sOptionMenuWinTemplates +static const struct WindowTemplate gUnknown_83CC2B8[] = //3CC2B8 -> sOptionMenuWinTemplates { { .bg = 1, @@ -49,20 +48,29 @@ static const struct WindowTemplate gUnknown_83CC2B8[] = //sOptionMenuWinTempl .width = 26, .height = 2, .paletteNum = 1, - .baseBlock = 2 + .baseBlock = 2, }, { .bg = 0, .tilemapLeft = 2, - .tilemapTop =7, + .tilemapTop = 7, .width = 26, .height = 12, .paletteNum = 1, - .baseBlock = 0x36 + .baseBlock = 0x36, }, - DUMMY_WIN_TEMPLATE + { + .bg = 2, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 30, + .height = 2, + .paletteNum = 0xF, + .baseBlock = 0x16e, + }, + DUMMY_WIN_TEMPLATE, }; -static const struct BgTemplate gUnknown_83CC2D8[] = //sOptionMenuBgTemplates +static const struct BgTemplate gUnknown_83CC2D8[] = //3CC2D8 -> sOptionMenuBgTemplates { { .bg = 1, @@ -81,12 +89,20 @@ static const struct BgTemplate gUnknown_83CC2D8[] = //sOptionMenuBgTemplates .paletteMode = 0, .priority = 1, .baseTile = 0 - } + }, + { + .bg = 2, + .charBaseIndex = 1, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0, + }, }; - - -static const u16 gUnknown_83CC304[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0}; //sOptionsMenuItemCounts -static const u8* gUnknown_83CC314[MENUITEM_COUNT] = //sOptionMenuItemsNames +static const u16 gUnknown_83CC2E4[] = INCBIN_U16("graphics/misc/unk_83cc2e4.gbapal"); //3CC2E4 +static const u16 gUnknown_83CC304[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0}; //3CC304 -> sOptionsMenuItemCounts +static const u8* gUnknown_83CC314[MENUITEM_COUNT] = //3CC314 -> sOptionMenuItemsNames { [MENUITEM_TEXTSPEED] = gText_TextSpeed, [MENUITEM_BATTLESCENE] = gText_BattleScene, @@ -96,8 +112,28 @@ static const u8* gUnknown_83CC314[MENUITEM_COUNT] = //sOptionMenuItemsNames [MENUITEM_FRAMETYPE] = gText_Frame, [MENUITEM_CANCEL] = gText_OptionMenuCancel, }; +static const u8* gUnknown_83CC330[] = {gText_TextSpeedSlow, gText_TextSpeedMid, gText_TextSpeedFast}; //3CC330 +static const u8* gUnknown_83CC33C[] = {gText_BattleSceneOn, gText_BattleSceneOff}; //3CC33C +static const u8* gUnknown_83CC344[] = {gText_BattleStyleShift, gText_BattleStyleSet}; //3CC344 +static const u8* gUnknown_83CC34C[] = {gText_SoundMono, gText_SoundStereo}; //3CC34C +static const u8* gUnknown_83CC354[] = {gText_ButtonTypeNormal, gText_ButtonTypeLR, gText_ButtonTypeLEqualsA}; //3CC354 +static const u8 gUnknown_83CC360[] = {0xF, 0x1, 0x2}; //3CC360 +static const u8 gUnknown_83CC363[] = {0, 5, 4, 0, 0}; //3CC363 */ +extern const struct WindowTemplate gUnknown_83CC2B8[3]; +extern const struct BgTemplate gUnknown_83CC2D8[3]; +extern const u16 gUnknown_83CC2E4[0x20]; +extern const u16 gUnknown_83CC304[MENUITEM_COUNT]; +extern const u8* gUnknown_83CC314[MENUITEM_COUNT]; +extern const u8* gUnknown_83CC330[12]; +extern const u8* gUnknown_83CC33C[8]; +extern const u8* gUnknown_83CC344[8]; +extern const u8* gUnknown_83CC34C[8]; +extern const u8* gUnknown_83CC354[12]; +extern const u8 gUnknown_83CC360[3]; +extern const u8 gUnknown_83CC363[3]; + //This file's functions static void sub_808835C(void); static void sub_8088374(void); @@ -118,25 +154,9 @@ static void sub_8088C0C(void); static void sub_8088D8C(void); static void sub_8088DE0(u16 selection); -extern const struct WindowTemplate gUnknown_83CC2B8[3]; -extern const struct BgTemplate gUnknown_83CC2D8[2]; -extern const u16 gUnknown_83CC2E4[0x20]; -extern const u16 gUnknown_83CC304[MENUITEM_COUNT]; //sOptionsMenuItemCounts -extern const u8* gUnknown_83CC314[MENUITEM_COUNT]; -extern const u8 gUnknown_83CC330[0xC]; -extern const u8 gUnknown_83CC33C[0x8]; -extern const u8 gUnknown_83CC344[0x8]; -extern const u8 gUnknown_83CC34C[0x8]; -extern const u8 gUnknown_83CC354[0xC]; -extern const u8 gUnknown_83CC360[0x3]; -extern const u8 gUnknown_83CC363[0x3]; -extern const u8 gUnknown_8419DCC[]; -extern const u8 gUnknown_8419E52[]; -extern const u8 gUnknown_8419E57[]; - struct OptionsMenu { - /*0x00*/ u16 option[7]; //0,2,4,6,8,a,c + /*0x00*/ u16 option[MENUITEM_COUNT]; //0,2,4,6,8,a,c /*0x0E*/ u16 unkE; /*0x10*/ u8 state3; /*0x11*/ u8 state; @@ -147,6 +167,7 @@ struct OptionsMenu EWRAM_DATA struct OptionsMenu *sOptionsMenu = {0}; + //CB2_InitOptionsMenu static void sub_808835C(void) { @@ -272,7 +293,7 @@ static void sub_8088530(void) DmaClear16(3, (void *)PLTT, PLTT_SIZE); SetGpuReg(REG_OFFSET_DISPCNT, 0); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_83CC2D8, 3); //3 -> ARRAY_COUNT(gUnknown_83CC2D8) + InitBgsFromTemplates(0, gUnknown_83CC2D8, ARRAY_COUNT(gUnknown_83CC2D8)); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); ChangeBgX(1, 0, 0); @@ -297,9 +318,9 @@ static void sub_8088530(void) static void sub_8088680(void) { s32 x; - x = 0xE4 - GetStringWidth(0, gUnknown_8419E57, 0); + x = 0xE4 - GetStringWidth(0, gText_PickSwitchCancel, 0); FillWindowPixelBuffer(2, 0xFF); - AddTextPrinterParameterized3(2, 0, x, 0, gUnknown_83CC360, 0, gUnknown_8419E57); + AddTextPrinterParameterized3(2, 0, x, 0, gUnknown_83CC360, 0, gText_PickSwitchCancel); PutWindowTilemap(2); CopyWindowToVram(2, 3); } @@ -357,7 +378,7 @@ static void sub_8088780(u8 taskId) sOptionsMenu->state3++; break; case 2: - if (sub_80BF72C() == TRUE) + if ((bool32) sub_80BF72C() == TRUE) //cast to bool32 to remove the lsl/lsr 0x18 after func call return; switch (sub_80888C0()) { @@ -547,10 +568,8 @@ static void sub_8088780(u8 taskId) "\tpop {r0}\n" "\tbx r0\n"); } -#endif - - - +#endif + //OptionsMenu_ProcessInput static u8 sub_80888C0(void) { @@ -616,7 +635,6 @@ static void sub_80889A8(u8 selection) u8* str; u8* v8; u8 x, y; - u8** col; memcpy(&dst, gUnknown_83CC363, 3); y = ((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) - 1) * selection) + 2; @@ -641,7 +659,7 @@ static void sub_80889A8(u8 selection) AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC354); break; case MENUITEM_FRAMETYPE: - StringCopy(str, gUnknown_8419E52); + StringCopy(str, gText_FrameType); ConvertIntToDecimalStringN(v8, sOptionsMenu->option[2*selection] + 1, 1, 2); StringAppendN(str, v8, 3); AddTextPrinterParameterized3(1, 2, x, y, dst, -1, str); @@ -773,7 +791,7 @@ static void sub_80889A8(u8 selection) "_08088A94: .4byte gUnknown_83CC354\n" "_08088A98: .4byte sOptionsMenu\n" "_08088A9C:\n" - "\tldr r1, _08088AF8 @ =gUnknown_8419E52\n" + "\tldr r1, _08088AF8 @ =gText_FrameType\n" "\tadd r0, sp, 0xC\n" "\tbl StringCopy\n" "\tadd r4, sp, 0x20\n" @@ -815,7 +833,7 @@ static void sub_80889A8(u8 selection) "\tpop {r0}\n" "\tbx r0\n" "\t.align 2, 0\n" - "_08088AF8: .4byte gUnknown_8419E52\n" + "_08088AF8: .4byte gText_FrameType\n" "_08088AFC: .4byte sOptionsMenu\n"); } #endif @@ -846,14 +864,13 @@ static void sub_8088B00(u8 taskId) static void sub_8088BD0(void) { FillWindowPixelBuffer(0, 0x11); - AddTextPrinterParameterized(WIN_TEXT_OPTION, 2, gUnknown_8419DCC, 8, 1, TEXT_SPEED_FF, NULL); + AddTextPrinterParameterized(WIN_TEXT_OPTION, 2, gText_MenuOptionOption, 8, 1, TEXT_SPEED_FF, NULL); PutWindowTilemap(0); CopyWindowToVram(0, 3); } //sub_8088C0C -//double check static void sub_8088C0C(void) { u8 h; @@ -863,7 +880,7 @@ static void sub_8088C0C(void) FillBgTilemapBufferRect(1, 0x1B4, 2, 2, 0x1B, 1, 3); FillBgTilemapBufferRect(1, 0x1B5, 0x1C, 2, 1, 1, 3); FillBgTilemapBufferRect(1, 0x1B6, 1, 3, 1, h, 3); - FillBgTilemapBufferRect(1, 0x1B8, 1, 0x1C, 1, h, 3); + FillBgTilemapBufferRect(1, 0x1B8, 0x1C, 3, 1, h, 3); FillBgTilemapBufferRect(1, 0x1B9, 1, 5, 1, 1, 3); FillBgTilemapBufferRect(1, 0x1BA, 2, 5, 0x1B, 1, 3); FillBgTilemapBufferRect(1, 0x1BB, 0x1C, 5, 1, 1, 3); @@ -878,24 +895,15 @@ static void sub_8088C0C(void) CopyBgTilemapBufferToVram(1); } - //sub_8088D8C static void sub_8088D8C(void) { - int i; - u8 y; + u8 i; FillWindowPixelBuffer(1, 0x11); - for (i = 0; i < MENUITEM_COUNT; i++) { - //AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, (u8) ((i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))) + 2) - i, 0xFF, 0); - //gets registers right, but an lsl/lsr 0x18 after GetFontAttribute that shouldn't be there - y = i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); - y += 2; - y -= i; - AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, y, 0xFF, 0); - + AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, (u8) ((i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))) + 2) - i, 0xFF, 0); } } @@ -903,9 +911,11 @@ static void sub_8088D8C(void) //sub_8088DE0 static void sub_8088DE0(u16 selection) { - u8 attr; - attr = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT); - SetGpuReg(0x44, ((selection * (attr - 1) + 58) << 8) | (selection * (attr - 1) + 58 + attr)); - SetGpuReg(0x40, 4320); + u16 v1, v2; + + v1 = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT); + v2 = selection * (v1 - 1) + 0x3A; + SetGpuReg(0x44, (v2 << 8) | (v2 + v1)); + SetGpuReg(0x40, 0x10E0); } From 52f64335edc8505c190c31ef8095df130bd874d5 Mon Sep 17 00:00:00 2001 From: Evan Date: Mon, 18 Nov 2019 21:41:45 -0700 Subject: [PATCH 27/49] match baserom --- data/option_menu.s | 44 -------------------------------------------- include/strings.h | 3 +-- ld_script.txt | 2 +- src/option_menu.c | 16 +++++++++------- 4 files changed, 11 insertions(+), 54 deletions(-) delete mode 100644 data/option_menu.s diff --git a/data/option_menu.s b/data/option_menu.s deleted file mode 100644 index f8a590d6d..000000000 --- a/data/option_menu.s +++ /dev/null @@ -1,44 +0,0 @@ -#include "constants/maps.h" -#include "constants/species.h" - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnknown_83CC2B8:: @ 83CC2B8 - .incbin "baserom.gba", 0x3CC2B8, 0x20 - -gUnknown_83CC2D8:: @ 83CC2D8 - .incbin "baserom.gba", 0x3CC2D8, 0xC - -gUnknown_83CC2E4:: @ 83CC2E4 - .incbin "baserom.gba", 0x3CC2E4, 0x20 - -gUnknown_83CC304:: @ 83CC304 - .incbin "baserom.gba", 0x3CC304, 0x10 - -gUnknown_83CC314:: @ 83CC314 - .incbin "baserom.gba", 0x3CC314, 0x1C - -gUnknown_83CC330:: @ 83CC330 - .incbin "baserom.gba", 0x3CC330, 0xC - -gUnknown_83CC33C:: @ 83CC33C - .incbin "baserom.gba", 0x3CC33C, 0x8 - -gUnknown_83CC344:: @ 83CC344 - .incbin "baserom.gba", 0x3CC344, 0x8 - -gUnknown_83CC34C:: @ 83CC34C - .incbin "baserom.gba", 0x3CC34C, 0x8 - -gUnknown_83CC354:: @ 83CC354 - .incbin "baserom.gba", 0x3CC354, 0xC - -gUnknown_83CC360:: @ 83CC360 - .incbin "baserom.gba", 0x3CC360, 0x3 - -gUnknown_83CC363:: @ 83CC363 - .incbin "baserom.gba", 0x3CC363, 0x3 - diff --git a/include/strings.h b/include/strings.h index 9d4d26ba1..89149a8eb 100644 --- a/include/strings.h +++ b/include/strings.h @@ -763,7 +763,7 @@ extern const u8 gText_DecimalPoint[]; // map_name_popup extern const u8 gUnknown_841D18D[]; -// options menu +// option menu extern const u8 gText_TextSpeed[]; extern const u8 gText_BattleScene[]; extern const u8 gText_BattleStyle[]; @@ -787,5 +787,4 @@ extern const u8 gText_MenuOptionOption[]; extern const u8 gText_FrameType[]; extern const u8 gText_PickSwitchCancel[]; - #endif //GUARD_STRINGS_H diff --git a/ld_script.txt b/ld_script.txt index 4125a926d..3c3cd0686 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -432,7 +432,7 @@ SECTIONS { data/trainer_see.o(.rodata); src/wild_encounter.o(.rodata); data/field_effect.o(.rodata); - data/option_menu.o(.rodata); + src/option_menu.o(.rodata); data/trainer_card.o(.rodata); data/pokemon_storage_system.o(.rodata); src/pokemon_icon.o(.rodata); diff --git a/src/option_menu.c b/src/option_menu.c index c1cde37a6..54b0e29cb 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -38,8 +38,8 @@ enum WIN_TEXT_OPTION, WIN_OPTIONS, }; -/* -static const struct WindowTemplate gUnknown_83CC2B8[] = //3CC2B8 -> sOptionMenuWinTemplates + +static const struct WindowTemplate gUnknown_83CC2B8[4] = //3CC2B8 -> sOptionMenuWinTemplates { { .bg = 1, @@ -70,7 +70,7 @@ static const struct WindowTemplate gUnknown_83CC2B8[] = //3CC2B8 -> sOptionMe }, DUMMY_WIN_TEMPLATE, }; -static const struct BgTemplate gUnknown_83CC2D8[] = //3CC2D8 -> sOptionMenuBgTemplates +static const struct BgTemplate gUnknown_83CC2D8[3] = //3CC2D8 -> sOptionMenuBgTemplates { { .bg = 1, @@ -79,7 +79,7 @@ static const struct BgTemplate gUnknown_83CC2D8[] = //3CC2D8 -> sOptionMenuBg .screenSize = 0, .paletteMode = 0, .priority = 0, - .baseTile = 0 + .baseTile = 0, }, { .bg = 0, @@ -88,7 +88,7 @@ static const struct BgTemplate gUnknown_83CC2D8[] = //3CC2D8 -> sOptionMenuBg .screenSize = 0, .paletteMode = 0, .priority = 1, - .baseTile = 0 + .baseTile = 0, }, { .bg = 2, @@ -119,9 +119,10 @@ static const u8* gUnknown_83CC34C[] = {gText_SoundMono, gText_SoundStereo}; //3 static const u8* gUnknown_83CC354[] = {gText_ButtonTypeNormal, gText_ButtonTypeLR, gText_ButtonTypeLEqualsA}; //3CC354 static const u8 gUnknown_83CC360[] = {0xF, 0x1, 0x2}; //3CC360 static const u8 gUnknown_83CC363[] = {0, 5, 4, 0, 0}; //3CC363 -*/ -extern const struct WindowTemplate gUnknown_83CC2B8[3]; + +/* +extern const struct WindowTemplate gUnknown_83CC2B8[4]; extern const struct BgTemplate gUnknown_83CC2D8[3]; extern const u16 gUnknown_83CC2E4[0x20]; extern const u16 gUnknown_83CC304[MENUITEM_COUNT]; @@ -133,6 +134,7 @@ extern const u8* gUnknown_83CC34C[8]; extern const u8* gUnknown_83CC354[12]; extern const u8 gUnknown_83CC360[3]; extern const u8 gUnknown_83CC363[3]; +*/ //This file's functions static void sub_808835C(void); From ec2673ebe561c3d9ca351713ecdfc731bfad25c8 Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 19 Nov 2019 09:46:10 -0700 Subject: [PATCH 28/49] update option menu const structs --- include/text.h | 13 +++ src/option_menu.c | 256 ++++++++++++++++++++++++---------------------- sym_ewram.txt | 2 +- 3 files changed, 145 insertions(+), 126 deletions(-) diff --git a/include/text.h b/include/text.h index c4199190f..578a0d735 100644 --- a/include/text.h +++ b/include/text.h @@ -81,6 +81,19 @@ #define TEXT_COLOR_TRANSPARENT 0x0 #define TEXT_COLOR_WHITE 0x1 #define TEXT_COLOR_DARK_GREY 0x2 +#define TEXT_COLOR_LIGHT_GREY 0x3 +#define TEXT_COLOR_RED 0x4 +#define TEXT_COLOR_LIGHT_RED 0x5 +#define TEXT_COLOR_GREEN 0x6 +#define TEXT_COLOR_LIGHT_GREEN 0x7 +#define TEXT_COLOR_BLUE 0x8 +#define TEXT_COLOR_LIGHT_BLUE 0x9 +#define TEXT_DYNAMIC_COLOR_1 0xA // Usually white +#define TEXT_DYNAMIC_COLOR_2 0xB // Usually white w/ tinge of green +#define TEXT_DYNAMIC_COLOR_3 0xC // Usually white +#define TEXT_DYNAMIC_COLOR_4 0xD // Usually aquamarine +#define TEXT_DYNAMIC_COLOR_5 0xE // Usually blue-green +#define TEXT_DYNAMIC_COLOR_6 0xF // Usually cerulean // battle placeholders are located in battle_message.h #define EXT_CTRL_CODE_COLOR 0x1 diff --git a/src/option_menu.c b/src/option_menu.c index 54b0e29cb..4898ac1cd 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -19,7 +19,6 @@ #include "field_fadetransition.h" #include "gba/m4a_internal.h" - // Menu items enum { @@ -39,7 +38,7 @@ enum WIN_OPTIONS, }; -static const struct WindowTemplate gUnknown_83CC2B8[4] = //3CC2B8 -> sOptionMenuWinTemplates +static const struct WindowTemplate sOptionMenuWinTemplates[] = //3CC2B8 { { .bg = 1, @@ -70,7 +69,7 @@ static const struct WindowTemplate gUnknown_83CC2B8[4] = //3CC2B8 -> sOptionM }, DUMMY_WIN_TEMPLATE, }; -static const struct BgTemplate gUnknown_83CC2D8[3] = //3CC2D8 -> sOptionMenuBgTemplates +static const struct BgTemplate sOptionMenuBgTemplates[] = //3CC2D8 { { .bg = 1, @@ -100,9 +99,9 @@ static const struct BgTemplate gUnknown_83CC2D8[3] = //3CC2D8 -> sOptionMenuB .baseTile = 0, }, }; -static const u16 gUnknown_83CC2E4[] = INCBIN_U16("graphics/misc/unk_83cc2e4.gbapal"); //3CC2E4 -static const u16 gUnknown_83CC304[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0}; //3CC304 -> sOptionsMenuItemCounts -static const u8* gUnknown_83CC314[MENUITEM_COUNT] = //3CC314 -> sOptionMenuItemsNames +static const u16 sOptionsMenuPalette[] = INCBIN_U16("graphics/misc/unk_83cc2e4.gbapal"); //3CC2E4 +static const u16 sOptionsMenuItemCounts[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0}; //3CC304 +static const u8 *const sOptionMenuItemsNames[MENUITEM_COUNT] = //3CC314 { [MENUITEM_TEXTSPEED] = gText_TextSpeed, [MENUITEM_BATTLESCENE] = gText_BattleScene, @@ -112,30 +111,37 @@ static const u8* gUnknown_83CC314[MENUITEM_COUNT] = //3CC314 -> sOptionMenuI [MENUITEM_FRAMETYPE] = gText_Frame, [MENUITEM_CANCEL] = gText_OptionMenuCancel, }; -static const u8* gUnknown_83CC330[] = {gText_TextSpeedSlow, gText_TextSpeedMid, gText_TextSpeedFast}; //3CC330 -static const u8* gUnknown_83CC33C[] = {gText_BattleSceneOn, gText_BattleSceneOff}; //3CC33C -static const u8* gUnknown_83CC344[] = {gText_BattleStyleShift, gText_BattleStyleSet}; //3CC344 -static const u8* gUnknown_83CC34C[] = {gText_SoundMono, gText_SoundStereo}; //3CC34C -static const u8* gUnknown_83CC354[] = {gText_ButtonTypeNormal, gText_ButtonTypeLR, gText_ButtonTypeLEqualsA}; //3CC354 -static const u8 gUnknown_83CC360[] = {0xF, 0x1, 0x2}; //3CC360 -static const u8 gUnknown_83CC363[] = {0, 5, 4, 0, 0}; //3CC363 +static const u8 *const sTextSpeedOptions[] = //3CC330 +{ + gText_TextSpeedSlow, + gText_TextSpeedMid, + gText_TextSpeedFast +}; +static const u8 *const sBattleSceneOptions[] = //3CC33C +{ + gText_BattleSceneOn, + gText_BattleSceneOff +}; +static const u8 *const sBattleStyleOptions[] = //3CC344 +{ + gText_BattleStyleShift, + gText_BattleStyleSet +}; +static const u8 *const sSoundOptions[] = //3CC34C +{ + gText_SoundMono, + gText_SoundStereo +}; +static const u8 *const sButtonTypeOptions[] = //3CC354 +{ + gText_ButtonTypeNormal, + gText_ButtonTypeLEqualsA, + gText_ButtonTypeLR, +}; +static const u8 sOptionsMenuPickSwitchCancelTextColor[] = {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}; //3CC360 +static const u8 sOptionsMenuTextColor[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_RED, TEXT_COLOR_RED}; //3CC363 -/* -extern const struct WindowTemplate gUnknown_83CC2B8[4]; -extern const struct BgTemplate gUnknown_83CC2D8[3]; -extern const u16 gUnknown_83CC2E4[0x20]; -extern const u16 gUnknown_83CC304[MENUITEM_COUNT]; -extern const u8* gUnknown_83CC314[MENUITEM_COUNT]; -extern const u8* gUnknown_83CC330[12]; -extern const u8* gUnknown_83CC33C[8]; -extern const u8* gUnknown_83CC344[8]; -extern const u8* gUnknown_83CC34C[8]; -extern const u8* gUnknown_83CC354[12]; -extern const u8 gUnknown_83CC360[3]; -extern const u8 gUnknown_83CC363[3]; -*/ - //This file's functions static void sub_808835C(void); static void sub_8088374(void); @@ -166,7 +172,7 @@ struct OptionsMenu /*0x13*/ u8 unk13; }; -EWRAM_DATA struct OptionsMenu *sOptionsMenu = {0}; +EWRAM_DATA struct OptionsMenu *sOptionsMenuPtr = {0}; @@ -196,22 +202,22 @@ void CB2_OptionsMenuFromStartMenu(void) if (gMain.savedCallback == NULL) gMain.savedCallback = CB2_ReturnToStartMenu; - sOptionsMenu = AllocZeroed(sizeof(struct OptionsMenu)); - sOptionsMenu->state3 = 0; - sOptionsMenu->state2 = 0; - sOptionsMenu->state = 0; - sOptionsMenu->unkE = 0; - sOptionsMenu->option[MENUITEM_TEXTSPEED] = gSaveBlock2Ptr->optionsTextSpeed; - sOptionsMenu->option[MENUITEM_BATTLESCENE] = gSaveBlock2Ptr->optionsBattleSceneOff; - sOptionsMenu->option[MENUITEM_BATTLESTYLE] = gSaveBlock2Ptr->optionsBattleStyle; - sOptionsMenu->option[MENUITEM_SOUND] = gSaveBlock2Ptr->optionsSound; - sOptionsMenu->option[MENUITEM_BUTTONMODE] = gSaveBlock2Ptr->optionsButtonMode; - sOptionsMenu->option[MENUITEM_FRAMETYPE] = gSaveBlock2Ptr->optionsWindowFrameType; + sOptionsMenuPtr = AllocZeroed(sizeof(struct OptionsMenu)); + sOptionsMenuPtr->state3 = 0; + sOptionsMenuPtr->state2 = 0; + sOptionsMenuPtr->state = 0; + sOptionsMenuPtr->unkE = 0; + sOptionsMenuPtr->option[MENUITEM_TEXTSPEED] = gSaveBlock2Ptr->optionsTextSpeed; + sOptionsMenuPtr->option[MENUITEM_BATTLESCENE] = gSaveBlock2Ptr->optionsBattleSceneOff; + sOptionsMenuPtr->option[MENUITEM_BATTLESTYLE] = gSaveBlock2Ptr->optionsBattleStyle; + sOptionsMenuPtr->option[MENUITEM_SOUND] = gSaveBlock2Ptr->optionsSound; + sOptionsMenuPtr->option[MENUITEM_BUTTONMODE] = gSaveBlock2Ptr->optionsButtonMode; + sOptionsMenuPtr->option[MENUITEM_FRAMETYPE] = gSaveBlock2Ptr->optionsWindowFrameType; for (i = 0; i < MENUITEM_COUNT-1; i++) { - if (sOptionsMenu->option[i] > (gUnknown_83CC304[i])-1) - sOptionsMenu->option[i] = 0; + if (sOptionsMenuPtr->option[i] > (sOptionsMenuItemCounts[i])-1) + sOptionsMenuPtr->option[i] = 0; } HelpSystem_SetSomeVariable2(0xD); SetMainCallback2(sub_8088454); @@ -236,7 +242,7 @@ static void sub_8088444(void) static void sub_8088454(void) { u8 i, state; - state = sOptionsMenu->state; + state = sOptionsMenuPtr->state; switch (state) { case 0: @@ -266,7 +272,7 @@ static void sub_8088454(void) sub_80889A8(i); break; case 8: - sub_8088DE0(sOptionsMenu->unkE); + sub_8088DE0(sOptionsMenuPtr->unkE); break; case 9: sub_8088680(); @@ -274,7 +280,7 @@ static void sub_8088454(void) default: sub_8088514(); } - sOptionsMenu->state++; + sOptionsMenuPtr->state++; } //sub_8088514 @@ -295,7 +301,7 @@ static void sub_8088530(void) DmaClear16(3, (void *)PLTT, PLTT_SIZE); SetGpuReg(REG_OFFSET_DISPCNT, 0); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_83CC2D8, ARRAY_COUNT(gUnknown_83CC2D8)); + InitBgsFromTemplates(0, sOptionMenuBgTemplates, ARRAY_COUNT(sOptionMenuBgTemplates)); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); ChangeBgX(1, 0, 0); @@ -304,7 +310,7 @@ static void sub_8088530(void) ChangeBgY(2, 0, 0); ChangeBgX(3, 0, 0); ChangeBgY(3, 0, 0); - InitWindows(gUnknown_83CC2B8); + InitWindows(sOptionMenuWinTemplates); DeactivateAllTextPrinters(); SetGpuReg(REG_OFFSET_BLDCNT, 0xC1); SetGpuReg(REG_OFFSET_BLDY, 2); @@ -322,7 +328,7 @@ static void sub_8088680(void) s32 x; x = 0xE4 - GetStringWidth(0, gText_PickSwitchCancel, 0); FillWindowPixelBuffer(2, 0xFF); - AddTextPrinterParameterized3(2, 0, x, 0, gUnknown_83CC360, 0, gText_PickSwitchCancel); + AddTextPrinterParameterized3(2, 0, x, 0, sOptionsMenuPickSwitchCancelTextColor, 0, gText_PickSwitchCancel); PutWindowTilemap(2); CopyWindowToVram(2, 3); } @@ -341,16 +347,16 @@ static void sub_80886D4(void) //sub_80886F0 static bool8 sub_80886F0(void) { - switch (sOptionsMenu->state2) + switch (sOptionsMenuPtr->state2) { case 0: - LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenuPtr->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); break; case 1: - LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); + LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenuPtr->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); break; case 2: - LoadPalette(gUnknown_83CC2E4, 0x10, 0x20); + LoadPalette(sOptionsMenuPalette, 0x10, 0x20); LoadPalette(stdpal_get(2), 0xF0, 0x20); break; case 3: @@ -359,7 +365,7 @@ static bool8 sub_80886F0(void) default: return TRUE; } - sOptionsMenu->state2++; + sOptionsMenuPtr->state2++; return FALSE; } @@ -372,12 +378,12 @@ static void sub_8088780(u8 taskId) u8 v2, v5; struct OptionsMenu v4; - switch (sOptionsMenu->state3) + switch (sOptionsMenuPtr->state3) { case 0: BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); sub_8088444(); - sOptionsMenu->state3++; + sOptionsMenuPtr->state3++; break; case 2: if ((bool32) sub_80BF72C() == TRUE) //cast to bool32 to remove the lsl/lsr 0x18 after func call @@ -385,32 +391,32 @@ static void sub_8088780(u8 taskId) switch (sub_80888C0()) { case 1: - sOptionsMenu->state3++; + sOptionsMenuPtr->state3++; break; case 2: - LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); - LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); - sub_80889A8(sOptionsMenu->unkE); - sOptionsMenu->state3++; + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenuPtr->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); + LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenuPtr->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); + sub_80889A8(sOptionsMenuPtr->unkE); + sOptionsMenuPtr->state3++; break; case 3: - sub_8088DE0(sOptionsMenu->unkE); + sub_8088DE0(sOptionsMenuPtr->unkE); break; case 4: - sub_80889A8(sOptionsMenu->unkE); - sOptionsMenu->state3++; + sub_80889A8(sOptionsMenuPtr->unkE); + sOptionsMenuPtr->state3++; break; default: return; } case 3: BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - sOptionsMenu->state3++; + sOptionsMenuPtr->state3++; case 1: case 4: if (gPaletteFade.active) return; - sOptionsMenu->state3++; + sOptionsMenuPtr->state3++; case 5: sub_8088B00(taskId); break; @@ -426,7 +432,7 @@ static void sub_8088780(u8 taskId) "\tsub sp, 0x4\n" "\tlsls r0, 24\n" "\tlsrs r2, r0, 24\n" - "\tldr r1, _080887A0 @ =sOptionsMenu\n" + "\tldr r1, _080887A0 @ =sOptionsMenuPtr\n" "\tldr r0, [r1]\n" "\tldrb r0, [r0, 0x10]\n" "\tadds r3, r1, 0\n" @@ -440,7 +446,7 @@ static void sub_8088780(u8 taskId) "\tldr r0, [r0]\n" "\tmov pc, r0\n" "\t.align 2, 0\n" - "_080887A0: .4byte sOptionsMenu\n" + "_080887A0: .4byte sOptionsMenuPtr\n" "_080887A4: .4byte _080887A8\n" "\t.align 2, 0\n" "_080887A8:\n" @@ -459,11 +465,11 @@ static void sub_8088780(u8 taskId) "\tmovs r3, 0\n" "\tbl BeginNormalPaletteFade\n" "\tbl sub_8088444\n" - "\tldr r0, _080887DC @ =sOptionsMenu\n" + "\tldr r0, _080887DC @ =sOptionsMenuPtr\n" "\tldr r1, [r0]\n" "\tb _080888A2\n" "\t.align 2, 0\n" - "_080887DC: .4byte sOptionsMenu\n" + "_080887DC: .4byte sOptionsMenuPtr\n" "_080887E0:\n" "\tbl sub_80BF72C\n" "\tcmp r0, 0x1\n" @@ -488,13 +494,13 @@ static void sub_8088780(u8 taskId) "\t.4byte _08088858\n" "\t.4byte _08088868\n" "_08088818:\n" - "\tldr r0, _08088820 @ =sOptionsMenu\n" + "\tldr r0, _08088820 @ =sOptionsMenuPtr\n" "\tldr r1, [r0]\n" "\tb _080888A2\n" "\t.align 2, 0\n" - "_08088820: .4byte sOptionsMenu\n" + "_08088820: .4byte sOptionsMenuPtr\n" "_08088824:\n" - "\tldr r4, _08088854 @ =sOptionsMenu\n" + "\tldr r4, _08088854 @ =sOptionsMenuPtr\n" "\tldr r0, [r4]\n" "\tldrb r0, [r0, 0xA]\n" "\tbl GetUserFrameGraphicsInfo\n" @@ -515,24 +521,24 @@ static void sub_8088780(u8 taskId) "\tldr r0, [r4]\n" "\tb _0808886C\n" "\t.align 2, 0\n" - "_08088854: .4byte sOptionsMenu\n" + "_08088854: .4byte sOptionsMenuPtr\n" "_08088858:\n" - "\tldr r0, _08088864 @ =sOptionsMenu\n" + "\tldr r0, _08088864 @ =sOptionsMenuPtr\n" "\tldr r0, [r0]\n" "\tldrh r0, [r0, 0xE]\n" "\tbl sub_8088DE0\n" "\tb _080888B6\n" "\t.align 2, 0\n" - "_08088864: .4byte sOptionsMenu\n" + "_08088864: .4byte sOptionsMenuPtr\n" "_08088868:\n" - "\tldr r0, _08088874 @ =sOptionsMenu\n" + "\tldr r0, _08088874 @ =sOptionsMenuPtr\n" "\tldr r0, [r0]\n" "_0808886C:\n" "\tldrb r0, [r0, 0xE]\n" "\tbl sub_80889A8\n" "\tb _080888B6\n" "\t.align 2, 0\n" - "_08088874: .4byte sOptionsMenu\n" + "_08088874: .4byte sOptionsMenuPtr\n" "_08088878:\n" "\tmovs r0, 0x1\n" "\tnegs r0, r0\n" @@ -541,11 +547,11 @@ static void sub_8088780(u8 taskId) "\tmovs r2, 0\n" "\tmovs r3, 0x10\n" "\tbl BeginNormalPaletteFade\n" - "\tldr r0, _08088890 @ =sOptionsMenu\n" + "\tldr r0, _08088890 @ =sOptionsMenuPtr\n" "\tldr r1, [r0]\n" "\tb _080888A2\n" "\t.align 2, 0\n" - "_08088890: .4byte sOptionsMenu\n" + "_08088890: .4byte sOptionsMenuPtr\n" "_08088894:\n" "\tldr r0, _080888AC @ =gPaletteFade\n" "\tldrb r1, [r0, 0x7]\n" @@ -579,43 +585,43 @@ static u8 sub_80888C0(void) u16* curr; if (gMain.newAndRepeatedKeys & DPAD_RIGHT) { - current = sOptionsMenu->option[(sOptionsMenu->unkE)]; - if (current == (gUnknown_83CC304[sOptionsMenu->unkE] - 1)) - sOptionsMenu->option[sOptionsMenu->unkE] = 0; + current = sOptionsMenuPtr->option[(sOptionsMenuPtr->unkE)]; + if (current == (sOptionsMenuItemCounts[sOptionsMenuPtr->unkE] - 1)) + sOptionsMenuPtr->option[sOptionsMenuPtr->unkE] = 0; else - sOptionsMenu->option[sOptionsMenu->unkE] = current + 1; - if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE) + sOptionsMenuPtr->option[sOptionsMenuPtr->unkE] = current + 1; + if (sOptionsMenuPtr->unkE == MENUITEM_FRAMETYPE) return 2; else return 4; } else if (gMain.newAndRepeatedKeys & DPAD_LEFT) { - curr = &sOptionsMenu->option[sOptionsMenu->unkE]; + curr = &sOptionsMenuPtr->option[sOptionsMenuPtr->unkE]; if (*curr == 0) - *curr = gUnknown_83CC304[sOptionsMenu->unkE] - 1; + *curr = sOptionsMenuItemCounts[sOptionsMenuPtr->unkE] - 1; else --*(curr); - if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE) + if (sOptionsMenuPtr->unkE == MENUITEM_FRAMETYPE) return 2; else return 4; } else if (gMain.newAndRepeatedKeys & DPAD_UP) { - if (sOptionsMenu->unkE == MENUITEM_TEXTSPEED) - sOptionsMenu->unkE = MENUITEM_CANCEL; + if (sOptionsMenuPtr->unkE == MENUITEM_TEXTSPEED) + sOptionsMenuPtr->unkE = MENUITEM_CANCEL; else - sOptionsMenu->unkE = sOptionsMenu->unkE - 1; + sOptionsMenuPtr->unkE = sOptionsMenuPtr->unkE - 1; return 3; } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - if (sOptionsMenu->unkE == MENUITEM_CANCEL) - sOptionsMenu->unkE = MENUITEM_TEXTSPEED; + if (sOptionsMenuPtr->unkE == MENUITEM_CANCEL) + sOptionsMenuPtr->unkE = MENUITEM_TEXTSPEED; else - sOptionsMenu->unkE = sOptionsMenu->unkE + 1; + sOptionsMenuPtr->unkE = sOptionsMenuPtr->unkE + 1; return 3; } else if ((gMain.newKeys & B_BUTTON) || (gMain.newKeys & A_BUTTON)) @@ -638,7 +644,7 @@ static void sub_80889A8(u8 selection) u8* v8; u8 x, y; - memcpy(&dst, gUnknown_83CC363, 3); + memcpy(&dst, sOptionsMenuTextColor, 3); y = ((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) - 1) * selection) + 2; x = 0x82; FillWindowPixelRect(1, 1, x, y, 0x46, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); @@ -646,23 +652,23 @@ static void sub_80889A8(u8 selection) switch (selection) { case MENUITEM_TEXTSPEED: - AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC330); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sTextSpeedOptions); break; case MENUITEM_BATTLESCENE: - AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC33C); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sBattleSceneOptions); break; case MENUITEM_BATTLESTYLE: - AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC344); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sBattleStyleOptions); break; case MENUITEM_SOUND: - AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC34C); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sSoundOptions); break; case MENUITEM_BUTTONMODE: - AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC354); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sButtonTypeOptions); break; case MENUITEM_FRAMETYPE: StringCopy(str, gText_FrameType); - ConvertIntToDecimalStringN(v8, sOptionsMenu->option[2*selection] + 1, 1, 2); + ConvertIntToDecimalStringN(v8, sOptionsMenuPtr->option[2*selection] + 1, 1, 2); StringAppendN(str, v8, 3); AddTextPrinterParameterized3(1, 2, x, y, dst, -1, str); break; @@ -683,7 +689,7 @@ static void sub_80889A8(u8 selection) "\tlsls r0, 24\n" "\tlsrs r5, r0, 24\n" "\tadd r4, sp, 0x2C\n" - "\tldr r1, _08088A08 @ =gUnknown_83CC363\n" + "\tldr r1, _08088A08 @ =sOptionsMenuTextColor\n" "\tadds r0, r4, 0\n" "\tmovs r2, 0x3\n" "\tbl memcpy\n" @@ -721,7 +727,7 @@ static void sub_80889A8(u8 selection) "\tldr r0, [r0]\n" "\tmov pc, r0\n" "\t.align 2, 0\n" - "_08088A08: .4byte gUnknown_83CC363\n" + "_08088A08: .4byte sOptionsMenuTextColor\n" "_08088A0C: .4byte _08088A10\n" "\t.align 2, 0\n" "_08088A10:\n" @@ -736,45 +742,45 @@ static void sub_80889A8(u8 selection) "\tmovs r0, 0x1\n" "\tnegs r0, r0\n" "\tstr r0, [sp, 0x4]\n" - "\tldr r2, _08088A34 @ =gUnknown_83CC330\n" + "\tldr r2, _08088A34 @ =sTextSpeedOptions\n" "\tb _08088A72\n" "\t.align 2, 0\n" - "_08088A34: .4byte gUnknown_83CC330\n" + "_08088A34: .4byte sTextSpeedOptions\n" "_08088A38:\n" "\tstr r6, [sp]\n" "\tmovs r0, 0x1\n" "\tnegs r0, r0\n" "\tstr r0, [sp, 0x4]\n" - "\tldr r2, _08088A44 @ =gUnknown_83CC33C\n" + "\tldr r2, _08088A44 @ =sBattleSceneOptions\n" "\tb _08088A72\n" "\t.align 2, 0\n" - "_08088A44: .4byte gUnknown_83CC33C\n" + "_08088A44: .4byte sBattleSceneOptions\n" "_08088A48:\n" "\tstr r6, [sp]\n" "\tmovs r0, 0x1\n" "\tnegs r0, r0\n" "\tstr r0, [sp, 0x4]\n" - "\tldr r2, _08088A54 @ =gUnknown_83CC344\n" + "\tldr r2, _08088A54 @ =sBattleStyleOptions\n" "\tb _08088A72\n" "\t.align 2, 0\n" - "_08088A54: .4byte gUnknown_83CC344\n" + "_08088A54: .4byte sBattleStyleOptions\n" "_08088A58:\n" "\tstr r6, [sp]\n" "\tmovs r0, 0x1\n" "\tnegs r0, r0\n" "\tstr r0, [sp, 0x4]\n" - "\tldr r2, _08088A64 @ =gUnknown_83CC34C\n" + "\tldr r2, _08088A64 @ =sSoundOptions\n" "\tb _08088A72\n" "\t.align 2, 0\n" - "_08088A64: .4byte gUnknown_83CC34C\n" + "_08088A64: .4byte sSoundOptions\n" "_08088A68:\n" "\tstr r6, [sp]\n" "\tmovs r0, 0x1\n" "\tnegs r0, r0\n" "\tstr r0, [sp, 0x4]\n" - "\tldr r2, _08088A94 @ =gUnknown_83CC354\n" + "\tldr r2, _08088A94 @ =sButtonTypeOptions\n" "_08088A72:\n" - "\tldr r0, _08088A98 @ =sOptionsMenu\n" + "\tldr r0, _08088A98 @ =sOptionsMenuPtr\n" "\tldr r0, [r0]\n" "\tlsls r1, r5, 1\n" "\tadds r0, r1\n" @@ -790,14 +796,14 @@ static void sub_80889A8(u8 selection) "\tbl AddTextPrinterParameterized3\n" "\tb _08088ADE\n" "\t.align 2, 0\n" - "_08088A94: .4byte gUnknown_83CC354\n" - "_08088A98: .4byte sOptionsMenu\n" + "_08088A94: .4byte sButtonTypeOptions\n" + "_08088A98: .4byte sOptionsMenuPtr\n" "_08088A9C:\n" "\tldr r1, _08088AF8 @ =gText_FrameType\n" "\tadd r0, sp, 0xC\n" "\tbl StringCopy\n" "\tadd r4, sp, 0x20\n" - "\tldr r0, _08088AFC @ =sOptionsMenu\n" + "\tldr r0, _08088AFC @ =sOptionsMenuPtr\n" "\tldr r0, [r0]\n" "\tlsls r1, r5, 1\n" "\tadds r0, r1\n" @@ -836,7 +842,7 @@ static void sub_80889A8(u8 selection) "\tbx r0\n" "\t.align 2, 0\n" "_08088AF8: .4byte gText_FrameType\n" - "_08088AFC: .4byte sOptionsMenu\n"); + "_08088AFC: .4byte sOptionsMenuPtr\n"); } #endif @@ -848,15 +854,15 @@ static void sub_8088B00(u8 taskId) SetMainCallback2(gMain.savedCallback); FreeAllWindowBuffers(); - gSaveBlock2Ptr->optionsTextSpeed = (u8) sOptionsMenu->option[MENUITEM_TEXTSPEED]; - gSaveBlock2Ptr->optionsBattleSceneOff = (u8) sOptionsMenu->option[MENUITEM_BATTLESCENE]; - gSaveBlock2Ptr->optionsBattleStyle = (u8) sOptionsMenu->option[MENUITEM_BATTLESTYLE]; - gSaveBlock2Ptr->optionsSound = sOptionsMenu->option[MENUITEM_SOUND]; - gSaveBlock2Ptr->optionsButtonMode = (u8) sOptionsMenu->option[MENUITEM_BUTTONMODE]; - gSaveBlock2Ptr->optionsWindowFrameType = (u8) sOptionsMenu->option[MENUITEM_FRAMETYPE]; + gSaveBlock2Ptr->optionsTextSpeed = (u8) sOptionsMenuPtr->option[MENUITEM_TEXTSPEED]; + gSaveBlock2Ptr->optionsBattleSceneOff = (u8) sOptionsMenuPtr->option[MENUITEM_BATTLESCENE]; + gSaveBlock2Ptr->optionsBattleStyle = (u8) sOptionsMenuPtr->option[MENUITEM_BATTLESTYLE]; + gSaveBlock2Ptr->optionsSound = sOptionsMenuPtr->option[MENUITEM_SOUND]; + gSaveBlock2Ptr->optionsButtonMode = (u8) sOptionsMenuPtr->option[MENUITEM_BUTTONMODE]; + gSaveBlock2Ptr->optionsWindowFrameType = (u8) sOptionsMenuPtr->option[MENUITEM_FRAMETYPE]; SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); - Free(sOptionsMenu); - sOptionsMenu = NULL; + Free(sOptionsMenuPtr); + sOptionsMenuPtr = NULL; DestroyTask(taskId); } @@ -905,7 +911,7 @@ static void sub_8088D8C(void) FillWindowPixelBuffer(1, 0x11); for (i = 0; i < MENUITEM_COUNT; i++) { - AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, (u8) ((i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))) + 2) - i, 0xFF, 0); + AddTextPrinterParameterized(1, 2, sOptionMenuItemsNames[i], 8, (u8) ((i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))) + 2) - i, 0xFF, 0); } } diff --git a/sym_ewram.txt b/sym_ewram.txt index cec65b59c..8ff8247d9 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -226,7 +226,7 @@ gFieldEffectArguments: @ 20386E0 .include "src/scanline_effect.o" .align 2 -sOptionsMenu: @ 2039620 +sOptionsMenuPtr: @ 2039620 .space 0x4 gTrainerCards: @ 2039624 From f72d9cbe777077a8af2ae86f8230a1e1222ed166 Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 19 Nov 2019 09:53:23 -0700 Subject: [PATCH 29/49] fix formatting on option menu --- ld_script.txt | 2 +- src/option_menu.c | 70 +++++++++++++++++++++++------------------------ 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/ld_script.txt b/ld_script.txt index 3c3cd0686..9144c4a2d 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -128,7 +128,7 @@ SECTIONS { src/wild_encounter.o(.text); asm/field_effect.o(.text); src/scanline_effect.o(.text); - src/option_menu.o(.text); + src/option_menu.o(.text); src/pokedex.o(.text); asm/trainer_card.o(.text); asm/pokemon_storage_system.o(.text); diff --git a/src/option_menu.c b/src/option_menu.c index 4898ac1cd..8450633f5 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -58,15 +58,15 @@ static const struct WindowTemplate sOptionMenuWinTemplates[] = //3CC2B8 .paletteNum = 1, .baseBlock = 0x36, }, - { - .bg = 2, - .tilemapLeft = 0, - .tilemapTop = 0, - .width = 30, - .height = 2, - .paletteNum = 0xF, - .baseBlock = 0x16e, - }, + { + .bg = 2, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 30, + .height = 2, + .paletteNum = 0xF, + .baseBlock = 0x16e, + }, DUMMY_WIN_TEMPLATE, }; static const struct BgTemplate sOptionMenuBgTemplates[] = //3CC2D8 @@ -90,16 +90,16 @@ static const struct BgTemplate sOptionMenuBgTemplates[] = //3CC2D8 .baseTile = 0, }, { - .bg = 2, - .charBaseIndex = 1, - .mapBaseIndex = 29, - .screenSize = 0, - .paletteMode = 0, - .priority = 2, - .baseTile = 0, + .bg = 2, + .charBaseIndex = 1, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0, }, }; -static const u16 sOptionsMenuPalette[] = INCBIN_U16("graphics/misc/unk_83cc2e4.gbapal"); //3CC2E4 +static const u16 sOptionsMenuPalette[] = INCBIN_U16("graphics/misc/unk_83cc2e4.gbapal"); //3CC2E4 static const u16 sOptionsMenuItemCounts[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0}; //3CC304 static const u8 *const sOptionMenuItemsNames[MENUITEM_COUNT] = //3CC314 { @@ -111,35 +111,35 @@ static const u8 *const sOptionMenuItemsNames[MENUITEM_COUNT] = //3CC314 [MENUITEM_FRAMETYPE] = gText_Frame, [MENUITEM_CANCEL] = gText_OptionMenuCancel, }; -static const u8 *const sTextSpeedOptions[] = //3CC330 +static const u8 *const sTextSpeedOptions[] = //3CC330 { - gText_TextSpeedSlow, - gText_TextSpeedMid, - gText_TextSpeedFast + gText_TextSpeedSlow, + gText_TextSpeedMid, + gText_TextSpeedFast }; -static const u8 *const sBattleSceneOptions[] = //3CC33C +static const u8 *const sBattleSceneOptions[] = //3CC33C { - gText_BattleSceneOn, - gText_BattleSceneOff + gText_BattleSceneOn, + gText_BattleSceneOff }; static const u8 *const sBattleStyleOptions[] = //3CC344 { - gText_BattleStyleShift, - gText_BattleStyleSet + gText_BattleStyleShift, + gText_BattleStyleSet }; -static const u8 *const sSoundOptions[] = //3CC34C +static const u8 *const sSoundOptions[] = //3CC34C { - gText_SoundMono, - gText_SoundStereo + gText_SoundMono, + gText_SoundStereo }; -static const u8 *const sButtonTypeOptions[] = //3CC354 +static const u8 *const sButtonTypeOptions[] = //3CC354 { - gText_ButtonTypeNormal, - gText_ButtonTypeLEqualsA, - gText_ButtonTypeLR, + gText_ButtonTypeNormal, + gText_ButtonTypeLEqualsA, + gText_ButtonTypeLR, }; -static const u8 sOptionsMenuPickSwitchCancelTextColor[] = {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}; //3CC360 -static const u8 sOptionsMenuTextColor[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_RED, TEXT_COLOR_RED}; //3CC363 +static const u8 sOptionsMenuPickSwitchCancelTextColor[] = {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}; //3CC360 +static const u8 sOptionsMenuTextColor[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_RED, TEXT_COLOR_RED}; //3CC363 //This file's functions From 31d3df51f1527c82868ecd2dc54ba573e0de2bb9 Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 19 Nov 2019 09:55:31 -0700 Subject: [PATCH 30/49] fix tab vs space format --- include/global.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/global.h b/include/global.h index 63c6923bd..744d23eb3 100644 --- a/include/global.h +++ b/include/global.h @@ -291,11 +291,11 @@ struct SaveBlock2 /*0x012*/ u8 playTimeVBlanks; /*0x013*/ u8 optionsButtonMode; // OPTIONS_BUTTON_MODE_[NORMAL/LR/L_EQUALS_A] /*0x014*/ u16 optionsTextSpeed:3; // OPTIONS_TEXT_SPEED_[SLOW/MID/FAST] - u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes + u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes /*0x15*/ u16 optionsSound:1; // OPTIONS_SOUND_[MONO/STEREO] - u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET] - u16 optionsBattleSceneOff:1; // whether battle animations are disabled - u16 regionMapZoom:1; // whether the map is zoomed in + u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET] + u16 optionsBattleSceneOff:1; // whether battle animations are disabled + u16 regionMapZoom:1; // whether the map is zoomed in /*0x018*/ struct Pokedex pokedex; /*0x090*/ u8 filler_90[0x8]; /*0x098*/ struct Time localTimeOffset; From 30d967a51a90cc717aedc0fde4aba68772dc15dd Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 19 Nov 2019 14:20:38 -0700 Subject: [PATCH 31/49] pr fixes --- data/strings.s | 8 +- include/strings.h | 3 +- src/option_menu.c | 421 ++++++++++++++++++++++------------------------ sym_ewram.txt | 3 +- 4 files changed, 204 insertions(+), 231 deletions(-) diff --git a/data/strings.s b/data/strings.s index a75671090..fd38b48cf 100644 --- a/data/strings.s +++ b/data/strings.s @@ -2904,7 +2904,7 @@ gUnknown_8419D89:: @ 8419D89 .string "Waiting for the other TRAINER to\n" .string "finish reading your TRAINER CARD.$" -gText_MenuOptionOption:: @ 8419DCC +gText_MenuOption:: @ 8419DCC .string "OPTION$" gText_TextSpeed:: @ 0x8419DD3 @@ -2955,16 +2955,16 @@ gText_SoundMono:: @ 0x8419E36 gText_SoundStereo:: @ 0x8419E3B .string "STEREO$" -gUnknown_8419E42:: @ 0x8419E42 +gTextJP_Type:: @ 0x8419E42 .string "タイプ$" gText_ButtonTypeNormal:: @ 0x8419E46 .string "HELP$" -gText_ButtonTypeLR:: @ 0x8419E4B +gText_ButtonTypeLEqualsA:: @ 0x8419E4B .string "LゅA$" -gText_ButtonTypeLEqualsA:: @ 0x8419E4F +gText_ButtonTypeLR:: @ 0x8419E4F .string "LR$" gText_FrameType:: @ 8419E52 diff --git a/include/strings.h b/include/strings.h index 89149a8eb..327d3cfcb 100644 --- a/include/strings.h +++ b/include/strings.h @@ -783,8 +783,9 @@ extern const u8 gText_SoundStereo[]; extern const u8 gText_ButtonTypeNormal[]; extern const u8 gText_ButtonTypeLR[]; extern const u8 gText_ButtonTypeLEqualsA[]; -extern const u8 gText_MenuOptionOption[]; +extern const u8 gText_MenuOption[]; extern const u8 gText_FrameType[]; +extern const u8 gTextJP_Type[]; extern const u8 gText_PickSwitchCancel[]; #endif //GUARD_STRINGS_H diff --git a/src/option_menu.c b/src/option_menu.c index 8450633f5..fb4844bec 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -29,16 +29,41 @@ enum MENUITEM_BUTTONMODE, MENUITEM_FRAMETYPE, MENUITEM_CANCEL, - MENUITEM_COUNT, + MENUITEM_COUNT }; + // Window Ids enum { WIN_TEXT_OPTION, - WIN_OPTIONS, + WIN_OPTIONS }; -static const struct WindowTemplate sOptionMenuWinTemplates[] = //3CC2B8 +// RAM sumbols +EWRAM_DATA struct OptionMenu *sOptionMenuPtr = NULL; + +//Function Declarataions +static void CB2_InitOptionMenu(void); +static void VBlankCB_OptionMenu(void); +static void OptionMenu_InitCallbacks(void); +static void OptionMenu_SetVBlankCallback(void); +static void CB2_OptionMenu(void); +static void SetOptionMenuTask(void); +static void InitOptionMenuBg(void); +static void OptionMenu_PickSwitchCancel(void); +static void OptionMenu_ResetSpriteData(void); +static bool8 LoadOptionMenuPalette(void); +static void Task_OptionMenu(u8 taskId); +static u8 OptionMenu_ProcessInput(void); +static void BufferOptionMenuString(u8 selection); +static void CloseAndSaveOptionMenu(u8 taskId); +static void PrintOptionMenuHeader(void); +static void sub_8088C0C(void); +static void LoadOptionMenuItemNames(void); +static void sub_8088DE0(u16 selection); + +// Data Definitions +static const struct WindowTemplate sOptionMenuWinTemplates[] = { { .bg = 1, @@ -47,7 +72,7 @@ static const struct WindowTemplate sOptionMenuWinTemplates[] = //3CC2B8 .width = 26, .height = 2, .paletteNum = 1, - .baseBlock = 2, + .baseBlock = 2 }, { .bg = 0, @@ -56,7 +81,7 @@ static const struct WindowTemplate sOptionMenuWinTemplates[] = //3CC2B8 .width = 26, .height = 12, .paletteNum = 1, - .baseBlock = 0x36, + .baseBlock = 0x36 }, { .bg = 2, @@ -65,11 +90,12 @@ static const struct WindowTemplate sOptionMenuWinTemplates[] = //3CC2B8 .width = 30, .height = 2, .paletteNum = 0xF, - .baseBlock = 0x16e, + .baseBlock = 0x16e }, - DUMMY_WIN_TEMPLATE, + DUMMY_WIN_TEMPLATE }; -static const struct BgTemplate sOptionMenuBgTemplates[] = //3CC2D8 + +static const struct BgTemplate sOptionMenuBgTemplates[] = { { .bg = 1, @@ -78,7 +104,7 @@ static const struct BgTemplate sOptionMenuBgTemplates[] = //3CC2D8 .screenSize = 0, .paletteMode = 0, .priority = 0, - .baseTile = 0, + .baseTile = 0 }, { .bg = 0, @@ -87,7 +113,7 @@ static const struct BgTemplate sOptionMenuBgTemplates[] = //3CC2D8 .screenSize = 0, .paletteMode = 0, .priority = 1, - .baseTile = 0, + .baseTile = 0 }, { .bg = 2, @@ -96,12 +122,14 @@ static const struct BgTemplate sOptionMenuBgTemplates[] = //3CC2D8 .screenSize = 0, .paletteMode = 0, .priority = 2, - .baseTile = 0, + .baseTile = 0 }, }; -static const u16 sOptionsMenuPalette[] = INCBIN_U16("graphics/misc/unk_83cc2e4.gbapal"); //3CC2E4 -static const u16 sOptionsMenuItemCounts[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0}; //3CC304 -static const u8 *const sOptionMenuItemsNames[MENUITEM_COUNT] = //3CC314 + +static const u16 sOptionMenuPalette[] = INCBIN_U16("graphics/misc/unk_83cc2e4.gbapal"); +static const u16 sOptionMenuItemCounts[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0}; + +static const u8 *const sOptionMenuItemsNames[MENUITEM_COUNT] = { [MENUITEM_TEXTSPEED] = gText_TextSpeed, [MENUITEM_BATTLESCENE] = gText_BattleScene, @@ -111,60 +139,44 @@ static const u8 *const sOptionMenuItemsNames[MENUITEM_COUNT] = //3CC314 [MENUITEM_FRAMETYPE] = gText_Frame, [MENUITEM_CANCEL] = gText_OptionMenuCancel, }; -static const u8 *const sTextSpeedOptions[] = //3CC330 + +static const u8 *const sTextSpeedOptions[] = { gText_TextSpeedSlow, gText_TextSpeedMid, gText_TextSpeedFast }; -static const u8 *const sBattleSceneOptions[] = //3CC33C + +static const u8 *const sBattleSceneOptions[] = { gText_BattleSceneOn, gText_BattleSceneOff }; -static const u8 *const sBattleStyleOptions[] = //3CC344 + +static const u8 *const sBattleStyleOptions[] = { gText_BattleStyleShift, gText_BattleStyleSet }; -static const u8 *const sSoundOptions[] = //3CC34C +static const u8 *const sSoundOptions[] = { gText_SoundMono, gText_SoundStereo }; -static const u8 *const sButtonTypeOptions[] = //3CC354 + +static const u8 *const sButtonTypeOptions[] = { gText_ButtonTypeNormal, - gText_ButtonTypeLEqualsA, - gText_ButtonTypeLR, + gText_ButtonTypeLR, + gText_ButtonTypeLEqualsA }; -static const u8 sOptionsMenuPickSwitchCancelTextColor[] = {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}; //3CC360 -static const u8 sOptionsMenuTextColor[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_RED, TEXT_COLOR_RED}; //3CC363 +static const u8 sOptionMenuPickSwitchCancelTextColor[] = {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}; +static const u8 sOptionMenuTextColor[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_RED, TEXT_COLOR_RED}; -//This file's functions -static void sub_808835C(void); -static void sub_8088374(void); -static void sub_8088430(void); -static void sub_8088444(void); -static void sub_8088454(void); -static void sub_8088514(void); -static void sub_8088530(void); -static void sub_8088680(void); -static void sub_80886D4(void); -static bool8 sub_80886F0(void); -static void sub_8088780(u8 taskId); -static u8 sub_80888C0(void); -static void sub_80889A8(u8 selection); -static void sub_8088B00(u8 taskId); -static void sub_8088BD0(void); -static void sub_8088C0C(void); -static void sub_8088D8C(void); -static void sub_8088DE0(u16 selection); - -struct OptionsMenu +struct OptionMenu { - /*0x00*/ u16 option[MENUITEM_COUNT]; //0,2,4,6,8,a,c + /*0x00*/ u16 option[MENUITEM_COUNT]; /*0x0E*/ u16 unkE; /*0x10*/ u8 state3; /*0x11*/ u8 state; @@ -172,12 +184,7 @@ struct OptionsMenu /*0x13*/ u8 unk13; }; -EWRAM_DATA struct OptionsMenu *sOptionsMenuPtr = {0}; - - - -//CB2_InitOptionsMenu -static void sub_808835C(void) +static void CB2_InitOptionMenu(void) { RunTasks(); AnimateSprites(); @@ -185,123 +192,110 @@ static void sub_808835C(void) UpdatePaletteFade(); } - -//VBlankCB_OptionsMenu -static void sub_8088374(void) +static void VBlankCB_OptionMenu(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } - -//sub_8088388 void CB2_OptionsMenuFromStartMenu(void) { u8 i; if (gMain.savedCallback == NULL) gMain.savedCallback = CB2_ReturnToStartMenu; - sOptionsMenuPtr = AllocZeroed(sizeof(struct OptionsMenu)); - sOptionsMenuPtr->state3 = 0; - sOptionsMenuPtr->state2 = 0; - sOptionsMenuPtr->state = 0; - sOptionsMenuPtr->unkE = 0; - sOptionsMenuPtr->option[MENUITEM_TEXTSPEED] = gSaveBlock2Ptr->optionsTextSpeed; - sOptionsMenuPtr->option[MENUITEM_BATTLESCENE] = gSaveBlock2Ptr->optionsBattleSceneOff; - sOptionsMenuPtr->option[MENUITEM_BATTLESTYLE] = gSaveBlock2Ptr->optionsBattleStyle; - sOptionsMenuPtr->option[MENUITEM_SOUND] = gSaveBlock2Ptr->optionsSound; - sOptionsMenuPtr->option[MENUITEM_BUTTONMODE] = gSaveBlock2Ptr->optionsButtonMode; - sOptionsMenuPtr->option[MENUITEM_FRAMETYPE] = gSaveBlock2Ptr->optionsWindowFrameType; + sOptionMenuPtr = AllocZeroed(sizeof(struct OptionMenu)); + sOptionMenuPtr->state3 = 0; + sOptionMenuPtr->state2 = 0; + sOptionMenuPtr->state = 0; + sOptionMenuPtr->unkE = 0; + sOptionMenuPtr->option[MENUITEM_TEXTSPEED] = gSaveBlock2Ptr->optionsTextSpeed; + sOptionMenuPtr->option[MENUITEM_BATTLESCENE] = gSaveBlock2Ptr->optionsBattleSceneOff; + sOptionMenuPtr->option[MENUITEM_BATTLESTYLE] = gSaveBlock2Ptr->optionsBattleStyle; + sOptionMenuPtr->option[MENUITEM_SOUND] = gSaveBlock2Ptr->optionsSound; + sOptionMenuPtr->option[MENUITEM_BUTTONMODE] = gSaveBlock2Ptr->optionsButtonMode; + sOptionMenuPtr->option[MENUITEM_FRAMETYPE] = gSaveBlock2Ptr->optionsWindowFrameType; for (i = 0; i < MENUITEM_COUNT-1; i++) { - if (sOptionsMenuPtr->option[i] > (sOptionsMenuItemCounts[i])-1) - sOptionsMenuPtr->option[i] = 0; + if (sOptionMenuPtr->option[i] > (sOptionMenuItemCounts[i])-1) + sOptionMenuPtr->option[i] = 0; } HelpSystem_SetSomeVariable2(0xD); - SetMainCallback2(sub_8088454); + SetMainCallback2(CB2_OptionMenu); } - -//sub_8088430 -static void sub_8088430(void) +static void OptionMenu_InitCallbacks(void) { SetVBlankCallback(0); SetHBlankCallback(0); } - -//sub_8088444 -static void sub_8088444(void) +static void OptionMenu_SetVBlankCallback(void) { - SetVBlankCallback(sub_8088374); + SetVBlankCallback(VBlankCB_OptionMenu); } -//sub_8088454 -static void sub_8088454(void) +static void CB2_OptionMenu(void) { u8 i, state; - state = sOptionsMenuPtr->state; + state = sOptionMenuPtr->state; switch (state) { case 0: - sub_8088430(); + OptionMenu_InitCallbacks(); break; case 1: - sub_8088530(); + InitOptionMenuBg(); break; case 2: - sub_80886D4(); + OptionMenu_ResetSpriteData(); break; case 3: - if (sub_80886F0() != TRUE) //silly matching quirk + if (LoadOptionMenuPalette() != TRUE) return; break; case 4: - sub_8088BD0(); + PrintOptionMenuHeader(); break; case 5: sub_8088C0C(); break; case 6: - sub_8088D8C(); + LoadOptionMenuItemNames(); break; case 7: for (i = 0; i < MENUITEM_COUNT; i++) - sub_80889A8(i); + BufferOptionMenuString(i); break; case 8: - sub_8088DE0(sOptionsMenuPtr->unkE); + sub_8088DE0(sOptionMenuPtr->unkE); break; case 9: - sub_8088680(); + OptionMenu_PickSwitchCancel(); break; default: - sub_8088514(); + SetOptionMenuTask(); } - sOptionsMenuPtr->state++; + sOptionMenuPtr->state++; } -//sub_8088514 -static void sub_8088514(void) +static void SetOptionMenuTask(void) { - CreateTask(sub_8088780, 0); - SetMainCallback2(sub_808835C); + CreateTask(Task_OptionMenu, 0); + SetMainCallback2(CB2_InitOptionMenu); } - -//sub_8088530 -static void sub_8088530(void) +static void InitOptionMenuBg(void) { void * dest = (void *) VRAM; - DmaClearLarge16(3, dest, VRAM_SIZE, 0x1000); - + DmaClearLarge16(3, dest, VRAM_SIZE, 0x1000); DmaClear32(3, (void *)OAM, OAM_SIZE); DmaClear16(3, (void *)PLTT, PLTT_SIZE); - SetGpuReg(REG_OFFSET_DISPCNT, 0); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, sOptionMenuBgTemplates, ARRAY_COUNT(sOptionMenuBgTemplates)); + InitBgsFromTemplates(0, sOptionMenuBgTemplates, NELEMS(sOptionMenuBgTemplates)); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); ChangeBgX(1, 0, 0); @@ -312,30 +306,27 @@ static void sub_8088530(void) ChangeBgY(3, 0, 0); InitWindows(sOptionMenuWinTemplates); DeactivateAllTextPrinters(); - SetGpuReg(REG_OFFSET_BLDCNT, 0xC1); - SetGpuReg(REG_OFFSET_BLDY, 2); - SetGpuReg(REG_OFFSET_WININ, 1); - SetGpuReg(REG_OFFSET_WINOUT, 0x27); - SetGpuReg(0, 0x3040); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_EFFECT_LIGHTEN); + SetGpuReg(REG_OFFSET_BLDY, BLDCNT_TGT1_BG1); + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_CLR); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON); ShowBg(0); ShowBg(1); ShowBg(2); }; -//sub_8088680 -static void sub_8088680(void) +static void OptionMenu_PickSwitchCancel(void) { s32 x; x = 0xE4 - GetStringWidth(0, gText_PickSwitchCancel, 0); - FillWindowPixelBuffer(2, 0xFF); - AddTextPrinterParameterized3(2, 0, x, 0, sOptionsMenuPickSwitchCancelTextColor, 0, gText_PickSwitchCancel); + FillWindowPixelBuffer(2, PIXEL_FILL(15)); + AddTextPrinterParameterized3(2, 0, x, 0, sOptionMenuPickSwitchCancelTextColor, 0, gText_PickSwitchCancel); PutWindowTilemap(2); CopyWindowToVram(2, 3); } - -//sub_80886D4 -static void sub_80886D4(void) +static void OptionMenu_ResetSpriteData(void) { ResetSpriteData(); ResetPaletteFade(); @@ -344,19 +335,18 @@ static void sub_80886D4(void) ScanlineEffect_Stop(); } -//sub_80886F0 -static bool8 sub_80886F0(void) +static bool8 LoadOptionMenuPalette(void) { - switch (sOptionsMenuPtr->state2) + switch (sOptionMenuPtr->state2) { case 0: - LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenuPtr->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); break; case 1: - LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenuPtr->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); + LoadPalette(GetUserFrameGraphicsInfo(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); break; case 2: - LoadPalette(sOptionsMenuPalette, 0x10, 0x20); + LoadPalette(sOptionMenuPalette, 0x10, 0x20); LoadPalette(stdpal_get(2), 0xF0, 0x20); break; case 3: @@ -365,60 +355,58 @@ static bool8 sub_80886F0(void) default: return TRUE; } - sOptionsMenuPtr->state2++; + sOptionMenuPtr->state2++; return FALSE; } - - // I could not get this function to match. GOTO statements weren't even compiling correctly. #ifdef NONMATCHING -static void sub_8088780(u8 taskId) +static void Task_OptionMenu(u8 taskId) { u8 v2, v5; - struct OptionsMenu v4; + struct OptionMenu v4; - switch (sOptionsMenuPtr->state3) + switch (sOptionMenuPtr->state3) { case 0: - BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); - sub_8088444(); - sOptionsMenuPtr->state3++; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); + OptionMenu_SetVBlankCallback(); + sOptionMenuPtr->state3++; break; case 2: if ((bool32) sub_80BF72C() == TRUE) //cast to bool32 to remove the lsl/lsr 0x18 after func call return; - switch (sub_80888C0()) + switch (OptionMenu_ProcessInput()) { case 1: - sOptionsMenuPtr->state3++; + sOptionMenuPtr->state3++; break; case 2: - LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenuPtr->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); - LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenuPtr->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); - sub_80889A8(sOptionsMenuPtr->unkE); - sOptionsMenuPtr->state3++; + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); + LoadPalette(GetUserFrameGraphicsInfo(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); + BufferOptionMenuString(sOptionMenuPtr->unkE); + sOptionMenuPtr->state3++; break; case 3: - sub_8088DE0(sOptionsMenuPtr->unkE); + sub_8088DE0(sOptionMenuPtr->unkE); break; case 4: - sub_80889A8(sOptionsMenuPtr->unkE); - sOptionsMenuPtr->state3++; + BufferOptionMenuString(sOptionMenuPtr->unkE); + sOptionMenuPtr->state3++; break; default: return; } case 3: - BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - sOptionsMenuPtr->state3++; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + sOptionMenuPtr->state3++; case 1: case 4: if (gPaletteFade.active) return; - sOptionsMenuPtr->state3++; + sOptionMenuPtr->state3++; case 5: - sub_8088B00(taskId); + CloseAndSaveOptionMenu(taskId); break; default: return; @@ -426,13 +414,13 @@ static void sub_8088780(u8 taskId) } #else NAKED -static void sub_8088780(u8 taskId) +static void Task_OptionMenu(u8 taskId) { asm_unified("\tpush {r4,lr}\n" "\tsub sp, 0x4\n" "\tlsls r0, 24\n" "\tlsrs r2, r0, 24\n" - "\tldr r1, _080887A0 @ =sOptionsMenuPtr\n" + "\tldr r1, _080887A0 @ =sOptionMenuPtr\n" "\tldr r0, [r1]\n" "\tldrb r0, [r0, 0x10]\n" "\tadds r3, r1, 0\n" @@ -446,7 +434,7 @@ static void sub_8088780(u8 taskId) "\tldr r0, [r0]\n" "\tmov pc, r0\n" "\t.align 2, 0\n" - "_080887A0: .4byte sOptionsMenuPtr\n" + "_080887A0: .4byte sOptionMenuPtr\n" "_080887A4: .4byte _080887A8\n" "\t.align 2, 0\n" "_080887A8:\n" @@ -464,17 +452,17 @@ static void sub_8088780(u8 taskId) "\tmovs r2, 0x10\n" "\tmovs r3, 0\n" "\tbl BeginNormalPaletteFade\n" - "\tbl sub_8088444\n" - "\tldr r0, _080887DC @ =sOptionsMenuPtr\n" + "\tbl OptionMenu_SetVBlankCallback\n" + "\tldr r0, _080887DC @ =sOptionMenuPtr\n" "\tldr r1, [r0]\n" "\tb _080888A2\n" "\t.align 2, 0\n" - "_080887DC: .4byte sOptionsMenuPtr\n" + "_080887DC: .4byte sOptionMenuPtr\n" "_080887E0:\n" "\tbl sub_80BF72C\n" "\tcmp r0, 0x1\n" "\tbeq _080888B6\n" - "\tbl sub_80888C0\n" + "\tbl OptionMenu_ProcessInput\n" "\tlsls r0, 24\n" "\tlsrs r0, 24\n" "\tcmp r0, 0x4\n" @@ -494,13 +482,13 @@ static void sub_8088780(u8 taskId) "\t.4byte _08088858\n" "\t.4byte _08088868\n" "_08088818:\n" - "\tldr r0, _08088820 @ =sOptionsMenuPtr\n" + "\tldr r0, _08088820 @ =sOptionMenuPtr\n" "\tldr r1, [r0]\n" "\tb _080888A2\n" "\t.align 2, 0\n" - "_08088820: .4byte sOptionsMenuPtr\n" + "_08088820: .4byte sOptionMenuPtr\n" "_08088824:\n" - "\tldr r4, _08088854 @ =sOptionsMenuPtr\n" + "\tldr r4, _08088854 @ =sOptionMenuPtr\n" "\tldr r0, [r4]\n" "\tldrb r0, [r0, 0xA]\n" "\tbl GetUserFrameGraphicsInfo\n" @@ -521,24 +509,24 @@ static void sub_8088780(u8 taskId) "\tldr r0, [r4]\n" "\tb _0808886C\n" "\t.align 2, 0\n" - "_08088854: .4byte sOptionsMenuPtr\n" + "_08088854: .4byte sOptionMenuPtr\n" "_08088858:\n" - "\tldr r0, _08088864 @ =sOptionsMenuPtr\n" + "\tldr r0, _08088864 @ =sOptionMenuPtr\n" "\tldr r0, [r0]\n" "\tldrh r0, [r0, 0xE]\n" "\tbl sub_8088DE0\n" "\tb _080888B6\n" "\t.align 2, 0\n" - "_08088864: .4byte sOptionsMenuPtr\n" + "_08088864: .4byte sOptionMenuPtr\n" "_08088868:\n" - "\tldr r0, _08088874 @ =sOptionsMenuPtr\n" + "\tldr r0, _08088874 @ =sOptionMenuPtr\n" "\tldr r0, [r0]\n" "_0808886C:\n" "\tldrb r0, [r0, 0xE]\n" - "\tbl sub_80889A8\n" + "\tbl BufferOptionMenuString\n" "\tb _080888B6\n" "\t.align 2, 0\n" - "_08088874: .4byte sOptionsMenuPtr\n" + "_08088874: .4byte sOptionMenuPtr\n" "_08088878:\n" "\tmovs r0, 0x1\n" "\tnegs r0, r0\n" @@ -547,11 +535,11 @@ static void sub_8088780(u8 taskId) "\tmovs r2, 0\n" "\tmovs r3, 0x10\n" "\tbl BeginNormalPaletteFade\n" - "\tldr r0, _08088890 @ =sOptionsMenuPtr\n" + "\tldr r0, _08088890 @ =sOptionMenuPtr\n" "\tldr r1, [r0]\n" "\tb _080888A2\n" "\t.align 2, 0\n" - "_08088890: .4byte sOptionsMenuPtr\n" + "_08088890: .4byte sOptionMenuPtr\n" "_08088894:\n" "\tldr r0, _080888AC @ =gPaletteFade\n" "\tldrb r1, [r0, 0x7]\n" @@ -569,7 +557,7 @@ static void sub_8088780(u8 taskId) "_080888AC: .4byte gPaletteFade\n" "_080888B0:\n" "\tadds r0, r2, 0\n" - "\tbl sub_8088B00\n" + "\tbl CloseAndSaveOptionMenu\n" "_080888B6:\n" "\tadd sp, 0x4\n" "\tpop {r4}\n" @@ -578,53 +566,52 @@ static void sub_8088780(u8 taskId) } #endif -//OptionsMenu_ProcessInput -static u8 sub_80888C0(void) +static u8 OptionMenu_ProcessInput(void) { u16 current; u16* curr; - if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + if (JOY_REPT(DPAD_RIGHT)) { - current = sOptionsMenuPtr->option[(sOptionsMenuPtr->unkE)]; - if (current == (sOptionsMenuItemCounts[sOptionsMenuPtr->unkE] - 1)) - sOptionsMenuPtr->option[sOptionsMenuPtr->unkE] = 0; + current = sOptionMenuPtr->option[(sOptionMenuPtr->unkE)]; + if (current == (sOptionMenuItemCounts[sOptionMenuPtr->unkE] - 1)) + sOptionMenuPtr->option[sOptionMenuPtr->unkE] = 0; else - sOptionsMenuPtr->option[sOptionsMenuPtr->unkE] = current + 1; - if (sOptionsMenuPtr->unkE == MENUITEM_FRAMETYPE) + sOptionMenuPtr->option[sOptionMenuPtr->unkE] = current + 1; + if (sOptionMenuPtr->unkE == MENUITEM_FRAMETYPE) return 2; else return 4; } - else if (gMain.newAndRepeatedKeys & DPAD_LEFT) + else if (JOY_REPT(DPAD_LEFT)) { - curr = &sOptionsMenuPtr->option[sOptionsMenuPtr->unkE]; + curr = &sOptionMenuPtr->option[sOptionMenuPtr->unkE]; if (*curr == 0) - *curr = sOptionsMenuItemCounts[sOptionsMenuPtr->unkE] - 1; + *curr = sOptionMenuItemCounts[sOptionMenuPtr->unkE] - 1; else - --*(curr); + --*curr; - if (sOptionsMenuPtr->unkE == MENUITEM_FRAMETYPE) + if (sOptionMenuPtr->unkE == MENUITEM_FRAMETYPE) return 2; else return 4; } - else if (gMain.newAndRepeatedKeys & DPAD_UP) + else if (JOY_REPT(DPAD_UP)) { - if (sOptionsMenuPtr->unkE == MENUITEM_TEXTSPEED) - sOptionsMenuPtr->unkE = MENUITEM_CANCEL; + if (sOptionMenuPtr->unkE == MENUITEM_TEXTSPEED) + sOptionMenuPtr->unkE = MENUITEM_CANCEL; else - sOptionsMenuPtr->unkE = sOptionsMenuPtr->unkE - 1; + sOptionMenuPtr->unkE = sOptionMenuPtr->unkE - 1; return 3; } - else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + else if (JOY_REPT(DPAD_DOWN)) { - if (sOptionsMenuPtr->unkE == MENUITEM_CANCEL) - sOptionsMenuPtr->unkE = MENUITEM_TEXTSPEED; + if (sOptionMenuPtr->unkE == MENUITEM_CANCEL) + sOptionMenuPtr->unkE = MENUITEM_TEXTSPEED; else - sOptionsMenuPtr->unkE = sOptionsMenuPtr->unkE + 1; + sOptionMenuPtr->unkE = sOptionMenuPtr->unkE + 1; return 3; } - else if ((gMain.newKeys & B_BUTTON) || (gMain.newKeys & A_BUTTON)) + else if (JOY_NEW(B_BUTTON) || JOY_NEW(A_BUTTON)) { return 1; } @@ -634,17 +621,15 @@ static u8 sub_80888C0(void) } } - -//sub_80889A8 #ifdef NONMATCHING // could not get it to match perfectly, no idea how they put so many vars on the stack -static void sub_80889A8(u8 selection) +static void BufferOptionMenuString(u8 selection) { - u8* dst; + u8 dst[3]; u8* str; u8* v8; u8 x, y; - memcpy(&dst, sOptionsMenuTextColor, 3); + memcpy(&dst, sOptionMenuTextColor, 3); y = ((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) - 1) * selection) + 2; x = 0x82; FillWindowPixelRect(1, 1, x, y, 0x46, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); @@ -668,7 +653,7 @@ static void sub_80889A8(u8 selection) break; case MENUITEM_FRAMETYPE: StringCopy(str, gText_FrameType); - ConvertIntToDecimalStringN(v8, sOptionsMenuPtr->option[2*selection] + 1, 1, 2); + ConvertIntToDecimalStringN(v8, sOptionMenuPtr->option[2 * selection] + 1, 1, 2); StringAppendN(str, v8, 3); AddTextPrinterParameterized3(1, 2, x, y, dst, -1, str); break; @@ -680,7 +665,7 @@ static void sub_80889A8(u8 selection) } #else NAKED -static void sub_80889A8(u8 selection) +static void BufferOptionMenuString(u8 selection) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r8\n" @@ -689,7 +674,7 @@ static void sub_80889A8(u8 selection) "\tlsls r0, 24\n" "\tlsrs r5, r0, 24\n" "\tadd r4, sp, 0x2C\n" - "\tldr r1, _08088A08 @ =sOptionsMenuTextColor\n" + "\tldr r1, _08088A08 @ =sOptionMenuTextColor\n" "\tadds r0, r4, 0\n" "\tmovs r2, 0x3\n" "\tbl memcpy\n" @@ -727,7 +712,7 @@ static void sub_80889A8(u8 selection) "\tldr r0, [r0]\n" "\tmov pc, r0\n" "\t.align 2, 0\n" - "_08088A08: .4byte sOptionsMenuTextColor\n" + "_08088A08: .4byte sOptionMenuTextColor\n" "_08088A0C: .4byte _08088A10\n" "\t.align 2, 0\n" "_08088A10:\n" @@ -780,7 +765,7 @@ static void sub_80889A8(u8 selection) "\tstr r0, [sp, 0x4]\n" "\tldr r2, _08088A94 @ =sButtonTypeOptions\n" "_08088A72:\n" - "\tldr r0, _08088A98 @ =sOptionsMenuPtr\n" + "\tldr r0, _08088A98 @ =sOptionMenuPtr\n" "\tldr r0, [r0]\n" "\tlsls r1, r5, 1\n" "\tadds r0, r1\n" @@ -797,13 +782,13 @@ static void sub_80889A8(u8 selection) "\tb _08088ADE\n" "\t.align 2, 0\n" "_08088A94: .4byte sButtonTypeOptions\n" - "_08088A98: .4byte sOptionsMenuPtr\n" + "_08088A98: .4byte sOptionMenuPtr\n" "_08088A9C:\n" "\tldr r1, _08088AF8 @ =gText_FrameType\n" "\tadd r0, sp, 0xC\n" "\tbl StringCopy\n" "\tadd r4, sp, 0x20\n" - "\tldr r0, _08088AFC @ =sOptionsMenuPtr\n" + "\tldr r0, _08088AFC @ =sOptionMenuPtr\n" "\tldr r0, [r0]\n" "\tlsls r1, r5, 1\n" "\tadds r0, r1\n" @@ -842,43 +827,35 @@ static void sub_80889A8(u8 selection) "\tbx r0\n" "\t.align 2, 0\n" "_08088AF8: .4byte gText_FrameType\n" - "_08088AFC: .4byte sOptionsMenuPtr\n"); + "_08088AFC: .4byte sOptionMenuPtr\n"); } #endif - -//sub_8088B00 -static void sub_8088B00(u8 taskId) +static void CloseAndSaveOptionMenu(u8 taskId) { gFieldCallback = sub_807DF64; SetMainCallback2(gMain.savedCallback); FreeAllWindowBuffers(); - gSaveBlock2Ptr->optionsTextSpeed = (u8) sOptionsMenuPtr->option[MENUITEM_TEXTSPEED]; - gSaveBlock2Ptr->optionsBattleSceneOff = (u8) sOptionsMenuPtr->option[MENUITEM_BATTLESCENE]; - gSaveBlock2Ptr->optionsBattleStyle = (u8) sOptionsMenuPtr->option[MENUITEM_BATTLESTYLE]; - gSaveBlock2Ptr->optionsSound = sOptionsMenuPtr->option[MENUITEM_SOUND]; - gSaveBlock2Ptr->optionsButtonMode = (u8) sOptionsMenuPtr->option[MENUITEM_BUTTONMODE]; - gSaveBlock2Ptr->optionsWindowFrameType = (u8) sOptionsMenuPtr->option[MENUITEM_FRAMETYPE]; + gSaveBlock2Ptr->optionsTextSpeed = (u8) sOptionMenuPtr->option[MENUITEM_TEXTSPEED]; + gSaveBlock2Ptr->optionsBattleSceneOff = (u8) sOptionMenuPtr->option[MENUITEM_BATTLESCENE]; + gSaveBlock2Ptr->optionsBattleStyle = (u8) sOptionMenuPtr->option[MENUITEM_BATTLESTYLE]; + gSaveBlock2Ptr->optionsSound = sOptionMenuPtr->option[MENUITEM_SOUND]; + gSaveBlock2Ptr->optionsButtonMode = (u8) sOptionMenuPtr->option[MENUITEM_BUTTONMODE]; + gSaveBlock2Ptr->optionsWindowFrameType = (u8) sOptionMenuPtr->option[MENUITEM_FRAMETYPE]; SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); - Free(sOptionsMenuPtr); - sOptionsMenuPtr = NULL; + FREE_AND_SET_NULL(sOptionMenuPtr); DestroyTask(taskId); } - - -//sub_8088BD0 -static void sub_8088BD0(void) +static void PrintOptionMenuHeader(void) { - FillWindowPixelBuffer(0, 0x11); - AddTextPrinterParameterized(WIN_TEXT_OPTION, 2, gText_MenuOptionOption, 8, 1, TEXT_SPEED_FF, NULL); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); + AddTextPrinterParameterized(WIN_TEXT_OPTION, 2, gText_MenuOption, 8, 1, TEXT_SPEED_FF, NULL); PutWindowTilemap(0); CopyWindowToVram(0, 3); } - -//sub_8088C0C static void sub_8088C0C(void) { u8 h; @@ -903,27 +880,23 @@ static void sub_8088C0C(void) CopyBgTilemapBufferToVram(1); } -//sub_8088D8C -static void sub_8088D8C(void) +static void LoadOptionMenuItemNames(void) { u8 i; - FillWindowPixelBuffer(1, 0x11); + FillWindowPixelBuffer(1, PIXEL_FILL(1)); for (i = 0; i < MENUITEM_COUNT; i++) { - AddTextPrinterParameterized(1, 2, sOptionMenuItemsNames[i], 8, (u8) ((i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))) + 2) - i, 0xFF, 0); + AddTextPrinterParameterized(WIN_OPTIONS, 2, sOptionMenuItemsNames[i], 8, (u8) ((i * (GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))) + 2) - i, TEXT_SPEED_FF, NULL); } } - -//sub_8088DE0 static void sub_8088DE0(u16 selection) { u16 v1, v2; v1 = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT); v2 = selection * (v1 - 1) + 0x3A; - SetGpuReg(0x44, (v2 << 8) | (v2 + v1)); - SetGpuReg(0x40, 0x10E0); + SetGpuReg(REG_OFFSET_WIN0V, (v2 << 8) | (v2 + v1)); + SetGpuReg(REG_OFFSET_WIN0H, WINOUT_WINOBJ_OBJ | WIN_RANGE(0, 0xE0)); } - diff --git a/sym_ewram.txt b/sym_ewram.txt index 8ff8247d9..6c022ca96 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -226,8 +226,7 @@ gFieldEffectArguments: @ 20386E0 .include "src/scanline_effect.o" .align 2 -sOptionsMenuPtr: @ 2039620 - .space 0x4 + .include "src/option_menu.o" gTrainerCards: @ 2039624 .space 0x180 From a323c385d6c799c8215bedb6eee59cb54464724b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 19 Nov 2019 16:56:42 -0500 Subject: [PATCH 32/49] Dump data/fldeff_flash --- asm/fldeff_flash.s | 10 +-- baserom.ips | Bin 279077 -> 278112 bytes data/fldeff_flash.s | 65 +++++++++++++++--- graphics/field_effects/flash_black.pal | 19 +++++ graphics/field_effects/flash_effect_map.bin | Bin 0 -> 2048 bytes graphics/field_effects/flash_effect_tiles.png | Bin 0 -> 199 bytes graphics/field_effects/flash_white.pal | 19 +++++ 7 files changed, 99 insertions(+), 14 deletions(-) create mode 100644 graphics/field_effects/flash_black.pal create mode 100644 graphics/field_effects/flash_effect_map.bin create mode 100644 graphics/field_effects/flash_effect_tiles.png create mode 100644 graphics/field_effects/flash_white.pal diff --git a/asm/fldeff_flash.s b/asm/fldeff_flash.s index 63067bb03..51e55de63 100644 --- a/asm/fldeff_flash.s +++ b/asm/fldeff_flash.s @@ -421,7 +421,7 @@ sub_80C9E4C: @ 80C9E4C movs r1, 0xE0 movs r2, 0x20 bl LoadPalette - ldr r0, _080C9EDC @ =gUnknown_83F5854 + ldr r0, _080C9EDC @ =gUnknown_83F5844 + 0x10 movs r1, 0xE0 movs r2, 0x10 bl LoadPalette @@ -434,7 +434,7 @@ sub_80C9E4C: @ 80C9E4C movs r0, 0x54 movs r1, 0 bl SetGpuReg - ldr r1, _080C9EE4 @ =0x00001f0c + ldr r1, _080C9EE4 @ =0x00001f0c =BGCNT_PRIORITY(0) | BGCNT_CHARBASE(3) | BGCNT_SCREENBASE(31) movs r0, 0x8 bl SetGpuReg movs r1, 0x8A @@ -461,7 +461,7 @@ _080C9ECC: .4byte 0x0600c000 _080C9ED0: .4byte gUnknown_83F5864 _080C9ED4: .4byte 0x0600f800 _080C9ED8: .4byte gUnknown_83F5804 -_080C9EDC: .4byte gUnknown_83F5854 +_080C9EDC: .4byte gUnknown_83F5844 + 0x10 _080C9EE0: .4byte 0x00003e41 _080C9EE4: .4byte 0x00001f0c _080C9EE8: .4byte gTasks @@ -527,7 +527,7 @@ sub_80C9F38: @ 80C9F38 adds r0, r1, 0x1 strh r0, [r4, 0xC] lsls r1, 1 - ldr r0, _080C9F7C @ =gUnknown_83F5854 + ldr r0, _080C9F7C @ =gUnknown_83F5844 + 0x10 adds r0, r1, r0 movs r2, 0x10 subs r2, r1 @@ -539,7 +539,7 @@ sub_80C9F38: @ 80C9F38 .align 2, 0 _080C9F74: .4byte 0x00001010 _080C9F78: .4byte gTasks -_080C9F7C: .4byte gUnknown_83F5854 +_080C9F7C: .4byte gUnknown_83F5844 + 0x10 _080C9F80: ldr r0, _080C9F98 @ =gUnknown_83F5804 movs r1, 0 diff --git a/baserom.ips b/baserom.ips index ba29beb15e89d98ea2beb21c9575405b450a16ce..5a7798ff21d4e9e10b9dfce6d2d44447dfd30251 100644 GIT binary patch delta 37 rcmZ45BKY8sKtl`T7A7-RmYfOF0@DMfnWWk!IhlZ%dAlSh3y&oL=}8IT delta 911 zcmaKqJ!lj`6vyZ7$KBrdUUDC+cM?pc*sL4`4+0ZHs#HrL1XD=-AdM0N7AZGiAVCyX z6pnxxMQl>Y1q6i@9the56A5Y|!2zcjaEP-gSSXw`n<7)WZ}+|5|GnKe!% zE@oA74(CaOj5S@LP1>M&qLMvaAVpF#Nr@I|LEs1@W-yak%tkE5(#&BQ#Ih{M!aOS= zR%9hs;zh&@JkN7Hi+F}RJk3*x+uY(NH#`np;6>bE%~cn8lQ)jmxg>YPeNZC6-Z>_B z%meV0evWXx3p|p=F0Q>2!1pBjxWcNp1+XfY0}*F1TS$f`l?xFrk1#n|*)thzKfu2_ zYVg-yci=8u3?p!ng<1#+h@f0nzBN3YgjV7wCRCW7PQ?7Y3QJ3gSd#}3!TNe4HaAt+ z-cH2MjtU0{%C`>>)p|bk`vUs$hpl}v*aa~Z|A~LZ-$rH9SL%2CJ^mW+$L}@-$X-M7 rmv}dRBfn79tiRs-9RkNGmNEw}v-Xj)Dp diff --git a/data/fldeff_flash.s b/data/fldeff_flash.s index 113cf42d1..ddffff5c1 100644 --- a/data/fldeff_flash.s +++ b/data/fldeff_flash.s @@ -6,22 +6,69 @@ .align 2 gUnknown_83F5738:: @ 83F5738 - .incbin "baserom.gba", 0x3F5738, 0xCC + .byte 1, 4, 1, 0 + .4byte sub_80C9FD4 + .4byte sub_80CA160 + .byte 2, 4, 1, 0 + .4byte sub_80C9FD4 + .4byte sub_80CA160 + .byte 3, 4, 1, 0 + .4byte sub_80C9FD4 + .4byte sub_80CA160 + .byte 5, 4, 1, 0 + .4byte sub_80C9FD4 + .4byte sub_80CA160 + .byte 6, 4, 1, 0 + .4byte sub_80C9FD4 + .4byte sub_80CA160 + .byte 7, 4, 1, 0 + .4byte sub_80C9FD4 + .4byte sub_80CA160 + .byte 8, 4, 1, 0 + .4byte sub_80C9FD4 + .4byte sub_80CA160 + .byte 9, 4, 1, 0 + .4byte sub_80C9FD4 + .4byte sub_80CA160 + .byte 4, 1, 0, 1 + .4byte sub_80C9E1C + .4byte sub_80CA160 + .byte 4, 2, 0, 1 + .4byte sub_80C9E1C + .4byte sub_80CA160 + .byte 4, 3, 0, 1 + .4byte sub_80C9E1C + .4byte sub_80CA160 + .byte 4, 5, 0, 1 + .4byte sub_80C9E1C + .4byte sub_80CA160 + .byte 4, 6, 0, 1 + .4byte sub_80C9E1C + .4byte sub_80CA160 + .byte 4, 7, 0, 1 + .4byte sub_80C9E1C + .4byte sub_80CA160 + .byte 4, 8, 0, 1 + .4byte sub_80C9E1C + .4byte sub_80CA160 + .byte 4, 9, 0, 1 + .4byte sub_80C9E1C + .4byte sub_80CA160 + .byte 0, 0, 0, 0 + .4byte NULL + .4byte NULL gUnknown_83F5804:: @ 83F5804 - .incbin "baserom.gba", 0x3F5804, 0x20 + .incbin "graphics/field_effects/flash_white.gbapal" gUnknown_83F5824:: @ 83F5824 - .incbin "baserom.gba", 0x3F5824, 0x20 + .incbin "graphics/field_effects/flash_black.gbapal" gUnknown_83F5844:: @ 83F5844 - .incbin "baserom.gba", 0x3F5844, 0x10 - -gUnknown_83F5854:: @ 83F5854 - .incbin "baserom.gba", 0x3F5854, 0x10 + .incbin "graphics/field_effects/flash_gradient.gbapal" gUnknown_83F5864:: @ 83F5864 - .incbin "baserom.gba", 0x3F5864, 0x1E0 + .incbin "graphics/field_effects/flash_effect_map.bin.lz" gUnknown_83F5A44:: @ 83F5A44 - .incbin "baserom.gba", 0x3F5A44, 0xB4 + .incbin "graphics/field_effects/flash_effect_tiles.4bpp.lz" diff --git a/graphics/field_effects/flash_black.pal b/graphics/field_effects/flash_black.pal new file mode 100644 index 000000000..4b0812f09 --- /dev/null +++ b/graphics/field_effects/flash_black.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +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 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/field_effects/flash_effect_map.bin b/graphics/field_effects/flash_effect_map.bin new file mode 100644 index 0000000000000000000000000000000000000000..4293bfd1c06c79d979b3a86891c1e96024634f42 GIT binary patch literal 2048 zcmeIyH*&);5QSkgXL6Y1{m-?d3}lUxcZkR$uMS6dx*)l**s4K>nO6HPVKTnjCj zGh@nxF(ZZy=+mQ1hc+#q-;bf6bvfa}`HgGIG<>mh0{(D(+dOx4_nZSRZz&C)6HSYib literal 0 HcmV?d00001 diff --git a/graphics/field_effects/flash_effect_tiles.png b/graphics/field_effects/flash_effect_tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..4079a5a84d2facb8cc8e847d22cdb0cbe483c595 GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@0wfq_iykiqQhlB-jv*GkM=u3(HW-MsK8!xd z6}F*Cbj=1Z6_yBMtu{C>S#FSM(Ry&7`cKD};;9^rHZcm#P0ZZtG6q_25)zt4-C9}G zW?VV1a7DSr$tuLO;wqm^OwB{v4}V4GJX&ZmE#fNQo^0!aTFv^_DuXWfM-lx8o~8u9 ropAi0#3%LO2hKVi+20S`e_(p2xYjnj|77`kkPAIs{an^LB{Ts5Us+2d literal 0 HcmV?d00001 diff --git a/graphics/field_effects/flash_white.pal b/graphics/field_effects/flash_white.pal new file mode 100644 index 000000000..98a1fb3c8 --- /dev/null +++ b/graphics/field_effects/flash_white.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 From ad6d1cb73bffc5fbbf0f68d7414f6de65cff3f9d Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 19 Nov 2019 16:03:35 -0700 Subject: [PATCH 33/49] attempt to match Task_OptionMenu --- src/option_menu.c | 189 ++++++---------------------------------------- 1 file changed, 25 insertions(+), 164 deletions(-) diff --git a/src/option_menu.c b/src/option_menu.c index 1729b36d1..f60669fb5 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -361,19 +361,21 @@ static bool8 LoadOptionMenuPalette(void) return FALSE; } -// I could not get this function to match. GOTO statements weren't even compiling correctly. -#ifdef NONMATCHING static void Task_OptionMenu(u8 taskId) { u8 v2, v5; - struct OptionMenu v4; + struct OptionMenu *vPtr; + struct OptionMenu *v4; switch (sOptionMenuPtr->state3) { case 0: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); OptionMenu_SetVBlankCallback(); - sOptionMenuPtr->state3++; + vPtr = sOptionMenuPtr; + v4 = vPtr; + goto STATE_PLUS; + v2 = 1; break; case 2: if ((bool32) sub_80BF72C() == TRUE) //cast to bool32 to remove the lsl/lsr 0x18 after func call @@ -381,20 +383,27 @@ static void Task_OptionMenu(u8 taskId) switch (OptionMenu_ProcessInput()) { case 1: - sOptionMenuPtr->state3++; + vPtr = sOptionMenuPtr; + goto STATE_PLUS; + v2 = 1; break; case 2: LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); LoadPalette(GetUserFrameGraphicsInfo(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); BufferOptionMenuString(sOptionMenuPtr->unkE); - sOptionMenuPtr->state3++; + + vPtr = sOptionMenuPtr; + goto GET_STRING; + v2 = 1; break; case 3: sub_8088DE0(sOptionMenuPtr->unkE); break; case 4: - BufferOptionMenuString(sOptionMenuPtr->unkE); - sOptionMenuPtr->state3++; + vPtr = sOptionMenuPtr; + + GET_STRING: + BufferOptionMenuString(vPtr->unkE); break; default: return; @@ -404,9 +413,14 @@ static void Task_OptionMenu(u8 taskId) sOptionMenuPtr->state3++; case 1: case 4: - if (gPaletteFade.active) - return; - sOptionMenuPtr->state3++; + if (!(gPaletteFade.active)) + { + STATE_PLUS: + v2 = vPtr->state3; + v2++; + vPtr->state3 = v2; + } + break; case 5: CloseAndSaveOptionMenu(taskId); break; @@ -414,159 +428,6 @@ static void Task_OptionMenu(u8 taskId) return; } } -#else -NAKED -static void Task_OptionMenu(u8 taskId) -{ - asm_unified("\tpush {r4,lr}\n" - "\tsub sp, 0x4\n" - "\tlsls r0, 24\n" - "\tlsrs r2, r0, 24\n" - "\tldr r1, _080887A0 @ =sOptionMenuPtr\n" - "\tldr r0, [r1]\n" - "\tldrb r0, [r0, 0x10]\n" - "\tadds r3, r1, 0\n" - "\tcmp r0, 0x5\n" - "\tbls _08088796\n" - "\tb _080888B6\n" - "_08088796:\n" - "\tlsls r0, 2\n" - "\tldr r1, _080887A4 @ =_080887A8\n" - "\tadds r0, r1\n" - "\tldr r0, [r0]\n" - "\tmov pc, r0\n" - "\t.align 2, 0\n" - "_080887A0: .4byte sOptionMenuPtr\n" - "_080887A4: .4byte _080887A8\n" - "\t.align 2, 0\n" - "_080887A8:\n" - "\t.4byte _080887C0\n" - "\t.4byte _08088894\n" - "\t.4byte _080887E0\n" - "\t.4byte _08088878\n" - "\t.4byte _08088894\n" - "\t.4byte _080888B0\n" - "_080887C0:\n" - "\tmovs r0, 0x1\n" - "\tnegs r0, r0\n" - "\tmovs r1, 0\n" - "\tstr r1, [sp]\n" - "\tmovs r2, 0x10\n" - "\tmovs r3, 0\n" - "\tbl BeginNormalPaletteFade\n" - "\tbl OptionMenu_SetVBlankCallback\n" - "\tldr r0, _080887DC @ =sOptionMenuPtr\n" - "\tldr r1, [r0]\n" - "\tb _080888A2\n" - "\t.align 2, 0\n" - "_080887DC: .4byte sOptionMenuPtr\n" - "_080887E0:\n" - "\tbl sub_80BF72C\n" - "\tcmp r0, 0x1\n" - "\tbeq _080888B6\n" - "\tbl OptionMenu_ProcessInput\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r0, 0x4\n" - "\tbhi _080888B6\n" - "\tlsls r0, 2\n" - "\tldr r1, _08088800 @ =_08088804\n" - "\tadds r0, r1\n" - "\tldr r0, [r0]\n" - "\tmov pc, r0\n" - "\t.align 2, 0\n" - "_08088800: .4byte _08088804\n" - "\t.align 2, 0\n" - "_08088804:\n" - "\t.4byte _080888B6\n" - "\t.4byte _08088818\n" - "\t.4byte _08088824\n" - "\t.4byte _08088858\n" - "\t.4byte _08088868\n" - "_08088818:\n" - "\tldr r0, _08088820 @ =sOptionMenuPtr\n" - "\tldr r1, [r0]\n" - "\tb _080888A2\n" - "\t.align 2, 0\n" - "_08088820: .4byte sOptionMenuPtr\n" - "_08088824:\n" - "\tldr r4, _08088854 @ =sOptionMenuPtr\n" - "\tldr r0, [r4]\n" - "\tldrb r0, [r0, 0xA]\n" - "\tbl GetUserFrameGraphicsInfo\n" - "\tldr r1, [r0]\n" - "\tmovs r2, 0x90\n" - "\tlsls r2, 1\n" - "\tmovs r3, 0xD5\n" - "\tlsls r3, 1\n" - "\tmovs r0, 0x1\n" - "\tbl LoadBgTiles\n" - "\tldr r0, [r4]\n" - "\tldrb r0, [r0, 0xA]\n" - "\tbl GetUserFrameGraphicsInfo\n" - "\tldr r0, [r0, 0x4]\n" - "\tmovs r1, 0x20\n" - "\tmovs r2, 0x20\n" - "\tbl LoadPalette\n" - "\tldr r0, [r4]\n" - "\tb _0808886C\n" - "\t.align 2, 0\n" - "_08088854: .4byte sOptionMenuPtr\n" - "_08088858:\n" - "\tldr r0, _08088864 @ =sOptionMenuPtr\n" - "\tldr r0, [r0]\n" - "\tldrh r0, [r0, 0xE]\n" - "\tbl sub_8088DE0\n" - "\tb _080888B6\n" - "\t.align 2, 0\n" - "_08088864: .4byte sOptionMenuPtr\n" - "_08088868:\n" - "\tldr r0, _08088874 @ =sOptionMenuPtr\n" - "\tldr r0, [r0]\n" - "_0808886C:\n" - "\tldrb r0, [r0, 0xE]\n" - "\tbl BufferOptionMenuString\n" - "\tb _080888B6\n" - "\t.align 2, 0\n" - "_08088874: .4byte sOptionMenuPtr\n" - "_08088878:\n" - "\tmovs r0, 0x1\n" - "\tnegs r0, r0\n" - "\tmovs r1, 0\n" - "\tstr r1, [sp]\n" - "\tmovs r2, 0\n" - "\tmovs r3, 0x10\n" - "\tbl BeginNormalPaletteFade\n" - "\tldr r0, _08088890 @ =sOptionMenuPtr\n" - "\tldr r1, [r0]\n" - "\tb _080888A2\n" - "\t.align 2, 0\n" - "_08088890: .4byte sOptionMenuPtr\n" - "_08088894:\n" - "\tldr r0, _080888AC @ =gPaletteFade\n" - "\tldrb r1, [r0, 0x7]\n" - "\tmovs r0, 0x80\n" - "\tands r0, r1\n" - "\tcmp r0, 0\n" - "\tbne _080888B6\n" - "\tldr r1, [r3]\n" - "_080888A2:\n" - "\tldrb r0, [r1, 0x10]\n" - "\tadds r0, 0x1\n" - "\tstrb r0, [r1, 0x10]\n" - "\tb _080888B6\n" - "\t.align 2, 0\n" - "_080888AC: .4byte gPaletteFade\n" - "_080888B0:\n" - "\tadds r0, r2, 0\n" - "\tbl CloseAndSaveOptionMenu\n" - "_080888B6:\n" - "\tadd sp, 0x4\n" - "\tpop {r4}\n" - "\tpop {r0}\n" - "\tbx r0\n"); -} -#endif static u8 OptionMenu_ProcessInput(void) { From 4a3d7ad972d964dcc008c5e736b3547196e65547 Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 19 Nov 2019 17:41:20 -0700 Subject: [PATCH 34/49] minor style fixes --- src/option_menu.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/option_menu.c b/src/option_menu.c index 1729b36d1..5498348ef 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -50,7 +50,7 @@ struct OptionMenu /*0x13*/ u8 unk13; }; -EWRAM_DATA struct OptionMenu *sOptionMenuPtr = NULL; +static EWRAM_DATA struct OptionMenu *sOptionMenuPtr = NULL; //Function Declarataions static void CB2_InitOptionMenu(void); @@ -219,9 +219,9 @@ void CB2_OptionsMenuFromStartMenu(void) sOptionMenuPtr->option[MENUITEM_BUTTONMODE] = gSaveBlock2Ptr->optionsButtonMode; sOptionMenuPtr->option[MENUITEM_FRAMETYPE] = gSaveBlock2Ptr->optionsWindowFrameType; - for (i = 0; i < MENUITEM_COUNT-1; i++) + for (i = 0; i < MENUITEM_COUNT - 1; i++) { - if (sOptionMenuPtr->option[i] > (sOptionMenuItemCounts[i])-1) + if (sOptionMenuPtr->option[i] > (sOptionMenuItemCounts[i]) - 1) sOptionMenuPtr->option[i] = 0; } HelpSystem_SetSomeVariable2(0xD); @@ -230,8 +230,8 @@ void CB2_OptionsMenuFromStartMenu(void) static void OptionMenu_InitCallbacks(void) { - SetVBlankCallback(0); - SetHBlankCallback(0); + SetVBlankCallback(NULL); + SetHBlankCallback(NULL); } static void OptionMenu_SetVBlankCallback(void) @@ -279,6 +279,7 @@ static void CB2_OptionMenu(void) break; default: SetOptionMenuTask(); + break; } sOptionMenuPtr->state++; } @@ -898,6 +899,6 @@ static void sub_8088DE0(u16 selection) v1 = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT); v2 = selection * (v1 - 1) + 0x3A; - SetGpuReg(REG_OFFSET_WIN0V, (v2 << 8) | (v2 + v1)); - SetGpuReg(REG_OFFSET_WIN0H, WINOUT_WINOBJ_OBJ | WIN_RANGE(0, 0xE0)); + SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(v2, v2 + v1)); + SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0x10, 0xE0)); } From 9f7c34d6456bfb204cf7bea871c43406e51801c2 Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 19 Nov 2019 19:51:03 -0700 Subject: [PATCH 35/49] match Task_OptionMenu --- include/menu_helpers.h | 2 +- src/menu_helpers.c | 2 +- src/option_menu.c | 46 ++++++++++++------------------------------ 3 files changed, 15 insertions(+), 35 deletions(-) diff --git a/include/menu_helpers.h b/include/menu_helpers.h index 6ea771500..8d042825c 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -12,7 +12,7 @@ struct YesNoFuncTable }; bool16 RunTextPrinters_CheckActive(u8 textPrinterId); -bool8 sub_80BF72C(void); +bool32 sub_80BF72C(void); bool8 sub_80BF748(void); bool8 MenuHelpers_LinkSomething(void); void SetVBlankHBlankCallbacksToNull(void); diff --git a/src/menu_helpers.c b/src/menu_helpers.c index 06e7bb08b..027280beb 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -125,7 +125,7 @@ bool8 MenuHelpers_LinkSomething(void) return FALSE; } -bool8 sub_80BF72C(void) +bool32 sub_80BF72C(void) { if (!MenuHelpers_LinkSomething()) return FALSE; diff --git a/src/option_menu.c b/src/option_menu.c index f60669fb5..27b6c8569 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -363,69 +363,49 @@ static bool8 LoadOptionMenuPalette(void) static void Task_OptionMenu(u8 taskId) { - u8 v2, v5; - struct OptionMenu *vPtr; - struct OptionMenu *v4; - switch (sOptionMenuPtr->state3) { case 0: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); OptionMenu_SetVBlankCallback(); - vPtr = sOptionMenuPtr; - v4 = vPtr; - goto STATE_PLUS; - v2 = 1; + sOptionMenuPtr->state3++; break; case 2: - if ((bool32) sub_80BF72C() == TRUE) //cast to bool32 to remove the lsl/lsr 0x18 after func call - return; + if (sub_80BF72C() == TRUE) //cast to bool32 to remove the lsl/lsr 0x18 after func call + break; switch (OptionMenu_ProcessInput()) { + case 0: + break; case 1: - vPtr = sOptionMenuPtr; - goto STATE_PLUS; - v2 = 1; + sOptionMenuPtr->state3++; break; case 2: LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); LoadPalette(GetUserFrameGraphicsInfo(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); BufferOptionMenuString(sOptionMenuPtr->unkE); - - vPtr = sOptionMenuPtr; - goto GET_STRING; - v2 = 1; break; case 3: sub_8088DE0(sOptionMenuPtr->unkE); break; case 4: - vPtr = sOptionMenuPtr; - - GET_STRING: - BufferOptionMenuString(vPtr->unkE); + BufferOptionMenuString(sOptionMenuPtr->unkE); break; - default: - return; } + break; case 3: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); sOptionMenuPtr->state3++; + break; case 1: case 4: - if (!(gPaletteFade.active)) - { - STATE_PLUS: - v2 = vPtr->state3; - v2++; - vPtr->state3 = v2; - } - break; + if (gPaletteFade.active) + return; + sOptionMenuPtr->state3++; + break; case 5: CloseAndSaveOptionMenu(taskId); break; - default: - return; } } From 539ec639fddd248a7f1a36d7e46d89ba68684364 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 20 Nov 2019 09:35:11 -0500 Subject: [PATCH 36/49] dism data/map_obj_80688E4 --- baserom.ips | Bin 278112 -> 277856 bytes data/field_ground_effect.s | 2 +- data/map_obj_80688E4.s | 79 +++++++++++++++++++++++++++++++++---- 3 files changed, 73 insertions(+), 8 deletions(-) diff --git a/baserom.ips b/baserom.ips index 5a7798ff21d4e9e10b9dfce6d2d44447dfd30251..3c386215489e0d03ff0515c841caf886a8898794 100644 GIT binary patch delta 33 ocmaFxN8rIPfejy;809yAY}zW{ylip%vc-%*%(Q*kV&+}506xtT*#H0l delta 292 zcmaFxOW?sDfejy;7!@{uY}zVc-`mB;K?z<9)K3Us1gZgHkUALqCy))q^&kR_WxLrp zK$xe{io*wpbAY%7h^GLt00RdD8v_di6T_chKfZna^5x6dZ{L6X`oqA$@bB-R-@ktS z`u+RQ-+v%3P{H?a-$1gz!2%4sfcj4X@hz}90t^a3Rg6GVfx&@+k&%gsp?TS&_GOD0 OftYFgvPI0hW&r?)w{YD6 diff --git a/data/field_ground_effect.s b/data/field_ground_effect.s index 7979c7522..b1f34c8d7 100644 --- a/data/field_ground_effect.s +++ b/data/field_ground_effect.s @@ -31,4 +31,4 @@ gUnknown_83A70AC:: @ 83A70AC .incbin "baserom.gba", 0x3A70AC, 0x10 gUnknown_83A70BC:: @ 83A70BC - .incbin "baserom.gba", 0x3A70BC, 0xE0 + .incbin "baserom.gba", 0x3A70BC, 0x50 diff --git a/data/map_obj_80688E4.s b/data/map_obj_80688E4.s index 9010be906..884bf379f 100644 --- a/data/map_obj_80688E4.s +++ b/data/map_obj_80688E4.s @@ -1,25 +1,90 @@ .section .rodata .align 2 + +gUnknown_83A710C:: + .4byte little_step + .4byte little_step + .4byte little_step + .4byte little_step + .4byte little_step + .4byte little_step + .4byte little_step + .4byte little_step + .4byte little_step + .4byte little_step + .4byte little_step + .4byte little_step + .4byte little_step + .4byte little_step + .4byte little_step + .4byte little_step + +gUnknown_83A714C:: + .4byte double_little_steps + .4byte double_little_steps + .4byte double_little_steps + .4byte double_little_steps + .4byte double_little_steps + .4byte double_little_steps + .4byte double_little_steps + .4byte double_little_steps + +gUnknown_83A716C:: + .4byte double_little_steps + .4byte triple_little_steps + .4byte triple_little_steps + .4byte double_little_steps + .4byte triple_little_steps + .4byte triple_little_steps + +gUnknown_83A7184:: + .4byte quad_little_steps + .4byte quad_little_steps + .4byte quad_little_steps + .4byte quad_little_steps + +gUnknown_83A7194:: + .4byte oct_little_steps + .4byte oct_little_steps + gUnknown_83A719C:: @ 83A719C - .incbin "baserom.gba", 0x3A719C, 0x14 + .4byte gUnknown_83A710C + .4byte gUnknown_83A714C + .4byte gUnknown_83A716C + .4byte gUnknown_83A7184 + .4byte gUnknown_83A7194 gUnknown_83A71B0:: @ 83A71B0 - .incbin "baserom.gba", 0x3A71B0, 0x3C + .2byte 0x0010, 0x0008, 0x0006, 0x0004, 0x0002 +gUnknown_83A71BA:: + .byte 0xfc, 0xfa, 0xf8, 0xf6, 0xf5, 0xf4, 0xf4, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xfa, 0xfc, 0x00, 0x00 + +gUnknown_83A71CA:: + .byte 0x00, 0xfe, 0xfd, 0xfc, 0xfb, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfc, 0xfd, 0xfe, 0x00, 0x00, 0x00 + +gUnknown_83A71DA:: + .byte 0xfe, 0xfc, 0xfa, 0xf8, 0xf7, 0xf6, 0xf6, 0xf6, 0xf7, 0xf8, 0xfa, 0xfb, 0xfd, 0xfe, 0x00, 0x00 + + .align 2 gUnknown_83A71EC:: @ 83A71EC - .incbin "baserom.gba", 0x3A71EC, 0xC + .4byte gUnknown_83A71BA + .4byte gUnknown_83A71CA + .4byte gUnknown_83A71DA + .align 1 gUnknown_83A71F8:: @ 83A71F8 - .incbin "baserom.gba", 0x3A71F8, 0x6 + .2byte 0x10, 0x10, 0x20 gUnknown_83A71FE:: @ 83A71FE - .incbin "baserom.gba", 0x3A71FE, 0x4 + .byte 0, 0, 1 + .align 1 gUnknown_83A7202:: @ 83A7202 - .incbin "baserom.gba", 0x3A7202, 0x6 + .2byte 0x20, 0x20, 0x40 gUnknown_83A7208:: @ 83A7208 - .incbin "baserom.gba", 0x3A7208, 0x4 + .byte 1, 1, 2 .align 2 gUnknown_83A720C:: @ 83A720C From e7cb5476c4fb4e2583bb8ca03a290cb838ad9bbc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 20 Nov 2019 11:08:30 -0500 Subject: [PATCH 37/49] Port evolution_scene --- asm/battle_bg.s | 6 +- asm/battle_message.s | 8 +- asm/evolution_scene.s | 4571 ----------------- asm/party_menu.s | 14 +- asm/pokemon_summary_screen.s | 6 +- common_syms/evolution_scene.txt | 1 + data/battle_message.s | 10 +- data/evolution_scene.s | 33 - data/strings.s | 2 +- graphics/evolution_scene/bg.bin | Bin 0 -> 2048 bytes graphics/evolution_scene/bg2.bin | Bin 0 -> 2048 bytes .../evolution_scene/gray_transition_intro.pal | 19 + graphics/evolution_scene/transition.pal | 35 + graphics/evolution_scene/unknown_5B4114.pal | 19 + graphics/evolution_scene/unref_83F7D80.bin | Bin 0 -> 1664 bytes include/battle_bg.h | 2 +- include/constants/pokemon.h | 4 + include/pokemon.h | 2 +- include/pokemon_summary_screen.h | 2 +- include/sprite.h | 1 + include/strings.h | 8 +- include/trade_scene.h | 6 +- ld_script.txt | 4 +- src/battle_main.c | 4 +- src/battle_script_commands.c | 4 +- src/evolution_scene.c | 1566 ++++++ src/pokemon.c | 12 +- src/trade_scene.c | 12 +- sym_common.txt | 7 +- sym_ewram.txt | 9 +- 30 files changed, 1704 insertions(+), 4663 deletions(-) delete mode 100644 asm/evolution_scene.s create mode 100644 common_syms/evolution_scene.txt delete mode 100644 data/evolution_scene.s create mode 100644 graphics/evolution_scene/bg.bin create mode 100644 graphics/evolution_scene/bg2.bin create mode 100644 graphics/evolution_scene/gray_transition_intro.pal create mode 100644 graphics/evolution_scene/transition.pal create mode 100644 graphics/evolution_scene/unknown_5B4114.pal create mode 100644 graphics/evolution_scene/unref_83F7D80.bin create mode 100644 src/evolution_scene.c diff --git a/asm/battle_bg.s b/asm/battle_bg.s index 6db40cb4d..79479a49c 100644 --- a/asm/battle_bg.s +++ b/asm/battle_bg.s @@ -193,8 +193,8 @@ _0800F344: .4byte gBattleBgTemplates _0800F348: .4byte gUnknown_8248330 thumb_func_end sub_800F324 - thumb_func_start sub_800F34C -sub_800F34C: @ 800F34C + thumb_func_start InitBattleBgsVideo +InitBattleBgsVideo: @ 800F34C push {lr} movs r0, 0xC5 bl EnableInterrupts @@ -215,7 +215,7 @@ sub_800F34C: @ 800F34C bx r0 .align 2, 0 _0800F37C: .4byte 0x0000b040 - thumb_func_end sub_800F34C + thumb_func_end InitBattleBgsVideo thumb_func_start LoadBattleMenuWindowGfx LoadBattleMenuWindowGfx: @ 800F380 diff --git a/asm/battle_message.s b/asm/battle_message.s index 6f4cb083c..fc21f17ee 100644 --- a/asm/battle_message.s +++ b/asm/battle_message.s @@ -682,7 +682,7 @@ _080D77B8: _080D77C8: .4byte 0x00000181 _080D77CC: .4byte gDisplayedStringBattle _080D77D0: - ldr r1, _080D77F0 @ =gUnknown_83FDF3C + ldr r1, _080D77F0 @ =gBattleStringsTable adds r0, r6, 0 subs r0, 0xC lsls r0, 2 @@ -700,7 +700,7 @@ _080D77E2: pop {r0} bx r0 .align 2, 0 -_080D77F0: .4byte gUnknown_83FDF3C +_080D77F0: .4byte gBattleStringsTable thumb_func_end BufferStringBattle thumb_func_start BattleStringExpandPlaceholdersToDisplayedString @@ -2230,14 +2230,14 @@ _080D847C: ldrb r0, [r0, 0x2] lsls r0, 8 orrs r1, r0 - ldr r0, _080D8494 @ =gUnknown_83FDF3C + ldr r0, _080D8494 @ =gBattleStringsTable subs r1, 0xC lsls r1, 2 adds r1, r0 ldr r1, [r1] b _080D868E .align 2, 0 -_080D8494: .4byte gUnknown_83FDF3C +_080D8494: .4byte gBattleStringsTable _080D8498: ldrb r0, [r4, 0x1] cmp r0, 0x2 diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s deleted file mode 100644 index efa6ccff7..000000000 --- a/asm/evolution_scene.s +++ /dev/null @@ -1,4571 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80CDD18 -sub_80CDD18: @ 80CDD18 - push {lr} - bl UpdatePaletteFade - bl RunTasks - pop {r0} - bx r0 - thumb_func_end sub_80CDD18 - - thumb_func_start Task_BeginEvolutionScene -Task_BeginEvolutionScene: @ 80CDD28 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - movs r7, 0 - ldr r1, _080CDD4C @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r6, r0, r1 - movs r1, 0x8 - ldrsh r0, [r6, r1] - cmp r0, 0 - beq _080CDD50 - cmp r0, 0x1 - beq _080CDD68 - b _080CDD98 - .align 2, 0 -_080CDD4C: .4byte gTasks -_080CDD50: - movs r0, 0x1 - negs r0, r0 - str r7, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - b _080CDD98 -_080CDD68: - ldr r0, _080CDDA0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080CDD98 - movs r0, 0x1C - ldrsh r1, [r6, r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _080CDDA4 @ =gPlayerParty - adds r7, r1, r0 - ldrh r4, [r6, 0xC] - ldrb r5, [r6, 0xE] - ldrb r6, [r6, 0x1C] - adds r0, r2, 0 - bl DestroyTask - adds r0, r7, 0 - adds r1, r4, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl EvolutionScene -_080CDD98: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CDDA0: .4byte gPaletteFade -_080CDDA4: .4byte gPlayerParty - thumb_func_end Task_BeginEvolutionScene - - thumb_func_start BeginEvolutionScene -BeginEvolutionScene: @ 80CDDA8 - push {r4-r6,lr} - adds r4, r1, 0 - adds r5, r2, 0 - adds r6, r3, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - ldr r0, _080CDDE8 @ =Task_BeginEvolutionScene - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080CDDEC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0x8] - strh r4, [r1, 0xC] - strh r5, [r1, 0xE] - strh r6, [r1, 0x1C] - ldr r0, _080CDDF0 @ =sub_80CDD18 - bl SetMainCallback2 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CDDE8: .4byte Task_BeginEvolutionScene -_080CDDEC: .4byte gTasks -_080CDDF0: .4byte sub_80CDD18 - thumb_func_end BeginEvolutionScene - - thumb_func_start EvolutionScene -EvolutionScene: @ 80CDDF4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - adds r4, r0, 0 - mov r10, r1 - mov r0, r10 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x18] - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0x1C] - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - movs r1, 0 - str r1, [sp, 0x14] - add r0, sp, 0x14 - movs r1, 0xC0 - lsls r1, 19 - ldr r2, _080CE07C @ =0x05006000 - bl CpuSet - movs r0, 0x4C - movs r1, 0 - bl SetGpuReg - movs r0, 0x40 - movs r1, 0 - bl SetGpuReg - movs r0, 0x44 - movs r1, 0 - bl SetGpuReg - movs r0, 0x42 - movs r1, 0 - bl SetGpuReg - movs r0, 0x46 - movs r1, 0 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0 - bl SetGpuReg - bl ResetPaletteFade - ldr r0, _080CE080 @ =gBattle_BG0_X - movs r2, 0 - strh r2, [r0] - ldr r0, _080CE084 @ =gBattle_BG0_Y - strh r2, [r0] - ldr r0, _080CE088 @ =gBattle_BG1_X - strh r2, [r0] - ldr r0, _080CE08C @ =gBattle_BG1_Y - strh r2, [r0] - ldr r0, _080CE090 @ =gBattle_BG2_X - strh r2, [r0] - ldr r0, _080CE094 @ =gBattle_BG2_Y - strh r2, [r0] - ldr r1, _080CE098 @ =gBattle_BG3_X - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _080CE09C @ =gBattle_BG3_Y - movs r1, 0 - strh r1, [r0] - ldr r1, _080CE0A0 @ =gBattleTerrain - movs r0, 0x9 - strb r0, [r1] - bl sub_800F34C - bl LoadBattleTextboxAndBackground - bl ResetSpriteData - bl ScanlineEffect_Stop - bl ResetTasks - bl FreeAllSpritePalettes - ldr r0, _080CE0A4 @ =gReservedSpritePaletteCount - movs r2, 0x4 - strb r2, [r0] - movs r0, 0x64 - bl AllocZeroed - ldr r1, _080CE0A8 @ =gUnknown_2039A20 - str r0, [r1] - bl AllocateMonSpritesGfx - adds r0, r4, 0 - movs r1, 0x2 - mov r2, sp - bl GetMonData - ldr r0, _080CE0AC @ =gStringVar1 - mov r1, sp - bl StringCopy10 - ldr r0, _080CE0B0 @ =gStringVar2 - movs r1, 0xB - mov r2, r10 - muls r2, r1 - adds r1, r2, 0 - ldr r2, _080CE0B4 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - str r0, [sp, 0x20] - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - mov r9, r0 - lsls r0, r5, 3 - ldr r1, _080CE0B8 @ =gMonFrontPicTable - adds r0, r1 - ldr r2, _080CE0BC @ =gMonSpritesGfxPtr - ldr r1, [r2] - ldr r1, [r1, 0x8] - adds r2, r5, 0 - bl DecompressPicFromTable - adds r0, r5, 0 - ldr r1, [sp, 0x20] - mov r2, r9 - bl GetMonSpritePalStructFromOtIdPersonality - ldr r0, [r0] - movs r1, 0x88 - lsls r1, 1 - movs r2, 0x20 - bl LoadCompressedPalette - adds r0, r5, 0 - movs r1, 0x1 - bl SetMultiuseSpriteTemplateToPokemon - ldr r0, _080CE0C0 @ =gMultiuseSpriteTemplate - mov r8, r0 - ldr r1, _080CE0C4 @ =gDummySpriteAffineAnimTable - str r1, [r0, 0x10] - movs r1, 0x78 - movs r2, 0x40 - movs r3, 0x1E - bl CreateSprite - ldr r1, _080CE0A8 @ =gUnknown_2039A20 - ldr r2, [r1] - lsls r1, r0, 24 - lsrs r3, r1, 24 - strb r0, [r2] - ldr r7, _080CE0C8 @ =gSprites - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - adds r6, r7, 0 - adds r6, 0x1C - adds r0, r1, r6 - ldr r2, _080CE0CC @ =SpriteCallbackDummy2 - str r2, [r0] - adds r1, r7 - ldrb r2, [r1, 0x5] - movs r4, 0xF - adds r0, r4, 0 - ands r0, r2 - movs r2, 0x10 - orrs r0, r2 - strb r0, [r1, 0x5] - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - mov r1, r10 - lsls r0, r1, 3 - ldr r2, _080CE0B8 @ =gMonFrontPicTable - adds r0, r2 - ldr r2, _080CE0BC @ =gMonSpritesGfxPtr - ldr r1, [r2] - ldr r1, [r1, 0x10] - mov r2, r10 - bl DecompressPicFromTable - mov r0, r10 - ldr r1, [sp, 0x20] - mov r2, r9 - bl GetMonSpritePalStructFromOtIdPersonality - ldr r0, [r0] - movs r1, 0x90 - lsls r1, 1 - movs r2, 0x20 - bl LoadCompressedPalette - mov r0, r10 - movs r1, 0x3 - bl SetMultiuseSpriteTemplateToPokemon - ldr r0, _080CE0C4 @ =gDummySpriteAffineAnimTable - mov r1, r8 - str r0, [r1, 0x10] - mov r0, r8 - movs r1, 0x78 - movs r2, 0x40 - movs r3, 0x1E - bl CreateSprite - ldr r1, _080CE0A8 @ =gUnknown_2039A20 - ldr r2, [r1] - lsls r1, r0, 24 - lsrs r3, r1, 24 - strb r0, [r2, 0x1] - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - adds r6, r1, r6 - ldr r2, _080CE0CC @ =SpriteCallbackDummy2 - str r2, [r6] - adds r1, r7 - ldrb r0, [r1, 0x5] - ands r4, r0 - movs r0, 0x20 - orrs r4, r0 - strb r4, [r1, 0x5] - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - bl LoadEvoSparkleSpriteAndPal - ldr r0, _080CE0D0 @ =sub_80CE8DC - movs r1, 0 - bl CreateTask - ldr r1, _080CE0A8 @ =gUnknown_2039A20 - ldr r2, [r1] - lsls r1, r0, 24 - lsrs r3, r1, 24 - strb r0, [r2, 0x2] - ldr r1, _080CE0D4 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - strh r2, [r0, 0x8] - strh r5, [r0, 0xA] - mov r1, r10 - strh r1, [r0, 0xC] - mov r2, sp - ldrh r2, [r2, 0x18] - strh r2, [r0, 0xE] - movs r1, 0x1 - strh r1, [r0, 0x10] - movs r1, 0 - strh r1, [r0, 0x1A] - mov r2, sp - ldrh r2, [r2, 0x1C] - strh r2, [r0, 0x1C] - ldr r1, _080CE0A8 @ =gUnknown_2039A20 - ldr r0, [r1] - ldr r1, _080CE0D8 @ =gPlttBufferUnfaded + 0x40 - adds r0, 0x4 - movs r2, 0x60 - bl memcpy - movs r1, 0xFA - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - ldr r0, _080CE0DC @ =nullsub_76 - bl SetHBlankCallback - ldr r0, _080CE0E0 @ =sub_80D0050 - bl SetVBlankCallback - bl m4aMPlayAllStop - bl HelpSystem_Disable - ldr r0, _080CE0E4 @ =sub_80CE710 - bl SetMainCallback2 - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CE07C: .4byte 0x05006000 -_080CE080: .4byte gBattle_BG0_X -_080CE084: .4byte gBattle_BG0_Y -_080CE088: .4byte gBattle_BG1_X -_080CE08C: .4byte gBattle_BG1_Y -_080CE090: .4byte gBattle_BG2_X -_080CE094: .4byte gBattle_BG2_Y -_080CE098: .4byte gBattle_BG3_X -_080CE09C: .4byte gBattle_BG3_Y -_080CE0A0: .4byte gBattleTerrain -_080CE0A4: .4byte gReservedSpritePaletteCount -_080CE0A8: .4byte gUnknown_2039A20 -_080CE0AC: .4byte gStringVar1 -_080CE0B0: .4byte gStringVar2 -_080CE0B4: .4byte gSpeciesNames -_080CE0B8: .4byte gMonFrontPicTable -_080CE0BC: .4byte gMonSpritesGfxPtr -_080CE0C0: .4byte gMultiuseSpriteTemplate -_080CE0C4: .4byte gDummySpriteAffineAnimTable -_080CE0C8: .4byte gSprites -_080CE0CC: .4byte SpriteCallbackDummy2 -_080CE0D0: .4byte sub_80CE8DC -_080CE0D4: .4byte gTasks -_080CE0D8: .4byte gPlttBufferUnfaded + 0x40 -_080CE0DC: .4byte nullsub_76 -_080CE0E0: .4byte sub_80D0050 -_080CE0E4: .4byte sub_80CE710 - thumb_func_end EvolutionScene - - thumb_func_start CB2_EvolutionSceneLoadGraphics -CB2_EvolutionSceneLoadGraphics: @ 80CE0E8 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x8 - ldr r2, _080CE280 @ =gTasks - ldr r0, _080CE284 @ =gUnknown_2039A20 - mov r8, r0 - ldr r0, [r0] - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - movs r1, 0x1C - ldrsh r2, [r0, r1] - movs r1, 0x64 - adds r4, r2, 0 - muls r4, r1 - ldr r1, _080CE288 @ =gPlayerParty - adds r4, r1 - ldrh r5, [r0, 0xC] - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - mov r9, r0 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r6, r0, 0 - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - movs r4, 0 - str r4, [sp, 0x4] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, _080CE28C @ =0x05006000 - add r0, sp, 0x4 - bl CpuSet - movs r0, 0x4C - movs r1, 0 - bl SetGpuReg - movs r0, 0x40 - movs r1, 0 - bl SetGpuReg - movs r0, 0x44 - movs r1, 0 - bl SetGpuReg - movs r0, 0x42 - movs r1, 0 - bl SetGpuReg - movs r0, 0x46 - movs r1, 0 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0 - bl SetGpuReg - bl ResetPaletteFade - ldr r0, _080CE290 @ =gBattle_BG0_X - strh r4, [r0] - ldr r0, _080CE294 @ =gBattle_BG0_Y - strh r4, [r0] - ldr r0, _080CE298 @ =gBattle_BG1_X - strh r4, [r0] - ldr r0, _080CE29C @ =gBattle_BG1_Y - strh r4, [r0] - ldr r0, _080CE2A0 @ =gBattle_BG2_X - strh r4, [r0] - ldr r0, _080CE2A4 @ =gBattle_BG2_Y - strh r4, [r0] - ldr r1, _080CE2A8 @ =gBattle_BG3_X - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _080CE2AC @ =gBattle_BG3_Y - strh r4, [r0] - ldr r1, _080CE2B0 @ =gBattleTerrain - movs r0, 0x9 - strb r0, [r1] - bl sub_800F34C - bl LoadBattleTextboxAndBackground - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r1, _080CE2B4 @ =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - lsls r0, r5, 3 - ldr r1, _080CE2B8 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _080CE2BC @ =gMonSpritesGfxPtr - ldr r1, [r1] - ldr r1, [r1, 0x10] - adds r2, r5, 0 - bl DecompressPicFromTable - adds r0, r5, 0 - mov r1, r9 - adds r2, r6, 0 - bl GetMonSpritePalStructFromOtIdPersonality - ldr r0, [r0] - movs r1, 0x90 - lsls r1, 1 - movs r2, 0x20 - bl LoadCompressedPalette - adds r0, r5, 0 - movs r1, 0x3 - bl SetMultiuseSpriteTemplateToPokemon - ldr r0, _080CE2C0 @ =gMultiuseSpriteTemplate - ldr r1, _080CE2C4 @ =gDummySpriteAffineAnimTable - str r1, [r0, 0x10] - movs r1, 0x78 - movs r2, 0x40 - movs r3, 0x1E - bl CreateSprite - mov r2, r8 - ldr r1, [r2] - lsls r2, r0, 24 - lsrs r2, 24 - strb r0, [r1, 0x1] - ldr r3, _080CE2C8 @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r0, r3, 0 - adds r0, 0x1C - adds r0, r1, r0 - ldr r2, _080CE2CC @ =SpriteCallbackDummy2 - str r2, [r0] - adds r1, r3 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - movs r2, 0x20 - orrs r0, r2 - strb r0, [r1, 0x5] - movs r1, 0xFA - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - ldr r0, _080CE2D0 @ =nullsub_76 - bl SetHBlankCallback - ldr r0, _080CE2D4 @ =sub_80D0050 - bl SetVBlankCallback - ldr r0, _080CE2D8 @ =sub_80CE710 - bl SetMainCallback2 - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CE280: .4byte gTasks -_080CE284: .4byte gUnknown_2039A20 -_080CE288: .4byte gPlayerParty -_080CE28C: .4byte 0x05006000 -_080CE290: .4byte gBattle_BG0_X -_080CE294: .4byte gBattle_BG0_Y -_080CE298: .4byte gBattle_BG1_X -_080CE29C: .4byte gBattle_BG1_Y -_080CE2A0: .4byte gBattle_BG2_X -_080CE2A4: .4byte gBattle_BG2_Y -_080CE2A8: .4byte gBattle_BG3_X -_080CE2AC: .4byte gBattle_BG3_Y -_080CE2B0: .4byte gBattleTerrain -_080CE2B4: .4byte gReservedSpritePaletteCount -_080CE2B8: .4byte gMonFrontPicTable -_080CE2BC: .4byte gMonSpritesGfxPtr -_080CE2C0: .4byte gMultiuseSpriteTemplate -_080CE2C4: .4byte gDummySpriteAffineAnimTable -_080CE2C8: .4byte gSprites -_080CE2CC: .4byte SpriteCallbackDummy2 -_080CE2D0: .4byte nullsub_76 -_080CE2D4: .4byte sub_80D0050 -_080CE2D8: .4byte sub_80CE710 - thumb_func_end CB2_EvolutionSceneLoadGraphics - - thumb_func_start CB2_TradeEvolutionSceneLoadGraphics -CB2_TradeEvolutionSceneLoadGraphics: @ 80CE2DC - push {r4-r6,lr} - sub sp, 0xC - ldr r2, _080CE318 @ =gTasks - ldr r0, _080CE31C @ =gUnknown_2039A20 - ldr r0, [r0] - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - movs r1, 0x1C - ldrsh r2, [r0, r1] - movs r1, 0x64 - muls r2, r1 - ldr r1, _080CE320 @ =gPlayerParty - adds r4, r2, r1 - ldrh r6, [r0, 0xC] - ldr r0, _080CE324 @ =gMain - movs r3, 0x87 - lsls r3, 3 - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0x7 - bls _080CE30E - b _080CE534 -_080CE30E: - lsls r0, 2 - ldr r1, _080CE328 @ =_080CE32C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080CE318: .4byte gTasks -_080CE31C: .4byte gUnknown_2039A20 -_080CE320: .4byte gPlayerParty -_080CE324: .4byte gMain -_080CE328: .4byte _080CE32C - .align 2, 0 -_080CE32C: - .4byte _080CE34C - .4byte _080CE3BC - .4byte _080CE3E4 - .4byte _080CE3EA - .4byte _080CE414 - .4byte _080CE45C - .4byte _080CE4CC - .4byte _080CE504 -_080CE34C: - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r1, _080CE398 @ =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - ldr r0, _080CE39C @ =gBattle_BG0_X - movs r1, 0 - strh r1, [r0] - ldr r0, _080CE3A0 @ =gBattle_BG0_Y - strh r1, [r0] - ldr r0, _080CE3A4 @ =gBattle_BG1_X - strh r1, [r0] - ldr r0, _080CE3A8 @ =gBattle_BG1_Y - strh r1, [r0] - ldr r0, _080CE3AC @ =gBattle_BG2_X - strh r1, [r0] - ldr r0, _080CE3B0 @ =gBattle_BG2_Y - strh r1, [r0] - ldr r2, _080CE3B4 @ =gBattle_BG3_X - movs r3, 0x80 - lsls r3, 1 - adds r0, r3, 0 - strh r0, [r2] - ldr r0, _080CE3B8 @ =gBattle_BG3_Y - strh r1, [r0] - b _080CE4EC - .align 2, 0 -_080CE398: .4byte gReservedSpritePaletteCount -_080CE39C: .4byte gBattle_BG0_X -_080CE3A0: .4byte gBattle_BG0_Y -_080CE3A4: .4byte gBattle_BG1_X -_080CE3A8: .4byte gBattle_BG1_Y -_080CE3AC: .4byte gBattle_BG2_X -_080CE3B0: .4byte gBattle_BG2_Y -_080CE3B4: .4byte gBattle_BG3_X -_080CE3B8: .4byte gBattle_BG3_Y -_080CE3BC: - bl ResetPaletteFade - ldr r0, _080CE3D8 @ =nullsub_76 - bl SetHBlankCallback - ldr r0, _080CE3DC @ =sub_80D00D8 - bl SetVBlankCallback - ldr r1, _080CE3E0 @ =gMain - movs r3, 0x87 - lsls r3, 3 - adds r1, r3 - b _080CE4F4 - .align 2, 0 -_080CE3D8: .4byte nullsub_76 -_080CE3DC: .4byte sub_80D00D8 -_080CE3E0: .4byte gMain -_080CE3E4: - bl LoadTradeAnimGfx - b _080CE4EC -_080CE3EA: - movs r0, 0x20 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - ldr r1, _080CE410 @ =gMain - movs r3, 0x87 - lsls r3, 3 - adds r1, r3 - b _080CE4F4 - .align 2, 0 -_080CE410: .4byte gMain -_080CE414: - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - adds r5, r0, 0 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r4, r0, 0 - lsls r0, r6, 3 - ldr r1, _080CE454 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _080CE458 @ =gMonSpritesGfxPtr - ldr r1, [r1] - ldr r1, [r1, 0x10] - adds r2, r6, 0 - bl DecompressPicFromTable - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl GetMonSpritePalStructFromOtIdPersonality - ldr r0, [r0] - movs r1, 0x90 - lsls r1, 1 - movs r2, 0x20 - bl LoadCompressedPalette - b _080CE4EC - .align 2, 0 -_080CE454: .4byte gMonFrontPicTable -_080CE458: .4byte gMonSpritesGfxPtr -_080CE45C: - adds r0, r6, 0 - movs r1, 0x1 - bl SetMultiuseSpriteTemplateToPokemon - ldr r0, _080CE4B4 @ =gMultiuseSpriteTemplate - ldr r1, _080CE4B8 @ =gDummySpriteAffineAnimTable - str r1, [r0, 0x10] - movs r1, 0x78 - movs r2, 0x40 - movs r3, 0x1E - bl CreateSprite - ldr r1, _080CE4BC @ =gUnknown_2039A20 - ldr r1, [r1] - lsls r2, r0, 24 - lsrs r2, 24 - strb r0, [r1, 0x1] - ldr r3, _080CE4C0 @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r0, r3, 0 - adds r0, 0x1C - adds r0, r1, r0 - ldr r2, _080CE4C4 @ =SpriteCallbackDummy2 - str r2, [r0] - adds r1, r3 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - movs r2, 0x20 - orrs r0, r2 - strb r0, [r1, 0x5] - ldr r1, _080CE4C8 @ =gMain - movs r3, 0x87 - lsls r3, 3 - adds r1, r3 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_80504B0 - b _080CE534 - .align 2, 0 -_080CE4B4: .4byte gMultiuseSpriteTemplate -_080CE4B8: .4byte gDummySpriteAffineAnimTable -_080CE4BC: .4byte gUnknown_2039A20 -_080CE4C0: .4byte gSprites -_080CE4C4: .4byte SpriteCallbackDummy2 -_080CE4C8: .4byte gMain -_080CE4CC: - ldr r0, _080CE4FC @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _080CE4E0 - bl LoadWirelessStatusIndicatorSpriteGfx - movs r0, 0 - movs r1, 0 - bl CreateWirelessStatusIndicatorSprite -_080CE4E0: - movs r0, 0x1 - negs r0, r0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes -_080CE4EC: - ldr r1, _080CE500 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 -_080CE4F4: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080CE534 - .align 2, 0 -_080CE4FC: .4byte gWirelessCommType -_080CE500: .4byte gMain -_080CE504: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - bl sub_805049C - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - ldr r0, _080CE53C @ =sub_80CE72C - bl SetMainCallback2 - movs r1, 0x9A - lsls r1, 5 - movs r0, 0 - bl SetGpuReg -_080CE534: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CE53C: .4byte sub_80CE72C - thumb_func_end CB2_TradeEvolutionSceneLoadGraphics - - thumb_func_start TradeEvolutionScene -TradeEvolutionScene: @ 80CE540 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - lsls r5, 16 - lsrs r5, 16 - lsls r6, 24 - lsrs r6, 24 - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0x14] - movs r1, 0x2 - mov r2, sp - bl GetMonData - ldr r0, _080CE6B0 @ =gStringVar1 - mov r1, sp - bl StringCopy10 - ldr r0, _080CE6B4 @ =gStringVar2 - movs r1, 0xB - muls r1, r5 - ldr r2, _080CE6B8 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r1, _080CE6BC @ =gAffineAnimsDisabled - movs r0, 0x1 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - mov r8, r0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r7, r0, 0 - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - mov r10, r0 - ldr r1, _080CE6C0 @ =gUnknown_2039A20 - mov r9, r1 - movs r0, 0x64 - bl AllocZeroed - mov r2, r9 - str r0, [r2] - movs r4, 0 - strb r6, [r0] - lsls r0, r5, 3 - ldr r1, _080CE6C4 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _080CE6C8 @ =gMonSpritesGfxPtr - ldr r1, [r1] - ldr r1, [r1, 0x8] - adds r2, r5, 0 - bl DecompressPicFromTable - adds r0, r5, 0 - mov r1, r10 - adds r2, r7, 0 - bl GetMonSpritePalStructFromOtIdPersonality - ldr r0, [r0] - movs r1, 0x90 - lsls r1, 1 - movs r2, 0x20 - bl LoadCompressedPalette - adds r0, r5, 0 - movs r1, 0x1 - bl SetMultiuseSpriteTemplateToPokemon - ldr r0, _080CE6CC @ =gMultiuseSpriteTemplate - ldr r1, _080CE6D0 @ =gDummySpriteAffineAnimTable - str r1, [r0, 0x10] - movs r1, 0x78 - movs r2, 0x40 - movs r3, 0x1E - bl CreateSprite - mov r1, r9 - ldr r2, [r1] - lsls r1, r0, 24 - lsrs r6, r1, 24 - strb r0, [r2, 0x1] - ldr r3, _080CE6D4 @ =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r0, r3, 0 - adds r0, 0x1C - adds r0, r1, r0 - ldr r2, _080CE6D8 @ =SpriteCallbackDummy2 - str r2, [r0] - adds r1, r3 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - movs r2, 0x20 - orrs r0, r2 - strb r0, [r1, 0x5] - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - bl LoadEvoSparkleSpriteAndPal - ldr r0, _080CE6DC @ =sub_80CF53C - movs r1, 0 - bl CreateTask - mov r1, r9 - ldr r2, [r1] - lsls r1, r0, 24 - lsrs r6, r1, 24 - strb r0, [r2, 0x2] - ldr r1, _080CE6E0 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - strh r4, [r0, 0x8] - mov r2, r8 - strh r2, [r0, 0xA] - strh r5, [r0, 0xC] - movs r1, 0x1 - strh r1, [r0, 0x10] - strh r4, [r0, 0x1A] - mov r1, sp - ldrh r1, [r1, 0x14] - strh r1, [r0, 0x1C] - ldr r0, _080CE6E4 @ =gBattle_BG0_X - strh r4, [r0] - ldr r0, _080CE6E8 @ =gBattle_BG0_Y - strh r4, [r0] - ldr r0, _080CE6EC @ =gBattle_BG1_X - strh r4, [r0] - ldr r0, _080CE6F0 @ =gBattle_BG1_Y - strh r4, [r0] - ldr r0, _080CE6F4 @ =gBattle_BG2_X - strh r4, [r0] - ldr r0, _080CE6F8 @ =gBattle_BG2_Y - strh r4, [r0] - ldr r1, _080CE6FC @ =gBattle_BG3_X - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _080CE700 @ =gBattle_BG3_Y - strh r4, [r0] - ldr r2, _080CE704 @ =gTextFlags - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080CE708 @ =sub_80D00D8 - bl SetVBlankCallback - ldr r0, _080CE70C @ =sub_80CE72C - bl SetMainCallback2 - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CE6B0: .4byte gStringVar1 -_080CE6B4: .4byte gStringVar2 -_080CE6B8: .4byte gSpeciesNames -_080CE6BC: .4byte gAffineAnimsDisabled -_080CE6C0: .4byte gUnknown_2039A20 -_080CE6C4: .4byte gMonFrontPicTable -_080CE6C8: .4byte gMonSpritesGfxPtr -_080CE6CC: .4byte gMultiuseSpriteTemplate -_080CE6D0: .4byte gDummySpriteAffineAnimTable -_080CE6D4: .4byte gSprites -_080CE6D8: .4byte SpriteCallbackDummy2 -_080CE6DC: .4byte sub_80CF53C -_080CE6E0: .4byte gTasks -_080CE6E4: .4byte gBattle_BG0_X -_080CE6E8: .4byte gBattle_BG0_Y -_080CE6EC: .4byte gBattle_BG1_X -_080CE6F0: .4byte gBattle_BG1_Y -_080CE6F4: .4byte gBattle_BG2_X -_080CE6F8: .4byte gBattle_BG2_Y -_080CE6FC: .4byte gBattle_BG3_X -_080CE700: .4byte gBattle_BG3_Y -_080CE704: .4byte gTextFlags -_080CE708: .4byte sub_80D00D8 -_080CE70C: .4byte sub_80CE72C - thumb_func_end TradeEvolutionScene - - thumb_func_start sub_80CE710 -sub_80CE710: @ 80CE710 - push {lr} - bl AnimateSprites - bl BuildOamBuffer - bl RunTextPrinters - bl UpdatePaletteFade - bl RunTasks - pop {r0} - bx r0 - thumb_func_end sub_80CE710 - - thumb_func_start sub_80CE72C -sub_80CE72C: @ 80CE72C - push {lr} - bl AnimateSprites - bl BuildOamBuffer - bl RunTextPrinters - bl UpdatePaletteFade - bl RunTasks - pop {r0} - bx r0 - thumb_func_end sub_80CE72C - - thumb_func_start CreateShedinja -CreateShedinja: @ 80CE748 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - str r1, [sp, 0x4] - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - movs r0, 0 - str r0, [sp] - mov r0, r10 - lsls r0, 2 - str r0, [sp, 0x8] - add r0, r10 - lsls r7, r0, 3 - ldr r1, _080CE8C4 @ =gEvolutionTable - adds r1, r7 - mov r8, r1 - ldrh r0, [r1] - cmp r0, 0xD - beq _080CE778 - b _080CE8B2 -_080CE778: - ldr r6, _080CE8C8 @ =gPlayerPartyCount - ldrb r0, [r6] - cmp r0, 0x5 - bls _080CE782 - b _080CE8B2 -_080CE782: - movs r5, 0x64 - muls r0, r5 - ldr r4, _080CE8CC @ =gPlayerParty - adds r0, r4 - mov r9, r0 - ldr r1, [sp, 0x4] - movs r2, 0x64 - bl CopyMon - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - ldr r1, _080CE8C4 @ =gEvolutionTable - adds r2, r1, r7 - adds r2, 0xC - movs r1, 0xB - bl SetMonData - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - mov r1, r8 - ldrh r2, [r1, 0xC] - movs r1, 0xB - muls r2, r1 - ldr r1, _080CE8D0 @ =gSpeciesNames - adds r2, r1 - movs r1, 0x2 - bl SetMonData - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - movs r1, 0xC - mov r2, sp - bl SetMonData - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - movs r1, 0x8 - mov r2, sp - bl SetMonData - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - movs r1, 0xA - mov r2, sp - bl SetMonData - movs r4, 0x32 - ldr r0, [sp, 0x8] - mov r8, r0 - adds r5, r6, 0 -_080CE7F0: - ldrb r1, [r5] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080CE8CC @ =gPlayerParty - adds r0, r1 - adds r1, r4, 0 - mov r2, sp - bl SetMonData - adds r4, 0x1 - cmp r4, 0x36 - ble _080CE7F0 - movs r4, 0x43 - ldr r7, _080CE8C8 @ =gPlayerPartyCount -_080CE80C: - ldrb r0, [r7] - movs r6, 0x64 - muls r0, r6 - ldr r5, _080CE8CC @ =gPlayerParty - adds r0, r5 - adds r1, r4, 0 - mov r2, sp - bl SetMonData - adds r4, 0x1 - cmp r4, 0x4F - ble _080CE80C - ldr r4, _080CE8C8 @ =gPlayerPartyCount - ldrb r0, [r4] - muls r0, r6 - adds r0, r5 - movs r1, 0x37 - mov r2, sp - bl SetMonData - movs r0, 0xFF - str r0, [sp] - ldrb r0, [r4] - muls r0, r6 - adds r0, r5 - movs r1, 0x40 - mov r2, sp - bl SetMonData - ldrb r0, [r4] - muls r0, r6 - adds r0, r5 - bl CalculateMonStats - bl CalculatePlayerPartyCount - ldr r0, _080CE8C4 @ =gEvolutionTable - mov r4, r8 - add r4, r10 - lsls r4, 3 - adds r4, r0 - ldrh r0, [r4, 0xC] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2 - bl GetSetPokedexFlag - ldrh r0, [r4, 0xC] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl GetSetPokedexFlag - mov r0, r9 - movs r1, 0xB - bl GetMonData - ldr r1, _080CE8D4 @ =0x0000012f - cmp r0, r1 - bne _080CE8B2 - mov r0, r9 - movs r1, 0x3 - bl GetMonData - cmp r0, 0x1 - bne _080CE8B2 - ldr r0, [sp, 0x4] - movs r1, 0xB - bl GetMonData - movs r1, 0x97 - lsls r1, 1 - cmp r0, r1 - bne _080CE8B2 - ldr r2, _080CE8D8 @ =gUnknown_83F8440 - mov r0, r9 - movs r1, 0x2 - bl SetMonData -_080CE8B2: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CE8C4: .4byte gEvolutionTable -_080CE8C8: .4byte gPlayerPartyCount -_080CE8CC: .4byte gPlayerParty -_080CE8D0: .4byte gSpeciesNames -_080CE8D4: .4byte 0x0000012f -_080CE8D8: .4byte gUnknown_83F8440 - thumb_func_end CreateShedinja - - thumb_func_start sub_80CE8DC -sub_80CE8DC: @ 80CE8DC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r4, _080CE93C @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r5, r0, r4 - movs r0, 0x1C - ldrsh r1, [r5, r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _080CE940 @ =gPlayerParty - adds r1, r0 - mov r9, r1 - bl IsNationalPokedexEnabled - mov r10, r4 - cmp r0, 0 - bne _080CE948 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x8 - bne _080CE948 - movs r2, 0xC - ldrsh r0, [r5, r2] - cmp r0, 0x97 - ble _080CE948 - movs r0, 0x11 - strh r0, [r5, 0x8] - movs r2, 0x1 - strh r2, [r5, 0x1A] - ldr r0, _080CE944 @ =gBattleCommunication - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - add r0, r10 - strh r2, [r0, 0x18] - bl sub_80D04A8 - bl _080CF528 - .align 2, 0 -_080CE93C: .4byte gTasks -_080CE940: .4byte gPlayerParty -_080CE944: .4byte gBattleCommunication -_080CE948: - ldr r0, _080CE9A0 @ =gMain - ldrh r1, [r0, 0x2C] - ldr r3, _080CE9A4 @ =gTasks - mov r10, r3 - lsls r2, r7, 2 - mov r8, r2 - adds r5, r0, 0 - cmp r1, 0x2 - bne _080CE9AC - adds r0, r2, r7 - lsls r0, 3 - adds r2, r0, r3 - movs r3, 0x8 - ldrsh r0, [r2, r3] - cmp r0, 0x8 - bne _080CE9AC - ldr r4, _080CE9A8 @ =gBattleCommunication - ldrb r0, [r4, 0x2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - add r1, r10 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _080CE9AC - ldrh r1, [r2, 0xE] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080CE9AC - movs r0, 0x11 - strh r0, [r2, 0x8] - ldrb r1, [r4, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - add r0, r10 - strh r3, [r0, 0x18] - bl sub_80D04A8 - bl _080CF528 - .align 2, 0 -_080CE9A0: .4byte gMain -_080CE9A4: .4byte gTasks -_080CE9A8: .4byte gBattleCommunication -_080CE9AC: - mov r1, r8 - adds r0, r1, r7 - lsls r0, 3 - add r0, r10 - movs r2, 0x8 - ldrsh r0, [r0, r2] - cmp r0, 0x16 - bls _080CE9C0 - bl _080CF528 -_080CE9C0: - lsls r0, 2 - ldr r1, _080CE9CC @ =_080CE9D0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080CE9CC: .4byte _080CE9D0 - .align 2, 0 -_080CE9D0: - .4byte _080CEA2C - .4byte _080CEA90 - .4byte _080CEAD0 - .4byte _080CEAF0 - .4byte _080CEB18 - .4byte _080CEB58 - .4byte _080CEB90 - .4byte _080CEBD0 - .4byte _080CEC08 - .4byte _080CEC4C - .4byte _080CEC68 - .4byte _080CEC94 - .4byte _080CECC0 - .4byte _080CED0C - .4byte _080CED2C - .4byte _080CEDB8 - .4byte _080CEE60 - .4byte _080CEED0 - .4byte _080CEF10 - .4byte _080CEF3C - .4byte _080CEF9C - .4byte _080CEFF8 - .4byte _080CF034 -_080CEA2C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r2, _080CEA84 @ =gSprites - ldr r0, _080CEA88 @ =gUnknown_2039A20 - ldr r0, [r0] - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldr r0, _080CEA8C @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - bl _080CF528 - .align 2, 0 -_080CEA84: .4byte gSprites -_080CEA88: .4byte gUnknown_2039A20 -_080CEA8C: .4byte gTasks -_080CEA90: - ldr r0, _080CEAC0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080CEAA0 - bl _080CF528 -_080CEAA0: - ldr r4, _080CEAC4 @ =gStringVar4 - ldr r1, _080CEAC8 @ =gUnknown_83FE672 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0 - bl BattlePutTextOnWindow - ldr r0, _080CEACC @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - b _080CEFDE - .align 2, 0 -_080CEAC0: .4byte gPaletteFade -_080CEAC4: .4byte gStringVar4 -_080CEAC8: .4byte gUnknown_83FE672 -_080CEACC: .4byte gTasks -_080CEAD0: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - beq _080CEAE0 - bl _080CF528 -_080CEAE0: - ldr r0, _080CEAEC @ =gTasks - mov r3, r8 - adds r4, r3, r7 - lsls r4, 3 - adds r4, r0 - b _080CEF26 - .align 2, 0 -_080CEAEC: .4byte gTasks -_080CEAF0: - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - bne _080CEAFE - bl _080CF528 -_080CEAFE: - ldr r0, _080CEB10 @ =0x00000107 - bl PlaySE - ldr r0, _080CEB14 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - b _080CEFDE - .align 2, 0 -_080CEB10: .4byte 0x00000107 -_080CEB14: .4byte gTasks -_080CEB18: - bl IsSEPlaying - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _080CEB28 - bl _080CF528 -_080CEB28: - movs r0, 0x84 - lsls r0, 1 - bl PlayNewMapMusic - ldr r0, _080CEB54 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - str r4, [sp] - movs r0, 0x1C - movs r1, 0x4 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - bl _080CF528 - .align 2, 0 -_080CEB54: .4byte gTasks -_080CEB58: - ldr r0, _080CEB84 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080CEB68 - bl _080CF528 -_080CEB68: - movs r0, 0 - bl InitMovingBackgroundTask - movs r0, 0x11 - bl LaunchTask_PreEvoSparklesSet1 - ldr r1, _080CEB88 @ =gBattleCommunication - strb r0, [r1, 0x2] - ldr r0, _080CEB8C @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - b _080CEFDE - .align 2, 0 -_080CEB84: .4byte gPaletteFade -_080CEB88: .4byte gBattleCommunication -_080CEB8C: .4byte gTasks -_080CEB90: - ldr r4, _080CEBC8 @ =gBattleCommunication - ldrb r0, [r4, 0x2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - add r1, r10 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _080CEBA6 - bl _080CF528 -_080CEBA6: - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - add r1, r10 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - ldr r0, _080CEBCC @ =gUnknown_2039A20 - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0x3] - bl LaunchTask_PreEvoSparklesSet2 - strb r0, [r4, 0x2] - bl _080CF528 - .align 2, 0 -_080CEBC8: .4byte gBattleCommunication -_080CEBCC: .4byte gUnknown_2039A20 -_080CEBD0: - ldr r4, _080CEC00 @ =gBattleCommunication - ldrb r0, [r4, 0x2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - add r1, r10 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _080CEBE6 - bl _080CF528 -_080CEBE6: - ldr r0, _080CEC04 @ =gUnknown_2039A20 - ldr r1, [r0] - ldrb r0, [r1] - ldrb r1, [r1, 0x1] - bl LaunchTask_PrePostEvoMonSprites - strb r0, [r4, 0x2] - mov r0, r8 - adds r1, r0, r7 - lsls r1, 3 - add r1, r10 - b _080CEFDE - .align 2, 0 -_080CEC00: .4byte gBattleCommunication -_080CEC04: .4byte gUnknown_2039A20 -_080CEC08: - ldr r2, _080CEC44 @ =gUnknown_2039A20 - ldr r1, [r2] - ldrb r0, [r1, 0x3] - subs r0, 0x1 - strb r0, [r1, 0x3] - lsls r0, 24 - cmp r0, 0 - beq _080CEC1C - bl _080CF528 -_080CEC1C: - ldr r1, [r2] - movs r0, 0x3 - strb r0, [r1, 0x3] - ldr r0, _080CEC48 @ =gBattleCommunication - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - add r0, r10 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _080CEC38 - bl _080CF528 -_080CEC38: - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - add r1, r10 - b _080CEFDE - .align 2, 0 -_080CEC44: .4byte gUnknown_2039A20 -_080CEC48: .4byte gBattleCommunication -_080CEC4C: - bl LaunchTask_PostEvoSparklesSet1 - ldr r1, _080CEC60 @ =gBattleCommunication - strb r0, [r1, 0x2] - ldr r0, _080CEC64 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - b _080CEFDE - .align 2, 0 -_080CEC60: .4byte gBattleCommunication -_080CEC64: .4byte gTasks -_080CEC68: - ldr r6, _080CEC90 @ =gBattleCommunication - ldrb r0, [r6, 0x2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - add r1, r10 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _080CEC7E - bl _080CF528 -_080CEC7E: - mov r0, r8 - adds r4, r0, r7 - lsls r4, 3 - add r4, r10 - ldrh r0, [r4, 0xC] - bl LaunchTask_PostEvoSparklesSet2AndFlash - strb r0, [r6, 0x2] - b _080CEF2E - .align 2, 0 -_080CEC90: .4byte gBattleCommunication -_080CEC94: - ldr r0, _080CECBC @ =gBattleCommunication - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - add r0, r10 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _080CECAA - bl _080CF528 -_080CECAA: - movs r0, 0x1B - bl PlaySE - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - add r1, r10 - b _080CEFDE - .align 2, 0 -_080CECBC: .4byte gBattleCommunication -_080CECC0: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _080CECCE - bl _080CF528 -_080CECCE: - bl m4aMPlayAllStop - ldr r0, _080CED00 @ =gPlttBufferUnfaded + 0x40 - ldr r1, _080CED04 @ =gUnknown_2039A20 - ldr r1, [r1] - adds r1, 0x4 - movs r2, 0x60 - bl memcpy - bl sub_80D04E8 - movs r0, 0 - str r0, [sp] - movs r0, 0x1C - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _080CED08 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - b _080CEFDE - .align 2, 0 -_080CED00: .4byte gPlttBufferUnfaded + 0x40 -_080CED04: .4byte gUnknown_2039A20 -_080CED08: .4byte gTasks -_080CED0C: - ldr r0, _080CED28 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080CED1C - bl _080CF528 -_080CED1C: - mov r0, r8 - adds r4, r0, r7 - lsls r4, 3 - add r4, r10 - ldrh r0, [r4, 0xC] - b _080CEF28 - .align 2, 0 -_080CED28: .4byte gPaletteFade -_080CED2C: - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - bne _080CED3A - bl _080CF528 -_080CED3A: - ldr r4, _080CEDA8 @ =gStringVar4 - ldr r1, _080CEDAC @ =gUnknown_83FE688 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0 - bl BattlePutTextOnWindow - ldr r0, _080CEDB0 @ =0x00000103 - bl PlayBGM - ldr r2, _080CEDB4 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r4, r1, r2 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - adds r2, r1 - adds r2, 0xC - mov r0, r9 - movs r1, 0xB - bl SetMonData - mov r0, r9 - bl CalculateMonStats - ldrh r1, [r4, 0xA] - ldrh r2, [r4, 0xC] - mov r0, r9 - bl EvolutionRenameMon - ldrh r0, [r4, 0xC] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2 - bl GetSetPokedexFlag - ldrh r0, [r4, 0xC] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl GetSetPokedexFlag - movs r0, 0xE - bl IncrementGameStat - b _080CF528 - .align 2, 0 -_080CEDA8: .4byte gStringVar4 -_080CEDAC: .4byte gUnknown_83FE688 -_080CEDB0: .4byte 0x00000103 -_080CEDB4: .4byte gTasks -_080CEDB8: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - beq _080CEDC6 - b _080CF528 -_080CEDC6: - bl HelpSystem_Enable - ldr r1, _080CEE20 @ =gTasks - mov r2, r8 - adds r0, r2, r7 - lsls r0, 3 - adds r5, r0, r1 - ldrb r1, [r5, 0x10] - mov r0, r9 - bl MonTryLearningNewMove - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0 - beq _080CEE40 - movs r3, 0x1A - ldrsh r4, [r5, r3] - cmp r4, 0 - bne _080CEE40 - bl StopMapMusic - bl Overworld_PlaySpecialMapMusic - ldrh r1, [r5, 0xE] - movs r0, 0x80 - orrs r0, r1 - strh r0, [r5, 0xE] - strh r4, [r5, 0x10] - strh r4, [r5, 0x14] - mov r0, r9 - movs r1, 0x2 - add r2, sp, 0x4 - bl GetMonData - ldr r0, _080CEE24 @ =gBattleTextBuff1 - add r1, sp, 0x4 - bl StringCopy10 - ldr r0, _080CEE28 @ =0x0000ffff - cmp r6, r0 - bne _080CEE2C - movs r0, 0x16 - strh r0, [r5, 0x8] - b _080CF528 - .align 2, 0 -_080CEE20: .4byte gTasks -_080CEE24: .4byte gBattleTextBuff1 -_080CEE28: .4byte 0x0000ffff -_080CEE2C: - ldr r0, _080CEE3C @ =0x0000fffe - cmp r6, r0 - bne _080CEE34 - b _080CF528 -_080CEE34: - movs r0, 0x14 - strh r0, [r5, 0x8] - b _080CF528 - .align 2, 0 -_080CEE3C: .4byte 0x0000fffe -_080CEE40: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _080CEE5C @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - b _080CEFDE - .align 2, 0 -_080CEE5C: .4byte gTasks -_080CEE60: - ldr r0, _080CEEC4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r2, 0x80 - adds r0, r2, 0 - ands r0, r1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - beq _080CEE74 - b _080CF528 -_080CEE74: - mov r3, r8 - adds r0, r3, r7 - lsls r0, 3 - mov r1, r10 - adds r4, r0, r1 - ldrh r1, [r4, 0xE] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _080CEE90 - bl StopMapMusic - bl Overworld_PlaySpecialMapMusic -_080CEE90: - movs r2, 0x1A - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080CEEA0 - ldrh r0, [r4, 0xA] - mov r1, r9 - bl CreateShedinja -_080CEEA0: - adds r0, r7, 0 - bl DestroyTask - bl FreeMonSpritesGfx - ldr r4, _080CEEC8 @ =gUnknown_2039A20 - ldr r0, [r4] - bl Free - str r6, [r4] - bl FreeAllWindowBuffers - ldr r0, _080CEECC @ =gCB2_AfterEvolution - ldr r0, [r0] - bl SetMainCallback2 - b _080CF528 - .align 2, 0 -_080CEEC4: .4byte gPaletteFade -_080CEEC8: .4byte gUnknown_2039A20 -_080CEECC: .4byte gCB2_AfterEvolution -_080CEED0: - ldr r0, _080CEF04 @ =gBattleCommunication - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - add r0, r10 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _080CEEE4 - b _080CF528 -_080CEEE4: - bl m4aMPlayAllStop - ldr r0, _080CEF08 @ =0x0006001c - ldr r1, _080CEF0C @ =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - add r1, r10 - b _080CEFDE - .align 2, 0 -_080CEF04: .4byte gBattleCommunication -_080CEF08: .4byte 0x0006001c -_080CEF0C: .4byte 0x00007fff -_080CEF10: - ldr r0, _080CEF38 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080CEF1E - b _080CF528 -_080CEF1E: - mov r0, r8 - adds r4, r0, r7 - lsls r4, 3 - add r4, r10 -_080CEF26: - ldrh r0, [r4, 0xA] -_080CEF28: - movs r1, 0 - bl PlayCry1 -_080CEF2E: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080CF528 - .align 2, 0 -_080CEF38: .4byte gPaletteFade -_080CEF3C: - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - bne _080CEF48 - b _080CF528 -_080CEF48: - ldr r0, _080CEF64 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - movs r3, 0x1A - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _080CEF70 - ldr r0, _080CEF68 @ =gStringVar4 - ldr r1, _080CEF6C @ =gUnknown_83FE6D0 - bl StringExpandPlaceholders - b _080CEF78 - .align 2, 0 -_080CEF64: .4byte gTasks -_080CEF68: .4byte gStringVar4 -_080CEF6C: .4byte gUnknown_83FE6D0 -_080CEF70: - ldr r0, _080CEF90 @ =gStringVar4 - ldr r1, _080CEF94 @ =gUnknown_83FE6B5 - bl StringExpandPlaceholders -_080CEF78: - ldr r0, _080CEF90 @ =gStringVar4 - movs r1, 0 - bl BattlePutTextOnWindow - ldr r1, _080CEF98 @ =gTasks - mov r2, r8 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0x1 - strh r1, [r0, 0x1A] - b _080CF4F2 - .align 2, 0 -_080CEF90: .4byte gStringVar4 -_080CEF94: .4byte gUnknown_83FE6B5 -_080CEF98: .4byte gTasks -_080CEF9C: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - beq _080CEFAA - b _080CF528 -_080CEFAA: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _080CEFB6 - b _080CF528 -_080CEFB6: - bl BufferMoveToLearnIntoBattleTextBuff2 - ldr r0, _080CEFE8 @ =0x00000101 - bl PlayFanfare - ldr r0, _080CEFEC @ =gUnknown_83FDF3C - ldr r0, [r0, 0xC] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _080CEFF0 @ =gDisplayedStringBattle - movs r1, 0 - bl BattlePutTextOnWindow - ldr r0, _080CEFF4 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - movs r0, 0x40 - strh r0, [r1, 0x10] -_080CEFDE: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _080CF528 - .align 2, 0 -_080CEFE8: .4byte 0x00000101 -_080CEFEC: .4byte gUnknown_83FDF3C -_080CEFF0: .4byte gDisplayedStringBattle -_080CEFF4: .4byte gTasks -_080CEFF8: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - beq _080CF006 - b _080CF528 -_080CF006: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _080CF012 - b _080CF528 -_080CF012: - ldr r0, _080CF030 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x10] - subs r0, 0x1 - strh r0, [r1, 0x10] - lsls r0, 16 - cmp r0, 0 - beq _080CF02A - b _080CF528 -_080CF02A: - movs r0, 0xF - strh r0, [r1, 0x8] - b _080CF528 - .align 2, 0 -_080CF030: .4byte gTasks -_080CF034: - mov r3, r8 - adds r0, r3, r7 - lsls r0, 3 - add r0, r10 - movs r1, 0x14 - ldrsh r0, [r0, r1] - cmp r0, 0xC - bls _080CF046 - b _080CF528 -_080CF046: - lsls r0, 2 - ldr r1, _080CF050 @ =_080CF054 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080CF050: .4byte _080CF054 - .align 2, 0 -_080CF054: - .4byte _080CF088 - .4byte _080CF0D4 - .4byte _080CF11C - .4byte _080CF15A - .4byte _080CF1BC - .4byte _080CF2B4 - .4byte _080CF30C - .4byte _080CF3E0 - .4byte _080CF414 - .4byte _080CF45C - .4byte _080CF4A4 - .4byte _080CF4D8 - .4byte _080CF504 -_080CF088: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - beq _080CF096 - b _080CF528 -_080CF096: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _080CF0A2 - b _080CF528 -_080CF0A2: - bl BufferMoveToLearnIntoBattleTextBuff2 - ldr r0, _080CF0C8 @ =gUnknown_83FDF3C - ldr r0, [r0, 0x10] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _080CF0CC @ =gDisplayedStringBattle - movs r1, 0 - bl BattlePutTextOnWindow - ldr r0, _080CF0D0 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x14] - adds r0, 0x1 - b _080CF526 - .align 2, 0 -_080CF0C8: .4byte gUnknown_83FDF3C -_080CF0CC: .4byte gDisplayedStringBattle -_080CF0D0: .4byte gTasks -_080CF0D4: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - beq _080CF0E2 - b _080CF528 -_080CF0E2: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _080CF0EE - b _080CF528 -_080CF0EE: - ldr r0, _080CF110 @ =gUnknown_83FDF3C - ldr r0, [r0, 0x14] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _080CF114 @ =gDisplayedStringBattle - movs r1, 0 - bl BattlePutTextOnWindow - ldr r0, _080CF118 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x14] - adds r0, 0x1 - b _080CF526 - .align 2, 0 -_080CF110: .4byte gUnknown_83FDF3C -_080CF114: .4byte gDisplayedStringBattle -_080CF118: .4byte gTasks -_080CF11C: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _080CF15A - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _080CF15A - ldr r0, _080CF1A8 @ =gUnknown_83FDF3C - ldr r0, [r0, 0x18] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _080CF1AC @ =gDisplayedStringBattle - movs r1, 0 - bl BattlePutTextOnWindow - ldr r0, _080CF1B0 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - movs r0, 0x5 - strh r0, [r1, 0x16] - movs r0, 0xA - strh r0, [r1, 0x18] - ldrh r0, [r1, 0x14] - adds r0, 0x1 - strh r0, [r1, 0x14] -_080CF15A: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - beq _080CF168 - b _080CF528 -_080CF168: - bl IsSEPlaying - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _080CF176 - b _080CF528 -_080CF176: - str r0, [sp] - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl HandleBattleWindow - ldr r0, _080CF1B4 @ =gText_BattleYesNoChoice - movs r1, 0xE - bl BattlePutTextOnWindow - ldr r0, _080CF1B0 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x14] - adds r0, 0x1 - movs r2, 0 - strh r0, [r1, 0x14] - ldr r0, _080CF1B8 @ =gBattleCommunication - strb r2, [r0, 0x1] - bl BattleCreateYesNoCursorAt - b _080CF528 - .align 2, 0 -_080CF1A8: .4byte gUnknown_83FDF3C -_080CF1AC: .4byte gDisplayedStringBattle -_080CF1B0: .4byte gTasks -_080CF1B4: .4byte gText_BattleYesNoChoice -_080CF1B8: .4byte gBattleCommunication -_080CF1BC: - ldr r0, _080CF244 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080CF1E2 - ldr r4, _080CF248 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _080CF1E2 - movs r0, 0x5 - bl PlaySE - bl BattleDestroyYesNoCursorAt - movs r0, 0 - strb r0, [r4, 0x1] - bl BattleCreateYesNoCursorAt -_080CF1E2: - ldr r0, _080CF244 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080CF208 - ldr r4, _080CF248 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _080CF208 - movs r0, 0x5 - bl PlaySE - bl BattleDestroyYesNoCursorAt - movs r0, 0x1 - strb r0, [r4, 0x1] - bl BattleCreateYesNoCursorAt -_080CF208: - ldr r0, _080CF244 @ =gMain - ldrh r1, [r0, 0x2E] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080CF276 - str r2, [sp] - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl HandleBattleWindow - movs r0, 0x5 - bl PlaySE - ldr r0, _080CF248 @ =gBattleCommunication - ldrb r2, [r0, 0x1] - cmp r2, 0 - beq _080CF250 - ldr r0, _080CF24C @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - strh r0, [r1, 0x14] - b _080CF276 - .align 2, 0 -_080CF244: .4byte gMain -_080CF248: .4byte gBattleCommunication -_080CF24C: .4byte gTasks -_080CF250: - ldr r0, _080CF2AC @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x16] - strh r0, [r1, 0x14] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _080CF276 - movs r0, 0x1 - negs r0, r0 - str r2, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_080CF276: - ldr r0, _080CF2B0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080CF284 - b _080CF528 -_080CF284: - movs r0, 0x1 - str r0, [sp] - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl HandleBattleWindow - movs r0, 0x5 - bl PlaySE - ldr r1, _080CF2AC @ =gTasks - mov r2, r8 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x18] - strh r1, [r0, 0x14] - b _080CF528 - .align 2, 0 -_080CF2AC: .4byte gTasks -_080CF2B0: .4byte gMain -_080CF2B4: - ldr r0, _080CF2F4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080CF2C2 - b _080CF528 -_080CF2C2: - bl FreeAllWindowBuffers - ldr r0, _080CF2F8 @ =gPlayerParty - ldr r1, _080CF2FC @ =gTasks - mov r3, r8 - adds r5, r3, r7 - lsls r5, 3 - adds r5, r1 - ldrb r1, [r5, 0x1C] - ldr r2, _080CF300 @ =gPlayerPartyCount - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _080CF304 @ =CB2_EvolutionSceneLoadGraphics - ldr r4, _080CF308 @ =gMoveToLearn - ldrh r4, [r4] - str r4, [sp] - bl ShowSelectMovePokemonSummaryScreen - ldrh r0, [r5, 0x14] - adds r0, 0x1 - strh r0, [r5, 0x14] - b _080CF528 - .align 2, 0 -_080CF2F4: .4byte gPaletteFade -_080CF2F8: .4byte gPlayerParty -_080CF2FC: .4byte gTasks -_080CF300: .4byte gPlayerPartyCount -_080CF304: .4byte CB2_EvolutionSceneLoadGraphics -_080CF308: .4byte gMoveToLearn -_080CF30C: - ldr r0, _080CF340 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080CF31A - b _080CF528 -_080CF31A: - ldr r1, [r5, 0x4] - ldr r0, _080CF344 @ =sub_80CE710 - cmp r1, r0 - beq _080CF324 - b _080CF528 -_080CF324: - bl sub_8138B2C - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x4 - bne _080CF34C - ldr r0, _080CF348 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - movs r0, 0xA - b _080CF526 - .align 2, 0 -_080CF340: .4byte gPaletteFade -_080CF344: .4byte sub_80CE710 -_080CF348: .4byte gTasks -_080CF34C: - adds r1, r6, 0 - adds r1, 0xD - mov r0, r9 - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl IsHMMove2 - cmp r0, 0 - beq _080CF398 - ldr r0, _080CF388 @ =gUnknown_83FDF3C - ldr r3, _080CF38C @ =0x000004cc - adds r0, r3 - ldr r0, [r0] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _080CF390 @ =gDisplayedStringBattle - movs r1, 0 - bl BattlePutTextOnWindow - ldr r1, _080CF394 @ =gTasks - mov r2, r8 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0xC - strh r1, [r0, 0x14] - b _080CF528 - .align 2, 0 -_080CF388: .4byte gUnknown_83FDF3C -_080CF38C: .4byte 0x000004cc -_080CF390: .4byte gDisplayedStringBattle -_080CF394: .4byte gTasks -_080CF398: - ldr r1, _080CF3D4 @ =gBattleTextBuff2 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - strb r4, [r1, 0x2] - lsrs r0, r4, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - lsls r4, r6, 24 - lsrs r4, 24 - mov r0, r9 - adds r1, r4, 0 - bl RemoveMonPPBonus - ldr r0, _080CF3D8 @ =gMoveToLearn - ldrh r1, [r0] - mov r0, r9 - adds r2, r4, 0 - bl SetMonMoveSlot - ldr r0, _080CF3DC @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x14] - adds r0, 0x1 - b _080CF526 - .align 2, 0 -_080CF3D4: .4byte gBattleTextBuff2 -_080CF3D8: .4byte gMoveToLearn -_080CF3DC: .4byte gTasks -_080CF3E0: - ldr r0, _080CF408 @ =gUnknown_83FDF3C - movs r1, 0xCF - lsls r1, 2 - adds r0, r1 - ldr r0, [r0] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _080CF40C @ =gDisplayedStringBattle - movs r1, 0 - bl BattlePutTextOnWindow - ldr r0, _080CF410 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x14] - adds r0, 0x1 - b _080CF526 - .align 2, 0 -_080CF408: .4byte gUnknown_83FDF3C -_080CF40C: .4byte gDisplayedStringBattle -_080CF410: .4byte gTasks -_080CF414: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - beq _080CF422 - b _080CF528 -_080CF422: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _080CF42E - b _080CF528 -_080CF42E: - ldr r0, _080CF450 @ =gUnknown_83FDF3C - ldr r0, [r0, 0x1C] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _080CF454 @ =gDisplayedStringBattle - movs r1, 0 - bl BattlePutTextOnWindow - ldr r0, _080CF458 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x14] - adds r0, 0x1 - b _080CF526 - .align 2, 0 -_080CF450: .4byte gUnknown_83FDF3C -_080CF454: .4byte gDisplayedStringBattle -_080CF458: .4byte gTasks -_080CF45C: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _080CF528 - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _080CF528 - ldr r0, _080CF498 @ =gUnknown_83FDF3C - movs r1, 0xD0 - lsls r1, 2 - adds r0, r1 - ldr r0, [r0] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _080CF49C @ =gDisplayedStringBattle - movs r1, 0 - bl BattlePutTextOnWindow - ldr r1, _080CF4A0 @ =gTasks - mov r2, r8 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0x14 - strh r1, [r0, 0x8] - b _080CF528 - .align 2, 0 -_080CF498: .4byte gUnknown_83FDF3C -_080CF49C: .4byte gDisplayedStringBattle -_080CF4A0: .4byte gTasks -_080CF4A4: - ldr r0, _080CF4CC @ =gUnknown_83FDF3C - ldr r0, [r0, 0x20] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _080CF4D0 @ =gDisplayedStringBattle - movs r1, 0 - bl BattlePutTextOnWindow - ldr r1, _080CF4D4 @ =gTasks - mov r3, r8 - adds r0, r3, r7 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - movs r1, 0xB - strh r1, [r0, 0x16] - strh r2, [r0, 0x18] - movs r1, 0x3 - strh r1, [r0, 0x14] - b _080CF528 - .align 2, 0 -_080CF4CC: .4byte gUnknown_83FDF3C -_080CF4D0: .4byte gDisplayedStringBattle -_080CF4D4: .4byte gTasks -_080CF4D8: - ldr r0, _080CF4F8 @ =gUnknown_83FDF3C - ldr r0, [r0, 0x24] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _080CF4FC @ =gDisplayedStringBattle - movs r1, 0 - bl BattlePutTextOnWindow - ldr r1, _080CF500 @ =gTasks - mov r2, r8 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 -_080CF4F2: - movs r1, 0xF - strh r1, [r0, 0x8] - b _080CF528 - .align 2, 0 -_080CF4F8: .4byte gUnknown_83FDF3C -_080CF4FC: .4byte gDisplayedStringBattle -_080CF500: .4byte gTasks -_080CF504: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _080CF528 - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _080CF528 - ldr r0, _080CF538 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - movs r0, 0x5 -_080CF526: - strh r0, [r1, 0x14] -_080CF528: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CF538: .4byte gTasks - thumb_func_end sub_80CE8DC - - thumb_func_start sub_80CF53C -sub_80CF53C: @ 80CF53C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x20 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, _080CF5BC @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r5 - movs r0, 0x1C - ldrsh r1, [r4, r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _080CF5C0 @ =gPlayerParty - adds r1, r0 - mov r8, r1 - bl IsNationalPokedexEnabled - cmp r0, 0 - bne _080CF598 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x7 - bne _080CF598 - movs r3, 0xC - ldrsh r0, [r4, r3] - cmp r0, 0x97 - ble _080CF598 - movs r0, 0xF - strh r0, [r4, 0x8] - movs r2, 0x1 - strh r2, [r4, 0x1A] - ldr r0, _080CF5C4 @ =gBattleCommunication - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r1, r0, r5 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _080CF598 - strh r2, [r1, 0x18] - bl sub_80D04A8 -_080CF598: - ldr r0, _080CF5BC @ =gTasks - lsls r2, r6, 2 - adds r1, r2, r6 - lsls r1, 3 - adds r1, r0 - movs r3, 0x8 - ldrsh r1, [r1, r3] - adds r5, r0, 0 - adds r7, r2, 0 - cmp r1, 0x14 - bls _080CF5B2 - bl _080D003A -_080CF5B2: - lsls r0, r1, 2 - ldr r1, _080CF5C8 @ =_080CF5CC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080CF5BC: .4byte gTasks -_080CF5C0: .4byte gPlayerParty -_080CF5C4: .4byte gBattleCommunication -_080CF5C8: .4byte _080CF5CC - .align 2, 0 -_080CF5CC: - .4byte _080CF620 - .4byte _080CF64C - .4byte _080CF66C - .4byte _080CF69C - .4byte _080CF6D0 - .4byte _080CF73C - .4byte _080CF778 - .4byte _080CF7AC - .4byte _080CF7EC - .4byte _080CF808 - .4byte _080CF838 - .4byte _080CF860 - .4byte _080CF89C - .4byte _080CF924 - .4byte _080CF9D0 - .4byte _080CFA14 - .4byte _080CFA74 - .4byte _080CFA9C - .4byte _080CFAD8 - .4byte _080CFB34 - .4byte _080CFB70 -_080CF620: - ldr r4, _080CF640 @ =gStringVar4 - ldr r1, _080CF644 @ =gUnknown_83FE672 - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl DrawTextOnTradeWindow - ldr r0, _080CF648 @ =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r1, r0 - b _080CFB1A - .align 2, 0 -_080CF640: .4byte gStringVar4 -_080CF644: .4byte gUnknown_83FE672 -_080CF648: .4byte gTasks -_080CF64C: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - beq _080CF65C - bl _080D003A -_080CF65C: - ldr r0, _080CF668 @ =gTasks - adds r4, r7, r6 - lsls r4, 3 - adds r4, r0 - b _080CFA88 - .align 2, 0 -_080CF668: .4byte gTasks -_080CF66C: - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - bne _080CF67A - bl _080D003A -_080CF67A: - movs r0, 0x84 - lsls r0, 1 - bl m4aSongNumStop - ldr r0, _080CF694 @ =0x00000107 - bl PlaySE - ldr r0, _080CF698 @ =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r1, r0 - b _080CFB1A - .align 2, 0 -_080CF694: .4byte 0x00000107 -_080CF698: .4byte gTasks -_080CF69C: - bl IsSEPlaying - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _080CF6AC - bl _080D003A -_080CF6AC: - movs r0, 0x84 - lsls r0, 1 - bl PlayBGM - ldr r0, _080CF6CC @ =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - str r4, [sp] - movs r0, 0x1C - movs r1, 0x4 - b _080CFD56 - .align 2, 0 -_080CF6CC: .4byte gTasks -_080CF6D0: - ldr r0, _080CF724 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080CF6E0 - bl _080D003A -_080CF6E0: - movs r0, 0x1 - bl InitMovingBackgroundTask - ldr r2, _080CF728 @ =gSprites - ldr r0, _080CF72C @ =gUnknown_2039A20 - ldr r0, [r0] - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - adds r5, r0, 0 - adds r5, 0x10 - adds r0, r5, 0 - bl LaunchTask_PreEvoSparklesSet1 - ldr r1, _080CF730 @ =gBattleCommunication - strb r0, [r1, 0x2] - ldr r0, _080CF734 @ =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - ldr r1, _080CF738 @ =0x00000603 - movs r0, 0xE - bl SetGpuReg - bl _080D003A - .align 2, 0 -_080CF724: .4byte gPaletteFade -_080CF728: .4byte gSprites -_080CF72C: .4byte gUnknown_2039A20 -_080CF730: .4byte gBattleCommunication -_080CF734: .4byte gTasks -_080CF738: .4byte 0x00000603 -_080CF73C: - ldr r4, _080CF770 @ =gBattleCommunication - ldrb r0, [r4, 0x2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r5 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _080CF752 - bl _080D003A -_080CF752: - adds r1, r7, r6 - lsls r1, 3 - adds r1, r5 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - ldr r0, _080CF774 @ =gUnknown_2039A20 - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0x3] - bl LaunchTask_PreEvoSparklesSet2 - strb r0, [r4, 0x2] - bl _080D003A - .align 2, 0 -_080CF770: .4byte gBattleCommunication -_080CF774: .4byte gUnknown_2039A20 -_080CF778: - ldr r4, _080CF7A4 @ =gBattleCommunication - ldrb r0, [r4, 0x2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r5 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _080CF78E - bl _080D003A -_080CF78E: - ldr r0, _080CF7A8 @ =gUnknown_2039A20 - ldr r1, [r0] - ldrb r0, [r1] - ldrb r1, [r1, 0x1] - bl LaunchTask_PrePostEvoMonSprites - strb r0, [r4, 0x2] - adds r1, r7, r6 - lsls r1, 3 - adds r1, r5 - b _080CFB1A - .align 2, 0 -_080CF7A4: .4byte gBattleCommunication -_080CF7A8: .4byte gUnknown_2039A20 -_080CF7AC: - ldr r2, _080CF7E4 @ =gUnknown_2039A20 - ldr r1, [r2] - ldrb r0, [r1, 0x3] - subs r0, 0x1 - strb r0, [r1, 0x3] - lsls r0, 24 - cmp r0, 0 - beq _080CF7C0 - bl _080D003A -_080CF7C0: - ldr r1, [r2] - movs r0, 0x3 - strb r0, [r1, 0x3] - ldr r0, _080CF7E8 @ =gBattleCommunication - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _080CF7DC - bl _080D003A -_080CF7DC: - adds r1, r7, r6 - lsls r1, 3 - adds r1, r5 - b _080CFB1A - .align 2, 0 -_080CF7E4: .4byte gUnknown_2039A20 -_080CF7E8: .4byte gBattleCommunication -_080CF7EC: - bl LaunchTask_PostEvoSparklesSet1 - ldr r1, _080CF800 @ =gBattleCommunication - strb r0, [r1, 0x2] - ldr r0, _080CF804 @ =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r1, r0 - b _080CFB1A - .align 2, 0 -_080CF800: .4byte gBattleCommunication -_080CF804: .4byte gTasks -_080CF808: - ldr r0, _080CF834 @ =gBattleCommunication - mov r8, r0 - ldrb r0, [r0, 0x2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r5 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _080CF820 - bl _080D003A -_080CF820: - adds r4, r7, r6 - lsls r4, 3 - adds r4, r5 - ldrh r0, [r4, 0xC] - bl LaunchTask_PostEvoSparklesSet2AndFlash_Trade - mov r1, r8 - strb r0, [r1, 0x2] - b _080CFA90 - .align 2, 0 -_080CF834: .4byte gBattleCommunication -_080CF838: - ldr r0, _080CF85C @ =gBattleCommunication - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _080CF84E - bl _080D003A -_080CF84E: - movs r0, 0x1B - bl PlaySE - adds r1, r7, r6 - lsls r1, 3 - adds r1, r5 - b _080CFB1A - .align 2, 0 -_080CF85C: .4byte gBattleCommunication -_080CF860: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _080CF86E - bl _080D003A -_080CF86E: - ldr r0, _080CF890 @ =gTasks - adds r4, r7, r6 - lsls r4, 3 - adds r4, r0 - ldrh r0, [r4, 0xC] - movs r1, 0 - bl PlayCry1 - ldr r0, _080CF894 @ =gPlttBufferUnfaded + 0x40 - ldr r1, _080CF898 @ =gUnknown_2039A20 - ldr r1, [r1] - adds r1, 0x4 - movs r2, 0x60 - bl memcpy - b _080CFA90 - .align 2, 0 -_080CF890: .4byte gTasks -_080CF894: .4byte gPlttBufferUnfaded + 0x40 -_080CF898: .4byte gUnknown_2039A20 -_080CF89C: - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - bne _080CF8A8 - b _080D003A -_080CF8A8: - ldr r4, _080CF914 @ =gStringVar4 - ldr r1, _080CF918 @ =gUnknown_83FE688 - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl DrawTextOnTradeWindow - ldr r0, _080CF91C @ =0x00000103 - bl PlayFanfare - ldr r2, _080CF920 @ =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r4, r1, r2 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - adds r2, r1 - adds r2, 0xC - mov r0, r8 - movs r1, 0xB - bl SetMonData - mov r0, r8 - bl CalculateMonStats - ldrh r1, [r4, 0xA] - ldrh r2, [r4, 0xC] - mov r0, r8 - bl EvolutionRenameMon - ldrh r0, [r4, 0xC] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2 - bl GetSetPokedexFlag - ldrh r0, [r4, 0xC] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl GetSetPokedexFlag - movs r0, 0xE - bl IncrementGameStat - b _080D003A - .align 2, 0 -_080CF914: .4byte gStringVar4 -_080CF918: .4byte gUnknown_83FE688 -_080CF91C: .4byte 0x00000103 -_080CF920: .4byte gTasks -_080CF924: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - beq _080CF932 - b _080D003A -_080CF932: - bl IsFanfareTaskInactive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080CF940 - b _080D003A -_080CF940: - ldr r1, _080CF98C @ =gTasks - adds r0, r7, r6 - lsls r0, 3 - adds r4, r0, r1 - ldrb r1, [r4, 0x10] - mov r0, r8 - bl MonTryLearningNewMove - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - beq _080CF9AC - movs r3, 0x1A - ldrsh r2, [r4, r3] - cmp r2, 0 - bne _080CF9AC - ldrh r1, [r4, 0xE] - movs r0, 0x80 - orrs r0, r1 - strh r0, [r4, 0xE] - strh r2, [r4, 0x10] - strh r2, [r4, 0x14] - mov r0, r8 - movs r1, 0x2 - add r2, sp, 0xC - bl GetMonData - ldr r0, _080CF990 @ =gBattleTextBuff1 - add r1, sp, 0xC - bl StringCopy10 - ldr r0, _080CF994 @ =0x0000ffff - cmp r5, r0 - bne _080CF998 - movs r0, 0x14 - strh r0, [r4, 0x8] - b _080D003A - .align 2, 0 -_080CF98C: .4byte gTasks -_080CF990: .4byte gBattleTextBuff1 -_080CF994: .4byte 0x0000ffff -_080CF998: - ldr r0, _080CF9A8 @ =0x0000fffe - cmp r5, r0 - bne _080CF9A0 - b _080D003A -_080CF9A0: - movs r0, 0x12 - strh r0, [r4, 0x8] - b _080D003A - .align 2, 0 -_080CF9A8: .4byte 0x0000fffe -_080CF9AC: - movs r0, 0x84 - lsls r0, 1 - bl PlayBGM - ldr r1, _080CF9C8 @ =gUnknown_841E325 - movs r0, 0 - movs r2, 0x1 - bl DrawTextOnTradeWindow - ldr r0, _080CF9CC @ =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r1, r0 - b _080CFB1A - .align 2, 0 -_080CF9C8: .4byte gUnknown_841E325 -_080CF9CC: .4byte gTasks -_080CF9D0: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - beq _080CF9E0 - b _080D003A -_080CF9E0: - adds r0, r6, 0 - bl DestroyTask - ldr r4, _080CFA08 @ =gUnknown_2039A20 - ldr r0, [r4] - bl Free - str r5, [r4] - ldr r2, _080CFA0C @ =gTextFlags - ldrb r1, [r2] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r0, _080CFA10 @ =gCB2_AfterEvolution - ldr r0, [r0] - bl SetMainCallback2 - b _080D003A - .align 2, 0 -_080CFA08: .4byte gUnknown_2039A20 -_080CFA0C: .4byte gTextFlags -_080CFA10: .4byte gCB2_AfterEvolution -_080CFA14: - ldr r0, _080CFA60 @ =gBattleCommunication - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _080CFA28 - b _080D003A -_080CFA28: - bl m4aMPlayAllStop - ldr r2, _080CFA64 @ =gSprites - ldr r0, _080CFA68 @ =gUnknown_2039A20 - ldr r0, [r0] - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x5] - lsrs r1, 4 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - ldr r1, _080CFA6C @ =0x0004001c - orrs r0, r1 - ldr r1, _080CFA70 @ =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - adds r1, r7, r6 - lsls r1, 3 - adds r1, r5 - b _080CFB1A - .align 2, 0 -_080CFA60: .4byte gBattleCommunication -_080CFA64: .4byte gSprites -_080CFA68: .4byte gUnknown_2039A20 -_080CFA6C: .4byte 0x0004001c -_080CFA70: .4byte 0x00007fff -_080CFA74: - ldr r0, _080CFA98 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080CFA82 - b _080D003A -_080CFA82: - adds r4, r7, r6 - lsls r4, 3 - adds r4, r5 -_080CFA88: - ldrh r0, [r4, 0xA] - movs r1, 0 - bl PlayCry1 -_080CFA90: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080D003A - .align 2, 0 -_080CFA98: .4byte gPaletteFade -_080CFA9C: - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - bne _080CFAA8 - b _080D003A -_080CFAA8: - ldr r4, _080CFACC @ =gStringVar4 - ldr r1, _080CFAD0 @ =gUnknown_83FE6D0 - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl DrawTextOnTradeWindow - ldr r1, _080CFAD4 @ =gTasks - adds r0, r7, r6 - lsls r0, 3 - adds r0, r1 - movs r1, 0x1 - strh r1, [r0, 0x1A] - b _080D0006 - .align 2, 0 -_080CFACC: .4byte gStringVar4 -_080CFAD0: .4byte gUnknown_83FE6D0 -_080CFAD4: .4byte gTasks -_080CFAD8: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - beq _080CFAE6 - b _080D003A -_080CFAE6: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _080CFAF2 - b _080D003A -_080CFAF2: - bl BufferMoveToLearnIntoBattleTextBuff2 - ldr r0, _080CFB24 @ =0x00000101 - bl PlayFanfare - ldr r0, _080CFB28 @ =gUnknown_83FDF3C - ldr r0, [r0, 0xC] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r1, _080CFB2C @ =gDisplayedStringBattle - movs r0, 0 - movs r2, 0x1 - bl DrawTextOnTradeWindow - ldr r0, _080CFB30 @ =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r1, r0 - movs r0, 0x40 - strh r0, [r1, 0x10] -_080CFB1A: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _080D003A - .align 2, 0 -_080CFB24: .4byte 0x00000101 -_080CFB28: .4byte gUnknown_83FDF3C -_080CFB2C: .4byte gDisplayedStringBattle -_080CFB30: .4byte gTasks -_080CFB34: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - beq _080CFB42 - b _080D003A -_080CFB42: - bl IsFanfareTaskInactive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080CFB50 - b _080D003A -_080CFB50: - ldr r0, _080CFB6C @ =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x10] - subs r0, 0x1 - strh r0, [r1, 0x10] - lsls r0, 16 - cmp r0, 0 - beq _080CFB66 - b _080D003A -_080CFB66: - movs r0, 0xD - strh r0, [r1, 0x8] - b _080D003A - .align 2, 0 -_080CFB6C: .4byte gTasks -_080CFB70: - adds r0, r7, r6 - lsls r0, 3 - adds r0, r5 - movs r1, 0x14 - ldrsh r0, [r0, r1] - cmp r0, 0xB - bls _080CFB80 - b _080D003A -_080CFB80: - lsls r0, 2 - ldr r1, _080CFB8C @ =_080CFB90 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080CFB8C: .4byte _080CFB90 - .align 2, 0 -_080CFB90: - .4byte _080CFBC0 - .4byte _080CFC0C - .4byte _080CFC54 - .4byte _080CFC92 - .4byte _080CFCFC - .4byte _080CFDAC - .4byte _080CFE30 - .4byte _080CFF28 - .4byte _080CFF70 - .4byte _080CFFB8 - .4byte _080CFFEC - .4byte _080D0018 -_080CFBC0: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - beq _080CFBCE - b _080D003A -_080CFBCE: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _080CFBDA - b _080D003A -_080CFBDA: - bl BufferMoveToLearnIntoBattleTextBuff2 - ldr r0, _080CFC00 @ =gUnknown_83FDF3C - ldr r0, [r0, 0x10] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r1, _080CFC04 @ =gDisplayedStringBattle - movs r0, 0 - movs r2, 0x1 - bl DrawTextOnTradeWindow - ldr r0, _080CFC08 @ =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x14] - adds r0, 0x1 - b _080D0038 - .align 2, 0 -_080CFC00: .4byte gUnknown_83FDF3C -_080CFC04: .4byte gDisplayedStringBattle -_080CFC08: .4byte gTasks -_080CFC0C: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - beq _080CFC1A - b _080D003A -_080CFC1A: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _080CFC26 - b _080D003A -_080CFC26: - ldr r0, _080CFC48 @ =gUnknown_83FDF3C - ldr r0, [r0, 0x14] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r1, _080CFC4C @ =gDisplayedStringBattle - movs r0, 0 - movs r2, 0x1 - bl DrawTextOnTradeWindow - ldr r0, _080CFC50 @ =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x14] - adds r0, 0x1 - b _080D0038 - .align 2, 0 -_080CFC48: .4byte gUnknown_83FDF3C -_080CFC4C: .4byte gDisplayedStringBattle -_080CFC50: .4byte gTasks -_080CFC54: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _080CFC92 - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _080CFC92 - ldr r0, _080CFCE8 @ =gUnknown_83FDF3C - ldr r0, [r0, 0x18] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r1, _080CFCEC @ =gDisplayedStringBattle - movs r0, 0 - movs r2, 0x1 - bl DrawTextOnTradeWindow - ldr r0, _080CFCF0 @ =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r1, r0 - movs r0, 0x5 - strh r0, [r1, 0x16] - movs r0, 0x9 - strh r0, [r1, 0x18] - ldrh r0, [r1, 0x14] - adds r0, 0x1 - strh r0, [r1, 0x14] -_080CFC92: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - beq _080CFCA0 - b _080D003A -_080CFCA0: - bl IsSEPlaying - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _080CFCAE - b _080D003A -_080CFCAE: - movs r0, 0 - movs r1, 0xA8 - movs r2, 0xE0 - bl LoadUserWindowBorderGfx - ldr r0, _080CFCF4 @ =gUnknown_826D1CC - movs r1, 0xA8 - str r1, [sp] - movs r1, 0xE - str r1, [sp, 0x4] - str r4, [sp, 0x8] - movs r1, 0x3 - movs r2, 0 - movs r3, 0x2 - bl CreateYesNoMenu - ldr r3, _080CFCF8 @ =gBattleCommunication - strb r4, [r3, 0x1] - ldr r0, _080CFCF0 @ =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x14] - adds r0, 0x1 - movs r2, 0 - strh r0, [r1, 0x14] - strb r2, [r3, 0x1] - b _080D003A - .align 2, 0 -_080CFCE8: .4byte gUnknown_83FDF3C -_080CFCEC: .4byte gDisplayedStringBattle -_080CFCF0: .4byte gTasks -_080CFCF4: .4byte gUnknown_826D1CC -_080CFCF8: .4byte gBattleCommunication -_080CFCFC: - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r4, r0, 24 - cmp r4, 0 - beq _080CFD1C - cmp r4, 0 - bgt _080CFD16 - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - beq _080CFD70 - b _080D003A -_080CFD16: - cmp r4, 0x1 - beq _080CFD70 - b _080D003A -_080CFD1C: - ldr r0, _080CFD60 @ =gBattleCommunication - strb r4, [r0, 0x1] - ldr r0, _080CFD64 @ =gUnknown_83FDF3C - movs r3, 0x92 - lsls r3, 3 - adds r0, r3 - ldr r0, [r0] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r1, _080CFD68 @ =gDisplayedStringBattle - movs r0, 0 - movs r2, 0x1 - bl DrawTextOnTradeWindow - ldr r1, _080CFD6C @ =gTasks - adds r0, r7, r6 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x16] - strh r1, [r0, 0x14] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x5 - beq _080CFD4E - b _080D003A -_080CFD4E: - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 -_080CFD56: - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _080D003A - .align 2, 0 -_080CFD60: .4byte gBattleCommunication -_080CFD64: .4byte gUnknown_83FDF3C -_080CFD68: .4byte gDisplayedStringBattle -_080CFD6C: .4byte gTasks -_080CFD70: - ldr r1, _080CFD9C @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x1] - ldr r0, _080CFDA0 @ =gUnknown_83FDF3C - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r1, _080CFDA4 @ =gDisplayedStringBattle - movs r0, 0 - movs r2, 0x1 - bl DrawTextOnTradeWindow - ldr r1, _080CFDA8 @ =gTasks - adds r0, r7, r6 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x18] - strh r1, [r0, 0x14] - b _080D003A - .align 2, 0 -_080CFD9C: .4byte gBattleCommunication -_080CFDA0: .4byte gUnknown_83FDF3C -_080CFDA4: .4byte gDisplayedStringBattle -_080CFDA8: .4byte gTasks -_080CFDAC: - ldr r0, _080CFE14 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080CFDBA - b _080D003A -_080CFDBA: - ldr r0, _080CFE18 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _080CFDC6 - bl DestroyWirelessStatusIndicatorSprite -_080CFDC6: - movs r0, 0x3 - bl GetBgTilemapBuffer - bl Free - movs r0, 0x1 - bl GetBgTilemapBuffer - bl Free - movs r0, 0 - bl GetBgTilemapBuffer - bl Free - bl FreeAllWindowBuffers - ldr r0, _080CFE1C @ =gPlayerParty - ldr r1, _080CFE20 @ =gTasks - adds r5, r7, r6 - lsls r5, 3 - adds r5, r1 - ldrb r1, [r5, 0x1C] - ldr r2, _080CFE24 @ =gPlayerPartyCount - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _080CFE28 @ =CB2_TradeEvolutionSceneLoadGraphics - ldr r4, _080CFE2C @ =gMoveToLearn - ldrh r4, [r4] - str r4, [sp] - bl ShowSelectMovePokemonSummaryScreen - ldrh r0, [r5, 0x14] - adds r0, 0x1 - strh r0, [r5, 0x14] - b _080D003A - .align 2, 0 -_080CFE14: .4byte gPaletteFade -_080CFE18: .4byte gWirelessCommType -_080CFE1C: .4byte gPlayerParty -_080CFE20: .4byte gTasks -_080CFE24: .4byte gPlayerPartyCount -_080CFE28: .4byte CB2_TradeEvolutionSceneLoadGraphics -_080CFE2C: .4byte gMoveToLearn -_080CFE30: - ldr r0, _080CFE64 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080CFE3E - b _080D003A -_080CFE3E: - ldr r0, _080CFE68 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _080CFE6C @ =sub_80CE72C - cmp r1, r0 - beq _080CFE4A - b _080D003A -_080CFE4A: - bl sub_8138B2C - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x4 - bne _080CFE74 - ldr r0, _080CFE70 @ =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r1, r0 - movs r0, 0x9 - b _080D0038 - .align 2, 0 -_080CFE64: .4byte gPaletteFade -_080CFE68: .4byte gMain -_080CFE6C: .4byte sub_80CE72C -_080CFE70: .4byte gTasks -_080CFE74: - adds r1, r5, 0 - adds r1, 0xD - mov r0, r8 - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl IsHMMove2 - cmp r0, 0 - beq _080CFEC0 - ldr r0, _080CFEB0 @ =gUnknown_83FDF3C - ldr r3, _080CFEB4 @ =0x000004cc - adds r0, r3 - ldr r0, [r0] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r1, _080CFEB8 @ =gDisplayedStringBattle - movs r0, 0 - movs r2, 0x1 - bl DrawTextOnTradeWindow - ldr r1, _080CFEBC @ =gTasks - adds r0, r7, r6 - lsls r0, 3 - adds r0, r1 - movs r1, 0xB - strh r1, [r0, 0x14] - b _080D003A - .align 2, 0 -_080CFEB0: .4byte gUnknown_83FDF3C -_080CFEB4: .4byte 0x000004cc -_080CFEB8: .4byte gDisplayedStringBattle -_080CFEBC: .4byte gTasks -_080CFEC0: - ldr r1, _080CFF14 @ =gBattleTextBuff2 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - strb r4, [r1, 0x2] - lsrs r0, r4, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - lsls r4, r5, 24 - lsrs r4, 24 - mov r0, r8 - adds r1, r4, 0 - bl RemoveMonPPBonus - ldr r0, _080CFF18 @ =gMoveToLearn - ldrh r1, [r0] - mov r0, r8 - adds r2, r4, 0 - bl SetMonMoveSlot - ldr r0, _080CFF1C @ =gUnknown_83FDF3C - movs r1, 0xCF - lsls r1, 2 - adds r0, r1 - ldr r0, [r0] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r1, _080CFF20 @ =gDisplayedStringBattle - movs r0, 0 - movs r2, 0x1 - bl DrawTextOnTradeWindow - ldr r0, _080CFF24 @ =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x14] - adds r0, 0x1 - b _080D0038 - .align 2, 0 -_080CFF14: .4byte gBattleTextBuff2 -_080CFF18: .4byte gMoveToLearn -_080CFF1C: .4byte gUnknown_83FDF3C -_080CFF20: .4byte gDisplayedStringBattle -_080CFF24: .4byte gTasks -_080CFF28: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - beq _080CFF36 - b _080D003A -_080CFF36: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _080CFF42 - b _080D003A -_080CFF42: - ldr r0, _080CFF64 @ =gUnknown_83FDF3C - ldr r0, [r0, 0x1C] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r1, _080CFF68 @ =gDisplayedStringBattle - movs r0, 0 - movs r2, 0x1 - bl DrawTextOnTradeWindow - ldr r0, _080CFF6C @ =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x14] - adds r0, 0x1 - b _080D0038 - .align 2, 0 -_080CFF64: .4byte gUnknown_83FDF3C -_080CFF68: .4byte gDisplayedStringBattle -_080CFF6C: .4byte gTasks -_080CFF70: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _080D003A - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _080D003A - ldr r0, _080CFFAC @ =gUnknown_83FDF3C - movs r3, 0xD0 - lsls r3, 2 - adds r0, r3 - ldr r0, [r0] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r1, _080CFFB0 @ =gDisplayedStringBattle - movs r0, 0 - movs r2, 0x1 - bl DrawTextOnTradeWindow - ldr r1, _080CFFB4 @ =gTasks - adds r0, r7, r6 - lsls r0, 3 - adds r0, r1 - movs r1, 0x12 - strh r1, [r0, 0x8] - b _080D003A - .align 2, 0 -_080CFFAC: .4byte gUnknown_83FDF3C -_080CFFB0: .4byte gDisplayedStringBattle -_080CFFB4: .4byte gTasks -_080CFFB8: - ldr r0, _080CFFE0 @ =gUnknown_83FDF3C - ldr r0, [r0, 0x20] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r1, _080CFFE4 @ =gDisplayedStringBattle - movs r0, 0 - movs r2, 0x1 - bl DrawTextOnTradeWindow - ldr r1, _080CFFE8 @ =gTasks - adds r0, r7, r6 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - movs r1, 0xA - strh r1, [r0, 0x16] - strh r2, [r0, 0x18] - movs r1, 0x3 - strh r1, [r0, 0x14] - b _080D003A - .align 2, 0 -_080CFFE0: .4byte gUnknown_83FDF3C -_080CFFE4: .4byte gDisplayedStringBattle -_080CFFE8: .4byte gTasks -_080CFFEC: - ldr r0, _080D000C @ =gUnknown_83FDF3C - ldr r0, [r0, 0x24] - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r1, _080D0010 @ =gDisplayedStringBattle - movs r0, 0 - movs r2, 0x1 - bl DrawTextOnTradeWindow - ldr r1, _080D0014 @ =gTasks - adds r0, r7, r6 - lsls r0, 3 - adds r0, r1 -_080D0006: - movs r1, 0xD - strh r1, [r0, 0x8] - b _080D003A - .align 2, 0 -_080D000C: .4byte gUnknown_83FDF3C -_080D0010: .4byte gDisplayedStringBattle -_080D0014: .4byte gTasks -_080D0018: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _080D003A - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _080D003A - ldr r0, _080D0048 @ =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r1, r0 - movs r0, 0x5 -_080D0038: - strh r0, [r1, 0x14] -_080D003A: - add sp, 0x20 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D0048: .4byte gTasks - thumb_func_end sub_80CF53C - - thumb_func_start nullsub_76 -nullsub_76: @ 80D004C - bx lr - thumb_func_end nullsub_76 - - thumb_func_start sub_80D0050 -sub_80D0050: @ 80D0050 - push {lr} - ldr r0, _080D00B8 @ =gBattle_BG0_X - ldrh r1, [r0] - movs r0, 0x10 - bl SetGpuReg - ldr r0, _080D00BC @ =gBattle_BG0_Y - ldrh r1, [r0] - movs r0, 0x12 - bl SetGpuReg - ldr r0, _080D00C0 @ =gBattle_BG1_X - ldrh r1, [r0] - movs r0, 0x14 - bl SetGpuReg - ldr r0, _080D00C4 @ =gBattle_BG1_Y - ldrh r1, [r0] - movs r0, 0x16 - bl SetGpuReg - ldr r0, _080D00C8 @ =gBattle_BG2_X - ldrh r1, [r0] - movs r0, 0x18 - bl SetGpuReg - ldr r0, _080D00CC @ =gBattle_BG2_Y - ldrh r1, [r0] - movs r0, 0x1A - bl SetGpuReg - ldr r0, _080D00D0 @ =gBattle_BG3_X - ldrh r1, [r0] - movs r0, 0x1C - bl SetGpuReg - ldr r0, _080D00D4 @ =gBattle_BG3_Y - ldrh r1, [r0] - movs r0, 0x1E - bl SetGpuReg - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - bl ScanlineEffect_InitHBlankDmaTransfer - pop {r0} - bx r0 - .align 2, 0 -_080D00B8: .4byte gBattle_BG0_X -_080D00BC: .4byte gBattle_BG0_Y -_080D00C0: .4byte gBattle_BG1_X -_080D00C4: .4byte gBattle_BG1_Y -_080D00C8: .4byte gBattle_BG2_X -_080D00CC: .4byte gBattle_BG2_Y -_080D00D0: .4byte gBattle_BG3_X -_080D00D4: .4byte gBattle_BG3_Y - thumb_func_end sub_80D0050 - - thumb_func_start sub_80D00D8 -sub_80D00D8: @ 80D00D8 - push {lr} - ldr r0, _080D0140 @ =gBattle_BG0_X - ldrh r1, [r0] - movs r0, 0x10 - bl SetGpuReg - ldr r0, _080D0144 @ =gBattle_BG0_Y - ldrh r1, [r0] - movs r0, 0x12 - bl SetGpuReg - ldr r0, _080D0148 @ =gBattle_BG1_X - ldrh r1, [r0] - movs r0, 0x14 - bl SetGpuReg - ldr r0, _080D014C @ =gBattle_BG1_Y - ldrh r1, [r0] - movs r0, 0x16 - bl SetGpuReg - ldr r0, _080D0150 @ =gBattle_BG2_X - ldrh r1, [r0] - movs r0, 0x18 - bl SetGpuReg - ldr r0, _080D0154 @ =gBattle_BG2_Y - ldrh r1, [r0] - movs r0, 0x1A - bl SetGpuReg - ldr r0, _080D0158 @ =gBattle_BG3_X - ldrh r1, [r0] - movs r0, 0x1C - bl SetGpuReg - ldr r0, _080D015C @ =gBattle_BG3_Y - ldrh r1, [r0] - movs r0, 0x1E - bl SetGpuReg - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - bl ScanlineEffect_InitHBlankDmaTransfer - pop {r0} - bx r0 - .align 2, 0 -_080D0140: .4byte gBattle_BG0_X -_080D0144: .4byte gBattle_BG0_Y -_080D0148: .4byte gBattle_BG1_X -_080D014C: .4byte gBattle_BG1_Y -_080D0150: .4byte gBattle_BG2_X -_080D0154: .4byte gBattle_BG2_Y -_080D0158: .4byte gBattle_BG3_X -_080D015C: .4byte gBattle_BG3_Y - thumb_func_end sub_80D00D8 - - thumb_func_start sub_80D0160 -sub_80D0160: @ 80D0160 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080D01E0 @ =gTasks+0x8 - adds r4, r0, r1 - movs r0, 0xC - ldrsh r5, [r4, r0] - cmp r5, 0 - bne _080D020E - ldrh r0, [r4, 0xA] - adds r1, r0, 0x1 - strh r1, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _080D020E - ldrh r1, [r4] - adds r0, r1, 0x1 - strh r0, [r4] - lsls r1, 16 - asrs r1, 16 - ldr r3, _080D01E4 @ =gUnknown_83F846D - movs r2, 0x4 - ldrsh r0, [r4, r2] - lsls r2, r0, 2 - adds r0, r3, 0x3 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r1, r0 - ble _080D0200 - adds r0, r3, 0x1 - adds r0, r2, r0 - ldrb r0, [r0] - movs r2, 0x2 - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080D01E8 - ldrh r0, [r4, 0x6] - adds r0, 0x1 - strh r0, [r4, 0x6] - movs r0, 0x6 - ldrsh r2, [r4, r0] - movs r1, 0x4 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r1, r3, 0x2 - adds r0, r1 - ldrb r0, [r0] - cmp r2, r0 - bne _080D01D2 - strh r5, [r4, 0x6] - ldrh r0, [r4, 0x4] - adds r0, 0x1 - strh r0, [r4, 0x4] -_080D01D2: - movs r2, 0x4 - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0] - b _080D01FE - .align 2, 0 -_080D01E0: .4byte gTasks+0x8 -_080D01E4: .4byte gUnknown_83F846D -_080D01E8: - ldr r0, _080D0214 @ =gUnknown_2039A24 - lsls r1, 5 - ldr r0, [r0] - adds r0, r1 - movs r1, 0xA0 - movs r2, 0x20 - bl LoadPalette - strh r5, [r4] - ldrh r0, [r4, 0x2] - adds r0, 0x1 -_080D01FE: - strh r0, [r4, 0x2] -_080D0200: - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bne _080D020E - adds r0, r6, 0 - bl DestroyTask -_080D020E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D0214: .4byte gUnknown_2039A24 - thumb_func_end sub_80D0160 - - thumb_func_start sub_80D0218 -sub_80D0218: @ 80D0218 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080D023C @ =sub_80D025C - movs r1, 0x7 - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 - cmp r4, 0 - bne _080D0244 - ldr r1, _080D0240 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - strh r4, [r0, 0xC] - b _080D0252 - .align 2, 0 -_080D023C: .4byte sub_80D025C -_080D0240: .4byte gTasks -_080D0244: - ldr r0, _080D0258 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0xC] -_080D0252: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D0258: .4byte gTasks - thumb_func_end sub_80D0218 - - thumb_func_start sub_80D025C -sub_80D025C: @ 80D025C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080D0288 @ =gBattle_BG1_X - mov r8, r0 - ldr r1, _080D028C @ =gBattle_BG1_Y - mov r9, r1 - ldr r1, _080D0290 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r2, 0xC - ldrsh r0, [r0, r2] - cmp r0, 0 - bne _080D029C - ldr r7, _080D0294 @ =gBattle_BG2_X - ldr r6, _080D0298 @ =gBattle_BG2_Y - b _080D02A0 - .align 2, 0 -_080D0288: .4byte gBattle_BG1_X -_080D028C: .4byte gBattle_BG1_Y -_080D0290: .4byte gTasks -_080D0294: .4byte gBattle_BG2_X -_080D0298: .4byte gBattle_BG2_Y -_080D029C: - ldr r7, _080D0328 @ =gBattle_BG3_X - ldr r6, _080D032C @ =gBattle_BG3_Y -_080D02A0: - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r1 - ldrh r0, [r4, 0x8] - adds r0, 0x5 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x8] - adds r0, 0x80 - ands r0, r1 - strh r0, [r4, 0xA] - movs r1, 0x8 - ldrsh r0, [r4, r1] - movs r1, 0x4 - bl Cos - adds r0, 0x8 - mov r2, r8 - strh r0, [r2] - movs r1, 0x8 - ldrsh r0, [r4, r1] - movs r1, 0x4 - bl Sin - adds r0, 0x10 - mov r2, r9 - strh r0, [r2] - movs r1, 0xA - ldrsh r0, [r4, r1] - movs r1, 0x4 - bl Cos - adds r0, 0x8 - strh r0, [r7] - movs r2, 0xA - ldrsh r0, [r4, r2] - movs r1, 0x4 - bl Sin - adds r0, 0x10 - strh r0, [r6] - ldr r0, _080D0330 @ =sub_80D0160 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080D031A - adds r0, r5, 0 - bl DestroyTask - mov r0, r8 - strh r4, [r0] - mov r1, r9 - strh r4, [r1] - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r7] - strh r4, [r6] -_080D031A: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D0328: .4byte gBattle_BG3_X -_080D032C: .4byte gBattle_BG3_Y -_080D0330: .4byte sub_80D0160 - thumb_func_end sub_80D025C - - thumb_func_start InitMovingBgValues -InitMovingBgValues: @ 80D0334 - push {r4-r7,lr} - adds r6, r0, 0 - movs r1, 0 - ldr r5, _080D036C @ =gUnknown_83F8400 - ldr r7, _080D0370 @ =gUnknown_83F847D -_080D033E: - lsls r0, r1, 4 - adds r4, r1, 0x1 - adds r2, r0, r7 - lsls r0, r1, 5 - adds r1, r0, r6 - movs r3, 0xF -_080D034A: - ldrb r0, [r2] - lsls r0, 1 - adds r0, r5 - ldrh r0, [r0] - strh r0, [r1] - adds r2, 0x1 - adds r1, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _080D034A - adds r1, r4, 0 - cmp r1, 0x31 - ble _080D033E - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D036C: .4byte gUnknown_83F8400 -_080D0370: .4byte gUnknown_83F847D - thumb_func_end InitMovingBgValues - - thumb_func_start InitMovingBackgroundTask -InitMovingBackgroundTask: @ 80D0374 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _080D0398 @ =gUnknown_2039A24 - movs r0, 0xC8 - lsls r0, 3 - bl AllocZeroed - str r0, [r4] - bl InitMovingBgValues - cmp r5, 0 - bne _080D039C - movs r6, 0x1 - movs r4, 0x2 - b _080D03A0 - .align 2, 0 -_080D0398: .4byte gUnknown_2039A24 -_080D039C: - movs r6, 0x1 - movs r4, 0x3 -_080D03A0: - ldr r0, _080D0420 @ =gUnknown_83F7D60 - movs r1, 0xA0 - movs r2, 0x20 - bl LoadPalette - ldr r1, _080D0424 @ =gUnknown_83F6CB0 - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl DecompressAndLoadBgGfxUsingHeap - ldr r1, _080D0428 @ =gUnknown_83F73A8 - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - ldr r1, _080D042C @ =gUnknown_83F788C - adds r0, r4, 0 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - adds r0, r4, 0 - bl CopyBgTilemapBufferToVram - cmp r5, 0 - bne _080D0438 - ldr r1, _080D0430 @ =0x00000442 - movs r0, 0x50 - bl SetGpuReg - ldr r1, _080D0434 @ =0x00000808 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0xBA - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - adds r0, r6, 0 - movs r1, 0x7 - movs r2, 0x2 - bl SetBgAttribute - adds r0, r4, 0 - movs r1, 0x7 - movs r2, 0x2 - bl SetBgAttribute - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - b _080D0452 - .align 2, 0 -_080D0420: .4byte gUnknown_83F7D60 -_080D0424: .4byte gUnknown_83F6CB0 -_080D0428: .4byte gUnknown_83F73A8 -_080D042C: .4byte gUnknown_83F788C -_080D0430: .4byte 0x00000442 -_080D0434: .4byte 0x00000808 -_080D0438: - ldr r1, _080D0468 @ =0x00000842 - movs r0, 0x50 - bl SetGpuReg - ldr r1, _080D046C @ =0x00000808 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0xDA - lsls r1, 5 - movs r0, 0 - bl SetGpuReg -_080D0452: - ldr r0, _080D0470 @ =sub_80D0160 - movs r1, 0x5 - bl CreateTask - adds r0, r5, 0 - bl sub_80D0218 - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D0468: .4byte 0x00000842 -_080D046C: .4byte 0x00000808 -_080D0470: .4byte sub_80D0160 - thumb_func_end InitMovingBackgroundTask - - thumb_func_start sub_80D0474 -sub_80D0474: @ 80D0474 - push {lr} - ldr r0, _080D04A0 @ =sub_80D0160 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - beq _080D0492 - ldr r0, _080D04A4 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x14] -_080D0492: - movs r0, 0 - movs r1, 0xA0 - movs r2, 0x20 - bl FillPalette - pop {r0} - bx r0 - .align 2, 0 -_080D04A0: .4byte sub_80D0160 -_080D04A4: .4byte gTasks - thumb_func_end sub_80D0474 - - thumb_func_start sub_80D04A8 -sub_80D04A8: @ 80D04A8 - push {lr} - ldr r0, _080D04E0 @ =sub_80D0160 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080D04BC - bl DestroyTask -_080D04BC: - ldr r0, _080D04E4 @ =sub_80D025C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080D04CE - bl DestroyTask -_080D04CE: - movs r0, 0 - movs r1, 0xA0 - movs r2, 0x20 - bl FillPalette - bl sub_80D04E8 - pop {r0} - bx r0 - .align 2, 0 -_080D04E0: .4byte sub_80D0160 -_080D04E4: .4byte sub_80D025C - thumb_func_end sub_80D04A8 - - thumb_func_start sub_80D04E8 -sub_80D04E8: @ 80D04E8 - push {lr} - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - ldr r0, _080D0544 @ =gBattle_BG1_X - movs r1, 0 - strh r1, [r0] - ldr r0, _080D0548 @ =gBattle_BG1_Y - strh r1, [r0] - ldr r0, _080D054C @ =gBattle_BG2_X - strh r1, [r0] - movs r0, 0x1 - movs r1, 0x5 - bl sub_8011C44 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0x1 - movs r1, 0x7 - bl SetBgAttribute - movs r0, 0x2 - movs r1, 0x5 - bl sub_8011C44 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0x2 - movs r1, 0x7 - bl SetBgAttribute - movs r1, 0xCA - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - ldr r0, _080D0550 @ =gUnknown_2039A24 - ldr r0, [r0] - bl Free - pop {r0} - bx r0 - .align 2, 0 -_080D0544: .4byte gBattle_BG1_X -_080D0548: .4byte gBattle_BG1_Y -_080D054C: .4byte gBattle_BG2_X -_080D0550: .4byte gUnknown_2039A24 - thumb_func_end sub_80D04E8 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/party_menu.s b/asm/party_menu.s index dfe4e02c0..3cb62c712 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -12790,7 +12790,7 @@ sub_8124EFC: @ 8124EFC muls r5, r0 ldr r0, _08124F8C @ =gPlayerParty adds r5, r0 - bl sub_8138B2C + bl GetMoveSlotToReplace adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -14661,7 +14661,7 @@ _08125E80: .4byte sub_8125E84 sub_8125E84: @ 8125E84 push {r4,r5,lr} sub sp, 0xC - bl sub_8138B2C + bl GetMoveSlotToReplace lsls r0, 24 lsrs r2, r0, 24 ldr r4, _08125ED0 @ =gUnknown_203B0A0 @@ -14735,7 +14735,7 @@ sub_8125F14: @ 8125F14 ands r0, r1 cmp r0, 0 bne _08125F46 - bl sub_8138B2C + bl GetMoveSlotToReplace lsls r0, 24 lsrs r0, 24 cmp r0, 0x4 @@ -14783,7 +14783,7 @@ sub_8125F5C: @ 8125F5C muls r6, r0 ldr r0, _08125FE8 @ =gPlayerParty adds r6, r0 - bl sub_8138B2C + bl GetMoveSlotToReplace adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 @@ -14848,7 +14848,7 @@ sub_8125FFC: @ 8125FFC muls r5, r0 ldr r0, _08126060 @ =gPlayerParty adds r5, r0 - bl sub_8138B2C + bl GetMoveSlotToReplace adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -14908,14 +14908,14 @@ sub_812607C: @ 812607C muls r4, r0 ldr r0, _081260D4 @ =gPlayerParty adds r4, r0 - bl sub_8138B2C + bl GetMoveSlotToReplace adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl RemoveMonPPBonus ldrh r5, [r5, 0xE] - bl sub_8138B2C + bl GetMoveSlotToReplace adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 0752b5797..d1d6ed06f 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -8406,14 +8406,14 @@ sub_8138B20: @ 8138B20 _08138B28: .4byte gUnknown_203B16C thumb_func_end sub_8138B20 - thumb_func_start sub_8138B2C -sub_8138B2C: @ 8138B2C + thumb_func_start GetMoveSlotToReplace +GetMoveSlotToReplace: @ 8138B2C ldr r0, _08138B34 @ =gUnknown_203B16E ldrb r0, [r0] bx lr .align 2, 0 _08138B34: .4byte gUnknown_203B16E - thumb_func_end sub_8138B2C + thumb_func_end GetMoveSlotToReplace thumb_func_start sub_8138B38 sub_8138B38: @ 8138B38 diff --git a/common_syms/evolution_scene.txt b/common_syms/evolution_scene.txt new file mode 100644 index 000000000..137cd3e05 --- /dev/null +++ b/common_syms/evolution_scene.txt @@ -0,0 +1 @@ +gCB2_AfterEvolution diff --git a/data/battle_message.s b/data/battle_message.s index e6ec14116..4f7576103 100644 --- a/data/battle_message.s +++ b/data/battle_message.s @@ -1797,7 +1797,7 @@ gUnknown_83FDDEB:: @ 83FDDEB .string "$" .align 2 -gUnknown_83FDF3C:: @ 83FDF3C +gBattleStringsTable:: @ 83FDF3C .4byte gUnknown_83FB219 .4byte gUnknown_83FB265 .4byte gUnknown_83FB28E @@ -2448,21 +2448,21 @@ gTrappingMoves:: @ 83FE664 .2byte MOVE_SAND_TOMB .2byte 0xFFFF -gUnknown_83FE672:: @ 83FE672 +gText_PkmnIsEvolving:: @ 83FE672 .string "What?\n" .string "{STR_VAR_1} is evolving!$" -gUnknown_83FE688:: @ 83FE688 +gText_CongratsPkmnEvolved:: @ 83FE688 .string "Congratulations! Your {STR_VAR_1}\n" .string "evolved into {STR_VAR_2}!{WAIT_SE}\p" .string "$" -gUnknown_83FE6B5:: @ 83FE6B5 +gText_PkmnStoppedEvolving:: @ 83FE6B5 .string "Huh? {STR_VAR_1}\n" .string "stopped evolving!\p" .string "$" -gUnknown_83FE6D0:: @ 83FE6D0 +gText_EllipsisQuestionMark:: @ 83FE6D0 .string "……?\p" .string "$" diff --git a/data/evolution_scene.s b/data/evolution_scene.s deleted file mode 100644 index 0bba4c18c..000000000 --- a/data/evolution_scene.s +++ /dev/null @@ -1,33 +0,0 @@ -#include "constants/species.h" -#include "constants/items.h" - .include "asm/macros.inc" - .include "constants/constants.inc" - .section .rodata - .align 2 - -gUnknown_83F6C90:: @ 83F6C90 - .incbin "baserom.gba", 0x3F6C90, 0x20 - -gUnknown_83F6CB0:: @ 83F6CB0 - .incbin "baserom.gba", 0x3F6CB0, 0x6F8 - -gUnknown_83F73A8:: @ 83F73A8 - .incbin "baserom.gba", 0x3F73A8, 0x4E4 - -gUnknown_83F788C:: @ 83F788C - .incbin "baserom.gba", 0x3F788C, 0x4D4 - -gUnknown_83F7D60:: @ 83F7D60 - .incbin "baserom.gba", 0x3F7D60, 0x6A0 - -gUnknown_83F8400:: @ 83F8400 - .incbin "baserom.gba", 0x3F8400, 0x40 - -gUnknown_83F8440:: @ 83F8440 - .incbin "baserom.gba", 0x3F8440, 0x2D - -gUnknown_83F846D:: @ 83F846D - .incbin "baserom.gba", 0x3F846D, 0x10 - -gUnknown_83F847D:: @ 83F847D - .incbin "baserom.gba", 0x3F847D, 0x323 diff --git a/data/strings.s b/data/strings.s index 101946475..f39060846 100644 --- a/data/strings.s +++ b/data/strings.s @@ -4517,7 +4517,7 @@ gUnknown_841E2F5:: @ 841E2F5 gUnknown_841E322:: @ 841E322 .string "{ID}$" -gUnknown_841E325:: @ 841E325 +gText_CommunicationStandby5:: @ 841E325 .string "Communication standby…$" gDaycareText_GetAlongVeryWell:: @ 841E33C diff --git a/graphics/evolution_scene/bg.bin b/graphics/evolution_scene/bg.bin new file mode 100644 index 0000000000000000000000000000000000000000..583ebac2bb1050fc218503ded70d9d1d86fea40e GIT binary patch literal 2048 zcmeIv#a1Li5QX7^hDI89cWd0;-QC@tce;yM+(kU(+$xv@?=WOe&aioeET<3RPBV6)KeL1XCtoY9-ReRuuXes^x1? zD_$M*1wl4Wj`Ht}G+pW!7Z7{SE3}IM)1fv+kI3_TODNJJqGd68gHfa+!ZeuoT zBl5#G6c!>jXrH^A#hmm!7Ign2mavQ!tYQu8ShqD>wG~^oC0o?}3pTI9oXvg}0>6Px z=`Cza@95pT*uy>!aEK!u*`XcSzU|qr_OPSEwr#1fX&avf9OFbfic{$`oZ~|8zQh%- zaf4gj+KpY?m0fBN7j|xEDxAtk?Zl3Q0`5Y6Fa3Z=JZb08c)=^)@Qx3B*t@;itG(E> z#qG%+?Lme6uy7Z6-Z84VXBr>)$S216%oo1$jqm*6hrj!qzxs(xy z^N2@y%#*Nis=^u1dBJ{O@`~5I;Vp0d#;^U#FTLL{{M^r^PeXm;$DxmKgPSUBaa)BQ zHglJI+~)xgdBh_>^aJ1bJ>T_a-;v(-E%{B~2(<1GW|ng*%yU77MJ{ofD_rFo*SYR% zzUnK!>`T5Vz2NiGb3Xg2eK7P94slq85sq?<qr^%@nbJr)d$SS(+{Qu#9ZV9IqWSjj3@d8Jp# zmFomkCSU3$^2J^h`i!p)WXfkTn>oy79`jWwU?B^=Kq}w!JlAtP+q2{|zh0jacqA}U mg(N1+e@_ZiRY+&LbgHLFeNVC{sgURi(tmz`zZ>|EH}DtQhXYFh literal 0 HcmV?d00001 diff --git a/graphics/evolution_scene/bg2.bin b/graphics/evolution_scene/bg2.bin new file mode 100644 index 0000000000000000000000000000000000000000..7afab112a7062ad1205d1e432acea2d726e554ba GIT binary patch literal 2048 zcmeIvS5Bir5Cq_rELlR9d<||#&N=5`GMH3AfeUCdn4EJCC))PdTJ0Tn-Ln3tuWF_z zh8PM^h=@-Sicx}6l%X6^#8H7tRI-9`Mp@1>ma>G!EMml`kOhoo#(fp4UDu%2Rd(w9 zTaP?6pn-X;cVFlK?9{TxeKo88_!t^Pf0L_bw4fDjXm{O#PIR)v6WZCvR<^L&Gnztw zV^)X$7`ohdqsM)(yFT<|0E0+i2t!P8kOS;zpXc9DIm`oCz#^7FEMo;Jq`1Oml1p6V0>OFC z1s~xoXFNez&FM97k76B$4Qyfy+t|S_cDciCZgGxg_PH~2FT;PJ|JmV=(c+4Z;z@fipng=0apL@)_djyxRqquT??ORLY2DiAwJs$AD zd*1PuH@=4iuRY<)&yeP2?hG0Ih$q+2c)=^)@Qx3^_b0yajUW8*n_v87iXVLE8(;at zXHR(IV>Uq%J?cqOJ?llUdegf;l+vfZ^sOKL*tdPzr={$}-tEm^?ZuugYESlPk<7S{ z=u&A!JF8%tWkt}V~5T&L|at8GvFA>qIi;yUz%BOU8R zr#jQQE_7k%c4nt`V#jvm`q1L84}#veJ(E_0k7&(L5Y@U&8`{*CwzZ>O?b?oQ+m>zG zhMBExX-2cTggMO%TF|1FL@jH@_mHv`TQ=H~E!u*?=4~#gXKlt}?qeF( zNJtp<{xOX!UlW?tl<#3$(|+$Mo3shbw{aWu_R-)+Y&fHXkEzRjw|d<7`Ud*cuK^AE zCWkcSTN|_i>$g6?eXsi->-L1Mtj_ty(BI^~SuJW+o7z36L!Iih4tMR=X06s@&F-5* zf8$@iO4aUbRO>!Fb^fjQga$RZu6I@E|LoLSjVDxF)t~bhs4(;wsaPc{Rhi1&$5o+9 hRa%9=Sk%g`%u21qimfR07g|B^zyAOJZ{Q!^z;6PEtLp#& literal 0 HcmV?d00001 diff --git a/graphics/evolution_scene/gray_transition_intro.pal b/graphics/evolution_scene/gray_transition_intro.pal new file mode 100644 index 000000000..4b0812f09 --- /dev/null +++ b/graphics/evolution_scene/gray_transition_intro.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +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 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/evolution_scene/transition.pal b/graphics/evolution_scene/transition.pal new file mode 100644 index 000000000..b0f4d3815 --- /dev/null +++ b/graphics/evolution_scene/transition.pal @@ -0,0 +1,35 @@ +JASC-PAL +0100 +32 +0 0 0 +16 16 16 +24 32 32 +41 49 49 +49 65 74 +65 82 90 +74 98 115 +90 115 131 +106 131 148 +115 148 172 +131 164 189 +139 180 213 +156 197 230 +172 213 255 +0 0 0 +0 0 0 +0 0 0 +65 90 106 +74 98 115 +82 106 131 +90 115 139 +98 131 156 +106 139 164 +115 148 180 +123 156 189 +131 172 205 +139 180 213 +148 189 230 +156 197 238 +172 213 255 +0 0 0 +0 0 0 diff --git a/graphics/evolution_scene/unknown_5B4114.pal b/graphics/evolution_scene/unknown_5B4114.pal new file mode 100644 index 000000000..2cd4981fd --- /dev/null +++ b/graphics/evolution_scene/unknown_5B4114.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +90 90 90 +98 106 106 +115 123 123 +131 131 131 +148 148 148 +156 164 164 +172 172 172 +189 189 189 +197 205 205 +213 213 213 +230 230 230 +246 246 246 +255 255 255 +0 0 0 +0 0 0 diff --git a/graphics/evolution_scene/unref_83F7D80.bin b/graphics/evolution_scene/unref_83F7D80.bin new file mode 100644 index 0000000000000000000000000000000000000000..b2b300184a4ef5a61b3509476cbae7a7273649a7 GIT binary patch literal 1664 zcma*oArgZy5CzbG1TIq9nVK3TG6GS7tw16XJp`5`)N-93p%&RrCi7>r$!;l@^Dh<1^RE?<{4E8TzpX&Z-%}vw?`!-M{L&-)0(#@a5&!@I literal 0 HcmV?d00001 diff --git a/include/battle_bg.h b/include/battle_bg.h index 29571b410..61c106b64 100644 --- a/include/battle_bg.h +++ b/include/battle_bg.h @@ -5,7 +5,7 @@ extern const struct BgTemplate gBattleBgTemplates[]; -void sub_800F34C(void); +void InitBattleBgsVideo(void); void DrawBattleEntryBackground(void); void sub_800F6FC(u8 taskId); void LoadBattleMenuWindowGfx(void); diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 6942fee83..a2ad90776 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -83,4 +83,8 @@ // Shiny odds #define SHINY_ODDS 8 // Actual probability is SHINY_ODDS/65536 +// Learning moves +#define MON_ALREADY_KNOWS_MOVE 0xFFFE +#define MON_HAS_MAX_MOVES 0xFFFF + #endif // GUARD_CONSTANTS_POKEMON_H diff --git a/include/pokemon.h b/include/pokemon.h index 3d0faca36..c5ad89f41 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -14,7 +14,7 @@ #define MON_DATA_OT_NAME 7 #define MON_DATA_MARKINGS 8 #define MON_DATA_CHECKSUM 9 -#define MON_DATA_10 10 +#define MON_DATA_ENCRYPT_SEPARATOR 10 #define MON_DATA_SPECIES 11 #define MON_DATA_HELD_ITEM 12 #define MON_DATA_MOVE1 13 diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h index b800e3d30..2655405e5 100644 --- a/include/pokemon_summary_screen.h +++ b/include/pokemon_summary_screen.h @@ -10,7 +10,7 @@ extern const u8 *const gNatureNamePointers[]; void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16); void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)); -u8 sub_8138B2C(void); +u8 GetMoveSlotToReplace(void); void SummaryScreen_SetUnknownTaskId(u8 a0); void SummaryScreen_DestroyUnknownTask(void); diff --git a/include/sprite.h b/include/sprite.h index 85722311f..7432306a4 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -253,6 +253,7 @@ extern s16 gSpriteCoordOffsetY; extern const struct SpriteTemplate gDummySpriteTemplate; extern struct Sprite gSprites[]; extern struct OamMatrix gOamMatrices[]; +extern bool8 gAffineAnimsDisabled; void ResetSpriteData(void); void AnimateSprites(void); diff --git a/include/strings.h b/include/strings.h index 377b6ea39..e71256907 100644 --- a/include/strings.h +++ b/include/strings.h @@ -688,7 +688,7 @@ extern const u8 gText_XWillBeSentToY[]; extern const u8 gText_ByeByeVar1[]; extern const u8 gText_XSentOverY[]; extern const u8 gText_TakeGoodCareOfX[]; -extern const u8 gUnknown_841E325[]; +extern const u8 gText_CommunicationStandby5[]; extern const u8 gTradeText_Cancel[]; extern const u8 gTradeText_ChooseAPokemon[]; extern const u8 gTradeText_Summary[]; @@ -763,4 +763,10 @@ extern const u8 gText_DecimalPoint[]; // map_name_popup extern const u8 gUnknown_841D18D[]; +// evolution_scene +extern const u8 gText_PkmnIsEvolving[]; +extern const u8 gText_CongratsPkmnEvolved[]; +extern const u8 gText_EllipsisQuestionMark[]; +extern const u8 gText_PkmnStoppedEvolving[]; + #endif //GUARD_STRINGS_H diff --git a/include/trade_scene.h b/include/trade_scene.h index 13cb1a56c..52e80e418 100644 --- a/include/trade_scene.h +++ b/include/trade_scene.h @@ -7,11 +7,11 @@ void DoInGameTradeScene(void); void DrawTextOnTradeWindow(u8 windowId, const u8 *str, s8 speed); u16 GetInGameTradeSpeciesInfo(void); u16 GetTradeSpecies(void); -void sub_805049C(void); -void sub_80504B0(void); +void InitTradeSequenceBgGpuRegs(void); +void LinkTradeDrawWindow(void); void LoadTradeAnimGfx(void); extern const u16 gUnknown_826601C[]; -extern const struct WindowTemplate gUnknown_826D1CC; +extern const struct WindowTemplate gTradeEvolutionSceneYesNoWindowTemplate; #endif //GUARD_TRADE_SCENE_H diff --git a/ld_script.txt b/ld_script.txt index 495647b45..16e7b576c 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -190,7 +190,7 @@ SECTIONS { src/hof_pc.o(.text); src/field_specials.o(.text); src/battle_records.o(.text); - asm/evolution_scene.o(.text); + src/evolution_scene.o(.text); src/coins.o(.text); src/fldeff_strength.o(.text); src/battle_transition.o(.text); @@ -474,7 +474,7 @@ SECTIONS { data/fldeff_flash.o(.rodata); src/field_specials.o(.rodata); src/battle_records.o(.rodata); - data/evolution_scene.o(.rodata); + src/evolution_scene.o(.rodata); src/battle_transition.o(.rodata); src/battle_controller_link_partner.o(.rodata); data/battle_message.o(.rodata); diff --git a/src/battle_main.c b/src/battle_main.c index 14b191e52..cb5bde9c0 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -696,7 +696,7 @@ static void CB2_InitBattleInternal(void) gBattle_BG3_X = 0; gBattle_BG3_Y = 0; gBattleTerrain = BattleSetup_GetTerrainId(); - sub_800F34C(); + InitBattleBgsVideo(); LoadBattleTextboxAndBackground(); ResetSpriteData(); ResetTasks(); @@ -1774,7 +1774,7 @@ void sub_8011A1C(void) gBattle_BG2_Y = 0; gBattle_BG3_X = 0; gBattle_BG3_Y = 0; - sub_800F34C(); + InitBattleBgsVideo(); LoadCompressedPalette(gBattleTextboxPalette, 0, 64); LoadBattleMenuWindowGfx(); ResetSpriteData(); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index c5c8e89a4..8a0e32ba8 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -5045,7 +5045,7 @@ static void atk5A_yesnoboxlearnmove(void) case 3: if (!gPaletteFade.active && gMain.callback2 == BattleMainCB2) { - u8 movePosition = sub_8138B2C(); + u8 movePosition = GetMoveSlotToReplace(); if (movePosition == 4) { @@ -9629,7 +9629,7 @@ static void atkF2_displaydexinfo(void) } break; case 3: - sub_800F34C(); + InitBattleBgsVideo(); LoadBattleTextboxAndBackground(); gBattle_BG3_X = 0x100; ++gBattleCommunication[0]; diff --git a/src/evolution_scene.c b/src/evolution_scene.c new file mode 100644 index 000000000..0e3ba19f1 --- /dev/null +++ b/src/evolution_scene.c @@ -0,0 +1,1566 @@ +#include "global.h" +#include "malloc.h" +#include "battle.h" +#include "battle_message.h" +#include "bg.h" +#include "data.h" +#include "decompress.h" +#include "help_system.h" +#include "evolution_scene.h" +#include "evolution_graphics.h" +#include "gpu_regs.h" +#include "link.h" +#include "link_rfu.h" +#include "m4a.h" +#include "event_data.h" +#include "trade_scene.h" +#include "main.h" +#include "new_menu_helpers.h" +#include "menu.h" +#include "overworld.h" +#include "palette.h" +#include "pokedex.h" +#include "pokemon.h" +#include "pokemon_summary_screen.h" +#include "scanline_effect.h" +#include "sound.h" +#include "sprite.h" +#include "string_util.h" +#include "strings.h" +#include "task.h" +#include "text.h" +#include "text_window.h" +#include "trig.h" +#include "trade.h" +#include "util.h" +#include "battle_string_ids.h" +#include "constants/species.h" +#include "constants/songs.h" +#include "constants/pokemon.h" + +struct EvoInfo +{ + u8 preEvoSpriteID; + u8 postEvoSpriteID; + u8 evoTaskID; + u8 field_3; + u16 savedPalette[48]; +}; + +// EWRAM vars +static EWRAM_DATA struct EvoInfo *sEvoStructPtr = NULL; +static EWRAM_DATA u16 *sEvoMovingBgPtr = NULL; + +// IWRAM common +void (*gCB2_AfterEvolution)(void); + +#define sEvoCursorPos gBattleCommunication[1] // when learning a new move +#define sEvoGraphicsTaskID gBattleCommunication[2] + +// this file's functions +static void Task_EvolutionScene(u8 taskId); +static void Task_TradeEvolutionScene(u8 taskId); +static void CB2_EvolutionSceneUpdate(void); +static void CB2_TradeEvolutionSceneUpdate(void); +static void EvoDummyFunc(void); +static void VBlankCB_EvolutionScene(void); +static void VBlankCB_TradeEvolutionScene(void); +static void sub_80D04A8(void); +static void InitMovingBackgroundTask(bool8 isLink); +static void sub_80D025C(u8 taskId); +static void sub_80D04E8(void); + +// const data +static const u16 gUnknown_83F6C90[] = INCBIN_U16("graphics/evolution_scene/unknown_5B4114.gbapal"); +static const u32 gUnknown_83F6CB0[] = INCBIN_U32("graphics/evolution_scene/bg.4bpp.lz"); +static const u32 gUnknown_83F73A8[] = INCBIN_U32("graphics/evolution_scene/bg.bin.lz"); +static const u32 gUnknown_83F788C[] = INCBIN_U32("graphics/evolution_scene/bg2.bin.lz"); +static const u16 gUnknown_83F7D60[] = INCBIN_U16("graphics/evolution_scene/gray_transition_intro.gbapal"); +static const u16 unref_83F7D80[] = INCBIN_U16("graphics/evolution_scene/unref_83F7D80.bin"); +static const u16 gUnknown_83F8400[] = INCBIN_U16("graphics/evolution_scene/transition.gbapal"); + +static const u8 Text_ShedinjaJapaneseName[] = _("ヌケニン"); + +static const u8 gUnknown_83F8445[] = _("{COLOR RED}{HIGHLIGHT DARK_GREY}{SHADOW GREEN}"); + +static const u8 gUnknown_83F844F[][10] = { + _("▶\n "), + _(" \n▶"), + _(" \n ") +}; + +static const u8 gUnknown_83F846D[][4] = +{ + { 0x00, 0x0C, 0x01, 0x06 }, + { 0x0D, 0x24, 0x05, 0x02 }, + { 0x0D, 0x18, 0x01, 0x02 }, + { 0x25, 0x31, 0x01, 0x06 }, +}; + +static const u8 gUnknown_83F847D[][16] = { + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 0 }, + { 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0 }, + { 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 0 }, + { 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 11, 0, 0 }, + { 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0 }, + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0 }, + { 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 12, 0, 0 }, + { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 12, 11, 0, 0 }, + { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 12, 11, 10, 0, 0 }, + { 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 12, 11, 10, 9, 0, 0 }, + { 0, 6, 7, 8, 9, 10, 11, 12, 13, 12, 11, 10, 9, 8, 0, 0 }, + { 0, 7, 8, 9, 10, 11, 12, 13, 12, 11, 10, 9, 8, 7, 0, 0 }, + { 0, 8, 9, 10, 11, 12, 13, 12, 11, 10, 9, 8, 7, 6, 0, 0 }, + { 0, 9, 10, 11, 12, 13, 12, 11, 10, 9, 8, 7, 6, 5, 0, 0 }, + { 0, 10, 11, 12, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 0, 0 }, + { 0, 11, 12, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 0, 0 }, + { 0, 12, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 0, 0 }, + { 0, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0 }, + { 0, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 2, 0, 0 }, + { 0, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 2, 3, 0, 0 }, + { 0, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 2, 3, 4, 0, 0 }, + { 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 0, 0 }, + { 0, 8, 7, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 0, 0 }, + { 0, 7, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 7, 0, 0 }, + { 0, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 7, 8, 0, 0 }, + { 0, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0 }, + { 0, 4, 3, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 0 }, + { 0, 3, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 0 }, + { 0, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0 }, + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0 }, + { 0, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0 }, + { 0, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0 }, + { 0, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0 }, + { 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0 }, + { 0, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 1, 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 } +}; + +static void CB2_BeginEvolutionScene(void) +{ + UpdatePaletteFade(); + RunTasks(); +} + +#define tState data[0] +#define tPreEvoSpecies data[1] +#define tPostEvoSpecies data[2] +#define tCanStop data[3] +#define tBits data[3] +#define tLearnsFirstMove data[4] +#define tLearnMoveState data[6] +#define tData7 data[7] +#define tData8 data[8] +#define tEvoWasStopped data[9] +#define tPartyID data[10] + +#define TASK_BIT_CAN_STOP 0x1 +#define TASK_BIT_LEARN_MOVE 0x80 + +static void Task_BeginEvolutionScene(u8 taskId) +{ + struct Pokemon* mon = NULL; + switch (gTasks[taskId].tState) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].tState++; + break; + case 1: + if (!gPaletteFade.active) + { + u16 speciesToEvolve; + bool8 canStopEvo; + u8 partyID; + + mon = &gPlayerParty[gTasks[taskId].tPartyID]; + speciesToEvolve = gTasks[taskId].tPostEvoSpecies; + canStopEvo = gTasks[taskId].tCanStop; + partyID = gTasks[taskId].tPartyID; + + DestroyTask(taskId); + EvolutionScene(mon, speciesToEvolve, canStopEvo, partyID); + } + break; + } +} + +void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID) +{ + u8 taskId = CreateTask(Task_BeginEvolutionScene, 0); + gTasks[taskId].tState = 0; + gTasks[taskId].tPostEvoSpecies = speciesToEvolve; + gTasks[taskId].tCanStop = canStopEvo; + gTasks[taskId].tPartyID = partyID; + SetMainCallback2(CB2_BeginEvolutionScene); +} + +void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID) +{ + u8 name[20]; + u16 currSpecies; + u32 trainerId, personality; + const struct CompressedSpritePalette* pokePal; + u8 ID; + + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + CpuFill32(0, (void*)(VRAM), VRAM_SIZE); + + SetGpuReg(REG_OFFSET_MOSAIC, 0); + SetGpuReg(REG_OFFSET_WIN0H, 0); + SetGpuReg(REG_OFFSET_WIN0V, 0); + SetGpuReg(REG_OFFSET_WIN1H, 0); + SetGpuReg(REG_OFFSET_WIN1V, 0); + SetGpuReg(REG_OFFSET_WININ, 0); + SetGpuReg(REG_OFFSET_WINOUT, 0); + + ResetPaletteFade(); + + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + gBattle_BG3_X = 256; + gBattle_BG3_Y = 0; + + gBattleTerrain = BATTLE_TERRAIN_PLAIN; + + InitBattleBgsVideo(); + LoadBattleTextboxAndBackground(); + ResetSpriteData(); + ScanlineEffect_Stop(); + ResetTasks(); + FreeAllSpritePalettes(); + + gReservedSpritePaletteCount = 4; + + sEvoStructPtr = AllocZeroed(sizeof(struct EvoInfo)); + AllocateMonSpritesGfx(); + + GetMonData(mon, MON_DATA_NICKNAME, name); + StringCopy10(gStringVar1, name); + StringCopy(gStringVar2, gSpeciesNames[speciesToEvolve]); + + // preEvo sprite + currSpecies = GetMonData(mon, MON_DATA_SPECIES); + trainerId = GetMonData(mon, MON_DATA_OT_ID); + personality = GetMonData(mon, MON_DATA_PERSONALITY); + DecompressPicFromTable(&gMonFrontPicTable[currSpecies], + gMonSpritesGfxPtr->sprites[1], + currSpecies); + pokePal = GetMonSpritePalStructFromOtIdPersonality(currSpecies, trainerId, personality); + LoadCompressedPalette(pokePal->data, 0x110, 0x20); + + SetMultiuseSpriteTemplateToPokemon(currSpecies, 1); + gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; + sEvoStructPtr->preEvoSpriteID = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30); + + gSprites[ID].callback = SpriteCallbackDummy2; + gSprites[ID].oam.paletteNum = 1; + gSprites[ID].invisible = TRUE; + + // postEvo sprite + DecompressPicFromTable(&gMonFrontPicTable[speciesToEvolve], + gMonSpritesGfxPtr->sprites[3], + speciesToEvolve); + pokePal = GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, trainerId, personality); + LoadCompressedPalette(pokePal->data, 0x120, 0x20); + + SetMultiuseSpriteTemplateToPokemon(speciesToEvolve, 3); + gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; + sEvoStructPtr->postEvoSpriteID = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30); + gSprites[ID].callback = SpriteCallbackDummy2; + gSprites[ID].oam.paletteNum = 2; + gSprites[ID].invisible = TRUE; + + LoadEvoSparkleSpriteAndPal(); + + sEvoStructPtr->evoTaskID = ID = CreateTask(Task_EvolutionScene, 0); + gTasks[ID].tState = 0; + gTasks[ID].tPreEvoSpecies = currSpecies; + gTasks[ID].tPostEvoSpecies = speciesToEvolve; + gTasks[ID].tCanStop = canStopEvo; + gTasks[ID].tLearnsFirstMove = TRUE; + gTasks[ID].tEvoWasStopped = FALSE; + gTasks[ID].tPartyID = partyID; + + memcpy(&sEvoStructPtr->savedPalette, &gPlttBufferUnfaded[0x20], 0x60); + + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP); + + SetHBlankCallback(EvoDummyFunc); + SetVBlankCallback(VBlankCB_EvolutionScene); + m4aMPlayAllStop(); + HelpSystem_Disable(); + SetMainCallback2(CB2_EvolutionSceneUpdate); +} + +static void CB2_EvolutionSceneLoadGraphics(void) +{ + u8 ID; + const struct CompressedSpritePalette* pokePal; + u16 postEvoSpecies; + u32 trainerId, personality; + struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoStructPtr->evoTaskID].tPartyID]; + + postEvoSpecies = gTasks[sEvoStructPtr->evoTaskID].tPostEvoSpecies; + trainerId = GetMonData(Mon, MON_DATA_OT_ID); + personality = GetMonData(Mon, MON_DATA_PERSONALITY); + + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + CpuFill32(0, (void*)(VRAM), VRAM_SIZE); + + SetGpuReg(REG_OFFSET_MOSAIC, 0); + SetGpuReg(REG_OFFSET_WIN0H, 0); + SetGpuReg(REG_OFFSET_WIN0V, 0); + SetGpuReg(REG_OFFSET_WIN1H, 0); + SetGpuReg(REG_OFFSET_WIN1V, 0); + SetGpuReg(REG_OFFSET_WININ, 0); + SetGpuReg(REG_OFFSET_WINOUT, 0); + + ResetPaletteFade(); + + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + gBattle_BG3_X = 256; + gBattle_BG3_Y = 0; + + gBattleTerrain = BATTLE_TERRAIN_PLAIN; + + InitBattleBgsVideo(); + LoadBattleTextboxAndBackground(); + ResetSpriteData(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + + DecompressPicFromTable(&gMonFrontPicTable[postEvoSpecies], + gMonSpritesGfxPtr->sprites[3], + postEvoSpecies); + pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality); + + LoadCompressedPalette(pokePal->data, 0x120, 0x20); + + SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, 3); + gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; + sEvoStructPtr->postEvoSpriteID = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30); + + gSprites[ID].callback = SpriteCallbackDummy2; + gSprites[ID].oam.paletteNum = 2; + + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP); + + SetHBlankCallback(EvoDummyFunc); + SetVBlankCallback(VBlankCB_EvolutionScene); + SetMainCallback2(CB2_EvolutionSceneUpdate); + + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); + + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); +} + +static void CB2_TradeEvolutionSceneLoadGraphics(void) +{ + struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoStructPtr->evoTaskID].tPartyID]; + u16 postEvoSpecies = gTasks[sEvoStructPtr->evoTaskID].tPostEvoSpecies; + + switch (gMain.state) + { + case 0: + SetGpuReg(REG_OFFSET_DISPCNT, 0); + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + ResetSpriteData(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + gBattle_BG3_X = 256; + gBattle_BG3_Y = 0; + gMain.state++; + break; + case 1: + ResetPaletteFade(); + SetHBlankCallback(EvoDummyFunc); + SetVBlankCallback(VBlankCB_TradeEvolutionScene); + gMain.state++; + break; + case 2: + LoadTradeAnimGfx(); + gMain.state++; + break; + case 3: + FillBgTilemapBufferRect(1, 0, 0, 0, 0x20, 0x20, 0x11); + CopyBgTilemapBufferToVram(1); + gMain.state++; + break; + case 4: + { + const struct CompressedSpritePalette* pokePal; + u32 trainerId = GetMonData(Mon, MON_DATA_OT_ID); + u32 personality = GetMonData(Mon, MON_DATA_PERSONALITY); + DecompressPicFromTable(&gMonFrontPicTable[postEvoSpecies], + gMonSpritesGfxPtr->sprites[3], + postEvoSpecies); + pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality); + LoadCompressedPalette(pokePal->data, 0x120, 0x20); + gMain.state++; + } + break; + case 5: + { + u8 ID; + + SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, 1); + gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; + sEvoStructPtr->postEvoSpriteID = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30); + + gSprites[ID].callback = SpriteCallbackDummy2; + gSprites[ID].oam.paletteNum = 2; + gMain.state++; + LinkTradeDrawWindow(); + } + break; + case 6: + if (gWirelessCommType) + { + LoadWirelessStatusIndicatorSpriteGfx(); + CreateWirelessStatusIndicatorSprite(0, 0); + } + BlendPalettes(-1,0x10, 0); + gMain.state++; + break; + case 7: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); + InitTradeSequenceBgGpuRegs(); + ShowBg(0); + ShowBg(1); + SetMainCallback2(CB2_TradeEvolutionSceneUpdate); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP); + break; + } +} + +void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID) +{ + u8 name[20]; + u16 currSpecies; + u32 trainerId, personality; + const struct CompressedSpritePalette* pokePal; + u8 ID; + + GetMonData(mon, MON_DATA_NICKNAME, name); + StringCopy10(gStringVar1, name); + StringCopy(gStringVar2, gSpeciesNames[speciesToEvolve]); + + gAffineAnimsDisabled = TRUE; + + // preEvo sprite + currSpecies = GetMonData(mon, MON_DATA_SPECIES); + personality = GetMonData(mon, MON_DATA_PERSONALITY); + trainerId = GetMonData(mon, MON_DATA_OT_ID); + + sEvoStructPtr = AllocZeroed(sizeof(struct EvoInfo)); + sEvoStructPtr->preEvoSpriteID = preEvoSpriteID; + + DecompressPicFromTable(&gMonFrontPicTable[speciesToEvolve], + gMonSpritesGfxPtr->sprites[1], + speciesToEvolve); + + pokePal = GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, trainerId, personality); + LoadCompressedPalette(pokePal->data, 0x120, 0x20); + + SetMultiuseSpriteTemplateToPokemon(speciesToEvolve, 1); + gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; + sEvoStructPtr->postEvoSpriteID = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30); + + gSprites[ID].callback = SpriteCallbackDummy2; + gSprites[ID].oam.paletteNum = 2; + gSprites[ID].invisible = TRUE; + + LoadEvoSparkleSpriteAndPal(); + + sEvoStructPtr->evoTaskID = ID = CreateTask(Task_TradeEvolutionScene, 0); + gTasks[ID].tState = 0; + gTasks[ID].tPreEvoSpecies = currSpecies; + gTasks[ID].tPostEvoSpecies = speciesToEvolve; + gTasks[ID].tLearnsFirstMove = TRUE; + gTasks[ID].tEvoWasStopped = FALSE; + gTasks[ID].tPartyID = partyID; + + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + gBattle_BG3_X = 256; + gBattle_BG3_Y = 0; + + gTextFlags.useAlternateDownArrow = 1; + + SetVBlankCallback(VBlankCB_TradeEvolutionScene); + SetMainCallback2(CB2_TradeEvolutionSceneUpdate); +} + +static void CB2_EvolutionSceneUpdate(void) +{ + AnimateSprites(); + BuildOamBuffer(); + RunTextPrinters(); + UpdatePaletteFade(); + RunTasks(); +} + +static void CB2_TradeEvolutionSceneUpdate(void) +{ + AnimateSprites(); + BuildOamBuffer(); + RunTextPrinters(); + UpdatePaletteFade(); + RunTasks(); +} + +static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon) +{ + u32 data = 0; + if (gEvolutionTable[preEvoSpecies][0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < 6) + { + s32 i; + struct Pokemon* shedinja = &gPlayerParty[gPlayerPartyCount]; + const struct Evolution *evos; + const struct Evolution *evos2; + + CopyMon(&gPlayerParty[gPlayerPartyCount], mon, sizeof(struct Pokemon)); + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_SPECIES, (&gEvolutionTable[preEvoSpecies][1].targetSpecies)); + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_NICKNAME, (gSpeciesNames[gEvolutionTable[preEvoSpecies][1].targetSpecies])); + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_HELD_ITEM, (&data)); + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MARKINGS, (&data)); + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_ENCRYPT_SEPARATOR, (&data)); + + for (i = MON_DATA_COOL_RIBBON; i < MON_DATA_COOL_RIBBON + 5; i++) + SetMonData(&gPlayerParty[gPlayerPartyCount], i, (&data)); + for (i = MON_DATA_CHAMPION_RIBBON; i <= MON_DATA_FATEFUL_ENCOUNTER; i++) + SetMonData(&gPlayerParty[gPlayerPartyCount], i, (&data)); + + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_STATUS, (&data)); + data = 0xFF; + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MAIL, (&data)); + + CalculateMonStats(&gPlayerParty[gPlayerPartyCount]); + CalculatePlayerPartyCount(); + + // can't match it otherwise, ehh + evos2 = gEvolutionTable[0]; + evos = evos2 + EVOS_PER_MON * preEvoSpecies; + + GetSetPokedexFlag(SpeciesToNationalPokedexNum(evos[1].targetSpecies), FLAG_SET_SEEN); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(evos[1].targetSpecies), FLAG_SET_CAUGHT); + + if (GetMonData(shedinja, MON_DATA_SPECIES) == SPECIES_SHEDINJA + && GetMonData(shedinja, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE + && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_NINJASK) + SetMonData(shedinja, MON_DATA_NICKNAME, Text_ShedinjaJapaneseName); + } +} + +static void Task_EvolutionScene(u8 taskId) +{ + u32 var; + struct Pokemon* mon = &gPlayerParty[gTasks[taskId].tPartyID]; + + // National dex check + if (!IsNationalPokedexEnabled() + && gTasks[taskId].tState == 8 + && gTasks[taskId].tPostEvoSpecies > SPECIES_MEW) + { + gTasks[taskId].tState = 17; + gTasks[taskId].tEvoWasStopped = TRUE; + gTasks[sEvoGraphicsTaskID].EvoGraphicsTaskEvoStop = TRUE; + sub_80D04A8(); + return; + } + + // check if B Button was held, so the evolution gets stopped + if (gMain.heldKeys == B_BUTTON + && gTasks[taskId].tState == 8 + && gTasks[sEvoGraphicsTaskID].isActive + && gTasks[taskId].tBits & TASK_BIT_CAN_STOP) + { + gTasks[taskId].tState = 17; + gTasks[sEvoGraphicsTaskID].EvoGraphicsTaskEvoStop = TRUE; + sub_80D04A8(); + return; + } + + switch (gTasks[taskId].tState) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); + gSprites[sEvoStructPtr->preEvoSpriteID].invisible = FALSE; + gTasks[taskId].tState++; + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + break; + case 1: // print 'whoa, poke is evolving!!!' msg + if (!gPaletteFade.active) + { + StringExpandPlaceholders(gStringVar4, gText_PkmnIsEvolving); + BattlePutTextOnWindow(gStringVar4, 0); + gTasks[taskId].tState++; + } + break; + case 2: // wait for string, animate mon(and play its cry) + if (!IsTextPrinterActive(0)) + { + PlayCry1(gTasks[taskId].tPreEvoSpecies, 0); + gTasks[taskId].tState++; + } + break; + case 3: + if (IsCryFinished()) // wait for animation, play tu du SE + { + PlaySE(MUS_ME_SHINKA); + gTasks[taskId].tState++; + } + break; + case 4: // play evolution music and fade screen black + if (!IsSEPlaying()) + { + PlayNewMapMusic(MUS_SHINKA); + gTasks[taskId].tState++; + BeginNormalPaletteFade(0x1C, 4, 0, 0x10, RGB_BLACK); + } + break; + case 5: // launch moving bg task, preapre evo sparkles + if (!gPaletteFade.active) + { + InitMovingBackgroundTask(FALSE); + sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet1(17); + gTasks[taskId].tState++; + } + break; + case 6: // another set of evo sparkles + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + gTasks[taskId].tState++; + sEvoStructPtr->field_3 = 1; + sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet2(); + } + break; + case 7: // launch task that flashes pre evo with post evo sprites + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + sEvoGraphicsTaskID = LaunchTask_PrePostEvoMonSprites(sEvoStructPtr->preEvoSpriteID, sEvoStructPtr->postEvoSpriteID); + gTasks[taskId].tState++; + } + break; + case 8: // wait for the above task to finish + if (--sEvoStructPtr->field_3 == 0) + { + sEvoStructPtr->field_3 = 3; + if (!gTasks[sEvoGraphicsTaskID].isActive) + gTasks[taskId].tState++; + } + break; + case 9: // post evo sparkles + sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet1(); + gTasks[taskId].tState++; + break; + case 10: + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet2AndFlash(gTasks[taskId].tPostEvoSpecies); + gTasks[taskId].tState++; + } + break; + case 11: // play tu du sound after evolution + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + PlaySE(SE_EXP); + gTasks[taskId].tState++; + } + break; + case 12: // stop music, return screen to pre-fade state + if (IsSEPlaying()) + { + m4aMPlayAllStop(); + memcpy(&gPlttBufferUnfaded[0x20], sEvoStructPtr->savedPalette, 0x60); + sub_80D04E8(); + BeginNormalPaletteFade(0x1C, 0, 0x10, 0, RGB_BLACK); + gTasks[taskId].tState++; + } + break; + case 13: // animate mon + if (!gPaletteFade.active) + { + PlayCry1(gTasks[taskId].tPostEvoSpecies, 0); + gTasks[taskId].tState++; + } + break; + case 14: // congratulations string and rename prompt + if (IsCryFinished()) + { + StringExpandPlaceholders(gStringVar4, gText_CongratsPkmnEvolved); + BattlePutTextOnWindow(gStringVar4, 0); + PlayBGM(MUS_FANFA5); + gTasks[taskId].tState++; + SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskId].tPostEvoSpecies)); + CalculateMonStats(mon); + EvolutionRenameMon(mon, gTasks[taskId].tPreEvoSpecies, gTasks[taskId].tPostEvoSpecies); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskId].tPostEvoSpecies), FLAG_SET_SEEN); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskId].tPostEvoSpecies), FLAG_SET_CAUGHT); + IncrementGameStat(GAME_STAT_EVOLVED_POKEMON); + } + break; + case 15: // check if it wants to learn a new move + if (!IsTextPrinterActive(0)) + { + HelpSystem_Enable(); + var = MonTryLearningNewMove(mon, gTasks[taskId].tLearnsFirstMove); + if (var != 0 && !gTasks[taskId].tEvoWasStopped) + { + u8 text[20]; + + StopMapMusic(); + Overworld_PlaySpecialMapMusic(); + gTasks[taskId].tBits |= TASK_BIT_LEARN_MOVE; + gTasks[taskId].tLearnsFirstMove = FALSE; + gTasks[taskId].tLearnMoveState = 0; + GetMonData(mon, MON_DATA_NICKNAME, text); + StringCopy10(gBattleTextBuff1, text); + + if (var == MON_HAS_MAX_MOVES) + gTasks[taskId].tState = 22; + else if (var == MON_ALREADY_KNOWS_MOVE) + break; + else + gTasks[taskId].tState = 20; // move has been learned + } + else // no move to learn + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].tState++; + } + } + break; + case 16: // task has finished, return + if (!gPaletteFade.active) + { + if (!(gTasks[taskId].tBits & TASK_BIT_LEARN_MOVE)) + { + StopMapMusic(); + Overworld_PlaySpecialMapMusic(); + } + if (!gTasks[taskId].tEvoWasStopped) + CreateShedinja(gTasks[taskId].tPreEvoSpecies, mon); + + DestroyTask(taskId); + FreeMonSpritesGfx(); + Free(sEvoStructPtr); + sEvoStructPtr = NULL; + FreeAllWindowBuffers(); + SetMainCallback2(gCB2_AfterEvolution); + } + break; + case 17: // evolution has been canceled, stop music and re-fade palette + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + m4aMPlayAllStop(); + BeginNormalPaletteFade(0x6001C, 0, 0x10, 0, RGB_WHITE); + gTasks[taskId].tState++; + } + break; + case 18: // animate pokemon trying to evolve again, evolution has been stopped + if (!gPaletteFade.active) + { + PlayCry1(gTasks[taskId].tPreEvoSpecies, 0); + gTasks[taskId].tState++; + } + break; + case 19: // after the animation, print the string 'WHOA IT DID NOT EVOLVE!!!' + if (IsCryFinished()) + { + if (gTasks[taskId].tEvoWasStopped) + StringExpandPlaceholders(gStringVar4, gText_EllipsisQuestionMark); + else + StringExpandPlaceholders(gStringVar4, gText_PkmnStoppedEvolving); + + BattlePutTextOnWindow(gStringVar4, 0); + gTasks[taskId].tEvoWasStopped = TRUE; + gTasks[taskId].tState = 15; + } + break; + case 20: // pokemon learned a new move, print string and play a fanfare + if (!IsTextPrinterActive(0) && !IsSEPlaying()) + { + BufferMoveToLearnIntoBattleTextBuff2(); + PlayFanfare(MUS_FANFA1); + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNLEARNEDMOVE - BATTLESTRINGS_ID_ADDER]); + BattlePutTextOnWindow(gDisplayedStringBattle, 0); + gTasks[taskId].tLearnsFirstMove = 0x40; // re-used as a counter + gTasks[taskId].tState++; + } + break; + case 21: // wait a bit and check if can learn another move + if (!IsTextPrinterActive(0) && !IsSEPlaying() && --gTasks[taskId].tLearnsFirstMove == 0) + gTasks[taskId].tState = 15; + break; + case 22: // try to learn a new move + switch (gTasks[taskId].tLearnMoveState) + { + case 0: + if (!IsTextPrinterActive(0) && !IsSEPlaying()) + { + BufferMoveToLearnIntoBattleTextBuff2(); + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE1 - BATTLESTRINGS_ID_ADDER]); + BattlePutTextOnWindow(gDisplayedStringBattle, 0); + gTasks[taskId].tLearnMoveState++; + } + break; + case 1: + if (!IsTextPrinterActive(0) && !IsSEPlaying()) + { + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE2 - BATTLESTRINGS_ID_ADDER]); + BattlePutTextOnWindow(gDisplayedStringBattle, 0); + gTasks[taskId].tLearnMoveState++; + } + break; + case 2: + if (!IsTextPrinterActive(0) && !IsSEPlaying()) + { + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE3 - BATTLESTRINGS_ID_ADDER]); + BattlePutTextOnWindow(gDisplayedStringBattle, 0); + gTasks[taskId].tData7 = 5; + gTasks[taskId].tData8 = 10; + gTasks[taskId].tLearnMoveState++; + } + case 3: + if (!IsTextPrinterActive(0) && !IsSEPlaying()) + { + HandleBattleWindow(0x17, 8, 0x1D, 0xD, 0); + BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xE); + gTasks[taskId].tLearnMoveState++; + sEvoCursorPos = 0; + BattleCreateYesNoCursorAt(); + } + break; + case 4: + if (JOY_NEW(DPAD_UP) && sEvoCursorPos != 0) + { + PlaySE(SE_SELECT); + BattleDestroyYesNoCursorAt(); + sEvoCursorPos = 0; + BattleCreateYesNoCursorAt(); + } + if (JOY_NEW(DPAD_DOWN) && sEvoCursorPos == 0) + { + PlaySE(SE_SELECT); + BattleDestroyYesNoCursorAt(); + sEvoCursorPos = 1; + BattleCreateYesNoCursorAt(); + } + if (JOY_NEW(A_BUTTON)) + { + HandleBattleWindow(0x17, 8, 0x1D, 0xD, WINDOW_CLEAR); + PlaySE(SE_SELECT); + + if (sEvoCursorPos != 0) + { + gTasks[taskId].tLearnMoveState = gTasks[taskId].tData8; + } + else + { + gTasks[taskId].tLearnMoveState = gTasks[taskId].tData7; + if (gTasks[taskId].tLearnMoveState == 5) + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + } + } + if (JOY_NEW(B_BUTTON)) + { + HandleBattleWindow(0x17, 8, 0x1D, 0xD, WINDOW_CLEAR); + PlaySE(SE_SELECT); + gTasks[taskId].tLearnMoveState = gTasks[taskId].tData8; + } + break; + case 5: + if (!gPaletteFade.active) + { + FreeAllWindowBuffers(); + ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskId].tPartyID, + gPlayerPartyCount - 1, CB2_EvolutionSceneLoadGraphics, + gMoveToLearn); + gTasks[taskId].tLearnMoveState++; + } + break; + case 6: + if (!gPaletteFade.active && gMain.callback2 == CB2_EvolutionSceneUpdate) + { + var = GetMoveSlotToReplace(); + if (var == MAX_MON_MOVES) + { + gTasks[taskId].tLearnMoveState = 10; + } + else + { + u16 move = GetMonData(mon, var + MON_DATA_MOVE1); + if (IsHMMove2(move)) + { + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_HMMOVESCANTBEFORGOTTEN - BATTLESTRINGS_ID_ADDER]); + BattlePutTextOnWindow(gDisplayedStringBattle, 0); + gTasks[taskId].tLearnMoveState = 12; + } + else + { + PREPARE_MOVE_BUFFER(gBattleTextBuff2, move) + + RemoveMonPPBonus(mon, var); + SetMonMoveSlot(mon, gMoveToLearn, var); + gTasks[taskId].tLearnMoveState++; + } + } + } + break; + case 7: + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_123POOF - BATTLESTRINGS_ID_ADDER]); + BattlePutTextOnWindow(gDisplayedStringBattle, 0); + gTasks[taskId].tLearnMoveState++; + break; + case 8: + if (!IsTextPrinterActive(0) && !IsSEPlaying()) + { + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNFORGOTMOVE - BATTLESTRINGS_ID_ADDER]); + BattlePutTextOnWindow(gDisplayedStringBattle, 0); + gTasks[taskId].tLearnMoveState++; + } + break; + case 9: + if (!IsTextPrinterActive(0) && !IsSEPlaying()) + { + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_ANDELLIPSIS - BATTLESTRINGS_ID_ADDER]); + BattlePutTextOnWindow(gDisplayedStringBattle, 0); + gTasks[taskId].tState = 20; + } + break; + case 10: + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_STOPLEARNINGMOVE - BATTLESTRINGS_ID_ADDER]); + BattlePutTextOnWindow(gDisplayedStringBattle, 0); + gTasks[taskId].tData7 = 11; + gTasks[taskId].tData8 = 0; + gTasks[taskId].tLearnMoveState = 3; + break; + case 11: + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_DIDNOTLEARNMOVE - BATTLESTRINGS_ID_ADDER]); + BattlePutTextOnWindow(gDisplayedStringBattle, 0); + gTasks[taskId].tState = 15; + break; + case 12: + if (!IsTextPrinterActive(0) && !IsSEPlaying()) + gTasks[taskId].tLearnMoveState = 5; + break; + } + break; + } +} + +static void Task_TradeEvolutionScene(u8 taskId) +{ + u32 var = 0; + struct Pokemon* mon = &gPlayerParty[gTasks[taskId].tPartyID]; + + // National dex check + if (!IsNationalPokedexEnabled() + && gTasks[taskId].tState == 7 + && gTasks[taskId].tPostEvoSpecies > SPECIES_MEW) + { + gTasks[taskId].tState = 15; + gTasks[taskId].tEvoWasStopped = TRUE; + if (gTasks[sEvoGraphicsTaskID].isActive) + { + gTasks[sEvoGraphicsTaskID].EvoGraphicsTaskEvoStop = TRUE; + sub_80D04A8(); + } + } + + switch (gTasks[taskId].tState) + { + case 0: + StringExpandPlaceholders(gStringVar4, gText_PkmnIsEvolving); + DrawTextOnTradeWindow(0, gStringVar4, 1); + gTasks[taskId].tState++; + break; + case 1: + if (!IsTextPrinterActive(0)) + { + PlayCry1(gTasks[taskId].tPreEvoSpecies, 0); + gTasks[taskId].tState++; + } + break; + case 2: + if (IsCryFinished()) + { + m4aSongNumStop(MUS_SHINKA); + PlaySE(MUS_ME_SHINKA); + gTasks[taskId].tState++; + } + break; + case 3: + if (!IsSEPlaying()) + { + PlayBGM(MUS_SHINKA); + gTasks[taskId].tState++; + BeginNormalPaletteFade(0x1C, 4, 0, 0x10, RGB_BLACK); + } + break; + case 4: + if (!gPaletteFade.active) + { + InitMovingBackgroundTask(TRUE); + var = gSprites[sEvoStructPtr->preEvoSpriteID].oam.paletteNum + 16; + sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet1(var); + gTasks[taskId].tState++; + SetGpuReg(REG_OFFSET_BG3CNT, 0x603); + } + break; + case 5: + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + gTasks[taskId].tState++; + sEvoStructPtr->field_3 = 1; + sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet2(); + } + break; + case 6: + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + sEvoGraphicsTaskID = LaunchTask_PrePostEvoMonSprites(sEvoStructPtr->preEvoSpriteID, sEvoStructPtr->postEvoSpriteID); + gTasks[taskId].tState++; + } + break; + case 7: + if (--sEvoStructPtr->field_3 == 0) + { + sEvoStructPtr->field_3 = 3; + if (!gTasks[sEvoGraphicsTaskID].isActive) + gTasks[taskId].tState++; + } + break; + case 8: + sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet1(); + gTasks[taskId].tState++; + break; + case 9: + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet2AndFlash_Trade(gTasks[taskId].tPostEvoSpecies); + gTasks[taskId].tState++; + } + break; + case 10: + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + PlaySE(SE_EXP); + gTasks[taskId].tState++; + } + break; + case 11: + /* + * BUG: This check causes the evolved Pokemon's cry to play over the sfx. + * Negate the below condition. + */ + if (IsSEPlaying()) + { +// Free(sEvoMovingBgPtr); + PlayCry1(gTasks[taskId].tPostEvoSpecies, 0); + memcpy(&gPlttBufferUnfaded[0x20], sEvoStructPtr->savedPalette, 0x60); + gTasks[taskId].tState++; + } + break; + case 12: + if (IsCryFinished()) + { + StringExpandPlaceholders(gStringVar4, gText_CongratsPkmnEvolved); + DrawTextOnTradeWindow(0, gStringVar4, 1); + PlayFanfare(MUS_FANFA5); + gTasks[taskId].tState++; + SetMonData(mon, MON_DATA_SPECIES, (&gTasks[taskId].tPostEvoSpecies)); + CalculateMonStats(mon); + EvolutionRenameMon(mon, gTasks[taskId].tPreEvoSpecies, gTasks[taskId].tPostEvoSpecies); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskId].tPostEvoSpecies), FLAG_SET_SEEN); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskId].tPostEvoSpecies), FLAG_SET_CAUGHT); + IncrementGameStat(GAME_STAT_EVOLVED_POKEMON); + } + break; + case 13: + if (!IsTextPrinterActive(0) && IsFanfareTaskInactive() == TRUE) + { + var = MonTryLearningNewMove(mon, gTasks[taskId].tLearnsFirstMove); + if (var != 0 && !gTasks[taskId].tEvoWasStopped) + { + u8 text[20]; + + gTasks[taskId].tBits |= TASK_BIT_LEARN_MOVE; + gTasks[taskId].tLearnsFirstMove = FALSE; + gTasks[taskId].tLearnMoveState = 0; + GetMonData(mon, MON_DATA_NICKNAME, text); + StringCopy10(gBattleTextBuff1, text); + + if (var == MON_HAS_MAX_MOVES) + gTasks[taskId].tState = 20; + else if (var == MON_ALREADY_KNOWS_MOVE) + break; + else + gTasks[taskId].tState = 18; + } + else + { + PlayBGM(MUS_SHINKA); + DrawTextOnTradeWindow(0, gText_CommunicationStandby5, 1); + gTasks[taskId].tState++; + } + } + break; + case 14: + if (!IsTextPrinterActive(0)) + { + DestroyTask(taskId); + Free(sEvoStructPtr); + sEvoStructPtr = NULL; + gTextFlags.useAlternateDownArrow = 0; + SetMainCallback2(gCB2_AfterEvolution); + } + break; + case 15: + if (!gTasks[sEvoGraphicsTaskID].isActive) + { + m4aMPlayAllStop(); + BeginNormalPaletteFade((1 << (gSprites[sEvoStructPtr->preEvoSpriteID].oam.paletteNum + 16)) | (0x4001C), 0, 0x10, 0, RGB_WHITE); + gTasks[taskId].tState++; + } + break; + case 16: + if (!gPaletteFade.active) + { + PlayCry1(gTasks[taskId].tPreEvoSpecies, 0); + gTasks[taskId].tState++; + } + break; + case 17: + if (IsCryFinished()) + { + StringExpandPlaceholders(gStringVar4, gText_EllipsisQuestionMark); + DrawTextOnTradeWindow(0, gStringVar4, 1); + gTasks[taskId].tEvoWasStopped = 1; + gTasks[taskId].tState = 13; + } + break; + case 18: + if (!IsTextPrinterActive(0) && !IsSEPlaying()) + { + BufferMoveToLearnIntoBattleTextBuff2(); + PlayFanfare(MUS_FANFA1); + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNLEARNEDMOVE - BATTLESTRINGS_ID_ADDER]); + DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); + gTasks[taskId].tLearnsFirstMove = 0x40; // re-used as a counter + gTasks[taskId].tState++; + } + break; + case 19: + if (!IsTextPrinterActive(0) && IsFanfareTaskInactive() == TRUE && --gTasks[taskId].tLearnsFirstMove == 0) + gTasks[taskId].tState = 13; + break; + case 20: + switch (gTasks[taskId].tLearnMoveState) + { + case 0: + if (!IsTextPrinterActive(0) && !IsSEPlaying()) + { + BufferMoveToLearnIntoBattleTextBuff2(); + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE1 - BATTLESTRINGS_ID_ADDER]); + DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); + gTasks[taskId].tLearnMoveState++; + } + break; + case 1: + if (!IsTextPrinterActive(0) && !IsSEPlaying()) + { + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE2 - BATTLESTRINGS_ID_ADDER]); + DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); + gTasks[taskId].tLearnMoveState++; + } + break; + case 2: + if (!IsTextPrinterActive(0) && !IsSEPlaying()) + { + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE3 - BATTLESTRINGS_ID_ADDER]); + DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); + gTasks[taskId].tData7 = 5; + gTasks[taskId].tData8 = 9; + gTasks[taskId].tLearnMoveState++; + } + case 3: + if (!IsTextPrinterActive(0) && !IsSEPlaying()) + { + LoadUserWindowBorderGfx(0, 0xA8, 0xE0); + CreateYesNoMenu(&gTradeEvolutionSceneYesNoWindowTemplate, 3, 0, 2, 0xA8, 0xE, 0); + sEvoCursorPos = 0; + gTasks[taskId].tLearnMoveState++; + sEvoCursorPos = 0; + } + break; + case 4: + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: + sEvoCursorPos = 0; + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_EMPTYSTRING3 - BATTLESTRINGS_ID_ADDER]); + DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); + gTasks[taskId].tLearnMoveState = gTasks[taskId].tData7; + if (gTasks[taskId].tLearnMoveState == 5) + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + break; + case 1: + case -1: + sEvoCursorPos = 1; + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_EMPTYSTRING3 - BATTLESTRINGS_ID_ADDER]); + DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); + gTasks[taskId].tLearnMoveState = gTasks[taskId].tData8; + break; + } + break; + case 5: + if (!gPaletteFade.active) + { + if (gWirelessCommType) + DestroyWirelessStatusIndicatorSprite(); + + Free(GetBgTilemapBuffer(3)); + Free(GetBgTilemapBuffer(1)); + Free(GetBgTilemapBuffer(0)); + FreeAllWindowBuffers(); + + ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskId].tPartyID, + gPlayerPartyCount - 1, CB2_TradeEvolutionSceneLoadGraphics, + gMoveToLearn); + gTasks[taskId].tLearnMoveState++; + } + break; + case 6: + if (!gPaletteFade.active && gMain.callback2 == CB2_TradeEvolutionSceneUpdate) + { + var = GetMoveSlotToReplace(); + if (var == MAX_MON_MOVES) + { + gTasks[taskId].tLearnMoveState = 9; + } + else + { + u16 move = GetMonData(mon, var + MON_DATA_MOVE1); + if (IsHMMove2(move)) + { + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_HMMOVESCANTBEFORGOTTEN - BATTLESTRINGS_ID_ADDER]); + DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); + gTasks[taskId].tLearnMoveState = 11; + } + else + { + PREPARE_MOVE_BUFFER(gBattleTextBuff2, move) + + RemoveMonPPBonus(mon, var); + SetMonMoveSlot(mon, gMoveToLearn, var); + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_123POOF - BATTLESTRINGS_ID_ADDER]); + DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); + gTasks[taskId].tLearnMoveState++; + } + } + } + break; + case 7: + if (!IsTextPrinterActive(0) && !IsSEPlaying()) + { + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNFORGOTMOVE - BATTLESTRINGS_ID_ADDER]); + DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); + gTasks[taskId].tLearnMoveState++; + } + break; + case 8: + if (!IsTextPrinterActive(0) && !IsSEPlaying()) + { + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_ANDELLIPSIS - BATTLESTRINGS_ID_ADDER]); + DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); + gTasks[taskId].tState = 18; + } + break; + case 9: + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_STOPLEARNINGMOVE - BATTLESTRINGS_ID_ADDER]); + DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); + gTasks[taskId].tData7 = 10; + gTasks[taskId].tData8 = 0; + gTasks[taskId].tLearnMoveState = 3; + break; + case 10: + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_DIDNOTLEARNMOVE - BATTLESTRINGS_ID_ADDER]); + DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); + gTasks[taskId].tState = 13; + break; + case 11: + if (!IsTextPrinterActive(0) && !IsSEPlaying()) + gTasks[taskId].tLearnMoveState = 5; + break; + } + break; + } +} + +#undef tState +#undef tPreEvoSpecies +#undef tPostEvoSpecies +#undef tCanStop +#undef tBits +#undef tLearnsFirstMove +#undef tLearnMoveState +#undef tData7 +#undef tData8 +#undef tEvoWasStopped +#undef tPartyID + +static void EvoDummyFunc(void) +{ +} + +static void VBlankCB_EvolutionScene(void) +{ + SetGpuReg(REG_OFFSET_BG0HOFS, gBattle_BG0_X); + SetGpuReg(REG_OFFSET_BG0VOFS, gBattle_BG0_Y); + SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); + SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); + SetGpuReg(REG_OFFSET_BG2HOFS, gBattle_BG2_X); + SetGpuReg(REG_OFFSET_BG2VOFS, gBattle_BG2_Y); + SetGpuReg(REG_OFFSET_BG3HOFS, gBattle_BG3_X); + SetGpuReg(REG_OFFSET_BG3VOFS, gBattle_BG3_Y); + + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + ScanlineEffect_InitHBlankDmaTransfer(); +} + +static void VBlankCB_TradeEvolutionScene(void) +{ + SetGpuReg(REG_OFFSET_BG0HOFS, gBattle_BG0_X); + SetGpuReg(REG_OFFSET_BG0VOFS, gBattle_BG0_Y); + SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); + SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); + SetGpuReg(REG_OFFSET_BG2HOFS, gBattle_BG2_X); + SetGpuReg(REG_OFFSET_BG2VOFS, gBattle_BG2_Y); + SetGpuReg(REG_OFFSET_BG3HOFS, gBattle_BG3_X); + SetGpuReg(REG_OFFSET_BG3VOFS, gBattle_BG3_Y); + + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + ScanlineEffect_InitHBlankDmaTransfer(); +} + +static void sub_80D0160(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (data[6] != 0) + return; + if (data[5]++ < 20) + return; + + if (data[0]++ > gUnknown_83F846D[data[2]][3]) + { + if (gUnknown_83F846D[data[2]][1] == data[1]) + { + data[3]++; + if (data[3] == gUnknown_83F846D[data[2]][2]) + { + data[3] = 0; + data[2]++; + } + data[1] = gUnknown_83F846D[data[2]][0]; + } + else + { + LoadPalette(&sEvoMovingBgPtr[data[1] * 16], 0xA0, 0x20); + data[0] = 0; + data[1]++; + } + } + + if (data[2] == 4) + DestroyTask(taskId); +} + +static void sub_80D0218(bool8 isLink) +{ + u8 taskId = CreateTask(sub_80D025C, 7); + + if (!isLink) + gTasks[taskId].data[2] = 0; + else + gTasks[taskId].data[2] = 1; +} + +static void sub_80D025C(u8 taskId) +{ + u16 *outer_X, *outer_Y; + + u16 *inner_X = &gBattle_BG1_X; + u16 *inner_Y = &gBattle_BG1_Y; + + if (!gTasks[taskId].data[2]) + { + outer_X = &gBattle_BG2_X; + outer_Y = &gBattle_BG2_Y; + } + else + { + outer_X = &gBattle_BG3_X; + outer_Y = &gBattle_BG3_Y; + } + + gTasks[taskId].data[0] = (gTasks[taskId].data[0] + 5) & 0xFF; + gTasks[taskId].data[1] = (gTasks[taskId].data[0] + 0x80) & 0xFF; + + *inner_X = Cos(gTasks[taskId].data[0], 4) + 8; + *inner_Y = Sin(gTasks[taskId].data[0], 4) + 16; + + *outer_X = Cos(gTasks[taskId].data[1], 4) + 8; + *outer_Y = Sin(gTasks[taskId].data[1], 4) + 16; + + if (!FuncIsActiveTask(sub_80D0160)) + { + DestroyTask(taskId); + + *inner_X = 0; + *inner_Y = 0; + + *outer_X = 256; + *outer_Y = 0; + } +} + +static void InitMovingBgValues(u16 *movingBgs) +{ + s32 i, j; + + for (i = 0; i < 50; i++) + { + for (j = 0; j < 16; j++) + { + movingBgs[i * 16 + j] = gUnknown_83F8400[gUnknown_83F847D[i][j]]; + } + } +} + +static void InitMovingBackgroundTask(bool8 isLink) +{ + u8 innerBgId, outerBgId; + + sEvoMovingBgPtr = AllocZeroed(0x640); + InitMovingBgValues(sEvoMovingBgPtr); + + if (!isLink) + innerBgId = 1, outerBgId = 2; + else + innerBgId = 1, outerBgId = 3; + + LoadPalette(gUnknown_83F7D60, 0xA0, 0x20); + + DecompressAndLoadBgGfxUsingHeap(1, gUnknown_83F6CB0, FALSE, 0, 0); + CopyToBgTilemapBuffer(1, gUnknown_83F73A8, 0, 0); + CopyToBgTilemapBuffer(outerBgId, gUnknown_83F788C, 0, 0); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(outerBgId); + + if (!isLink) + { + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG2); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 8)); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG2_ON | DISPCNT_BG1_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP); + + SetBgAttribute(innerBgId, BG_ATTR_PRIORITY, 2); + SetBgAttribute(outerBgId, BG_ATTR_PRIORITY, 2); + + ShowBg(1); + ShowBg(2); + } + else + { + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG3); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 8)); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG3_ON | DISPCNT_BG1_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP); + } + + CreateTask(sub_80D0160, 5); + sub_80D0218(isLink); +} + +void sub_80D0474(void) // unused +{ + u8 taskId = FindTaskIdByFunc(sub_80D0160); + + if (taskId != 0xFF) + gTasks[taskId].data[6] = 1; + + FillPalette(0, 0xA0, 0x20); +} + +static void sub_80D04A8(void) +{ + u8 taskId; + + if ((taskId = FindTaskIdByFunc(sub_80D0160)) != 0xFF) + DestroyTask(taskId); + if ((taskId = FindTaskIdByFunc(sub_80D025C)) != 0xFF) + DestroyTask(taskId); + + FillPalette(0, 0xA0, 0x20); + sub_80D04E8(); +} + +static void sub_80D04E8(void) +{ + SetGpuReg(REG_OFFSET_BLDCNT, 0); + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + SetBgAttribute(1, BG_ATTR_PRIORITY, sub_8011C44(1, 5)); + SetBgAttribute(2, BG_ATTR_PRIORITY, sub_8011C44(2, 5)); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG3_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP); + Free(sEvoMovingBgPtr); +} diff --git a/src/pokemon.c b/src/pokemon.c index 7989045c2..9aaddc142 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -2899,7 +2899,7 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data) struct PokemonSubstruct2 *substruct2 = NULL; struct PokemonSubstruct3 *substruct3 = NULL; - if (field > MON_DATA_10) + if (field > MON_DATA_ENCRYPT_SEPARATOR) { substruct0 = &(GetSubstruct(boxMon, boxMon->personality, 0)->type0); substruct1 = &(GetSubstruct(boxMon, boxMon->personality, 1)->type1); @@ -2995,7 +2995,7 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data) case MON_DATA_CHECKSUM: retVal = boxMon->checksum; break; - case MON_DATA_10: + case MON_DATA_ENCRYPT_SEPARATOR: retVal = boxMon->unknown; break; case MON_DATA_SPECIES: @@ -3236,7 +3236,7 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data) break; } - if (field > MON_DATA_10) + if (field > MON_DATA_ENCRYPT_SEPARATOR) EncryptBoxMon(boxMon); return retVal; @@ -3323,7 +3323,7 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg) struct PokemonSubstruct2 *substruct2 = NULL; struct PokemonSubstruct3 *substruct3 = NULL; - if (field > MON_DATA_10) + if (field > MON_DATA_ENCRYPT_SEPARATOR) { substruct0 = &(GetSubstruct(boxMon, boxMon->personality, 0)->type0); substruct1 = &(GetSubstruct(boxMon, boxMon->personality, 1)->type1); @@ -3382,7 +3382,7 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg) case MON_DATA_CHECKSUM: SET16(boxMon->checksum); break; - case MON_DATA_10: + case MON_DATA_ENCRYPT_SEPARATOR: SET16(boxMon->unknown); break; case MON_DATA_SPECIES: @@ -3582,7 +3582,7 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg) break; } - if (field > MON_DATA_10) + if (field > MON_DATA_ENCRYPT_SEPARATOR) { boxMon->checksum = CalculateBoxMonChecksum(boxMon); EncryptBoxMon(boxMon); diff --git a/src/trade_scene.c b/src/trade_scene.c index 7b738aa52..fc0e97573 100644 --- a/src/trade_scene.c +++ b/src/trade_scene.c @@ -488,7 +488,7 @@ static const struct WindowTemplate gUnknown_826D1BC[] = { }, DUMMY_WIN_TEMPLATE }; -const struct WindowTemplate gUnknown_826D1CC = { +const struct WindowTemplate gTradeEvolutionSceneYesNoWindowTemplate = { .bg = 0, .tilemapLeft = 21, .tilemapTop = 9, @@ -881,7 +881,7 @@ void CB2_InitTradeAnim_LinkTrade(void) break; case 8: LoadTradeMonPic(1, 1); - sub_80504B0(); + LinkTradeDrawWindow(); gMain.state++; break; case 9: @@ -899,7 +899,7 @@ void CB2_InitTradeAnim_LinkTrade(void) gMain.state++; break; case 11: - sub_805049C(); + InitTradeSequenceBgGpuRegs(); TradeBufferOTnameAndNicknames(); gMain.state++; break; @@ -922,13 +922,13 @@ void CB2_InitTradeAnim_LinkTrade(void) UpdatePaletteFade(); } -void sub_805049C(void) +void InitTradeSequenceBgGpuRegs(void) { SetTradeSequenceBgGpuRegs(5); SetTradeSequenceBgGpuRegs(0); } -void sub_80504B0(void) +void LinkTradeDrawWindow(void) { FillWindowPixelBuffer(0, PIXEL_FILL(15)); PutWindowTilemap(0); @@ -2552,7 +2552,7 @@ static void sub_8053E8C(void) { case 0: gMain.state++; - StringExpandPlaceholders(gStringVar4, gUnknown_841E325); + StringExpandPlaceholders(gStringVar4, gText_CommunicationStandby5); DrawTextOnTradeWindow(0, gStringVar4, 0); break; case 1: diff --git a/sym_common.txt b/sym_common.txt index def8fff58..b6e5f8b5e 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -94,10 +94,9 @@ gUnknown_3005354: @ 3005354 .align 2 .include "field_specials.o" - -gCB2_AfterEvolution: @ 300537C - .space 0x4 - + .align 2 + .include "evolution_scene.o" + .align 2 .include "save.o" .align 2 diff --git a/sym_ewram.txt b/sym_ewram.txt index a892eb532..178e86dda 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -421,13 +421,8 @@ gPlayerFacingPosition: @ 2039A04 .include "src/field_specials.o" .align 2 .include "src/battle_records.o" - -gUnknown_2039A20: @ 2039A20 - .space 0x4 - -gUnknown_2039A24: @ 2039A24 - .space 0x4 - + .align 2 + .include "src/evolution_scene.o" .align 2 .include "src/coins.o" .align 2 From db78195ccf83a6de33c16e73bb2dc7e34f483108 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 20 Nov 2019 11:17:20 -0500 Subject: [PATCH 38/49] Bump baserom.ips --- baserom.ips | Bin 277856 -> 270923 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/baserom.ips b/baserom.ips index 3c386215489e0d03ff0515c841caf886a8898794..bde26c6587d0fd74359f47b6a587116694dc845f 100644 GIT binary patch delta 27 hcmaFxOW^bofrb{wElg%C?cVZCK+L?|Tb@N!4gi`y2)+OS delta 6467 zcmai2dsr05vaj9&7Fm>8KqWqBAqJl(3rJ9LoE;X#R}@e{K?F5|kr+`TBq4E7G+;Cd ziV66Lw9*NUwh`ki5hD_xiTM7*bHDh=Io|K{e%BLS@I<~74RdE$R@TQkcM*4f{p+f( zs;;VK>)c8H*FX5;)#!lXH4o*j^1eJk?g$onPvm2gCRHRIOlg}lDkm*>TmH==RRQhA zLqD(rI8ZsV1P2GtGxHpHn9Ua8%!>9Ok9Z?Lz<~fcg8s*W90;Ru!6PCfqLJr;J1hY-GgU;{&n=qQH^bzf1pJo{=BX63GvQQo9}Ax1>58 zs3poA1%~9<nj;kd#Au$wNNG)pxoE(xHR`g$EZ>$T0?PA?i4wS& z_%_>J-l)4g!@&zG+;8VO+if$aYtUWIt`@ij*#dXzw(!VaE%#IT`w85y=*o=XbvDkb z9&fwPb94Q&uEkld3S84Q{-vBa$KMiAY@D^f1Ic~=B}k6mnkEGuM=8n3N-a^zz@-3} zot^y$^l+eJ^x(pRzW&RHSyV9j=lj=$7kwVuTH30#6slI!jJ=j6NrlA$iMf`^Jl6)k ziHloO1+*aCj!b5wTK|&VGY{bbEq^H=*fPn1XgMm(;|i@@VPRo@0dVCgEXQI2&z;wl z!@SYIW$M*C;fd1{r~f`(mDBAP=jPZnFHih+WzOaNcB?67iFS`g=E7yA4wOBsAS|Fj z?p@!vAZMSYv3^vJIp+948wamlPA^6YrC=x%xYDw+!sxQHEYy;+X>3SvQ(&C>N@MKn zE%O~{d?RqJznBZuH_|o@TRDHJk}IcP;%vQ_#;aPUn2P;cc-e@wD4R{k^7_2HvR4)= zk8q#_RF%CMJb>H0Sx=m*TfhOTYf7{v*f=x|IMtkbQV%EEH$NzJX^sP_^R5E7=8QS3 zB|VReIBkhnH%wo;#N1zwFXzlrTK<}j0$Q8sr)aP*7ZRs=n? z6O5o`x-BU62yhKxXlOkUxqNPBbZ`jDjcK%TAv+d+q_+QF()P>DTk*FaUU#6vYbmPd z)}`s;jq-G!dvLfV6D8a?r-Y^XzgK4oF;7NGVEkQo)9NRWKZ1rf6mtq3-PLfe`A9>9 zz1eKvb)?}O^x`?W8N8aC8=9K|WnKsFh9%mfIeGd_Y!9_hNFKK)y>(s7WdD*DyXI(J zUx7=`wBMKQ0j(z<2ApUc`Dl7uOtoyUn%}^4XzY?Io(r$7Guwj|4Nf?K5|3yL$`LeK zJJzaj4VGzUNjna_uCGNCZ``=Sb2okiZu~tk+`Impl>?u9jo@|f=&MxG0-s*l*Ma`# ze|OF9#G2snkPx0%|2cb9N#Mq?n~r`w^4+glR6M}rXKvd6=455^AMDR_pvH_dcHdj) z8+l{v_&g+ss{e?3EXfjh43B=SNRRCk8`~E*E_=|XRokE{dvEX=sV=B-T)jPDaYRB5 zZrI4JzNT*GF6~x^oxD9Y%JEr-iZ)$yd{Zpgd(5)mOU;uU0jdMd2pGTh(}?z{dbHhd zoL%LOOSN8dcYDjl9Vfp#oK$`N;XsVyX16)|z?~V%%8c0$9HTq~KT-Id0X+BTFipWx zQ(RQxwXJ6#gq=6eO>JD7?!Pj1`}D1)2?2=_<(wMa`=K9ycS23-{J}dMXwQRNT2}sR z!O&0#vW>BLC?vP%4g-}G8lGFuoqLoU->+(H zsYz0RJ8BXEJ^HC4L(eL=)L>JE`Tupj0P*o^&g0EmGG+!OaCfglF} z@h4`&6Tji42T0vP)ar%Ann3P_dxNM1;k1`P>I0EH>I+;y!2R(6Jb?5cLHdELt?;N1 zNamMF5Qx1=FF`V!@Ia6RYyrs@3{fHYWjqMOD>xJn#zQa+A%jUMd4+fmA}^B=kb*%9 zv=9NLfxJkD`ru)BxX?HPq`wq{^eVPuB@BlHj=&>vB#s0!l0=Yj66Qm!iSGJ%-m$#_uWNG!-fb`oQgdGU2T z^=zQu02;QLG=mMHe zA%_m33+bB_7SUY#7F|qXF?);UvPBHuWDD64mcu~FW(!z1_6DqF3Vz>4Cb(rEQ8HviRmDw3F0iK+3vy7*XdM{rcql0 z$cZ$RCQ+D9XV7GtLLrr=vJ{rgU4jHPiP zkEiiKC(wy>5}gcm3Z23xvq``vvI#7njV}W+j>Up#XEEhgk-er1M^W1-kVn%oG@8O# zD$;ROqF|#km6?r!#Ktj^jb$FuYz!L>;wWZQq7poJJsH zq(CE~ErNx!Fdt@RuY%&t$>`y17#qq=-qb_~f+$c6?#T5J`Z66fn7)FHgVDMnY;ZBO zy}|~ums!Zp4&K7_Qm`-+k7zI28ziMy5bdZxNvpqNtpI6%I)Dx^vHq+dM0M0(tX6<8 zu^^Covl&_e`pR0lOFby~QJ$KqKeYvb97uc8p3D{qkpaw~nVBcg{Fq+uwm)Nhc?lzG z0MR3idIozYAS3k#+3Z7oK=ck|MoUXs0`g=YAQ~8|1`(jre8n)e@*XjmlsvcgWWsOb zCD^9@4U~tM;$;}}@jG}q_QKEu7vMr%NT7i9AYNoSfpmX`9{shCP_%mFN zH(=O6%E@QsQxfC;@YJH-tSlWmy1jV)qq|fmeS}%i2T!lB|EeeLMcq`dL zHWR2Km0D~2f+T(p(k4NvARBEGzYTvWh#cOIp&Dbn1MkF8g9-i$e~qCQ*OITvR|E*D zAv?(q;(guZAm<5cCg;e{ z^HI)v^ohJg{bV zj{VGjQh<4}v+NAxn)K}9Xd^uYG91@hToWy)u!a6ePtcPTPSMl!G&{xMBs;-=WLp?2 zXH8mT(;Vdwu|};y?578I3i3gad(gume+Tq?dW1I6qdiQomVOItAFF43**6BZhcUJr zio682%T`p!sNN*D(JyWCc3KS-(;ajttuatSzoK6wV=b_+*;kCP8eluw4u)B^z_#1O zFWEL`S_O(^q8n+2AZ;oJ<#YOl)=?|HX%*d!j9cket-EYyRjiVQ`mit9=kVbsL97U4 z8}&|VqFNaQuBCbzAhe!(d_q5^pP`8xsBHs^{EU6dK4FRL;ZMB?m{tRe%JkAv^jecv z0$oK*=xVw~L-8NcQd-JBDu$>vY&9!ktA;YY+O%RTmfj7adOg!3i_D`$y`Di{L05pN z6?5bVmeD*aVjacIv|@gnF43g&=u*0j=6ln3=yJV}6&PqCEo22~pBJ#@>>ZZRmU*+K zEKg9DFt4|(1UovhN~vrDxzF`NgySXjS#C+{-)Y1ytab4K%d)|G^M ztXZV;qFi?#@FLN!S)_i)FAlO(8sI;(03BDLbYx|huP$Nz{rM|!XF>Z0@pO=%W&!>) z3!q)Z5sZl6n*Ma>i48?Bk(_PJ8I*?78EV81EAPRFK!82_x2y zJ|}mdG&QAs&gDe``N@jYq=k`dNAHr)#raMhku)`J$(;J^%Zpl<1r$2@oLSi`)W^v1 z*nl2$oO-_<)J{*@?>~8ZvgV7ty1(pc=pKX&gTj!PzO%Bzfr1od=#+B4Ap_@*HR$1n zb?DiJJ79;djx{GVy7*40eIa*ey}LaH74L37&(J0vyM(*>n0%js-8HP+;bqihO}^cA z-W}@lZmdby-?iD~qZ{xoNc;E(g2i&3NK&2%E1y*j&M14vlJPg_|cR0esBWS??0l2b%TL1t6 From e1bdb76ab03687e1c08a2bb716c51a503027ec12 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 20 Nov 2019 11:34:37 -0500 Subject: [PATCH 39/49] ID --> Id --- src/evolution_scene.c | 182 +++++++++++++++++++++--------------------- 1 file changed, 91 insertions(+), 91 deletions(-) diff --git a/src/evolution_scene.c b/src/evolution_scene.c index 0e3ba19f1..03e7a9d79 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -40,9 +40,9 @@ struct EvoInfo { - u8 preEvoSpriteID; - u8 postEvoSpriteID; - u8 evoTaskID; + u8 preEvoSpriteId; + u8 postEvoSpriteId; + u8 evoTaskId; u8 field_3; u16 savedPalette[48]; }; @@ -55,7 +55,7 @@ static EWRAM_DATA u16 *sEvoMovingBgPtr = NULL; void (*gCB2_AfterEvolution)(void); #define sEvoCursorPos gBattleCommunication[1] // when learning a new move -#define sEvoGraphicsTaskID gBattleCommunication[2] +#define sEvoGraphicsTaskId gBattleCommunication[2] // this file's functions static void Task_EvolutionScene(u8 taskId); @@ -166,7 +166,7 @@ static void CB2_BeginEvolutionScene(void) #define tData7 data[7] #define tData8 data[8] #define tEvoWasStopped data[9] -#define tPartyID data[10] +#define tPartyId data[10] #define TASK_BIT_CAN_STOP 0x1 #define TASK_BIT_LEARN_MOVE 0x80 @@ -185,37 +185,37 @@ static void Task_BeginEvolutionScene(u8 taskId) { u16 speciesToEvolve; bool8 canStopEvo; - u8 partyID; + u8 partyId; - mon = &gPlayerParty[gTasks[taskId].tPartyID]; + mon = &gPlayerParty[gTasks[taskId].tPartyId]; speciesToEvolve = gTasks[taskId].tPostEvoSpecies; canStopEvo = gTasks[taskId].tCanStop; - partyID = gTasks[taskId].tPartyID; + partyId = gTasks[taskId].tPartyId; DestroyTask(taskId); - EvolutionScene(mon, speciesToEvolve, canStopEvo, partyID); + EvolutionScene(mon, speciesToEvolve, canStopEvo, partyId); } break; } } -void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID) +void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyId) { u8 taskId = CreateTask(Task_BeginEvolutionScene, 0); gTasks[taskId].tState = 0; gTasks[taskId].tPostEvoSpecies = speciesToEvolve; gTasks[taskId].tCanStop = canStopEvo; - gTasks[taskId].tPartyID = partyID; + gTasks[taskId].tPartyId = partyId; SetMainCallback2(CB2_BeginEvolutionScene); } -void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID) +void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyId) { u8 name[20]; u16 currSpecies; u32 trainerId, personality; const struct CompressedSpritePalette* pokePal; - u8 ID; + u8 id; SetHBlankCallback(NULL); SetVBlankCallback(NULL); @@ -270,11 +270,11 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, SetMultiuseSpriteTemplateToPokemon(currSpecies, 1); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; - sEvoStructPtr->preEvoSpriteID = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30); + sEvoStructPtr->preEvoSpriteId = id = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30); - gSprites[ID].callback = SpriteCallbackDummy2; - gSprites[ID].oam.paletteNum = 1; - gSprites[ID].invisible = TRUE; + gSprites[id].callback = SpriteCallbackDummy2; + gSprites[id].oam.paletteNum = 1; + gSprites[id].invisible = TRUE; // postEvo sprite DecompressPicFromTable(&gMonFrontPicTable[speciesToEvolve], @@ -285,21 +285,21 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, SetMultiuseSpriteTemplateToPokemon(speciesToEvolve, 3); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; - sEvoStructPtr->postEvoSpriteID = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30); - gSprites[ID].callback = SpriteCallbackDummy2; - gSprites[ID].oam.paletteNum = 2; - gSprites[ID].invisible = TRUE; + sEvoStructPtr->postEvoSpriteId = id = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30); + gSprites[id].callback = SpriteCallbackDummy2; + gSprites[id].oam.paletteNum = 2; + gSprites[id].invisible = TRUE; LoadEvoSparkleSpriteAndPal(); - sEvoStructPtr->evoTaskID = ID = CreateTask(Task_EvolutionScene, 0); - gTasks[ID].tState = 0; - gTasks[ID].tPreEvoSpecies = currSpecies; - gTasks[ID].tPostEvoSpecies = speciesToEvolve; - gTasks[ID].tCanStop = canStopEvo; - gTasks[ID].tLearnsFirstMove = TRUE; - gTasks[ID].tEvoWasStopped = FALSE; - gTasks[ID].tPartyID = partyID; + sEvoStructPtr->evoTaskId = id = CreateTask(Task_EvolutionScene, 0); + gTasks[id].tState = 0; + gTasks[id].tPreEvoSpecies = currSpecies; + gTasks[id].tPostEvoSpecies = speciesToEvolve; + gTasks[id].tCanStop = canStopEvo; + gTasks[id].tLearnsFirstMove = TRUE; + gTasks[id].tEvoWasStopped = FALSE; + gTasks[id].tPartyId = partyId; memcpy(&sEvoStructPtr->savedPalette, &gPlttBufferUnfaded[0x20], 0x60); @@ -314,13 +314,13 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, static void CB2_EvolutionSceneLoadGraphics(void) { - u8 ID; + u8 id; const struct CompressedSpritePalette* pokePal; u16 postEvoSpecies; u32 trainerId, personality; - struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoStructPtr->evoTaskID].tPartyID]; + struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoStructPtr->evoTaskId].tPartyId]; - postEvoSpecies = gTasks[sEvoStructPtr->evoTaskID].tPostEvoSpecies; + postEvoSpecies = gTasks[sEvoStructPtr->evoTaskId].tPostEvoSpecies; trainerId = GetMonData(Mon, MON_DATA_OT_ID); personality = GetMonData(Mon, MON_DATA_PERSONALITY); @@ -364,10 +364,10 @@ static void CB2_EvolutionSceneLoadGraphics(void) SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, 3); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; - sEvoStructPtr->postEvoSpriteID = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30); + sEvoStructPtr->postEvoSpriteId = id = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30); - gSprites[ID].callback = SpriteCallbackDummy2; - gSprites[ID].oam.paletteNum = 2; + gSprites[id].callback = SpriteCallbackDummy2; + gSprites[id].oam.paletteNum = 2; SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP); @@ -385,8 +385,8 @@ static void CB2_EvolutionSceneLoadGraphics(void) static void CB2_TradeEvolutionSceneLoadGraphics(void) { - struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoStructPtr->evoTaskID].tPartyID]; - u16 postEvoSpecies = gTasks[sEvoStructPtr->evoTaskID].tPostEvoSpecies; + struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoStructPtr->evoTaskId].tPartyId]; + u16 postEvoSpecies = gTasks[sEvoStructPtr->evoTaskId].tPostEvoSpecies; switch (gMain.state) { @@ -437,14 +437,14 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) break; case 5: { - u8 ID; + u8 id; SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, 1); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; - sEvoStructPtr->postEvoSpriteID = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30); + sEvoStructPtr->postEvoSpriteId = id = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30); - gSprites[ID].callback = SpriteCallbackDummy2; - gSprites[ID].oam.paletteNum = 2; + gSprites[id].callback = SpriteCallbackDummy2; + gSprites[id].oam.paletteNum = 2; gMain.state++; LinkTradeDrawWindow(); } @@ -469,13 +469,13 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) } } -void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID) +void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteId, u8 partyId) { u8 name[20]; u16 currSpecies; u32 trainerId, personality; const struct CompressedSpritePalette* pokePal; - u8 ID; + u8 id; GetMonData(mon, MON_DATA_NICKNAME, name); StringCopy10(gStringVar1, name); @@ -489,7 +489,7 @@ void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpri trainerId = GetMonData(mon, MON_DATA_OT_ID); sEvoStructPtr = AllocZeroed(sizeof(struct EvoInfo)); - sEvoStructPtr->preEvoSpriteID = preEvoSpriteID; + sEvoStructPtr->preEvoSpriteId = preEvoSpriteId; DecompressPicFromTable(&gMonFrontPicTable[speciesToEvolve], gMonSpritesGfxPtr->sprites[1], @@ -500,21 +500,21 @@ void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpri SetMultiuseSpriteTemplateToPokemon(speciesToEvolve, 1); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; - sEvoStructPtr->postEvoSpriteID = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30); + sEvoStructPtr->postEvoSpriteId = id = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30); - gSprites[ID].callback = SpriteCallbackDummy2; - gSprites[ID].oam.paletteNum = 2; - gSprites[ID].invisible = TRUE; + gSprites[id].callback = SpriteCallbackDummy2; + gSprites[id].oam.paletteNum = 2; + gSprites[id].invisible = TRUE; LoadEvoSparkleSpriteAndPal(); - sEvoStructPtr->evoTaskID = ID = CreateTask(Task_TradeEvolutionScene, 0); - gTasks[ID].tState = 0; - gTasks[ID].tPreEvoSpecies = currSpecies; - gTasks[ID].tPostEvoSpecies = speciesToEvolve; - gTasks[ID].tLearnsFirstMove = TRUE; - gTasks[ID].tEvoWasStopped = FALSE; - gTasks[ID].tPartyID = partyID; + sEvoStructPtr->evoTaskId = id = CreateTask(Task_TradeEvolutionScene, 0); + gTasks[id].tState = 0; + gTasks[id].tPreEvoSpecies = currSpecies; + gTasks[id].tPostEvoSpecies = speciesToEvolve; + gTasks[id].tLearnsFirstMove = TRUE; + gTasks[id].tEvoWasStopped = FALSE; + gTasks[id].tPartyId = partyId; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -595,7 +595,7 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon) static void Task_EvolutionScene(u8 taskId) { u32 var; - struct Pokemon* mon = &gPlayerParty[gTasks[taskId].tPartyID]; + struct Pokemon* mon = &gPlayerParty[gTasks[taskId].tPartyId]; // National dex check if (!IsNationalPokedexEnabled() @@ -604,7 +604,7 @@ static void Task_EvolutionScene(u8 taskId) { gTasks[taskId].tState = 17; gTasks[taskId].tEvoWasStopped = TRUE; - gTasks[sEvoGraphicsTaskID].EvoGraphicsTaskEvoStop = TRUE; + gTasks[sEvoGraphicsTaskId].EvoGraphicsTaskEvoStop = TRUE; sub_80D04A8(); return; } @@ -612,11 +612,11 @@ static void Task_EvolutionScene(u8 taskId) // check if B Button was held, so the evolution gets stopped if (gMain.heldKeys == B_BUTTON && gTasks[taskId].tState == 8 - && gTasks[sEvoGraphicsTaskID].isActive + && gTasks[sEvoGraphicsTaskId].isActive && gTasks[taskId].tBits & TASK_BIT_CAN_STOP) { gTasks[taskId].tState = 17; - gTasks[sEvoGraphicsTaskID].EvoGraphicsTaskEvoStop = TRUE; + gTasks[sEvoGraphicsTaskId].EvoGraphicsTaskEvoStop = TRUE; sub_80D04A8(); return; } @@ -625,7 +625,7 @@ static void Task_EvolutionScene(u8 taskId) { case 0: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); - gSprites[sEvoStructPtr->preEvoSpriteID].invisible = FALSE; + gSprites[sEvoStructPtr->preEvoSpriteId].invisible = FALSE; gTasks[taskId].tState++; ShowBg(0); ShowBg(1); @@ -666,22 +666,22 @@ static void Task_EvolutionScene(u8 taskId) if (!gPaletteFade.active) { InitMovingBackgroundTask(FALSE); - sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet1(17); + sEvoGraphicsTaskId = LaunchTask_PreEvoSparklesSet1(17); gTasks[taskId].tState++; } break; case 6: // another set of evo sparkles - if (!gTasks[sEvoGraphicsTaskID].isActive) + if (!gTasks[sEvoGraphicsTaskId].isActive) { gTasks[taskId].tState++; sEvoStructPtr->field_3 = 1; - sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet2(); + sEvoGraphicsTaskId = LaunchTask_PreEvoSparklesSet2(); } break; case 7: // launch task that flashes pre evo with post evo sprites - if (!gTasks[sEvoGraphicsTaskID].isActive) + if (!gTasks[sEvoGraphicsTaskId].isActive) { - sEvoGraphicsTaskID = LaunchTask_PrePostEvoMonSprites(sEvoStructPtr->preEvoSpriteID, sEvoStructPtr->postEvoSpriteID); + sEvoGraphicsTaskId = LaunchTask_PrePostEvoMonSprites(sEvoStructPtr->preEvoSpriteId, sEvoStructPtr->postEvoSpriteId); gTasks[taskId].tState++; } break; @@ -689,23 +689,23 @@ static void Task_EvolutionScene(u8 taskId) if (--sEvoStructPtr->field_3 == 0) { sEvoStructPtr->field_3 = 3; - if (!gTasks[sEvoGraphicsTaskID].isActive) + if (!gTasks[sEvoGraphicsTaskId].isActive) gTasks[taskId].tState++; } break; case 9: // post evo sparkles - sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet1(); + sEvoGraphicsTaskId = LaunchTask_PostEvoSparklesSet1(); gTasks[taskId].tState++; break; case 10: - if (!gTasks[sEvoGraphicsTaskID].isActive) + if (!gTasks[sEvoGraphicsTaskId].isActive) { - sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet2AndFlash(gTasks[taskId].tPostEvoSpecies); + sEvoGraphicsTaskId = LaunchTask_PostEvoSparklesSet2AndFlash(gTasks[taskId].tPostEvoSpecies); gTasks[taskId].tState++; } break; case 11: // play tu du sound after evolution - if (!gTasks[sEvoGraphicsTaskID].isActive) + if (!gTasks[sEvoGraphicsTaskId].isActive) { PlaySE(SE_EXP); gTasks[taskId].tState++; @@ -794,7 +794,7 @@ static void Task_EvolutionScene(u8 taskId) } break; case 17: // evolution has been canceled, stop music and re-fade palette - if (!gTasks[sEvoGraphicsTaskID].isActive) + if (!gTasks[sEvoGraphicsTaskId].isActive) { m4aMPlayAllStop(); BeginNormalPaletteFade(0x6001C, 0, 0x10, 0, RGB_WHITE); @@ -808,7 +808,7 @@ static void Task_EvolutionScene(u8 taskId) gTasks[taskId].tState++; } break; - case 19: // after the animation, print the string 'WHOA IT DID NOT EVOLVE!!!' + case 19: // after the animation, print the string 'WHOA IT DId NOT EVOLVE!!!' if (IsCryFinished()) { if (gTasks[taskId].tEvoWasStopped) @@ -917,7 +917,7 @@ static void Task_EvolutionScene(u8 taskId) if (!gPaletteFade.active) { FreeAllWindowBuffers(); - ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskId].tPartyID, + ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskId].tPartyId, gPlayerPartyCount - 1, CB2_EvolutionSceneLoadGraphics, gMoveToLearn); gTasks[taskId].tLearnMoveState++; @@ -996,7 +996,7 @@ static void Task_EvolutionScene(u8 taskId) static void Task_TradeEvolutionScene(u8 taskId) { u32 var = 0; - struct Pokemon* mon = &gPlayerParty[gTasks[taskId].tPartyID]; + struct Pokemon* mon = &gPlayerParty[gTasks[taskId].tPartyId]; // National dex check if (!IsNationalPokedexEnabled() @@ -1005,9 +1005,9 @@ static void Task_TradeEvolutionScene(u8 taskId) { gTasks[taskId].tState = 15; gTasks[taskId].tEvoWasStopped = TRUE; - if (gTasks[sEvoGraphicsTaskID].isActive) + if (gTasks[sEvoGraphicsTaskId].isActive) { - gTasks[sEvoGraphicsTaskID].EvoGraphicsTaskEvoStop = TRUE; + gTasks[sEvoGraphicsTaskId].EvoGraphicsTaskEvoStop = TRUE; sub_80D04A8(); } } @@ -1046,24 +1046,24 @@ static void Task_TradeEvolutionScene(u8 taskId) if (!gPaletteFade.active) { InitMovingBackgroundTask(TRUE); - var = gSprites[sEvoStructPtr->preEvoSpriteID].oam.paletteNum + 16; - sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet1(var); + var = gSprites[sEvoStructPtr->preEvoSpriteId].oam.paletteNum + 16; + sEvoGraphicsTaskId = LaunchTask_PreEvoSparklesSet1(var); gTasks[taskId].tState++; SetGpuReg(REG_OFFSET_BG3CNT, 0x603); } break; case 5: - if (!gTasks[sEvoGraphicsTaskID].isActive) + if (!gTasks[sEvoGraphicsTaskId].isActive) { gTasks[taskId].tState++; sEvoStructPtr->field_3 = 1; - sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet2(); + sEvoGraphicsTaskId = LaunchTask_PreEvoSparklesSet2(); } break; case 6: - if (!gTasks[sEvoGraphicsTaskID].isActive) + if (!gTasks[sEvoGraphicsTaskId].isActive) { - sEvoGraphicsTaskID = LaunchTask_PrePostEvoMonSprites(sEvoStructPtr->preEvoSpriteID, sEvoStructPtr->postEvoSpriteID); + sEvoGraphicsTaskId = LaunchTask_PrePostEvoMonSprites(sEvoStructPtr->preEvoSpriteId, sEvoStructPtr->postEvoSpriteId); gTasks[taskId].tState++; } break; @@ -1071,23 +1071,23 @@ static void Task_TradeEvolutionScene(u8 taskId) if (--sEvoStructPtr->field_3 == 0) { sEvoStructPtr->field_3 = 3; - if (!gTasks[sEvoGraphicsTaskID].isActive) + if (!gTasks[sEvoGraphicsTaskId].isActive) gTasks[taskId].tState++; } break; case 8: - sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet1(); + sEvoGraphicsTaskId = LaunchTask_PostEvoSparklesSet1(); gTasks[taskId].tState++; break; case 9: - if (!gTasks[sEvoGraphicsTaskID].isActive) + if (!gTasks[sEvoGraphicsTaskId].isActive) { - sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet2AndFlash_Trade(gTasks[taskId].tPostEvoSpecies); + sEvoGraphicsTaskId = LaunchTask_PostEvoSparklesSet2AndFlash_Trade(gTasks[taskId].tPostEvoSpecies); gTasks[taskId].tState++; } break; case 10: - if (!gTasks[sEvoGraphicsTaskID].isActive) + if (!gTasks[sEvoGraphicsTaskId].isActive) { PlaySE(SE_EXP); gTasks[taskId].tState++; @@ -1161,10 +1161,10 @@ static void Task_TradeEvolutionScene(u8 taskId) } break; case 15: - if (!gTasks[sEvoGraphicsTaskID].isActive) + if (!gTasks[sEvoGraphicsTaskId].isActive) { m4aMPlayAllStop(); - BeginNormalPaletteFade((1 << (gSprites[sEvoStructPtr->preEvoSpriteID].oam.paletteNum + 16)) | (0x4001C), 0, 0x10, 0, RGB_WHITE); + BeginNormalPaletteFade((1 << (gSprites[sEvoStructPtr->preEvoSpriteId].oam.paletteNum + 16)) | (0x4001C), 0, 0x10, 0, RGB_WHITE); gTasks[taskId].tState++; } break; @@ -1269,7 +1269,7 @@ static void Task_TradeEvolutionScene(u8 taskId) Free(GetBgTilemapBuffer(0)); FreeAllWindowBuffers(); - ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskId].tPartyID, + ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskId].tPartyId, gPlayerPartyCount - 1, CB2_TradeEvolutionSceneLoadGraphics, gMoveToLearn); gTasks[taskId].tLearnMoveState++; @@ -1352,7 +1352,7 @@ static void Task_TradeEvolutionScene(u8 taskId) #undef tData7 #undef tData8 #undef tEvoWasStopped -#undef tPartyID +#undef tPartyId static void EvoDummyFunc(void) { From 39a71e64d1b6823cd12bf74a80e2d5bf287165d9 Mon Sep 17 00:00:00 2001 From: Evan Date: Wed, 20 Nov 2019 09:57:19 -0700 Subject: [PATCH 40/49] fix nonmatching --- data/strings.s | 4 +- include/strings.h | 2 +- src/berry_pouch.c | 6 +- src/item_pc.c | 2 +- src/menu_helpers.c | 4 +- src/option_menu.c | 204 +++++---------------------------------------- src/tm_case.c | 6 +- 7 files changed, 31 insertions(+), 197 deletions(-) diff --git a/data/strings.s b/data/strings.s index fd38b48cf..2bc82b190 100644 --- a/data/strings.s +++ b/data/strings.s @@ -2958,11 +2958,11 @@ gText_SoundStereo:: @ 0x8419E3B gTextJP_Type:: @ 0x8419E42 .string "タイプ$" -gText_ButtonTypeNormal:: @ 0x8419E46 +gText_ButtonTypeHelp:: @ 0x8419E46 .string "HELP$" gText_ButtonTypeLEqualsA:: @ 0x8419E4B - .string "LゅA$" + .string "L=A$" gText_ButtonTypeLR:: @ 0x8419E4F .string "LR$" diff --git a/include/strings.h b/include/strings.h index 327d3cfcb..bef3ed7cb 100644 --- a/include/strings.h +++ b/include/strings.h @@ -780,7 +780,7 @@ extern const u8 gText_BattleStyleShift[]; extern const u8 gText_BattleStyleSet[]; extern const u8 gText_SoundMono[]; extern const u8 gText_SoundStereo[]; -extern const u8 gText_ButtonTypeNormal[]; +extern const u8 gText_ButtonTypeHelp[]; extern const u8 gText_ButtonTypeLR[]; extern const u8 gText_ButtonTypeLEqualsA[]; extern const u8 gText_MenuOption[]; diff --git a/src/berry_pouch.c b/src/berry_pouch.c index f6b976ba3..35ac513c2 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -457,7 +457,7 @@ static void CB2_InitBerryPouch(void) { while (1) { - if (sub_80BF72C() == TRUE) + if ((u8) sub_80BF72C() == TRUE) break; if (RunBerryPouchInit() == TRUE) break; @@ -934,7 +934,7 @@ static void Task_BerryPouchMain(u8 taskId) { s16 * data = gTasks[taskId].data; s32 menuInput; - if (!gPaletteFade.active && sub_80BF72C() != TRUE) + if (!gPaletteFade.active && (u8) sub_80BF72C() != TRUE) { menuInput = ListMenu_ProcessInput(data[0]); ListMenuGetScrollAndRow(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow); @@ -1040,7 +1040,7 @@ static void Task_NormalContextMenu(u8 taskId) static void Task_NormalContextMenu_HandleInput(u8 taskId) { s8 input; - if (sub_80BF72C() != TRUE) + if ((u8) sub_80BF72C() != TRUE) { input = Menu_ProcessInputNoWrapAround(); switch (input) diff --git a/src/item_pc.c b/src/item_pc.c index 8569844b9..895c4b693 100644 --- a/src/item_pc.c +++ b/src/item_pc.c @@ -384,7 +384,7 @@ static bool8 ItemPc_DoGfxSetup(void) gMain.state++; break; case 20: - if (sub_80BF72C() != TRUE) + if ((u8) sub_80BF72C() != TRUE) gMain.state++; break; default: diff --git a/src/menu_helpers.c b/src/menu_helpers.c index 027280beb..a41e59187 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -130,12 +130,12 @@ bool32 sub_80BF72C(void) if (!MenuHelpers_LinkSomething()) return FALSE; else - return sub_8058244(); + return (u8) sub_8058244(); } bool8 sub_80BF748(void) { - if (sub_80BF72C() == TRUE) + if ((u8) sub_80BF72C() == TRUE) return TRUE; else if (sub_800B270() != TRUE) return FALSE; diff --git a/src/option_menu.c b/src/option_menu.c index 27b6c8569..a3704b23c 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -39,7 +39,7 @@ enum WIN_OPTIONS }; -// RAM sumbols +// RAM symbols struct OptionMenu { /*0x00*/ u16 option[MENUITEM_COUNT]; @@ -177,9 +177,9 @@ static const u8 *const sSoundOptions[] = static const u8 *const sButtonTypeOptions[] = { - gText_ButtonTypeNormal, + gText_ButtonTypeHelp, gText_ButtonTypeLR, - gText_ButtonTypeLEqualsA + gText_ButtonTypeLEqualsA }; static const u8 sOptionMenuPickSwitchCancelTextColor[] = {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}; @@ -361,6 +361,8 @@ static bool8 LoadOptionMenuPalette(void) return FALSE; } + +//#ifdef NONMATCHING static void Task_OptionMenu(u8 taskId) { switch (sOptionMenuPtr->state3) @@ -371,7 +373,7 @@ static void Task_OptionMenu(u8 taskId) sOptionMenuPtr->state3++; break; case 2: - if (sub_80BF72C() == TRUE) //cast to bool32 to remove the lsl/lsr 0x18 after func call + if (sub_80BF72C() == TRUE) break; switch (OptionMenu_ProcessInput()) { @@ -464,40 +466,39 @@ static u8 OptionMenu_ProcessInput(void) } } -#ifdef NONMATCHING // could not get it to match perfectly, no idea how they put so many vars on the stack static void BufferOptionMenuString(u8 selection) { + u8 str[20]; + u8 buf[12]; u8 dst[3]; - u8* str; - u8* v8; u8 x, y; - memcpy(&dst, sOptionMenuTextColor, 3); - y = ((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) - 1) * selection) + 2; + memcpy(dst, sOptionMenuTextColor, 3); x = 0x82; + y = ((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) - 1) * selection) + 2; FillWindowPixelRect(1, 1, x, y, 0x46, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); switch (selection) { case MENUITEM_TEXTSPEED: - AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sTextSpeedOptions); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sTextSpeedOptions[sOptionMenuPtr->option[selection]]); break; case MENUITEM_BATTLESCENE: - AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sBattleSceneOptions); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sBattleSceneOptions[sOptionMenuPtr->option[selection]]); break; case MENUITEM_BATTLESTYLE: - AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sBattleStyleOptions); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sBattleStyleOptions[sOptionMenuPtr->option[selection]]); break; case MENUITEM_SOUND: - AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sSoundOptions); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sSoundOptions[sOptionMenuPtr->option[selection]]); break; case MENUITEM_BUTTONMODE: - AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sButtonTypeOptions); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sButtonTypeOptions[sOptionMenuPtr->option[selection]]); break; case MENUITEM_FRAMETYPE: StringCopy(str, gText_FrameType); - ConvertIntToDecimalStringN(v8, sOptionMenuPtr->option[2 * selection] + 1, 1, 2); - StringAppendN(str, v8, 3); + ConvertIntToDecimalStringN(buf, sOptionMenuPtr->option[selection] + 1, 1, 2); + StringAppendN(str, buf, 3); AddTextPrinterParameterized3(1, 2, x, y, dst, -1, str); break; default: @@ -506,173 +507,6 @@ static void BufferOptionMenuString(u8 selection) PutWindowTilemap(1); CopyWindowToVram(1, 3); } -#else -NAKED -static void BufferOptionMenuString(u8 selection) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r8\n" - "\tpush {r7}\n" - "\tsub sp, 0x30\n" - "\tlsls r0, 24\n" - "\tlsrs r5, r0, 24\n" - "\tadd r4, sp, 0x2C\n" - "\tldr r1, _08088A08 @ =sOptionMenuTextColor\n" - "\tadds r0, r4, 0\n" - "\tmovs r2, 0x3\n" - "\tbl memcpy\n" - "\tmovs r0, 0x82\n" - "\tmov r8, r0\n" - "\tmovs r0, 0x2\n" - "\tmovs r1, 0x1\n" - "\tbl GetFontAttribute\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tsubs r0, 0x1\n" - "\tmuls r0, r5\n" - "\tadds r0, 0x2\n" - "\tlsls r0, 24\n" - "\tlsrs r7, r0, 24\n" - "\tmovs r0, 0x2\n" - "\tmovs r1, 0x1\n" - "\tbl GetFontAttribute\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tmovs r1, 0x46\n" - "\tstr r1, [sp]\n" - "\tstr r0, [sp, 0x4]\n" - "\tmovs r0, 0x1\n" - "\tmovs r1, 0x1\n" - "\tmovs r2, 0x82\n" - "\tadds r3, r7, 0\n" - "\tbl FillWindowPixelRect\n" - "\tadds r6, r4, 0\n" - "\tcmp r5, 0x5\n" - "\tbhi _08088ADE\n" - "\tlsls r0, r5, 2\n" - "\tldr r1, _08088A0C @ =_08088A10\n" - "\tadds r0, r1\n" - "\tldr r0, [r0]\n" - "\tmov pc, r0\n" - "\t.align 2, 0\n" - "_08088A08: .4byte sOptionMenuTextColor\n" - "_08088A0C: .4byte _08088A10\n" - "\t.align 2, 0\n" - "_08088A10:\n" - "\t.4byte _08088A28\n" - "\t.4byte _08088A38\n" - "\t.4byte _08088A48\n" - "\t.4byte _08088A58\n" - "\t.4byte _08088A68\n" - "\t.4byte _08088A9C\n" - "_08088A28:\n" - "\tstr r6, [sp]\n" - "\tmovs r0, 0x1\n" - "\tnegs r0, r0\n" - "\tstr r0, [sp, 0x4]\n" - "\tldr r2, _08088A34 @ =sTextSpeedOptions\n" - "\tb _08088A72\n" - "\t.align 2, 0\n" - "_08088A34: .4byte sTextSpeedOptions\n" - "_08088A38:\n" - "\tstr r6, [sp]\n" - "\tmovs r0, 0x1\n" - "\tnegs r0, r0\n" - "\tstr r0, [sp, 0x4]\n" - "\tldr r2, _08088A44 @ =sBattleSceneOptions\n" - "\tb _08088A72\n" - "\t.align 2, 0\n" - "_08088A44: .4byte sBattleSceneOptions\n" - "_08088A48:\n" - "\tstr r6, [sp]\n" - "\tmovs r0, 0x1\n" - "\tnegs r0, r0\n" - "\tstr r0, [sp, 0x4]\n" - "\tldr r2, _08088A54 @ =sBattleStyleOptions\n" - "\tb _08088A72\n" - "\t.align 2, 0\n" - "_08088A54: .4byte sBattleStyleOptions\n" - "_08088A58:\n" - "\tstr r6, [sp]\n" - "\tmovs r0, 0x1\n" - "\tnegs r0, r0\n" - "\tstr r0, [sp, 0x4]\n" - "\tldr r2, _08088A64 @ =sSoundOptions\n" - "\tb _08088A72\n" - "\t.align 2, 0\n" - "_08088A64: .4byte sSoundOptions\n" - "_08088A68:\n" - "\tstr r6, [sp]\n" - "\tmovs r0, 0x1\n" - "\tnegs r0, r0\n" - "\tstr r0, [sp, 0x4]\n" - "\tldr r2, _08088A94 @ =sButtonTypeOptions\n" - "_08088A72:\n" - "\tldr r0, _08088A98 @ =sOptionMenuPtr\n" - "\tldr r0, [r0]\n" - "\tlsls r1, r5, 1\n" - "\tadds r0, r1\n" - "\tldrh r0, [r0]\n" - "\tlsls r0, 2\n" - "\tadds r0, r2\n" - "\tldr r0, [r0]\n" - "\tstr r0, [sp, 0x8]\n" - "\tmovs r0, 0x1\n" - "\tmovs r1, 0x2\n" - "\tmov r2, r8\n" - "\tadds r3, r7, 0\n" - "\tbl AddTextPrinterParameterized3\n" - "\tb _08088ADE\n" - "\t.align 2, 0\n" - "_08088A94: .4byte sButtonTypeOptions\n" - "_08088A98: .4byte sOptionMenuPtr\n" - "_08088A9C:\n" - "\tldr r1, _08088AF8 @ =gText_FrameType\n" - "\tadd r0, sp, 0xC\n" - "\tbl StringCopy\n" - "\tadd r4, sp, 0x20\n" - "\tldr r0, _08088AFC @ =sOptionMenuPtr\n" - "\tldr r0, [r0]\n" - "\tlsls r1, r5, 1\n" - "\tadds r0, r1\n" - "\tldrh r1, [r0]\n" - "\tadds r1, 0x1\n" - "\tadds r0, r4, 0\n" - "\tmovs r2, 0x1\n" - "\tmovs r3, 0x2\n" - "\tbl ConvertIntToDecimalStringN\n" - "\tadd r0, sp, 0xC\n" - "\tadds r1, r4, 0\n" - "\tmovs r2, 0x3\n" - "\tbl StringAppendN\n" - "\tstr r6, [sp]\n" - "\tmovs r0, 0x1\n" - "\tnegs r0, r0\n" - "\tstr r0, [sp, 0x4]\n" - "\tadd r0, sp, 0xC\n" - "\tstr r0, [sp, 0x8]\n" - "\tmovs r0, 0x1\n" - "\tmovs r1, 0x2\n" - "\tmov r2, r8\n" - "\tadds r3, r7, 0\n" - "\tbl AddTextPrinterParameterized3\n" - "_08088ADE:\n" - "\tmovs r0, 0x1\n" - "\tbl PutWindowTilemap\n" - "\tmovs r0, 0x1\n" - "\tmovs r1, 0x3\n" - "\tbl CopyWindowToVram\n" - "\tadd sp, 0x30\n" - "\tpop {r3}\n" - "\tmov r8, r3\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_08088AF8: .4byte gText_FrameType\n" - "_08088AFC: .4byte sOptionMenuPtr\n"); -} -#endif static void CloseAndSaveOptionMenu(u8 taskId) { @@ -739,6 +573,6 @@ static void sub_8088DE0(u16 selection) v1 = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT); v2 = selection * (v1 - 1) + 0x3A; - SetGpuReg(REG_OFFSET_WIN0V, (v2 << 8) | (v2 + v1)); - SetGpuReg(REG_OFFSET_WIN0H, WINOUT_WINOBJ_OBJ | WIN_RANGE(0, 0xE0)); + SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(v2, v2 + v1)); + SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0x10, 0xE0)); } diff --git a/src/tm_case.c b/src/tm_case.c index 260efaa53..e48941d42 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -305,7 +305,7 @@ static void CB2_SetUpTMCaseUI_Blocking(void) { while (1) { - if (sub_80BF72C() == TRUE) + if ((u8) sub_80BF72C() == TRUE) break; if (DoSetUpTMCaseUI() == TRUE) break; @@ -734,7 +734,7 @@ static void Task_TMCaseMain(u8 taskId) if (!gPaletteFade.active) { - if (sub_80BF72C() != TRUE) + if ((u8) sub_80BF72C() != TRUE) { input = ListMenu_ProcessInput(data[0]); ListMenuGetScrollAndRow(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow); @@ -815,7 +815,7 @@ static void Task_TMContextMenu_HandleInput(u8 taskId) { s8 input; - if (sub_80BF72C() != TRUE) + if ((u8) sub_80BF72C() != TRUE) { input = Menu_ProcessInputNoWrapAround(); switch (input) From af0d8fcb4cca943da7486f03e19e50f0866be668 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 20 Nov 2019 12:00:04 -0500 Subject: [PATCH 41/49] Track missing file --- graphics/evolution_scene/bg.png | Bin 0 -> 1588 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 graphics/evolution_scene/bg.png diff --git a/graphics/evolution_scene/bg.png b/graphics/evolution_scene/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..c9e84c58ee49f19c7558805595d6bd0e37dcc85b GIT binary patch literal 1588 zcmV-42Fv-0P)-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: Wed, 20 Nov 2019 14:18:08 -0500 Subject: [PATCH 42/49] Add missing files; documentation --- graphics/field_effects/flash_gradient.pal | 19 ++++++ include/battle_main.h | 2 +- include/evolution_scene.h | 2 +- src/battle_main.c | 2 +- src/evolution_graphics.c | 4 +- src/evolution_scene.c | 72 +++++++++++------------ 6 files changed, 60 insertions(+), 41 deletions(-) create mode 100644 graphics/field_effects/flash_gradient.pal diff --git a/graphics/field_effects/flash_gradient.pal b/graphics/field_effects/flash_gradient.pal new file mode 100644 index 000000000..ec7a2b50e --- /dev/null +++ b/graphics/field_effects/flash_gradient.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +148 197 172 +16 16 16 +32 32 32 +49 49 49 +65 65 65 +82 82 82 +98 98 98 +115 115 115 +131 131 131 +148 148 148 +164 164 164 +180 180 180 +197 197 197 +213 213 213 +230 230 230 +255 255 255 diff --git a/include/battle_main.h b/include/battle_main.h index 613171da9..fe585f0e6 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -69,7 +69,7 @@ void VBlankCB_Battle(void); void nullsub_9(struct Sprite *sprite); void sub_801182C(struct Sprite *sprite); void sub_8011A1C(void); -u32 sub_8011C44(u8 arrayId, u8 caseId); +u32 GetBattleBgAttribute(u8 arrayId, u8 caseId); void SpriteCB_WildMon(struct Sprite *sprite); void SpriteCallbackDummy2(struct Sprite *sprite); void SpriteCB_FaintOpponentMon(struct Sprite *sprite); diff --git a/include/evolution_scene.h b/include/evolution_scene.h index 75b64dadc..a423689ad 100644 --- a/include/evolution_scene.h +++ b/include/evolution_scene.h @@ -8,6 +8,6 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8, u8 partyID); void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID); extern void (*gCB2_AfterEvolution)(void); -void sub_80D0474(void); +void IsMovingBackgroundTaskRunning(void); #endif // GUARD_EVOLUTION_SCENE_H diff --git a/src/battle_main.c b/src/battle_main.c index cb5bde9c0..1125a8d2d 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -1835,7 +1835,7 @@ static void sub_8011BB0(void) } } -u32 sub_8011C44(u8 arrayId, u8 caseId) +u32 GetBattleBgAttribute(u8 arrayId, u8 caseId) { u32 ret = 0; diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c index 175ebf81e..622b26f8f 100644 --- a/src/evolution_graphics.c +++ b/src/evolution_graphics.c @@ -397,7 +397,7 @@ static void EvoTask_PostEvoSparklesSet2Init(u8 taskId) { SetEvoSparklesMatrices(); gTasks[taskId].data[15] = 0; - sub_80D0474(); + IsMovingBackgroundTaskRunning(); CpuCopy16(&gPlttBufferFaded[32], &gPlttBufferUnfaded[32], 96); BeginNormalPaletteFade(0xFFF90F1C, 0, 0, 16, RGB_WHITE); gTasks[taskId].func = EvoTask_CreatePostEvoSparklesSet2; @@ -448,7 +448,7 @@ static void EvoTask_PostEvoSparklesSet2TradeInit(u8 taskId) { SetEvoSparklesMatrices(); gTasks[taskId].data[15] = 0; - sub_80D0474(); + IsMovingBackgroundTaskRunning(); CpuCopy16(&gPlttBufferFaded[32], &gPlttBufferUnfaded[32], 96); BeginNormalPaletteFade(0xFFF90F00, 0, 0, 16, RGB_WHITE); gTasks[taskId].func = EvoTask_CreatePostEvoSparklesSet2Trade; diff --git a/src/evolution_scene.c b/src/evolution_scene.c index 03e7a9d79..858b2816f 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -65,19 +65,19 @@ static void CB2_TradeEvolutionSceneUpdate(void); static void EvoDummyFunc(void); static void VBlankCB_EvolutionScene(void); static void VBlankCB_TradeEvolutionScene(void); -static void sub_80D04A8(void); +static void DestroyMovingBackgroundTasks(void); static void InitMovingBackgroundTask(bool8 isLink); -static void sub_80D025C(u8 taskId); -static void sub_80D04E8(void); +static void Task_MovingBackgroundPos(u8 taskId); +static void ResetBgRegsAfterMovingBackgroundCancel(void); // const data -static const u16 gUnknown_83F6C90[] = INCBIN_U16("graphics/evolution_scene/unknown_5B4114.gbapal"); -static const u32 gUnknown_83F6CB0[] = INCBIN_U32("graphics/evolution_scene/bg.4bpp.lz"); -static const u32 gUnknown_83F73A8[] = INCBIN_U32("graphics/evolution_scene/bg.bin.lz"); -static const u32 gUnknown_83F788C[] = INCBIN_U32("graphics/evolution_scene/bg2.bin.lz"); -static const u16 gUnknown_83F7D60[] = INCBIN_U16("graphics/evolution_scene/gray_transition_intro.gbapal"); +static const u16 sUnrefPal_83F6C90[] = INCBIN_U16("graphics/evolution_scene/unknown_5B4114.gbapal"); +static const u32 sMovingBackgroundTiles[] = INCBIN_U32("graphics/evolution_scene/bg.4bpp.lz"); +static const u32 sMovingBackgroundMap1[] = INCBIN_U32("graphics/evolution_scene/bg.bin.lz"); +static const u32 sMovingBackgroundMap2[] = INCBIN_U32("graphics/evolution_scene/bg2.bin.lz"); +static const u16 sBlackPalette[] = INCBIN_U16("graphics/evolution_scene/gray_transition_intro.gbapal"); static const u16 unref_83F7D80[] = INCBIN_U16("graphics/evolution_scene/unref_83F7D80.bin"); -static const u16 gUnknown_83F8400[] = INCBIN_U16("graphics/evolution_scene/transition.gbapal"); +static const u16 sMovingBgPals[] = INCBIN_U16("graphics/evolution_scene/transition.gbapal"); static const u8 Text_ShedinjaJapaneseName[] = _("ヌケニン"); @@ -97,7 +97,7 @@ static const u8 gUnknown_83F846D[][4] = { 0x25, 0x31, 0x01, 0x06 }, }; -static const u8 gUnknown_83F847D[][16] = { +static const u8 sMovingBgPalIndices[][16] = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0 }, @@ -605,7 +605,7 @@ static void Task_EvolutionScene(u8 taskId) gTasks[taskId].tState = 17; gTasks[taskId].tEvoWasStopped = TRUE; gTasks[sEvoGraphicsTaskId].EvoGraphicsTaskEvoStop = TRUE; - sub_80D04A8(); + DestroyMovingBackgroundTasks(); return; } @@ -617,7 +617,7 @@ static void Task_EvolutionScene(u8 taskId) { gTasks[taskId].tState = 17; gTasks[sEvoGraphicsTaskId].EvoGraphicsTaskEvoStop = TRUE; - sub_80D04A8(); + DestroyMovingBackgroundTasks(); return; } @@ -716,7 +716,7 @@ static void Task_EvolutionScene(u8 taskId) { m4aMPlayAllStop(); memcpy(&gPlttBufferUnfaded[0x20], sEvoStructPtr->savedPalette, 0x60); - sub_80D04E8(); + ResetBgRegsAfterMovingBackgroundCancel(); BeginNormalPaletteFade(0x1C, 0, 0x10, 0, RGB_BLACK); gTasks[taskId].tState++; } @@ -1008,7 +1008,7 @@ static void Task_TradeEvolutionScene(u8 taskId) if (gTasks[sEvoGraphicsTaskId].isActive) { gTasks[sEvoGraphicsTaskId].EvoGraphicsTaskEvoStop = TRUE; - sub_80D04A8(); + DestroyMovingBackgroundTasks(); } } @@ -1392,7 +1392,7 @@ static void VBlankCB_TradeEvolutionScene(void) ScanlineEffect_InitHBlankDmaTransfer(); } -static void sub_80D0160(u8 taskId) +static void Task_MovingBackgroundPalettes(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -1425,9 +1425,9 @@ static void sub_80D0160(u8 taskId) DestroyTask(taskId); } -static void sub_80D0218(bool8 isLink) +static void LaunchTask_MovingBackgroundPos(bool8 isLink) { - u8 taskId = CreateTask(sub_80D025C, 7); + u8 taskId = CreateTask(Task_MovingBackgroundPos, 7); if (!isLink) gTasks[taskId].data[2] = 0; @@ -1435,7 +1435,7 @@ static void sub_80D0218(bool8 isLink) gTasks[taskId].data[2] = 1; } -static void sub_80D025C(u8 taskId) +static void Task_MovingBackgroundPos(u8 taskId) { u16 *outer_X, *outer_Y; @@ -1462,7 +1462,7 @@ static void sub_80D025C(u8 taskId) *outer_X = Cos(gTasks[taskId].data[1], 4) + 8; *outer_Y = Sin(gTasks[taskId].data[1], 4) + 16; - if (!FuncIsActiveTask(sub_80D0160)) + if (!FuncIsActiveTask(Task_MovingBackgroundPalettes)) { DestroyTask(taskId); @@ -1482,7 +1482,7 @@ static void InitMovingBgValues(u16 *movingBgs) { for (j = 0; j < 16; j++) { - movingBgs[i * 16 + j] = gUnknown_83F8400[gUnknown_83F847D[i][j]]; + movingBgs[i * 16 + j] = sMovingBgPals[sMovingBgPalIndices[i][j]]; } } } @@ -1499,11 +1499,11 @@ static void InitMovingBackgroundTask(bool8 isLink) else innerBgId = 1, outerBgId = 3; - LoadPalette(gUnknown_83F7D60, 0xA0, 0x20); + LoadPalette(sBlackPalette, 0xA0, 0x20); - DecompressAndLoadBgGfxUsingHeap(1, gUnknown_83F6CB0, FALSE, 0, 0); - CopyToBgTilemapBuffer(1, gUnknown_83F73A8, 0, 0); - CopyToBgTilemapBuffer(outerBgId, gUnknown_83F788C, 0, 0); + DecompressAndLoadBgGfxUsingHeap(1, sMovingBackgroundTiles, FALSE, 0, 0); + CopyToBgTilemapBuffer(1, sMovingBackgroundMap1, 0, 0); + CopyToBgTilemapBuffer(outerBgId, sMovingBackgroundMap2, 0, 0); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(outerBgId); @@ -1526,13 +1526,13 @@ static void InitMovingBackgroundTask(bool8 isLink) SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG3_ON | DISPCNT_BG1_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP); } - CreateTask(sub_80D0160, 5); - sub_80D0218(isLink); + CreateTask(Task_MovingBackgroundPalettes, 5); + LaunchTask_MovingBackgroundPos(isLink); } -void sub_80D0474(void) // unused +void IsMovingBackgroundTaskRunning(void) // unused { - u8 taskId = FindTaskIdByFunc(sub_80D0160); + u8 taskId = FindTaskIdByFunc(Task_MovingBackgroundPalettes); if (taskId != 0xFF) gTasks[taskId].data[6] = 1; @@ -1540,27 +1540,27 @@ void sub_80D0474(void) // unused FillPalette(0, 0xA0, 0x20); } -static void sub_80D04A8(void) +static void DestroyMovingBackgroundTasks(void) { u8 taskId; - if ((taskId = FindTaskIdByFunc(sub_80D0160)) != 0xFF) + if ((taskId = FindTaskIdByFunc(Task_MovingBackgroundPalettes)) != 0xFF) DestroyTask(taskId); - if ((taskId = FindTaskIdByFunc(sub_80D025C)) != 0xFF) + if ((taskId = FindTaskIdByFunc(Task_MovingBackgroundPos)) != 0xFF) DestroyTask(taskId); - FillPalette(0, 0xA0, 0x20); - sub_80D04E8(); + FillPalette(RGB_BLACK, 0xA0, 0x20); + ResetBgRegsAfterMovingBackgroundCancel(); } -static void sub_80D04E8(void) +static void ResetBgRegsAfterMovingBackgroundCancel(void) { SetGpuReg(REG_OFFSET_BLDCNT, 0); gBattle_BG1_X = 0; gBattle_BG1_Y = 0; gBattle_BG2_X = 0; - SetBgAttribute(1, BG_ATTR_PRIORITY, sub_8011C44(1, 5)); - SetBgAttribute(2, BG_ATTR_PRIORITY, sub_8011C44(2, 5)); + SetBgAttribute(1, BG_ATTR_PRIORITY, GetBattleBgAttribute(1, 5)); + SetBgAttribute(2, BG_ATTR_PRIORITY, GetBattleBgAttribute(2, 5)); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG3_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP); Free(sEvoMovingBgPtr); } From a1b21100524b01231c3e571621bb36ae25a20e2e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 20 Nov 2019 16:36:38 -0500 Subject: [PATCH 43/49] Address review comments --- include/evolution_scene.h | 8 +++---- src/evolution_scene.c | 45 +++++++++++++++++++++------------------ 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/include/evolution_scene.h b/include/evolution_scene.h index a423689ad..3f504a1f1 100644 --- a/include/evolution_scene.h +++ b/include/evolution_scene.h @@ -3,11 +3,11 @@ #include "global.h" -void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8, u8 partyID); -void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8, u8 partyID); -void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID); - extern void (*gCB2_AfterEvolution)(void); + +void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8, u8 partyId); +void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8, u8 partyId); +void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteId, u8 partyId); void IsMovingBackgroundTaskRunning(void); #endif // GUARD_EVOLUTION_SCENE_H diff --git a/src/evolution_scene.c b/src/evolution_scene.c index 858b2816f..f3b05b32c 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -79,22 +79,23 @@ static const u16 sBlackPalette[] = INCBIN_U16("graphics/evolution_scene/gray_tra static const u16 unref_83F7D80[] = INCBIN_U16("graphics/evolution_scene/unref_83F7D80.bin"); static const u16 sMovingBgPals[] = INCBIN_U16("graphics/evolution_scene/transition.gbapal"); -static const u8 Text_ShedinjaJapaneseName[] = _("ヌケニン"); +static const u8 sText_ShedinjaJapaneseName[] = _("ヌケニン"); -static const u8 gUnknown_83F8445[] = _("{COLOR RED}{HIGHLIGHT DARK_GREY}{SHADOW GREEN}"); +static const u8 unref_83F8445[] = _("{COLOR RED}{HIGHLIGHT DARK_GREY}{SHADOW GREEN}"); -static const u8 gUnknown_83F844F[][10] = { +static const u8 unref_83F844F[][10] = { _("▶\n "), _(" \n▶"), _(" \n ") }; -static const u8 gUnknown_83F846D[][4] = +// start frame, stop frame, loop count, delay +static const u8 sMovingBackgroundTimers[][4] = { - { 0x00, 0x0C, 0x01, 0x06 }, - { 0x0D, 0x24, 0x05, 0x02 }, - { 0x0D, 0x18, 0x01, 0x02 }, - { 0x25, 0x31, 0x01, 0x06 }, + { 0, 12, 1, 6 }, + { 13, 36, 5, 2 }, + { 13, 24, 1, 2 }, + { 37, 49, 1, 6 }, }; static const u8 sMovingBgPalIndices[][16] = { @@ -455,7 +456,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) LoadWirelessStatusIndicatorSpriteGfx(); CreateWirelessStatusIndicatorSprite(0, 0); } - BlendPalettes(-1,0x10, 0); + BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); gMain.state++; break; case 7: @@ -525,7 +526,7 @@ void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpri gBattle_BG3_X = 256; gBattle_BG3_Y = 0; - gTextFlags.useAlternateDownArrow = 1; + gTextFlags.useAlternateDownArrow = TRUE; SetVBlankCallback(VBlankCB_TradeEvolutionScene); SetMainCallback2(CB2_TradeEvolutionSceneUpdate); @@ -588,7 +589,7 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon) if (GetMonData(shedinja, MON_DATA_SPECIES) == SPECIES_SHEDINJA && GetMonData(shedinja, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_NINJASK) - SetMonData(shedinja, MON_DATA_NICKNAME, Text_ShedinjaJapaneseName); + SetMonData(shedinja, MON_DATA_NICKNAME, sText_ShedinjaJapaneseName); } } @@ -597,7 +598,8 @@ static void Task_EvolutionScene(u8 taskId) u32 var; struct Pokemon* mon = &gPlayerParty[gTasks[taskId].tPartyId]; - // National dex check + // Automatically cancel if the Pokemon would evolve into a species you have not + // yet unlocked, such as Crobat. if (!IsNationalPokedexEnabled() && gTasks[taskId].tState == 8 && gTasks[taskId].tPostEvoSpecies > SPECIES_MEW) @@ -998,7 +1000,8 @@ static void Task_TradeEvolutionScene(u8 taskId) u32 var = 0; struct Pokemon* mon = &gPlayerParty[gTasks[taskId].tPartyId]; - // National dex check + // Automatically cancel if the Pokemon would evolve into a species you have not + // yet unlocked, such as Crobat. if (!IsNationalPokedexEnabled() && gTasks[taskId].tState == 7 && gTasks[taskId].tPostEvoSpecies > SPECIES_MEW) @@ -1049,7 +1052,7 @@ static void Task_TradeEvolutionScene(u8 taskId) var = gSprites[sEvoStructPtr->preEvoSpriteId].oam.paletteNum + 16; sEvoGraphicsTaskId = LaunchTask_PreEvoSparklesSet1(var); gTasks[taskId].tState++; - SetGpuReg(REG_OFFSET_BG3CNT, 0x603); + SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(6)); } break; case 5: @@ -1156,7 +1159,7 @@ static void Task_TradeEvolutionScene(u8 taskId) DestroyTask(taskId); Free(sEvoStructPtr); sEvoStructPtr = NULL; - gTextFlags.useAlternateDownArrow = 0; + gTextFlags.useAlternateDownArrow = FALSE; SetMainCallback2(gCB2_AfterEvolution); } break; @@ -1180,7 +1183,7 @@ static void Task_TradeEvolutionScene(u8 taskId) { StringExpandPlaceholders(gStringVar4, gText_EllipsisQuestionMark); DrawTextOnTradeWindow(0, gStringVar4, 1); - gTasks[taskId].tEvoWasStopped = 1; + gTasks[taskId].tEvoWasStopped = TRUE; gTasks[taskId].tState = 13; } break; @@ -1401,17 +1404,17 @@ static void Task_MovingBackgroundPalettes(u8 taskId) if (data[5]++ < 20) return; - if (data[0]++ > gUnknown_83F846D[data[2]][3]) + if (data[0]++ > sMovingBackgroundTimers[data[2]][3]) { - if (gUnknown_83F846D[data[2]][1] == data[1]) + if (sMovingBackgroundTimers[data[2]][1] == data[1]) { data[3]++; - if (data[3] == gUnknown_83F846D[data[2]][2]) + if (data[3] == sMovingBackgroundTimers[data[2]][2]) { data[3] = 0; data[2]++; } - data[1] = gUnknown_83F846D[data[2]][0]; + data[1] = sMovingBackgroundTimers[data[2]][0]; } else { @@ -1537,7 +1540,7 @@ void IsMovingBackgroundTaskRunning(void) // unused if (taskId != 0xFF) gTasks[taskId].data[6] = 1; - FillPalette(0, 0xA0, 0x20); + FillPalette(RGB_BLACK, 0xA0, 0x20); } static void DestroyMovingBackgroundTasks(void) From c39dcbc602cb7ad84148e6ad5cb7f0bbed31ab40 Mon Sep 17 00:00:00 2001 From: Evan Date: Wed, 20 Nov 2019 15:10:56 -0700 Subject: [PATCH 44/49] cast fixes --- src/berry_pouch.c | 6 +++--- src/item_pc.c | 2 +- src/menu_helpers.c | 4 ++-- src/option_menu.c | 16 +++++++--------- src/tm_case.c | 6 +++--- 5 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/berry_pouch.c b/src/berry_pouch.c index 35ac513c2..b8b66c0bc 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -457,7 +457,7 @@ static void CB2_InitBerryPouch(void) { while (1) { - if ((u8) sub_80BF72C() == TRUE) + if ((u8)sub_80BF72C() == TRUE) break; if (RunBerryPouchInit() == TRUE) break; @@ -934,7 +934,7 @@ static void Task_BerryPouchMain(u8 taskId) { s16 * data = gTasks[taskId].data; s32 menuInput; - if (!gPaletteFade.active && (u8) sub_80BF72C() != TRUE) + if (!gPaletteFade.active && (u8)sub_80BF72C() != TRUE) { menuInput = ListMenu_ProcessInput(data[0]); ListMenuGetScrollAndRow(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow); @@ -1040,7 +1040,7 @@ static void Task_NormalContextMenu(u8 taskId) static void Task_NormalContextMenu_HandleInput(u8 taskId) { s8 input; - if ((u8) sub_80BF72C() != TRUE) + if ((u8)sub_80BF72C() != TRUE) { input = Menu_ProcessInputNoWrapAround(); switch (input) diff --git a/src/item_pc.c b/src/item_pc.c index 895c4b693..60a74ac59 100644 --- a/src/item_pc.c +++ b/src/item_pc.c @@ -384,7 +384,7 @@ static bool8 ItemPc_DoGfxSetup(void) gMain.state++; break; case 20: - if ((u8) sub_80BF72C() != TRUE) + if ((u8)sub_80BF72C() != TRUE) gMain.state++; break; default: diff --git a/src/menu_helpers.c b/src/menu_helpers.c index a41e59187..f17bff0d0 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -130,12 +130,12 @@ bool32 sub_80BF72C(void) if (!MenuHelpers_LinkSomething()) return FALSE; else - return (u8) sub_8058244(); + return (u8)sub_8058244(); } bool8 sub_80BF748(void) { - if ((u8) sub_80BF72C() == TRUE) + if ((u8)sub_80BF72C() == TRUE) return TRUE; else if (sub_800B270() != TRUE) return FALSE; diff --git a/src/option_menu.c b/src/option_menu.c index b7840d373..abfc7a0f7 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -292,7 +292,7 @@ static void SetOptionMenuTask(void) static void InitOptionMenuBg(void) { - void * dest = (void *) VRAM; + void * dest = (void *)VRAM; DmaClearLarge16(3, dest, VRAM_SIZE, 0x1000); DmaClear32(3, (void *)OAM, OAM_SIZE); DmaClear16(3, (void *)PLTT, PLTT_SIZE); @@ -362,8 +362,6 @@ static bool8 LoadOptionMenuPalette(void) return FALSE; } - -//#ifdef NONMATCHING static void Task_OptionMenu(u8 taskId) { switch (sOptionMenuPtr->state3) @@ -514,12 +512,12 @@ static void CloseAndSaveOptionMenu(u8 taskId) gFieldCallback = sub_807DF64; SetMainCallback2(gMain.savedCallback); FreeAllWindowBuffers(); - gSaveBlock2Ptr->optionsTextSpeed = (u8) sOptionMenuPtr->option[MENUITEM_TEXTSPEED]; - gSaveBlock2Ptr->optionsBattleSceneOff = (u8) sOptionMenuPtr->option[MENUITEM_BATTLESCENE]; - gSaveBlock2Ptr->optionsBattleStyle = (u8) sOptionMenuPtr->option[MENUITEM_BATTLESTYLE]; + gSaveBlock2Ptr->optionsTextSpeed = (u8)sOptionMenuPtr->option[MENUITEM_TEXTSPEED]; + gSaveBlock2Ptr->optionsBattleSceneOff = (u8)sOptionMenuPtr->option[MENUITEM_BATTLESCENE]; + gSaveBlock2Ptr->optionsBattleStyle = (u8)sOptionMenuPtr->option[MENUITEM_BATTLESTYLE]; gSaveBlock2Ptr->optionsSound = sOptionMenuPtr->option[MENUITEM_SOUND]; - gSaveBlock2Ptr->optionsButtonMode = (u8) sOptionMenuPtr->option[MENUITEM_BUTTONMODE]; - gSaveBlock2Ptr->optionsWindowFrameType = (u8) sOptionMenuPtr->option[MENUITEM_FRAMETYPE]; + gSaveBlock2Ptr->optionsButtonMode = (u8)sOptionMenuPtr->option[MENUITEM_BUTTONMODE]; + gSaveBlock2Ptr->optionsWindowFrameType = (u8)sOptionMenuPtr->option[MENUITEM_FRAMETYPE]; SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); FREE_AND_SET_NULL(sOptionMenuPtr); DestroyTask(taskId); @@ -564,7 +562,7 @@ static void LoadOptionMenuItemNames(void) FillWindowPixelBuffer(1, PIXEL_FILL(1)); for (i = 0; i < MENUITEM_COUNT; i++) { - AddTextPrinterParameterized(WIN_OPTIONS, 2, sOptionMenuItemsNames[i], 8, (u8) ((i * (GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))) + 2) - i, TEXT_SPEED_FF, NULL); + AddTextPrinterParameterized(WIN_OPTIONS, 2, sOptionMenuItemsNames[i], 8, (u8)((i * (GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))) + 2) - i, TEXT_SPEED_FF, NULL); } } diff --git a/src/tm_case.c b/src/tm_case.c index e48941d42..25fe9a72c 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -305,7 +305,7 @@ static void CB2_SetUpTMCaseUI_Blocking(void) { while (1) { - if ((u8) sub_80BF72C() == TRUE) + if ((u8)sub_80BF72C() == TRUE) break; if (DoSetUpTMCaseUI() == TRUE) break; @@ -734,7 +734,7 @@ static void Task_TMCaseMain(u8 taskId) if (!gPaletteFade.active) { - if ((u8) sub_80BF72C() != TRUE) + if ((u8)sub_80BF72C() != TRUE) { input = ListMenu_ProcessInput(data[0]); ListMenuGetScrollAndRow(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow); @@ -815,7 +815,7 @@ static void Task_TMContextMenu_HandleInput(u8 taskId) { s8 input; - if ((u8) sub_80BF72C() != TRUE) + if ((u8)sub_80BF72C() != TRUE) { input = Menu_ProcessInputNoWrapAround(); switch (input) From 5142c037b60ba876c2ea42555a7e102bd4c60625 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 21 Nov 2019 09:29:07 -0500 Subject: [PATCH 45/49] Dump tileset anims data --- baserom.ips | Bin 270923 -> 249030 bytes data/tileset_anims.s | 26 ------- graphics/tileset_anims/aim_0_0.bin | Bin 0 -> 128 bytes graphics/tileset_anims/aim_0_1.bin | Bin 0 -> 128 bytes graphics/tileset_anims/aim_0_2.bin | Bin 0 -> 128 bytes graphics/tileset_anims/aim_0_3.bin | Bin 0 -> 128 bytes graphics/tileset_anims/aim_0_4.bin | Bin 0 -> 128 bytes graphics/tileset_anims/aim_1_0.bin | Bin 0 -> 1536 bytes graphics/tileset_anims/aim_1_1.bin | Bin 0 -> 1536 bytes graphics/tileset_anims/aim_1_2.bin | Bin 0 -> 1536 bytes graphics/tileset_anims/aim_1_3.bin | Bin 0 -> 1536 bytes graphics/tileset_anims/aim_1_4.bin | Bin 0 -> 1536 bytes graphics/tileset_anims/aim_1_5.bin | Bin 0 -> 1536 bytes graphics/tileset_anims/aim_1_6.bin | Bin 0 -> 1536 bytes graphics/tileset_anims/aim_1_7.bin | Bin 0 -> 1504 bytes graphics/tileset_anims/aim_2_0.bin | Bin 0 -> 576 bytes graphics/tileset_anims/aim_2_1.bin | Bin 0 -> 576 bytes graphics/tileset_anims/aim_2_2.bin | Bin 0 -> 576 bytes graphics/tileset_anims/aim_2_3.bin | Bin 0 -> 576 bytes graphics/tileset_anims/aim_2_4.bin | Bin 0 -> 576 bytes graphics/tileset_anims/aim_2_5.bin | Bin 0 -> 576 bytes graphics/tileset_anims/aim_2_6.bin | Bin 0 -> 576 bytes graphics/tileset_anims/aim_2_7.bin | Bin 0 -> 576 bytes graphics/tileset_anims/aim_3_0.bin | Bin 0 -> 256 bytes graphics/tileset_anims/aim_3_1.bin | Bin 0 -> 256 bytes graphics/tileset_anims/aim_3_2.bin | Bin 0 -> 256 bytes graphics/tileset_anims/aim_3_3.bin | Bin 0 -> 256 bytes graphics/tileset_anims/aim_3_4.bin | Bin 0 -> 256 bytes graphics/tileset_anims/aim_4_0.bin | 1 + graphics/tileset_anims/aim_4_1.bin | 1 + graphics/tileset_anims/aim_4_2.bin | 1 + graphics/tileset_anims/aim_4_3.bin | 1 + graphics/tileset_anims/aim_5_0.bin | Bin 0 -> 256 bytes graphics/tileset_anims/aim_5_1.bin | Bin 0 -> 256 bytes graphics/tileset_anims/aim_5_2.bin | Bin 0 -> 256 bytes graphics/tileset_anims/aim_5_3.bin | Bin 0 -> 256 bytes graphics/tileset_anims/aim_6_0.bin | Bin 0 -> 224 bytes graphics/tileset_anims/aim_6_1.bin | Bin 0 -> 224 bytes graphics/tileset_anims/aim_7_0.bin | Bin 0 -> 128 bytes graphics/tileset_anims/aim_7_1.bin | Bin 0 -> 128 bytes graphics/tileset_anims/aim_7_2.bin | Bin 0 -> 128 bytes ld_script.txt | 2 +- src/tileset_anims.c | 120 +++++++++++++++++++++++++++-- 43 files changed, 117 insertions(+), 35 deletions(-) create mode 100644 graphics/tileset_anims/aim_0_0.bin create mode 100644 graphics/tileset_anims/aim_0_1.bin create mode 100644 graphics/tileset_anims/aim_0_2.bin create mode 100644 graphics/tileset_anims/aim_0_3.bin create mode 100644 graphics/tileset_anims/aim_0_4.bin create mode 100644 graphics/tileset_anims/aim_1_0.bin create mode 100644 graphics/tileset_anims/aim_1_1.bin create mode 100644 graphics/tileset_anims/aim_1_2.bin create mode 100644 graphics/tileset_anims/aim_1_3.bin create mode 100644 graphics/tileset_anims/aim_1_4.bin create mode 100644 graphics/tileset_anims/aim_1_5.bin create mode 100644 graphics/tileset_anims/aim_1_6.bin create mode 100644 graphics/tileset_anims/aim_1_7.bin create mode 100644 graphics/tileset_anims/aim_2_0.bin create mode 100644 graphics/tileset_anims/aim_2_1.bin create mode 100644 graphics/tileset_anims/aim_2_2.bin create mode 100644 graphics/tileset_anims/aim_2_3.bin create mode 100644 graphics/tileset_anims/aim_2_4.bin create mode 100644 graphics/tileset_anims/aim_2_5.bin create mode 100644 graphics/tileset_anims/aim_2_6.bin create mode 100644 graphics/tileset_anims/aim_2_7.bin create mode 100644 graphics/tileset_anims/aim_3_0.bin create mode 100644 graphics/tileset_anims/aim_3_1.bin create mode 100644 graphics/tileset_anims/aim_3_2.bin create mode 100644 graphics/tileset_anims/aim_3_3.bin create mode 100644 graphics/tileset_anims/aim_3_4.bin create mode 100644 graphics/tileset_anims/aim_4_0.bin create mode 100644 graphics/tileset_anims/aim_4_1.bin create mode 100644 graphics/tileset_anims/aim_4_2.bin create mode 100644 graphics/tileset_anims/aim_4_3.bin create mode 100644 graphics/tileset_anims/aim_5_0.bin create mode 100644 graphics/tileset_anims/aim_5_1.bin create mode 100644 graphics/tileset_anims/aim_5_2.bin create mode 100644 graphics/tileset_anims/aim_5_3.bin create mode 100644 graphics/tileset_anims/aim_6_0.bin create mode 100644 graphics/tileset_anims/aim_6_1.bin create mode 100644 graphics/tileset_anims/aim_7_0.bin create mode 100644 graphics/tileset_anims/aim_7_1.bin create mode 100644 graphics/tileset_anims/aim_7_2.bin diff --git a/baserom.ips b/baserom.ips index bde26c6587d0fd74359f47b6a587116694dc845f..78355b3e81d8d68667ecf2149e6b332747e8a601 100644 GIT binary patch delta 26 hcmX?oMBvy={te3(HEaK9*Z#o>#7x_@e=sX(0RXly3@QKs delta 20527 zcmeI4Z*UytdB9&|Bx_>1;S>x^z!`M3Y17nW&>A!-N-@=;8&AYwrrccz%*-)(SDC4p zanRjuG^5T!It>>Ho!ZI_obiW-mJB}C#U!MSwK!60Bbl%aCM^sDY?OZMG-J_e{UL*p zw!i1y-P7IaWEs#lF~^EI*7lBiAdOE&;%;(PN!tLb(b{@=19rjeBU z(#917hcobt(Y}s+p|9f?NWRE7V$~&+W04G!jzy+*z`O!bv8R(URpm ztZP*nt%$OQgZ`^SN|np%5u{vx`jJZI==0^L-RGZnC!Ol2lzRO6P!1iaY;?=zC!Rpc zI?;hvgR*j8W<@7{4bDfIwg%?gx)!?3Q9T4v&~tLuW`QQ zklFCYVo{zb`kJ-05k(m!?6 zb?dHlDkPVGagy?qJ3e1aUnTv0wfgUJKT0~y%`0i%_m@5jf;XD=a_`pbX~cWY^X_;# z86^&0`?=>)&%#2Le^G`t^~pqnemU7AQeB^1Cv`Uw`Lc=-`TJi~Dj{lsqs=GyT*ynR$Yniu--=CR?0^&OH{92XLQBtI^b@_1YO}% ztviwI;|X=8Ta!MSeZOlTQVB;28^vwKgaW`kCJbdbWM+Hl z0yFOl69QkWohM;Cz%|?R)-ZIokqk_Q_i**0vbu%WU_8*0EU;dLS- z9v+x@o7&|q;u4o|iA%$0bBUeEXP(1nw(*&%!M3&68T-`3O+NJ;4cOvy7j5ymaWcUS z!fGno!;#CIi(KMyT;lOLYi*a_}oBNMqkR6 z@O(8r#qSl=j_0gdoM3A_M5=&Tu7wVAq{qXD%)(n+lbRX8VK?bOl!1d`tuICToHd8e z)(zM)Yji-n`P@|uh6x;@b0QYR75EnIIqk#Bv0MuswLE+>tgJ>^U;nk}0l$ zE;UrZEYn@l+tPq79<~N*lM8&bQh6qJWY^HIdqyC8eFtRLm=2K}pNS_MV=|^zy`y?A zy*RSVr{Z_^s|;-9r5t}eWy*TjwCnt_)YRxsqX zGJ@a|H>E(dE}DQ=NGbTNan#~&Z6>bhC5a|02LfGWn360N;LPoj&De-zhP()gdn3<` z&qT!K%l*Cm_^*vYhc6LyxE2@pnr7negScHnTwu5cam$tRx7H=Td(CR%Zb>Bk=odt{ zkhHSz3*GxF`ztl#Zb`f;Fc#VhYrFP;!Ki$pvQO(1H|^Y#=(&AMS8{Ai*S@hWiG2_I ziS98!(Y4d>PKLtq7Osg-=jrO=c>hk{N$k7b@9y47ft_%CteZ-@y7w2Tyilp6nuwct z)7L%irng;5%G~5{>23@t26`icd%?a5EONtu zAP0E`1a#``!3bQuFvA?t3L7+!(|OCT_nGHfMKg2*0!Lbq(ZfuMFle9-gF)~(E-V&s z3QsjtBR!YovgGxgh72|plr&Il89110Re^4R&I_Hp_mDJlmMQE~ClojpwPO9N}TurYAmHS|s`gN`lK&cXwMa9r?QdZDSL z*s+yzLTgFlYlm7LRn$NY_4lk~5Mq+(`CDwbZVN`CN zs2G*Xtr8ec`M984!FKY7bApPOzX@o(Iynbb?h}Oc&6n3Nea@ zXkds22AdlwP(}*gM-251~f^VoZ@=muAzTw`*rIQzX=VC;}>!}g0hu`oY@p! z>_E!S4jKc3(=?)!X$=%i>y{KZ_y9j~ZxOe*z)2cf7Yl-I?q>Z_!>yE)6MZ2|9xIIu z(#kC&R4+0p=pJx}>-}bR5s?ak@`Xhz^!|~|IX!Y6Jsl~e{4C}zw>k?a=g5aYjt^~%xR}CLx3_!PK+gu zR#28Feh^4cPSefPbn|r3QxOSgFrQU>VJaq6m=M0E5lck$CXou^C?-^xP+`J$OxW&V z!?u{z_5)unilwVZ(N8sIVV$c`Z@_D~l3PNO5bkhDL_y01QgY z59koqtfATd6zmuPYyE=10uE<7S0psdT`v{1qIs=?0{S$L_z)3|ejM?B$k|))O6e30 z41g)^`UV zv8x)pt1+0@(EtAn4M$w$zRa3?kklRt-KIfk7U)V)Vh_3$G8iA!XnGGj(z- zY~<#O%Czo4D{+rn=o!pfgR$)S-|{Z54!TLOdP6dadl>>%Uenb>ca?s*XQ#iM1g_i0 z8igQ*)&b;TwO-2jPMm@7Wh#LAW65Cu7|d_s1q0pF8oEh;d0WL_-mfJDE}`Lk)`XR& z!i0HDn8$>O4!*-$W%0qpYr#tGA`Uie&xal`1tKpP4X@!Kbr>4PhV9s}9UHdsvq)J4 zKdeD2qf$xYgaJ|=PdEXxQuj1QZY}Qw`V{)~36Pemag=wln$-0b2=nSPXb`uIJ>LPS z2LbWmp6m)(fro$>xZokyBDd!39>AM|tAl{IDBz8_iWfNC!fjs35W3Z?V$V{+5a1m` zKXk$Zmzt9x(mDYSQ#@cKQUNz%sNl4KK1FCay$6)i0nrmWme6o>=vOP_44g;>t76Zh z$0wd0LO^ml~&+&$vA-XnhPO60aUd;*T9MsVy;K-d(5e$LaO;pWhu`1 z{=5hd*p7w-w;_$8VWwDNzP(5u6Xr3YhN2KR%lk8nm_x|bb}S+<;~*|JL?AA2^0a_y z@Ea3X@?iaT>V~|Qg1+ooYf~1%3`r6k1ucLfc4@iU@h-WgVa{&TP7y8ejz$Gg1Nm*evl0!M#wsp1k7ndN2pDy)w(bEQwQ_*0WDH)wKU`7o{BYB&HVEwj!U^$v>sx5 z5?PRoAyISnq2b-l6-Z@aK5$C|blRh)xp6Lv>=u2F20->2E^O@K{w6ehp`qdHokFRv zqcDzq11TeaiF^k+fc$k|hs_Ik+soyek;6t&+jxczYqkTNE5&ks72k zoKVc97%c83dQmcT9`122AX-nMjFXWDs5@iu!LK+PKuQH}1QFW~DX_AEt$9!J#UUI- zH|=2ixO<9M5H0}yxLb;y`aQ!Jw5Pb`2DTPkirK)n*Ul(Rs4!t36Xr3YlgEZK#SoVe z1z`#h9E#bFW!kU|QHtJyUD%NQ$2PGHG9aA98`v;m8`f*Xgl(7*hZ!lYL@DC6L49I# zZEk+KXL<`cC(}F1!ji2Iya=Npiz>|zY=Rzm1_)7WPRLDX?b7y9+e{k;vy>h%!=G;9 zPckx5uSo+LX+Re2C=D>!3{^Jn$$6w)UfBfcgd5XaETT)e3-TrlrzOUnBE%;2qu&@B#&%sa09On($VXK@Uf0{+IL{Wy_j$>CRCVEVM3KJ zIqBFBzT?qElkFQC?=GBR_yuFv@c1MZ{w)g&@(8G3keJge8=L8aZ>6gIhST zQlo%sI~?idEL<0IKnN^D>?&uZ9NXS*K(mxVra>0fU`VTsxt$L6B7+)lIa%$JF7d`L z=e&1ztt_HTxv|S(*Vg&%?7CzdyYjubeVssKCsQfMH|+?iEZQ+yD*y$U$WtoPMfz~zaamv^4=`D0`sv649UkRQh}Kg{ z))R|eQr%V+=j<;+FY#WLa1GUORdGJiy(+7>syG+8S7ooQ^6B_VQ{d-BfgsMH{-YNr zIETG?CMhh#RujEc+Av`oCTt7;IEMW#m{;L{n0kvLD^UN1423Zr3vNI!IBckC2AlK~ zQmjXXXLVT4;qk~4(@0?{S+p0I!Jum-i@BWDs5k{a9R~kD=aB( zz$!Y}u@@rc@jvW5E~>)o<&l`yk48SkKG?7w^NAZSi;kyaMh);}?7cj+-nkr>m?MoI z&x*r?-lF}rU8ZxnT=62(YpB7kK5wtuxrje5iaer=dY|E3#0!l}@jiq5kF-NvVFQD2 zM|yce4erJGdn2ba_K5IWvA?a@u(ScEbpuZ820S7Qj|gE$r7Sv(t#;sIs~aPaD7_vB zhliQfjzmB0Ry-o-TpmmGV2VMq%Hu&_I-AF|+U08SxK_UugGUX2Gu+~**(Lmw;r}}! zT0G!L%VSdLG31+(Joa_V`g+;6%3m$p-!79a%*)l% zS3@C(U4G0if3s|r%O@GpRp%I>T{VU+<9OCQE|KYxtPC&{cid)x)}I;Gtl4i6X710L zC671L=QTj-JAI1to{ak1Fu-#2tdto_Sq8`l1B@r4?)$Ma11$4T()kR~uNn_o#y?xu z@rSUQ$slMoZMTSfbfziJIO+9N)jPL@m4DFry_JF4MQM%v;|3yfJy-GBYE% zeSdPdWxbOyt@7r(GvyrHdl@*dvR}_+t=BVFcGj{s|Am!J-1%f?^WD5vE0z+YzTP+-OurHB>Rw)0SYDWZ&-WK!nD^b_UH>Bv zK3WXkJ$IcI)e)WQ6cR#S&g@xFDw-6fyKtATrXaXL60 zEWWXX#CqA_zUcb%Zcz1u#p!oHnhr$fKMbY=X26vhxStugp8@)rA6DO;dZEey?h6)! z7np^~zzL>h2Hs)@-m2c0@v9$B9{wRC(<7K#J@R;D(~FbQ2;x!KW<+0)XN-aCd0C1^ z?(1;|K|Es)YOop)F z_z*cJvieR4f)^NdZRCfW?}UbOvWVj~5Dimi?6>0SW)=Iv{8JD7>H5!3ypFeV@>pNT z$sZ%r$V^{H=(f~8XKF`sFf-E`e$A*((#(vn)cgKS=cY}YW=?TUl%1WPn(^M}+b91f zDJ55p6lJ7*Ep?*x_z=w|Dx!5s zGYA?wu#%ti8GTMSl}COW(QT7Qby6!0P=}o9@^VTUN1y1coOe>k`%+D3=j&85qbrG& zq79o+-s@`S6irCA_2qTW8K0{@+V|-|Cq18uTBUeXW?C9i%$^>-{+3EP57Uf{grRuv zZ(`C<(fdtd1s=0C6V6GLb0#dOXJ2>A=StMB?zqgzrit5s_t!JwVK4P(!-R9?(yy?U z1ysg!){^YFE%-bpACI`LdmB>9$e9o31(A*XUV)<^26?(bZ8 z^~8VN`8yrDHC~iXtows46OU|bpSa?eS5KU}tm8o%-bFDHlhW~V+yQAw??9EBqa^2X z2kIM+^>u2x#~^RodY#iT+t=}LNIdi5U3c(+nt7(G4jww7{;pb?@hY!|dTiy*DmJ~S z-BzdCo#|BHKB?66Xm7NR8|p!eJJ6g}H}Ae#8OJl~X5)_)A5!+v(N1;fz^kfK{i!-w z;STO!ulkKPM;S~(Q<7Vs|3TQxhty1^s%EMOly@-NNDuaAtj?1XVuL#ZWz1kJ1}wJHFdCB={$I-+IgJu9M>IK-=>U-f4%c6r>V_b zqV~d`bwZX`N371DGPbx)HDevrgI%LN=~I21GKUPfHr`WneI2___H~>>cAZ?;_vg<& U``B~Ou0t;S$LF41-~Idl4RAtdxBvhE diff --git a/data/tileset_anims.s b/data/tileset_anims.s index 5f2320fd3..bd9a27175 100644 --- a/data/tileset_anims.s +++ b/data/tileset_anims.s @@ -1,28 +1,2 @@ .section .rodata .align 2 -gUnknown_83A73E0:: @ 83A73E0 - .incbin "baserom.gba", 0x3A73E0, 0x280 - -gUnknown_83A7660:: @ 83A7660 - .incbin "baserom.gba", 0x3A7660, 0x2FF4 - -gUnknown_83AA654:: @ 83AA654 - .incbin "baserom.gba", 0x3AA654, 0x1220 - -gUnknown_83AB874:: @ 83AB874 - .incbin "baserom.gba", 0x3AB874, 0x540 - -gUnknown_83ABDB4:: @ 83ABDB4 - .incbin "baserom.gba", 0x3ABDB4, 0x434 - -gUnknown_83AC1E8:: @ 83AC1E8 - .incbin "baserom.gba", 0x3AC1E8, 0x410 - -gUnknown_83AC5F8:: @ 83AC5F8 - .incbin "baserom.gba", 0x3AC5F8, 0x1D0 - -gUnknown_83AC7C8:: @ 83AC7C8 - .incbin "baserom.gba", 0x3AC7C8, 0x188 - -gUnknown_83AC950:: @ 83AC950 - .incbin "baserom.gba", 0x3AC950, 0x10 diff --git a/graphics/tileset_anims/aim_0_0.bin b/graphics/tileset_anims/aim_0_0.bin new file mode 100644 index 0000000000000000000000000000000000000000..38ac085bdceedcd705047b83966d6844443fa468 GIT binary patch literal 128 zcmXYpp$)(=3`RDq6Z~&`0h~e1a3}VOc|L(#2)iNIq)nSP1wLd4Wy#677u6$L zO3WfW>z_CUBsuI+kT+EjvG3vXHIVs^aaW*qz|&C_b~~x(vj(COMs2P2W!U@$8BjGY literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_0_2.bin b/graphics/tileset_anims/aim_0_2.bin new file mode 100644 index 0000000000000000000000000000000000000000..8bfe63cd213b09535d4f810aadba6d172b7d0dc4 GIT binary patch literal 128 zcmZ9EAr8PG5Cm7$A^If*4srj37r+?=hP!Xn^9d}WRA9QvWHZ@hfsp~L5rr5V1w^qMs^)bf07CF4O^D@u? literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_0_3.bin b/graphics/tileset_anims/aim_0_3.bin new file mode 100644 index 0000000000000000000000000000000000000000..13522349b7ec248a69c495358410cd212abc776d GIT binary patch literal 128 zcmX|(u?fI15Cc`D`ywm3_|Apr^9rBFg)3`~^j_jy<9r}Qa3DA#;1AJgxJFRfSVyyK w{5FbwunAse)g(3qdrqr(nnj_yuB1kGjRX_ literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_1_0.bin b/graphics/tileset_anims/aim_1_0.bin new file mode 100644 index 0000000000000000000000000000000000000000..fb05bd03cb4351f3431903e21e87760c1c7fe012 GIT binary patch literal 1536 zcmcIkzi-n(7`+Zu2o}7St^a~|I<$X47CS3Tu1mJkddU#Bk7QxAVPbQQgw(CgF{eX6 ziND~=j+9$iq2WC{rfvX5Ldw& z%NRJyvZJmH@s>Ko@AvxMpZN}KumRP$G447kSlrA zR6gsU9%q9z>sxy|m=9B{YUip$9bKztnQmKW4c1~!*5(;_7M_WP`t!9I{Vi{qf ziEp7J8q~I}tHnDG)9e~XMgyc>o7A?fF9}tQ6`WJo!6vy3lQ%B literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_1_1.bin b/graphics/tileset_anims/aim_1_1.bin new file mode 100644 index 0000000000000000000000000000000000000000..d67987eca9a5a72d635e9370f1a70e550da37bf5 GIT binary patch literal 1536 zcmcIjy>8nu5M~M_Lpw23kRhEW_$8})N1} zSt8dGcLY5ieXYmIY#3`qJwqJg=^bL4;&FdGNRv3-w9Yel7SH6_yarwiuZd@GTJLK- zPG*>DJnhqm&4g_>SlhHdK>9}<#^XEGF&jj-*<@|gdbI#n6$ThY6R=JXd8=P#jAE?D zgCBIxxmD`^H{zqS)|Jkcj4x&R!x7f$bGp-v@7DhMSyd1GANPp2SH^U>mhSwwf9Wz{ k0*weVz@BVOSP4q%!!tnxSpWb4 literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_1_2.bin b/graphics/tileset_anims/aim_1_2.bin new file mode 100644 index 0000000000000000000000000000000000000000..813f9391438104e3cd62dd63de4b822394e57004 GIT binary patch literal 1536 zcmbu9zi-n}5XT=#6bY6-kL?t%C=-7Hs7tplw%05^FIig2K1Ip`(<5Ez7Q@7r8i|== z=6L9nkl0;zB=Q%4%J(jD45d;BPWjr;_qn_GDo#y+RUb9V3}>nn9ePOu=x(NQxt)_WIly=gdpzcAcBQD9ek5o7anZ{l0o+ z%xtmN`J3`_?c9@7=k}fZ7`XD2wFo(@+~VELIXj!b+J(~ucCfCCstdPQ&D>t?=BK5* zxNocddryNcHtoiSVb})NhSu7F4Fe1Y!2$C@$J;Rc3OGOvu0n07d}yB|5gHu#vL~(h zhrzS8H0Gq|5-VJFi2Gq1+6kte1omuVZ8<5+GDCgZ&c7WD!xq798=OJqdY?yRj-tq* ze+Gv>LjTsvNI304xZu!Dl#)R=cPNG^-5H^OBlK^C{vn7VG9w5V%|#5_55*7AKZE`m zDjsT0;f41EjXgKsGy5XRGtOg93d++WiwS%weEJ7Z!SULq%Q1KZ&fqA(%$mR9neslr zL4DTxEcq%JOZ!vAcK|ck}L1N9?A*d+zwp>+3HbE4cLjbGR`KF0Z`* zv4Y*jtJSI!`%qQiC0-1P`n7#)+h4cwcD1^a0O2;2zYJ>~ez)0O{GS{xg@ULn+qs47 Ld>xl>@PF(#&;!qN literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_1_3.bin b/graphics/tileset_anims/aim_1_3.bin new file mode 100644 index 0000000000000000000000000000000000000000..df560357cc9924b4fe26977a8f47f22397950701 GIT binary patch literal 1536 zcmbu9zi!k(5XPN?L!x4r<`m>&U6GD(B~_#}*U{K+-FVzwh2mYECxuDa^wVn-DgmFoi;p zOGQ|TQqEzA5JLvy;LgF)8*fDHaxj!3!NhPh;-k=TZLhQUr=Dl+%R_6QS$lj~RbR2J zUo6+3R!=-{ankGbL-l%X?ellmj;;M7ZS_qEgp@0LQZB5Oi{qoGDiEF&s;`TxCw6i-UvBuRL~2)k3D8xjFj+~(?*ngjZ#?E6i3e$YDl#_ zK<$I7+Rsp*y7Rk>IPV)(XjTTu*=>9^>F+ZkFCp?UKM(VJgZU+xUxJY^rx8Stpb&~6 z8es|}jAN8wehJ2wV159GVOI+m&c*yjl=i~>Jj~A{{kW^iyeMi{7~^!DXC{kG98;d^ zSww}SO;OJrxEpv1PT(7G2kzXx9GQP{6hM8$`G)g#FG}lK6lav1I5OJg8K22#a|~jM z&*ZZWdf;BKcnxmA3$#w=IljA7Zsr3_tSuUT?lvf<=ZDNDC&Sb!`&HnuiM zNNj+a z3{@<{p2EvfR3Pj{DC3Jki~$H~L<*c7I3I*R+#+x4GvwZhg=91fnH`Y0ZoQUg1qVF&ARJ( zN8S;6BgBjqVrC5arf*J~LY&lnaaQ+d1)5^^yy>@|*M?&?E&FRUwC1lmNmdG!Q&!&a@PqTkae7K6eMa8Dtrv1!D1LnYvsb)p`B#bDrHqP zij@MdV(<$5BwhgEGw^CmzS1YqC(s9(9d;AwgCqlw&oAu2{}}%5O@FI`1YQ%)Nsepa zTIfmdjB8MtU8oGa0zZi&Ii@Fhk~YIyG24)Ha}D@@N1X(Gki=Xg{JZe)!oR)gU-l1E zG&WdRMKEVFM#2ZB7B*5Dcuc#P;MIf)dXrcKc+^spKuZMJoemPrU(|r_g72cNv+0lB zO6)L1hv=CJz`RH$`UklG8TKE|f}cd09haq)u%^<}hzKC+qJQjvT-kQuc??l|)Bm1f zEv_ok)TV#LHhxu#@7|=iRzWvvSI__A=ZN?7`S)cNKbFhl7xOL8fBn3_|GLTN%jF#l yRy-!LH`adfsz7pcXDw`&%Q>!Xyyv>O5XE1Y{wucen*#bUsAFv7%U|LDkG}z+IKr<0 literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_1_5.bin b/graphics/tileset_anims/aim_1_5.bin new file mode 100644 index 0000000000000000000000000000000000000000..4e5e0e24725efeb9c34bfcdecf7c00bf1fecded7 GIT binary patch literal 1536 zcmbVMF>ljQ5Pl$<0hXo{f(bKrsMM&fki6NdRjC6@>@|xoiwB06JVnYKh6@--NpjPZLo9 ztt2K-$F%J?iM%F^C??Wa1W}VZy4i$D^9KNuRVZrIfFX*_k( zOYx2Ir$sTDl_gvtj`P#mYzY2LTq?ZW+?#G3@69$&dRKbfo0Z3V(@Pb5wt>BCJ`!^s zFM*ZLNzZAdJy4r8?X|&AlS)toDv&~^sB(%br{!iUI`6X;suvV0%uiu{EsO_BqJqaY zrJ7Vzn4iM@6y{gM{A!rr%5(TU$Jkl|VtxwqQ!R>>YC)C4{8li(70j=O`6N`MJ8k%zCAZWdwJhUNV>bXE07vxL)d{(p;$1&NZ>XQU?J*nQ^dsbt=lT1{&lPsn ze;@sut(;A)xgP~E4BC)*@g?lxC1x!4G9Es00DRv>V;8uK&(YNp@`K+qZAK4#b^emS zlS{QpC|H|4ZP@j(=Y=pL06M?we-RIyfa6d&5qlXgXN2?b1UZE}IJ6y|baphEeLn)X zslE$57{7&N%-KS2!xw%x-%ge}A~*LJ>jf@8XO43|W4G>as$TlVMRGd L9cTU({{Qn2ty|Ks literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_1_6.bin b/graphics/tileset_anims/aim_1_6.bin new file mode 100644 index 0000000000000000000000000000000000000000..bb716829f5946da5374ea079c2d21b0b165fa666 GIT binary patch literal 1536 zcmbW1F;Ck-6vvNB&CpI^WI|?SK;knTiI6fd5NFL`pBImDPDl)8JHpa3#pMeGSE@v( zf;(Etz?1q3O!rE-U!aZqf0sB(Arexb{CAG~-TU9WdooJ-N~t#F`W_@bx2^h3Ot?)5 zzaE%`8r8sNaMm$|;ACrH2Maq!zB<5U)NZSG2QOBD=|&|_2^;UPg)m0EGiKYE;aMEt zj?6F}4bxA_8zBaxnXW&^Z&PD-FO0$Sb<@Om^*WY(NX+PFV9d>6c)ocR-)*0rJ7U|} zU~4lnTgkv|rDk}Mn%h@#l5UtUyF%107CA>zJQQX5t3)_>b{uCvMo6tCL0GObA-M}dyC?kJ`Gap)?_z$JJyBiv`d1Ma)b zqrmcIJ~*v%&hNt?3Q13B!4Ht%P?6v8TwcRo?Ae32>}jG?O{hsLP+PvtXST{``M7`f$Nh&L3?OxY{3eC4RQyepM0n@a5yI;dZ}@&%VO{fByw)y84R% literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_1_7.bin b/graphics/tileset_anims/aim_1_7.bin new file mode 100644 index 0000000000000000000000000000000000000000..c49e57e7fcd915118d0818195435144d3f3f6f4e GIT binary patch literal 1504 zcma)5v2NQi5M_osMZ45nkZ$<}eSnAL7ep-@yog#f6fkHm9-NJ}myUKjb#qjpK(@r{ zYJ2GYg7N_YtfhO@ca#_?ZqoKaPdf44J@Q0RDj;bY;wcklK&2zZVX8F7#ypKa#F4}zc$fD2vDrMk(f3kMp}=UzJ#8xqkrb0T{R@#8BZ<0^e6)?>>M-?B5Xk z$GYl)@>t;OgA!CdPvmGY9Aa05qYRxFdvYyuu}wW#_ppBg`zONil~Bj53PF<{kufxm zbZQc5@YiUw&7{&hwWT;A?R5iPLzgCDod`N*sE-fp4|LkVU$_4F`E44RX;l61jF9Nshbq9CviJf!^A<;n?f$Yp0Y+^nwrW0=yW+ z8T!W=-YB$^jiE~{mIpZ*Li0!wrZLCedX76fVaWue-2{WonDq!YCM7;E37o|^k)YSNHRsyH?`iH=j&vGEwKe~AsoVvOPH zHbjqVdrorYrjo)|h5e{6h_dRy^0mCQ zB6$u(*4I*Qd+%tus-;?IBCD);9=w&?#mZXj8Ti#w$*|63Xr;)lY;s%Mo^0(o4W8PU zUALOXHK>tN-wHKm9(QAepFT(U^_TBMx4ZMqPjI;J@-N3sH+P5mrcrb3Pm~HD@V+^D z|8QuW+wGleMwnOaPf(=kku|{|!QTx2X7D$IKcDLW#C?LSBXJ*E0%!>$_>15#f@6Ze b795BoKm>mQ)CKStz#qXMne>cI-={=B9U%xY literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_2_1.bin b/graphics/tileset_anims/aim_2_1.bin new file mode 100644 index 0000000000000000000000000000000000000000..74424fff906233f1648a92efdffc3a2732a64675 GIT binary patch literal 576 zcmaixu}T9$5QZm063}W>T7+aRZ6pzF#e`gIv!u1Tu?@L!gPnHc*(f%5`U01;ij~Pd z%RNHw8T{{}pddKxH?TWD|HAyvXLgQxiYCsv1=>ia?rZ@9aiPeRMT93JK6?wuJ;+1A zuDU=R4n@M#Kzwhw@I!Cpb69D(1|rz{@OPEJpat;v04yEV^|&NbrCZgWYJ8U@>r~@B zjq|r`pD0RqEMJm?T=n=t73ZU)$;KE+o-$2Wk?Jan?>n!_rgwL5sb?FNwWfNQMS7TP z{E+K)@|z()LVkq&=qmJx;E6(XE!Z}ZUlZ0;MHWb#Ja|_136Od3{r~^~ literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_2_2.bin b/graphics/tileset_anims/aim_2_2.bin new file mode 100644 index 0000000000000000000000000000000000000000..7b2e609c3e7432b123d8f514458b9cbff8358780 GIT binary patch literal 576 zcmYL`F;fCD5QSHfVMZG^B~+Kzp*lud6$XdSCPPbeu|;6WT&dLxjdT|~yW{)=D*wX% z{);c1LT0{XFYjeDxo7R&+*;cM%YZS~8eO2(Pl2CN@cNRP{yITw29ST06CSu=CQTA_#(o-z2>ORaw(M(|(`D(k)8;aeO8(c=-Gm0`c5ZYuVk z*-;PPpzj%B9hI6>T$?K1q|83`-anwfJ=}jNI=Y0pEY$}1>YbAwP3)48A0fYc{NQN- z*#zA+h!&WTA0a~ zK)<3NkbmJOL0G!+v+wh@qmvAs%aVn&Hh~_XEVb6A1`A_m7RsiWr^Z-U2@8k9p-55` zf8L)z!!|r)7ARu)wx2qi4UyYNZhtYe$qUQxb)h3B#k$Ew>Q*}YwR8@$5ihF~ z{%D`X>ffdkBV;Z);%aEEIP!T{=f3bG=SG!}h9jdvp&??eRMCxn*XOm*y>ZC5gHT1w zQ02>z^XHQFvSc+bb<_xTh`q|Idz3<5j7!c3rPi4B7*{VfGL$Y-WT)Pbo{(?r`|A%M zn}=#VRz*0|D?=SO|2cQ`m^cDI0>4M_n}FX0Y$|^mKqeqyAz&f!3BWG^zo6=wfNLcJ d5HuQ^Lo|VifUO07EwDR<2>i&*&Iob!_ywSZyhZ>3 literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_2_4.bin b/graphics/tileset_anims/aim_2_4.bin new file mode 100644 index 0000000000000000000000000000000000000000..c350f70ec2bb5eb92cbc50d4a61397a47b38d67a GIT binary patch literal 576 zcmX|;u};G<5QYz-bbtkCLLi2kg(U+yB-FVTh^>po+Qnu?qKeg#?I;V7rN_or%ESir zE!gue{BBAueX-;J?xN_6*UpWjbBsqE#OrVYs&Nb<5u*#|edjB7KA%QSzC`TZCwjy{}?X|^5kXtvDhJ+ z&RgDJb$2Op_$ab3@|BDJ7=x1Mh0H&vBKdUou-CPQa?@?+V(MHD7E?J`%1l%qw#?i9 z7U!Fo8vEN=)BP=NX&I}>ti4)Uwa0@P2Tfs{A~)6^+vAigbDb)Q%vfm6trp z%X&q@^<7c+`puejPIv!#s!ctq_Xu=>t#yKrPP8RryTSa>Y?iUj5p#2@x}j8U|8wZ* zHadbog1-^`jo@zte<^nv@EwA(HNFEa9camh@Hd28fN%|7h=xA(!e0h|8T@7NNAO3X K+NRJ+DbXKtYsC`) literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_2_5.bin b/graphics/tileset_anims/aim_2_5.bin new file mode 100644 index 0000000000000000000000000000000000000000..71636ac22733f66d1443c732635b7fcea95682c7 GIT binary patch literal 576 zcmYk3u};G<5QYzmS_zh>BTSf)p;A)`u^|-^bz`x*c8OUlwX&5FrlTxSmY639Wn!cB zS;`wENIXEz@1%mB^q*qi<vfhWJ~5q1-o#$4t_v06Ka7K9K#q7(Z1xo;`! zuG7!kv;MmMocwE+tlg}iZ{(lXZQO13_;gcNHv~TdKLS4* bDose<8~o}(R|mg3tO@+6XBu?2SAF>xcIfnX literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_2_6.bin b/graphics/tileset_anims/aim_2_6.bin new file mode 100644 index 0000000000000000000000000000000000000000..79e125e620fd72ac258dac222e765a443e6e9d4b GIT binary patch literal 576 zcmZvZF;Buk7=}MI*hD87naD9RU?`E51cG66xv;wQT$@0+u*voTi!$}}4-}km68c-} zKcN1Dp6@|oV)RR&=Ig!JyK5h%`rQD?VB$*|v_Kp5wG5OVI;7NE$}yTTny%JEzo&J} z?`qZa@gx<774l$&<_3-GjkKDyv{LP{Qnw?82231MDkZT2mJHn5bgZW}5i>n9SDB-k zF}s+fB#x4|%_Y$yKCyl=R|#`{$&Blx%w}IIVaoG{&G~gj+oGtmF3dag>yB5aBJP3usDKFZWO0(ZSS-25nyrm z{2#WB#tXmjj{oBw)Wfeh8Kz!#OII*tpp=td|WDGpzx0xvr{x&84YJ^U+)q<@FDn z*XqhJ7X@J6-Eegny`$y2;d+-dZ}akb`c@s*TVpV1>PB3*IP{1N;`@E5^f1b;4Hc|dvuEd(tD pKOX#f@aLf?11f?$a=;%wqLCs%1b-9wo4_Af68wQN$+1g`z5z6w3flkx literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_3_0.bin b/graphics/tileset_anims/aim_3_0.bin new file mode 100644 index 0000000000000000000000000000000000000000..6a911444bd920cb82b90611400bb5fb99c8d8614 GIT binary patch literal 256 zcmZw8F%E+;3DDy9Ye+ z@vZKEL+}O+o^p#Qzcxx<6UpJsP0ZRw;e6)U7qW}G e-BcP6wTKi`vEFnt#`ha;bH8Ikt*VVCX3HNV#9*ZW literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_3_1.bin b/graphics/tileset_anims/aim_3_1.bin new file mode 100644 index 0000000000000000000000000000000000000000..a66f3382d899a2175db06691bb7152274845148b GIT binary patch literal 256 zcmZvUu?@md3`D=gLP+jH)`&OorAZyrP~#$7(79!VNGQc0ii<>=@bC2O;?6FmC6TMV za(6o|B|EufN9WB`M#!qRPKr9I)e!^1j=wYUkW}jh_UYB;I$*B&ar72;qruVR-bkGJ VySejEI0;`k&VAq+aE8pN?F*qNVj=(l literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_3_2.bin b/graphics/tileset_anims/aim_3_2.bin new file mode 100644 index 0000000000000000000000000000000000000000..ed7890e8380dc17810174b6b419f1da2edf61f06 GIT binary patch literal 256 zcmZvUAritc5JfY?2_g#DU}jyR$JnAP@}nvcB;0_A-U7FlBVa1lF;myOupl%2fBu^H z_dB;Gq9Z-!=WXhow6v4fET>gy1bu+_2x#b`4Ay;s9vJIO1RV*Mj)3Ki(El;|LD5`Q rFP=3vev04{fjaDO>W5@MX$DfMQ}@f=HcGaXJlU!Hz@s1=G-jH=$uVF9 literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_3_3.bin b/graphics/tileset_anims/aim_3_3.bin new file mode 100644 index 0000000000000000000000000000000000000000..5cfdc3ebdd4f77d0af3f2b49154544bd9ec6b04d GIT binary patch literal 256 zcmZvRF$w}P6hs4_AVuyW{7&~0Tl{EanMt#jZY*rYU+5|9(t3miwaAu=#U94LjUem{ zZy0#SOoeDp*F1LG8j}|^%L{E@QYK2&C3FY)(jb(mZ1rydy5*dRGEzkWkIJJhBLVLM zyvpDM1_W*bcwGY@8z8P`Sy?O5S@_ViN6+wgz#ZZ3g$W~n8 literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_3_4.bin b/graphics/tileset_anims/aim_3_4.bin new file mode 100644 index 0000000000000000000000000000000000000000..83dc605ff43917230672b6fd3e3f4e20720d5481 GIT binary patch literal 256 zcmZw8Aritc5Czc8aDs~BxC1lm+Fl|iC4-1xV=UN6*UN$8t%dm2oT+! zmrZ7WoSQ3=wOlRt{MI?EWMLKCYB7-{eL{ah7!Qc!{v&WgYO^F_NR33?nt=0|MFQna z){_3)@Vy1=o8ufve@?tVRF5HQ3~|~4Q^`Lo51qFCpTXPN(62>t+d1&e0UNXG9*!8X@0#+WpNa9{}Z=;;YfPi!@M Ow*Im(Q{l=2JftsfTr5NY literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_5_1.bin b/graphics/tileset_anims/aim_5_1.bin new file mode 100644 index 0000000000000000000000000000000000000000..f1a93897e2f28192cfa7b1da874f5580803a0ce9 GIT binary patch literal 256 zcmZXO(G3GJ2tz#p*?%1mz)1{1cIhLR_NPb)u#G{IB_$c;^fw}8w+#`GvaDJoc>@-D z`h4UnREyytgWm84-LTDWbjfREf5$-1CH^oOQ^%9~hB=s7%3f*=7d{>;(Hmoss{}s# PXP&P%$d{eJvH8s({s=R* literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_5_2.bin b/graphics/tileset_anims/aim_5_2.bin new file mode 100644 index 0000000000000000000000000000000000000000..d63cdc5fcca2da5b8ab7500e3968e1074531c8aa GIT binary patch literal 256 zcmY+9iw(mt2t;oH*ngcHfJzy_-lgvxMQM=*#`pMG`m>VCl1Ew>O8=^bI=Cp^rG1O= zLb(zjp4=xd_<_IRImZfW0zdTq9Pjs<%%{S%qEFdOT-(*%X5100hIJRfhEK=zh?IC{ RQlUN8XS&C1!r*)^_665-EJOeR literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_5_3.bin b/graphics/tileset_anims/aim_5_3.bin new file mode 100644 index 0000000000000000000000000000000000000000..0c396ccbe61223d363bb3ca879feab98661d351b GIT binary patch literal 256 zcmYL@i4DLo2m?I;*?%1mK&1?j?9zkuvDBjA59x(1MM~!DInO-2Ba}InYiRAMF@`Wm ziQWq>i^iAJ@8G}vv&4v)PmKjubPDD~G670^by{3_tT{?@P&vh6z2sT9R$p&w`@p;U NVHe)uOh0G7Wj9VHGqnH! literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_6_0.bin b/graphics/tileset_anims/aim_6_0.bin new file mode 100644 index 0000000000000000000000000000000000000000..8bdac939e67c63ff39cc6b051e2fdc0b1cdfaa45 GIT binary patch literal 224 zcmZQzzzJ9x7y`m@$`UIPkebGjnwG+l>gE#Q=HddP!F-T7(EL!KIccGxp=m(i0t6r$ V#0QDP0Ei0`hRLHz1Ko)m008>27lQx* literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_6_1.bin b/graphics/tileset_anims/aim_6_1.bin new file mode 100644 index 0000000000000000000000000000000000000000..cd2e32723fba781eda31c6aafc4e2d161ab49f69 GIT binary patch literal 224 zcmaKm!3}^=2t#{uGX~&-6MVY=2)0r4JrJ7^ppTFOqYfZXWOJmCS%2_l&6SLBb==)E c;M1& literal 0 HcmV?d00001 diff --git a/graphics/tileset_anims/aim_7_0.bin b/graphics/tileset_anims/aim_7_0.bin new file mode 100644 index 0000000000000000000000000000000000000000..f94617c73505a157fdbe6cea964865aa73058997 GIT binary patch literal 128 zcmXwwK?;K~6a@#0yBwwvvhx<=F1un*;{_6PfF|?;-35f8@(*RKbQs=dc<`qP#6Vdx zF$F%^7xDXDTat>niggM*D&`H|tv=nVc{!m>6=My09Wi>K&Gk)RMG8AUA4IQ^{z0!h GnmpzkQR7Gru!(~#}{{ubfCoVZ}c`5?(gYEzK)Z~>kA BAY%Xk literal 0 HcmV?d00001 diff --git a/ld_script.txt b/ld_script.txt index 16e7b576c..cb6395393 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -417,7 +417,7 @@ SECTIONS { src/coord_event_weather.o(.rodata); data/field_tasks.o(.rodata); src/start_menu.o(.rodata); - data/tileset_anims.o(.rodata); + src/tileset_anims.o(.rodata); src/palette.o(.rodata); src/sound.o(.rodata); data/battle_anim.o(.rodata); diff --git a/src/tileset_anims.c b/src/tileset_anims.c index 30f390512..9403bc1df 100644 --- a/src/tileset_anims.c +++ b/src/tileset_anims.c @@ -23,14 +23,118 @@ static void (*sSecondaryTilesetAnimCallback)(u16); static void _InitPrimaryTilesetAnimation(void); static void _InitSecondaryTilesetAnimation(void); -extern const u16 *const gUnknown_83A7660[]; -extern const u16 *const gUnknown_83AA654[]; -extern const u16 *const gUnknown_83AB874[]; -extern const u16 *const gUnknown_83ABDB4[]; -extern const u16 *const gUnknown_83AC1E8[]; -extern const u16 *const gUnknown_83AC5F8[]; -extern const u16 *const gUnknown_83AC7C8[]; -extern const u16 *const gUnknown_83AC950[]; +static const u16 gUnknown_83A73E0[] = INCBIN_U16("graphics/tileset_anims/aim_0_0.bin"); +static const u16 gUnknown_83A7460[] = INCBIN_U16("graphics/tileset_anims/aim_0_1.bin"); +static const u16 gUnknown_83A74E0[] = INCBIN_U16("graphics/tileset_anims/aim_0_2.bin"); +static const u16 gUnknown_83A7560[] = INCBIN_U16("graphics/tileset_anims/aim_0_3.bin"); +static const u16 gUnknown_83A75E0[] = INCBIN_U16("graphics/tileset_anims/aim_0_4.bin"); + +static const u16 *const gUnknown_83A7660[] = { + gUnknown_83A73E0, + gUnknown_83A7460, + gUnknown_83A74E0, + gUnknown_83A7560, + gUnknown_83A75E0 +}; + +static const u16 gUnknown_83A7674[] = INCBIN_U16("graphics/tileset_anims/aim_1_0.bin"); +static const u16 gUnknown_83A7C74[] = INCBIN_U16("graphics/tileset_anims/aim_1_1.bin"); +static const u16 gUnknown_83A8274[] = INCBIN_U16("graphics/tileset_anims/aim_1_2.bin"); +static const u16 gUnknown_83A8874[] = INCBIN_U16("graphics/tileset_anims/aim_1_3.bin"); +static const u16 gUnknown_83A8E74[] = INCBIN_U16("graphics/tileset_anims/aim_1_4.bin"); +static const u16 gUnknown_83A9474[] = INCBIN_U16("graphics/tileset_anims/aim_1_5.bin"); +static const u16 gUnknown_83A9A74[] = INCBIN_U16("graphics/tileset_anims/aim_1_6.bin"); +static const u16 gUnknown_83AA074[] = INCBIN_U16("graphics/tileset_anims/aim_1_7.bin"); + +static const u16 *const gUnknown_83AA654[] = { + gUnknown_83A7674, + gUnknown_83A7C74, + gUnknown_83A8274, + gUnknown_83A8874, + gUnknown_83A8E74, + gUnknown_83A9474, + gUnknown_83A9A74, + gUnknown_83AA074 +}; + +static const u16 gUnknown_83AA674[] = INCBIN_U16("graphics/tileset_anims/aim_2_0.bin"); +static const u16 gUnknown_83AA8B4[] = INCBIN_U16("graphics/tileset_anims/aim_2_1.bin"); +static const u16 gUnknown_83AAAF4[] = INCBIN_U16("graphics/tileset_anims/aim_2_2.bin"); +static const u16 gUnknown_83AAD34[] = INCBIN_U16("graphics/tileset_anims/aim_2_3.bin"); +static const u16 gUnknown_83AAF74[] = INCBIN_U16("graphics/tileset_anims/aim_2_4.bin"); +static const u16 gUnknown_83AB1B4[] = INCBIN_U16("graphics/tileset_anims/aim_2_5.bin"); +static const u16 gUnknown_83AB3F4[] = INCBIN_U16("graphics/tileset_anims/aim_2_6.bin"); +static const u16 gUnknown_83AB634[] = INCBIN_U16("graphics/tileset_anims/aim_2_7.bin"); + +static const u16 *const gUnknown_83AB874[] = { + gUnknown_83AA674, + gUnknown_83AA8B4, + gUnknown_83AAAF4, + gUnknown_83AAD34, + gUnknown_83AAF74, + gUnknown_83AB1B4, + gUnknown_83AB3F4, + gUnknown_83AB634 +}; + +static const u16 gUnknown_83AB894[] = INCBIN_U16("graphics/tileset_anims/aim_3_0.bin"); +static const u16 gUnknown_83AB994[] = INCBIN_U16("graphics/tileset_anims/aim_3_1.bin"); +static const u16 gUnknown_83ABA94[] = INCBIN_U16("graphics/tileset_anims/aim_3_2.bin"); +static const u16 gUnknown_83ABB94[] = INCBIN_U16("graphics/tileset_anims/aim_3_3.bin"); +static const u16 gUnknown_83ABC94[] = INCBIN_U16("graphics/tileset_anims/aim_3_4.bin"); +static const u16 gUnknown_83ABD94[16] = {}; + +static const u16 *const gUnknown_83ABDB4[] = { + gUnknown_83AB894, + gUnknown_83AB994, + gUnknown_83ABA94, + gUnknown_83ABB94, + gUnknown_83ABC94 +}; + +static const u16 gUnknown_83ABDC8[] = INCBIN_U16("graphics/tileset_anims/aim_4_0.bin"); +static const u16 gUnknown_83ABEC8[] = INCBIN_U16("graphics/tileset_anims/aim_4_1.bin"); +static const u16 gUnknown_83ABFC8[] = INCBIN_U16("graphics/tileset_anims/aim_4_2.bin"); +static const u16 gUnknown_83AC0C8[] = INCBIN_U16("graphics/tileset_anims/aim_4_3.bin"); +static const u16 gUnknown_83AC1C8[0x10] = {}; + +static const u16 *const gUnknown_83AC1E8[] = { + gUnknown_83ABDC8, + gUnknown_83ABEC8, + gUnknown_83ABFC8, + gUnknown_83AC0C8 +}; + +static const u16 gUnknown_83AC1F8[] = INCBIN_U16("graphics/tileset_anims/aim_5_0.bin"); +static const u16 gUnknown_83AC2F8[] = INCBIN_U16("graphics/tileset_anims/aim_5_1.bin"); +static const u16 gUnknown_83AC3F8[] = INCBIN_U16("graphics/tileset_anims/aim_5_2.bin"); +static const u16 gUnknown_83AC4F8[] = INCBIN_U16("graphics/tileset_anims/aim_5_3.bin"); + +static const u16 *const gUnknown_83AC5F8[] = { + gUnknown_83AC1F8, + gUnknown_83AC2F8, + gUnknown_83AC3F8, + gUnknown_83AC4F8 +}; + +static const u16 gUnknown_83AC608[] = INCBIN_U16("graphics/tileset_anims/aim_6_0.bin"); +static const u16 gUnknown_83AC6E8[] = INCBIN_U16("graphics/tileset_anims/aim_6_1.bin"); + +static const u16 *const gUnknown_83AC7C8[] = { + gUnknown_83AC608, + gUnknown_83AC6E8 +}; + +static const u16 gUnknown_83AC7D0[] = INCBIN_U16("graphics/tileset_anims/aim_7_0.bin"); +static const u16 gUnknown_83AC850[] = INCBIN_U16("graphics/tileset_anims/aim_7_1.bin"); +static const u16 gUnknown_83AC8D0[] = INCBIN_U16("graphics/tileset_anims/aim_7_2.bin"); + +static const u16 *const gUnknown_83AC950[] = { + gUnknown_83AC7D0, + gUnknown_83AC850, + gUnknown_83AC8D0, + gUnknown_83AC850 +}; static void ResetTilesetAnimBuffer(void) { From 3e12bd8e078d6f1175a0614ba38ec4179c4f05cc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 21 Nov 2019 09:48:20 -0500 Subject: [PATCH 46/49] Minor refactor of tileset_anims --- src/tileset_anims.c | 36 +++++++++--------------------------- 1 file changed, 9 insertions(+), 27 deletions(-) diff --git a/src/tileset_anims.c b/src/tileset_anims.c index 9403bc1df..4fdb1e6bf 100644 --- a/src/tileset_anims.c +++ b/src/tileset_anims.c @@ -209,26 +209,17 @@ static void _InitSecondaryTilesetAnimation(void) static void sub_80700A4(u16 timer) { - const u16 *const *ptr = gUnknown_83A7660; - u16 i = timer % 5; - - AppendTilesetAnimToBuffer(ptr[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(508)), 0x80); + AppendTilesetAnimToBuffer(gUnknown_83A7660[timer % NELEMS(gUnknown_83A7660)], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(508)), 0x80); } static void sub_80700D0(u16 timer) { - const u16 *const *ptr = gUnknown_83AA654; - u16 i = timer % 8; - - AppendTilesetAnimToBuffer(ptr[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(416)), 0x600); + AppendTilesetAnimToBuffer(gUnknown_83AA654[timer % NELEMS(gUnknown_83AA654)], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(416)), 0x600); } static void sub_80700F8(u16 timer) { - const u16 *const *ptr = gUnknown_83AB874; - u16 i = timer % 8; - - AppendTilesetAnimToBuffer(ptr[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(464)), 0x240); + AppendTilesetAnimToBuffer(gUnknown_83AB874[timer % NELEMS(gUnknown_83AB874)], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(464)), 0x240); } static void sub_8070120(u16 timer) @@ -250,10 +241,7 @@ void sub_8070154(void) static void sub_807017C(u16 timer) { - const u16 *const *ptr = gUnknown_83ABDB4; - u16 i = timer % 5; - - AppendTilesetAnimToBuffer(ptr[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(744)), 0x100); + AppendTilesetAnimToBuffer(gUnknown_83ABDB4[timer % NELEMS(gUnknown_83ABDB4)], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(744)), 0x100); } static void sub_80701AC(u16 timer) @@ -271,10 +259,7 @@ void sub_80701D8(void) static void sub_80701FC(u16 timer) { - const u16 *const *ptr = gUnknown_83AC1E8; - u16 i = timer % 4; - - AppendTilesetAnimToBuffer(ptr[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(976)), 0x100); + AppendTilesetAnimToBuffer(gUnknown_83AC1E8[timer % NELEMS(gUnknown_83AC1E8)], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(976)), 0x100); } static void sub_8070224(u16 timer) @@ -292,10 +277,7 @@ void sub_8070250(void) static void sub_8070274(u16 timer) { - const u16 *const *ptr = gUnknown_83AC5F8; - u16 i = timer % 4; - - AppendTilesetAnimToBuffer(ptr[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(896)), 0x100); + AppendTilesetAnimToBuffer(gUnknown_83AC5F8[timer % NELEMS(gUnknown_83AC5F8)], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(896)), 0x100); } static void sub_807029C(u16 timer) @@ -313,8 +295,8 @@ void sub_80702B4(void) static void sub_80702DC(u16 timer) { - u16 i = timer % 2; - + u16 i = timer % NELEMS(gUnknown_83AC7C8); + AppendTilesetAnimToBuffer(gUnknown_83AC7C8[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(880)), 0xE0); } @@ -333,7 +315,7 @@ void sub_807031C(void) static void sub_8070340(u16 timer) { - u16 i = timer % 4; + u16 i = timer % NELEMS(gUnknown_83AC950); AppendTilesetAnimToBuffer(gUnknown_83AC950[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(739)), 0x80); } From 083a4dfcff4627087560d08ddab27473dd9c0056 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 21 Nov 2019 10:14:43 -0500 Subject: [PATCH 47/49] Disassemble data/field_ground_effect --- baserom.ips | Bin 249030 -> 248798 bytes data/field_ground_effect.s | 51 +++++++++++++++++++++++++++++-------- 2 files changed, 40 insertions(+), 11 deletions(-) diff --git a/baserom.ips b/baserom.ips index 78355b3e81d8d68667ecf2149e6b332747e8a601..dbfed775a3247ff80f3ad94fd13fa6142e0537e9 100644 GIT binary patch delta 34 pcmX>$lmFgy{tX|RnB>lE{?v3vu6fy__GOD0ftYFgvPH}aS^zrS5Xt}m delta 266 zcmYMr%?d$L5C`x%=Q_t&+}J1^pG#$7VebX3Taz+KDdbss@KN_SzY6eV@Hl(Mm~ zq&$E^St@^WGt;k`X=cv-@OBWM-`X;{Ts+$QL?cB+5hzR)mmm$(vEmEreW>`m{2Udb z`Ku%-KT;fr5Ik{bS>=BcSrQ@qB$5K*kCI5_Y|VLF*SLkoq! Date: Thu, 21 Nov 2019 08:24:42 -0700 Subject: [PATCH 48/49] remove unecessary cast --- src/option_menu.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/option_menu.c b/src/option_menu.c index abfc7a0f7..35fe957be 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -512,12 +512,12 @@ static void CloseAndSaveOptionMenu(u8 taskId) gFieldCallback = sub_807DF64; SetMainCallback2(gMain.savedCallback); FreeAllWindowBuffers(); - gSaveBlock2Ptr->optionsTextSpeed = (u8)sOptionMenuPtr->option[MENUITEM_TEXTSPEED]; - gSaveBlock2Ptr->optionsBattleSceneOff = (u8)sOptionMenuPtr->option[MENUITEM_BATTLESCENE]; - gSaveBlock2Ptr->optionsBattleStyle = (u8)sOptionMenuPtr->option[MENUITEM_BATTLESTYLE]; + gSaveBlock2Ptr->optionsTextSpeed = sOptionMenuPtr->option[MENUITEM_TEXTSPEED]; + gSaveBlock2Ptr->optionsBattleSceneOff = sOptionMenuPtr->option[MENUITEM_BATTLESCENE]; + gSaveBlock2Ptr->optionsBattleStyle = sOptionMenuPtr->option[MENUITEM_BATTLESTYLE]; gSaveBlock2Ptr->optionsSound = sOptionMenuPtr->option[MENUITEM_SOUND]; - gSaveBlock2Ptr->optionsButtonMode = (u8)sOptionMenuPtr->option[MENUITEM_BUTTONMODE]; - gSaveBlock2Ptr->optionsWindowFrameType = (u8)sOptionMenuPtr->option[MENUITEM_FRAMETYPE]; + gSaveBlock2Ptr->optionsButtonMode = sOptionMenuPtr->option[MENUITEM_BUTTONMODE]; + gSaveBlock2Ptr->optionsWindowFrameType = sOptionMenuPtr->option[MENUITEM_FRAMETYPE]; SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); FREE_AND_SET_NULL(sOptionMenuPtr); DestroyTask(taskId); From 81e1efbd9e17ff56042b597d0e42274c589d8a85 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 21 Nov 2019 10:59:22 -0500 Subject: [PATCH 49/49] Fix review comments --- data/tileset_anims.s | 2 - .../{aim_0_0.bin => anim_0_0.bin} | Bin .../{aim_0_1.bin => anim_0_1.bin} | Bin .../{aim_0_2.bin => anim_0_2.bin} | Bin .../{aim_0_3.bin => anim_0_3.bin} | Bin .../{aim_0_4.bin => anim_0_4.bin} | Bin .../{aim_1_0.bin => anim_1_0.bin} | Bin .../{aim_1_1.bin => anim_1_1.bin} | Bin .../{aim_1_2.bin => anim_1_2.bin} | Bin .../{aim_1_3.bin => anim_1_3.bin} | Bin .../{aim_1_4.bin => anim_1_4.bin} | Bin .../{aim_1_5.bin => anim_1_5.bin} | Bin .../{aim_1_6.bin => anim_1_6.bin} | Bin .../{aim_1_7.bin => anim_1_7.bin} | Bin .../{aim_2_0.bin => anim_2_0.bin} | Bin .../{aim_2_1.bin => anim_2_1.bin} | Bin .../{aim_2_2.bin => anim_2_2.bin} | Bin .../{aim_2_3.bin => anim_2_3.bin} | Bin .../{aim_2_4.bin => anim_2_4.bin} | Bin .../{aim_2_5.bin => anim_2_5.bin} | Bin .../{aim_2_6.bin => anim_2_6.bin} | Bin .../{aim_2_7.bin => anim_2_7.bin} | Bin .../{aim_3_0.bin => anim_3_0.bin} | Bin .../{aim_3_1.bin => anim_3_1.bin} | Bin .../{aim_3_2.bin => anim_3_2.bin} | Bin .../{aim_3_3.bin => anim_3_3.bin} | Bin .../{aim_3_4.bin => anim_3_4.bin} | Bin .../{aim_4_0.bin => anim_4_0.bin} | 0 .../{aim_4_1.bin => anim_4_1.bin} | 0 .../{aim_4_2.bin => anim_4_2.bin} | 0 .../{aim_4_3.bin => anim_4_3.bin} | 0 .../{aim_5_0.bin => anim_5_0.bin} | Bin .../{aim_5_1.bin => anim_5_1.bin} | Bin .../{aim_5_2.bin => anim_5_2.bin} | Bin .../{aim_5_3.bin => anim_5_3.bin} | Bin .../{aim_6_0.bin => anim_6_0.bin} | Bin .../{aim_6_1.bin => anim_6_1.bin} | Bin .../{aim_7_0.bin => anim_7_0.bin} | Bin .../{aim_7_1.bin => anim_7_1.bin} | Bin .../{aim_7_2.bin => anim_7_2.bin} | Bin src/tileset_anims.c | 78 +++++++++--------- 41 files changed, 39 insertions(+), 41 deletions(-) delete mode 100644 data/tileset_anims.s rename graphics/tileset_anims/{aim_0_0.bin => anim_0_0.bin} (100%) rename graphics/tileset_anims/{aim_0_1.bin => anim_0_1.bin} (100%) rename graphics/tileset_anims/{aim_0_2.bin => anim_0_2.bin} (100%) rename graphics/tileset_anims/{aim_0_3.bin => anim_0_3.bin} (100%) rename graphics/tileset_anims/{aim_0_4.bin => anim_0_4.bin} (100%) rename graphics/tileset_anims/{aim_1_0.bin => anim_1_0.bin} (100%) rename graphics/tileset_anims/{aim_1_1.bin => anim_1_1.bin} (100%) rename graphics/tileset_anims/{aim_1_2.bin => anim_1_2.bin} (100%) rename graphics/tileset_anims/{aim_1_3.bin => anim_1_3.bin} (100%) rename graphics/tileset_anims/{aim_1_4.bin => anim_1_4.bin} (100%) rename graphics/tileset_anims/{aim_1_5.bin => anim_1_5.bin} (100%) rename graphics/tileset_anims/{aim_1_6.bin => anim_1_6.bin} (100%) rename graphics/tileset_anims/{aim_1_7.bin => anim_1_7.bin} (100%) rename graphics/tileset_anims/{aim_2_0.bin => anim_2_0.bin} (100%) rename graphics/tileset_anims/{aim_2_1.bin => anim_2_1.bin} (100%) rename graphics/tileset_anims/{aim_2_2.bin => anim_2_2.bin} (100%) rename graphics/tileset_anims/{aim_2_3.bin => anim_2_3.bin} (100%) rename graphics/tileset_anims/{aim_2_4.bin => anim_2_4.bin} (100%) rename graphics/tileset_anims/{aim_2_5.bin => anim_2_5.bin} (100%) rename graphics/tileset_anims/{aim_2_6.bin => anim_2_6.bin} (100%) rename graphics/tileset_anims/{aim_2_7.bin => anim_2_7.bin} (100%) rename graphics/tileset_anims/{aim_3_0.bin => anim_3_0.bin} (100%) rename graphics/tileset_anims/{aim_3_1.bin => anim_3_1.bin} (100%) rename graphics/tileset_anims/{aim_3_2.bin => anim_3_2.bin} (100%) rename graphics/tileset_anims/{aim_3_3.bin => anim_3_3.bin} (100%) rename graphics/tileset_anims/{aim_3_4.bin => anim_3_4.bin} (100%) rename graphics/tileset_anims/{aim_4_0.bin => anim_4_0.bin} (100%) rename graphics/tileset_anims/{aim_4_1.bin => anim_4_1.bin} (100%) rename graphics/tileset_anims/{aim_4_2.bin => anim_4_2.bin} (100%) rename graphics/tileset_anims/{aim_4_3.bin => anim_4_3.bin} (100%) rename graphics/tileset_anims/{aim_5_0.bin => anim_5_0.bin} (100%) rename graphics/tileset_anims/{aim_5_1.bin => anim_5_1.bin} (100%) rename graphics/tileset_anims/{aim_5_2.bin => anim_5_2.bin} (100%) rename graphics/tileset_anims/{aim_5_3.bin => anim_5_3.bin} (100%) rename graphics/tileset_anims/{aim_6_0.bin => anim_6_0.bin} (100%) rename graphics/tileset_anims/{aim_6_1.bin => anim_6_1.bin} (100%) rename graphics/tileset_anims/{aim_7_0.bin => anim_7_0.bin} (100%) rename graphics/tileset_anims/{aim_7_1.bin => anim_7_1.bin} (100%) rename graphics/tileset_anims/{aim_7_2.bin => anim_7_2.bin} (100%) diff --git a/data/tileset_anims.s b/data/tileset_anims.s deleted file mode 100644 index bd9a27175..000000000 --- a/data/tileset_anims.s +++ /dev/null @@ -1,2 +0,0 @@ - .section .rodata - .align 2 diff --git a/graphics/tileset_anims/aim_0_0.bin b/graphics/tileset_anims/anim_0_0.bin similarity index 100% rename from graphics/tileset_anims/aim_0_0.bin rename to graphics/tileset_anims/anim_0_0.bin diff --git a/graphics/tileset_anims/aim_0_1.bin b/graphics/tileset_anims/anim_0_1.bin similarity index 100% rename from graphics/tileset_anims/aim_0_1.bin rename to graphics/tileset_anims/anim_0_1.bin diff --git a/graphics/tileset_anims/aim_0_2.bin b/graphics/tileset_anims/anim_0_2.bin similarity index 100% rename from graphics/tileset_anims/aim_0_2.bin rename to graphics/tileset_anims/anim_0_2.bin diff --git a/graphics/tileset_anims/aim_0_3.bin b/graphics/tileset_anims/anim_0_3.bin similarity index 100% rename from graphics/tileset_anims/aim_0_3.bin rename to graphics/tileset_anims/anim_0_3.bin diff --git a/graphics/tileset_anims/aim_0_4.bin b/graphics/tileset_anims/anim_0_4.bin similarity index 100% rename from graphics/tileset_anims/aim_0_4.bin rename to graphics/tileset_anims/anim_0_4.bin diff --git a/graphics/tileset_anims/aim_1_0.bin b/graphics/tileset_anims/anim_1_0.bin similarity index 100% rename from graphics/tileset_anims/aim_1_0.bin rename to graphics/tileset_anims/anim_1_0.bin diff --git a/graphics/tileset_anims/aim_1_1.bin b/graphics/tileset_anims/anim_1_1.bin similarity index 100% rename from graphics/tileset_anims/aim_1_1.bin rename to graphics/tileset_anims/anim_1_1.bin diff --git a/graphics/tileset_anims/aim_1_2.bin b/graphics/tileset_anims/anim_1_2.bin similarity index 100% rename from graphics/tileset_anims/aim_1_2.bin rename to graphics/tileset_anims/anim_1_2.bin diff --git a/graphics/tileset_anims/aim_1_3.bin b/graphics/tileset_anims/anim_1_3.bin similarity index 100% rename from graphics/tileset_anims/aim_1_3.bin rename to graphics/tileset_anims/anim_1_3.bin diff --git a/graphics/tileset_anims/aim_1_4.bin b/graphics/tileset_anims/anim_1_4.bin similarity index 100% rename from graphics/tileset_anims/aim_1_4.bin rename to graphics/tileset_anims/anim_1_4.bin diff --git a/graphics/tileset_anims/aim_1_5.bin b/graphics/tileset_anims/anim_1_5.bin similarity index 100% rename from graphics/tileset_anims/aim_1_5.bin rename to graphics/tileset_anims/anim_1_5.bin diff --git a/graphics/tileset_anims/aim_1_6.bin b/graphics/tileset_anims/anim_1_6.bin similarity index 100% rename from graphics/tileset_anims/aim_1_6.bin rename to graphics/tileset_anims/anim_1_6.bin diff --git a/graphics/tileset_anims/aim_1_7.bin b/graphics/tileset_anims/anim_1_7.bin similarity index 100% rename from graphics/tileset_anims/aim_1_7.bin rename to graphics/tileset_anims/anim_1_7.bin diff --git a/graphics/tileset_anims/aim_2_0.bin b/graphics/tileset_anims/anim_2_0.bin similarity index 100% rename from graphics/tileset_anims/aim_2_0.bin rename to graphics/tileset_anims/anim_2_0.bin diff --git a/graphics/tileset_anims/aim_2_1.bin b/graphics/tileset_anims/anim_2_1.bin similarity index 100% rename from graphics/tileset_anims/aim_2_1.bin rename to graphics/tileset_anims/anim_2_1.bin diff --git a/graphics/tileset_anims/aim_2_2.bin b/graphics/tileset_anims/anim_2_2.bin similarity index 100% rename from graphics/tileset_anims/aim_2_2.bin rename to graphics/tileset_anims/anim_2_2.bin diff --git a/graphics/tileset_anims/aim_2_3.bin b/graphics/tileset_anims/anim_2_3.bin similarity index 100% rename from graphics/tileset_anims/aim_2_3.bin rename to graphics/tileset_anims/anim_2_3.bin diff --git a/graphics/tileset_anims/aim_2_4.bin b/graphics/tileset_anims/anim_2_4.bin similarity index 100% rename from graphics/tileset_anims/aim_2_4.bin rename to graphics/tileset_anims/anim_2_4.bin diff --git a/graphics/tileset_anims/aim_2_5.bin b/graphics/tileset_anims/anim_2_5.bin similarity index 100% rename from graphics/tileset_anims/aim_2_5.bin rename to graphics/tileset_anims/anim_2_5.bin diff --git a/graphics/tileset_anims/aim_2_6.bin b/graphics/tileset_anims/anim_2_6.bin similarity index 100% rename from graphics/tileset_anims/aim_2_6.bin rename to graphics/tileset_anims/anim_2_6.bin diff --git a/graphics/tileset_anims/aim_2_7.bin b/graphics/tileset_anims/anim_2_7.bin similarity index 100% rename from graphics/tileset_anims/aim_2_7.bin rename to graphics/tileset_anims/anim_2_7.bin diff --git a/graphics/tileset_anims/aim_3_0.bin b/graphics/tileset_anims/anim_3_0.bin similarity index 100% rename from graphics/tileset_anims/aim_3_0.bin rename to graphics/tileset_anims/anim_3_0.bin diff --git a/graphics/tileset_anims/aim_3_1.bin b/graphics/tileset_anims/anim_3_1.bin similarity index 100% rename from graphics/tileset_anims/aim_3_1.bin rename to graphics/tileset_anims/anim_3_1.bin diff --git a/graphics/tileset_anims/aim_3_2.bin b/graphics/tileset_anims/anim_3_2.bin similarity index 100% rename from graphics/tileset_anims/aim_3_2.bin rename to graphics/tileset_anims/anim_3_2.bin diff --git a/graphics/tileset_anims/aim_3_3.bin b/graphics/tileset_anims/anim_3_3.bin similarity index 100% rename from graphics/tileset_anims/aim_3_3.bin rename to graphics/tileset_anims/anim_3_3.bin diff --git a/graphics/tileset_anims/aim_3_4.bin b/graphics/tileset_anims/anim_3_4.bin similarity index 100% rename from graphics/tileset_anims/aim_3_4.bin rename to graphics/tileset_anims/anim_3_4.bin diff --git a/graphics/tileset_anims/aim_4_0.bin b/graphics/tileset_anims/anim_4_0.bin similarity index 100% rename from graphics/tileset_anims/aim_4_0.bin rename to graphics/tileset_anims/anim_4_0.bin diff --git a/graphics/tileset_anims/aim_4_1.bin b/graphics/tileset_anims/anim_4_1.bin similarity index 100% rename from graphics/tileset_anims/aim_4_1.bin rename to graphics/tileset_anims/anim_4_1.bin diff --git a/graphics/tileset_anims/aim_4_2.bin b/graphics/tileset_anims/anim_4_2.bin similarity index 100% rename from graphics/tileset_anims/aim_4_2.bin rename to graphics/tileset_anims/anim_4_2.bin diff --git a/graphics/tileset_anims/aim_4_3.bin b/graphics/tileset_anims/anim_4_3.bin similarity index 100% rename from graphics/tileset_anims/aim_4_3.bin rename to graphics/tileset_anims/anim_4_3.bin diff --git a/graphics/tileset_anims/aim_5_0.bin b/graphics/tileset_anims/anim_5_0.bin similarity index 100% rename from graphics/tileset_anims/aim_5_0.bin rename to graphics/tileset_anims/anim_5_0.bin diff --git a/graphics/tileset_anims/aim_5_1.bin b/graphics/tileset_anims/anim_5_1.bin similarity index 100% rename from graphics/tileset_anims/aim_5_1.bin rename to graphics/tileset_anims/anim_5_1.bin diff --git a/graphics/tileset_anims/aim_5_2.bin b/graphics/tileset_anims/anim_5_2.bin similarity index 100% rename from graphics/tileset_anims/aim_5_2.bin rename to graphics/tileset_anims/anim_5_2.bin diff --git a/graphics/tileset_anims/aim_5_3.bin b/graphics/tileset_anims/anim_5_3.bin similarity index 100% rename from graphics/tileset_anims/aim_5_3.bin rename to graphics/tileset_anims/anim_5_3.bin diff --git a/graphics/tileset_anims/aim_6_0.bin b/graphics/tileset_anims/anim_6_0.bin similarity index 100% rename from graphics/tileset_anims/aim_6_0.bin rename to graphics/tileset_anims/anim_6_0.bin diff --git a/graphics/tileset_anims/aim_6_1.bin b/graphics/tileset_anims/anim_6_1.bin similarity index 100% rename from graphics/tileset_anims/aim_6_1.bin rename to graphics/tileset_anims/anim_6_1.bin diff --git a/graphics/tileset_anims/aim_7_0.bin b/graphics/tileset_anims/anim_7_0.bin similarity index 100% rename from graphics/tileset_anims/aim_7_0.bin rename to graphics/tileset_anims/anim_7_0.bin diff --git a/graphics/tileset_anims/aim_7_1.bin b/graphics/tileset_anims/anim_7_1.bin similarity index 100% rename from graphics/tileset_anims/aim_7_1.bin rename to graphics/tileset_anims/anim_7_1.bin diff --git a/graphics/tileset_anims/aim_7_2.bin b/graphics/tileset_anims/anim_7_2.bin similarity index 100% rename from graphics/tileset_anims/aim_7_2.bin rename to graphics/tileset_anims/anim_7_2.bin diff --git a/src/tileset_anims.c b/src/tileset_anims.c index 4fdb1e6bf..a8539a5d8 100644 --- a/src/tileset_anims.c +++ b/src/tileset_anims.c @@ -23,11 +23,11 @@ static void (*sSecondaryTilesetAnimCallback)(u16); static void _InitPrimaryTilesetAnimation(void); static void _InitSecondaryTilesetAnimation(void); -static const u16 gUnknown_83A73E0[] = INCBIN_U16("graphics/tileset_anims/aim_0_0.bin"); -static const u16 gUnknown_83A7460[] = INCBIN_U16("graphics/tileset_anims/aim_0_1.bin"); -static const u16 gUnknown_83A74E0[] = INCBIN_U16("graphics/tileset_anims/aim_0_2.bin"); -static const u16 gUnknown_83A7560[] = INCBIN_U16("graphics/tileset_anims/aim_0_3.bin"); -static const u16 gUnknown_83A75E0[] = INCBIN_U16("graphics/tileset_anims/aim_0_4.bin"); +static const u16 gUnknown_83A73E0[] = INCBIN_U16("graphics/tileset_anims/anim_0_0.bin"); +static const u16 gUnknown_83A7460[] = INCBIN_U16("graphics/tileset_anims/anim_0_1.bin"); +static const u16 gUnknown_83A74E0[] = INCBIN_U16("graphics/tileset_anims/anim_0_2.bin"); +static const u16 gUnknown_83A7560[] = INCBIN_U16("graphics/tileset_anims/anim_0_3.bin"); +static const u16 gUnknown_83A75E0[] = INCBIN_U16("graphics/tileset_anims/anim_0_4.bin"); static const u16 *const gUnknown_83A7660[] = { gUnknown_83A73E0, @@ -37,14 +37,14 @@ static const u16 *const gUnknown_83A7660[] = { gUnknown_83A75E0 }; -static const u16 gUnknown_83A7674[] = INCBIN_U16("graphics/tileset_anims/aim_1_0.bin"); -static const u16 gUnknown_83A7C74[] = INCBIN_U16("graphics/tileset_anims/aim_1_1.bin"); -static const u16 gUnknown_83A8274[] = INCBIN_U16("graphics/tileset_anims/aim_1_2.bin"); -static const u16 gUnknown_83A8874[] = INCBIN_U16("graphics/tileset_anims/aim_1_3.bin"); -static const u16 gUnknown_83A8E74[] = INCBIN_U16("graphics/tileset_anims/aim_1_4.bin"); -static const u16 gUnknown_83A9474[] = INCBIN_U16("graphics/tileset_anims/aim_1_5.bin"); -static const u16 gUnknown_83A9A74[] = INCBIN_U16("graphics/tileset_anims/aim_1_6.bin"); -static const u16 gUnknown_83AA074[] = INCBIN_U16("graphics/tileset_anims/aim_1_7.bin"); +static const u16 gUnknown_83A7674[] = INCBIN_U16("graphics/tileset_anims/anim_1_0.bin"); +static const u16 gUnknown_83A7C74[] = INCBIN_U16("graphics/tileset_anims/anim_1_1.bin"); +static const u16 gUnknown_83A8274[] = INCBIN_U16("graphics/tileset_anims/anim_1_2.bin"); +static const u16 gUnknown_83A8874[] = INCBIN_U16("graphics/tileset_anims/anim_1_3.bin"); +static const u16 gUnknown_83A8E74[] = INCBIN_U16("graphics/tileset_anims/anim_1_4.bin"); +static const u16 gUnknown_83A9474[] = INCBIN_U16("graphics/tileset_anims/anim_1_5.bin"); +static const u16 gUnknown_83A9A74[] = INCBIN_U16("graphics/tileset_anims/anim_1_6.bin"); +static const u16 gUnknown_83AA074[] = INCBIN_U16("graphics/tileset_anims/anim_1_7.bin"); static const u16 *const gUnknown_83AA654[] = { gUnknown_83A7674, @@ -57,14 +57,14 @@ static const u16 *const gUnknown_83AA654[] = { gUnknown_83AA074 }; -static const u16 gUnknown_83AA674[] = INCBIN_U16("graphics/tileset_anims/aim_2_0.bin"); -static const u16 gUnknown_83AA8B4[] = INCBIN_U16("graphics/tileset_anims/aim_2_1.bin"); -static const u16 gUnknown_83AAAF4[] = INCBIN_U16("graphics/tileset_anims/aim_2_2.bin"); -static const u16 gUnknown_83AAD34[] = INCBIN_U16("graphics/tileset_anims/aim_2_3.bin"); -static const u16 gUnknown_83AAF74[] = INCBIN_U16("graphics/tileset_anims/aim_2_4.bin"); -static const u16 gUnknown_83AB1B4[] = INCBIN_U16("graphics/tileset_anims/aim_2_5.bin"); -static const u16 gUnknown_83AB3F4[] = INCBIN_U16("graphics/tileset_anims/aim_2_6.bin"); -static const u16 gUnknown_83AB634[] = INCBIN_U16("graphics/tileset_anims/aim_2_7.bin"); +static const u16 gUnknown_83AA674[] = INCBIN_U16("graphics/tileset_anims/anim_2_0.bin"); +static const u16 gUnknown_83AA8B4[] = INCBIN_U16("graphics/tileset_anims/anim_2_1.bin"); +static const u16 gUnknown_83AAAF4[] = INCBIN_U16("graphics/tileset_anims/anim_2_2.bin"); +static const u16 gUnknown_83AAD34[] = INCBIN_U16("graphics/tileset_anims/anim_2_3.bin"); +static const u16 gUnknown_83AAF74[] = INCBIN_U16("graphics/tileset_anims/anim_2_4.bin"); +static const u16 gUnknown_83AB1B4[] = INCBIN_U16("graphics/tileset_anims/anim_2_5.bin"); +static const u16 gUnknown_83AB3F4[] = INCBIN_U16("graphics/tileset_anims/anim_2_6.bin"); +static const u16 gUnknown_83AB634[] = INCBIN_U16("graphics/tileset_anims/anim_2_7.bin"); static const u16 *const gUnknown_83AB874[] = { gUnknown_83AA674, @@ -77,11 +77,11 @@ static const u16 *const gUnknown_83AB874[] = { gUnknown_83AB634 }; -static const u16 gUnknown_83AB894[] = INCBIN_U16("graphics/tileset_anims/aim_3_0.bin"); -static const u16 gUnknown_83AB994[] = INCBIN_U16("graphics/tileset_anims/aim_3_1.bin"); -static const u16 gUnknown_83ABA94[] = INCBIN_U16("graphics/tileset_anims/aim_3_2.bin"); -static const u16 gUnknown_83ABB94[] = INCBIN_U16("graphics/tileset_anims/aim_3_3.bin"); -static const u16 gUnknown_83ABC94[] = INCBIN_U16("graphics/tileset_anims/aim_3_4.bin"); +static const u16 gUnknown_83AB894[] = INCBIN_U16("graphics/tileset_anims/anim_3_0.bin"); +static const u16 gUnknown_83AB994[] = INCBIN_U16("graphics/tileset_anims/anim_3_1.bin"); +static const u16 gUnknown_83ABA94[] = INCBIN_U16("graphics/tileset_anims/anim_3_2.bin"); +static const u16 gUnknown_83ABB94[] = INCBIN_U16("graphics/tileset_anims/anim_3_3.bin"); +static const u16 gUnknown_83ABC94[] = INCBIN_U16("graphics/tileset_anims/anim_3_4.bin"); static const u16 gUnknown_83ABD94[16] = {}; static const u16 *const gUnknown_83ABDB4[] = { @@ -92,10 +92,10 @@ static const u16 *const gUnknown_83ABDB4[] = { gUnknown_83ABC94 }; -static const u16 gUnknown_83ABDC8[] = INCBIN_U16("graphics/tileset_anims/aim_4_0.bin"); -static const u16 gUnknown_83ABEC8[] = INCBIN_U16("graphics/tileset_anims/aim_4_1.bin"); -static const u16 gUnknown_83ABFC8[] = INCBIN_U16("graphics/tileset_anims/aim_4_2.bin"); -static const u16 gUnknown_83AC0C8[] = INCBIN_U16("graphics/tileset_anims/aim_4_3.bin"); +static const u16 gUnknown_83ABDC8[] = INCBIN_U16("graphics/tileset_anims/anim_4_0.bin"); +static const u16 gUnknown_83ABEC8[] = INCBIN_U16("graphics/tileset_anims/anim_4_1.bin"); +static const u16 gUnknown_83ABFC8[] = INCBIN_U16("graphics/tileset_anims/anim_4_2.bin"); +static const u16 gUnknown_83AC0C8[] = INCBIN_U16("graphics/tileset_anims/anim_4_3.bin"); static const u16 gUnknown_83AC1C8[0x10] = {}; static const u16 *const gUnknown_83AC1E8[] = { @@ -105,10 +105,10 @@ static const u16 *const gUnknown_83AC1E8[] = { gUnknown_83AC0C8 }; -static const u16 gUnknown_83AC1F8[] = INCBIN_U16("graphics/tileset_anims/aim_5_0.bin"); -static const u16 gUnknown_83AC2F8[] = INCBIN_U16("graphics/tileset_anims/aim_5_1.bin"); -static const u16 gUnknown_83AC3F8[] = INCBIN_U16("graphics/tileset_anims/aim_5_2.bin"); -static const u16 gUnknown_83AC4F8[] = INCBIN_U16("graphics/tileset_anims/aim_5_3.bin"); +static const u16 gUnknown_83AC1F8[] = INCBIN_U16("graphics/tileset_anims/anim_5_0.bin"); +static const u16 gUnknown_83AC2F8[] = INCBIN_U16("graphics/tileset_anims/anim_5_1.bin"); +static const u16 gUnknown_83AC3F8[] = INCBIN_U16("graphics/tileset_anims/anim_5_2.bin"); +static const u16 gUnknown_83AC4F8[] = INCBIN_U16("graphics/tileset_anims/anim_5_3.bin"); static const u16 *const gUnknown_83AC5F8[] = { gUnknown_83AC1F8, @@ -117,17 +117,17 @@ static const u16 *const gUnknown_83AC5F8[] = { gUnknown_83AC4F8 }; -static const u16 gUnknown_83AC608[] = INCBIN_U16("graphics/tileset_anims/aim_6_0.bin"); -static const u16 gUnknown_83AC6E8[] = INCBIN_U16("graphics/tileset_anims/aim_6_1.bin"); +static const u16 gUnknown_83AC608[] = INCBIN_U16("graphics/tileset_anims/anim_6_0.bin"); +static const u16 gUnknown_83AC6E8[] = INCBIN_U16("graphics/tileset_anims/anim_6_1.bin"); static const u16 *const gUnknown_83AC7C8[] = { gUnknown_83AC608, gUnknown_83AC6E8 }; -static const u16 gUnknown_83AC7D0[] = INCBIN_U16("graphics/tileset_anims/aim_7_0.bin"); -static const u16 gUnknown_83AC850[] = INCBIN_U16("graphics/tileset_anims/aim_7_1.bin"); -static const u16 gUnknown_83AC8D0[] = INCBIN_U16("graphics/tileset_anims/aim_7_2.bin"); +static const u16 gUnknown_83AC7D0[] = INCBIN_U16("graphics/tileset_anims/anim_7_0.bin"); +static const u16 gUnknown_83AC850[] = INCBIN_U16("graphics/tileset_anims/anim_7_1.bin"); +static const u16 gUnknown_83AC8D0[] = INCBIN_U16("graphics/tileset_anims/anim_7_2.bin"); static const u16 *const gUnknown_83AC950[] = { gUnknown_83AC7D0,