From 595c621173064682e3a8cb72002e80a1e1cb279d Mon Sep 17 00:00:00 2001 From: gymnast86 Date: Sun, 23 Aug 2026 00:42:34 -0700 Subject: [PATCH] add fused shadow and mirror shard item icons --- mods/randomizer/res/fused_shadow_1.bti | Bin 0 -> 2420 bytes mods/randomizer/res/fused_shadow_2.bti | Bin 0 -> 2402 bytes mods/randomizer/res/fused_shadow_3.bti | Bin 0 -> 2418 bytes mods/randomizer/res/mirror_shard_1.bti | Bin 0 -> 2456 bytes mods/randomizer/res/mirror_shard_2.bti | Bin 0 -> 2456 bytes mods/randomizer/res/mirror_shard_3.bti | Bin 0 -> 2456 bytes mods/randomizer/res/mirror_shard_4.bti | Bin 0 -> 2456 bytes mods/randomizer/src/hooks.cpp | 16 ++++++++++++++-- 8 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 mods/randomizer/res/fused_shadow_1.bti create mode 100644 mods/randomizer/res/fused_shadow_2.bti create mode 100644 mods/randomizer/res/fused_shadow_3.bti create mode 100644 mods/randomizer/res/mirror_shard_1.bti create mode 100644 mods/randomizer/res/mirror_shard_2.bti create mode 100644 mods/randomizer/res/mirror_shard_3.bti create mode 100644 mods/randomizer/res/mirror_shard_4.bti diff --git a/mods/randomizer/res/fused_shadow_1.bti b/mods/randomizer/res/fused_shadow_1.bti new file mode 100644 index 0000000000000000000000000000000000000000..965657a1687803362c10ee913116deb0b0517e96 GIT binary patch literal 2420 zcmc&#v92676rGtJ+t>E2ukWmPnK8V_zOXL@Xb=S-K!L;$@Bv6mf#{I5(Y;12~@Deds-f4n4fu@r>=U&pqedJGQCb$FHiJ>fNfc z>k6%|@h>-3wVtm3&82Q;W#?9Dqg2(BbrRSP7Y4yV6r{EeWks-_dB8`;^$b zWx*Z2FA=;pL~o$e5ZG%4ovyUQL3uf;ImLWwNxhhqYn0hDb7}Tp9vVGO)Oqql-Dr#F zw$UA1;=t6CQaX;QkBaci9LS7J(c55Gu|o?if+;gF19p0y*axAbpz- zI5MQ6q=tBkM$z6Q-l{_9Em&g?lW-iv#K#`+6ldGy!bc;v1I|`;F2-52l-NZ!+I5bJ zykpoyFfdXg3RLh1KoQu*$H+-Z3={xCJc7eKkSi5Z!WxkQoQslGN-Bv-B`8H$L@bDo z*Z}kNOo(4hj4n+2#UdNP#ZaQCs<3-3aCKl!RShTLw5l=Az`w0H4NQS}h}h5|+?W(e z=sIjK*;%4-6v@FFuQg>7>kx`$33>=vVS^aTz@Ah8W)JA1)+Y&(ivYHSK)E;$yBKUw zBhYemO7Ip(4^IL`@P3yrl~X$_>3sn>B+tw^9{ENGwnG3$un$QEtD2k_?W`lC`YeN^ z9>)nsRsg1sj2j><^-;VQlW{ge1;iAz^&naYW!T^iu%2?x3XvdMTsQciI>8`Fk=RtY2(4AWR*1BAY+J`C<*Aps5^%OT;WIWV#Ql zw@b=f54oA+(!rAm;0DsafGf5y)I*vsV*q~g<|4b>ohoe;3;G)1O25#KPzIICLBmwE zF#+h5^uZ{GElflPFpl%iAsZ4(qJw{E@Z#Z|22wJ6aO1xQH*lSJMA8qg6>Vi2xD(gF2@~hK% zK9gHoHF%|MnrRKvJ(uSiZMVfMuK4KeMtA(eI+3qmhuuIGmT(%X-> zH@BNPKmPJFzx?X_?BS#HZ~q2-t885W literal 0 HcmV?d00001 diff --git a/mods/randomizer/res/fused_shadow_2.bti b/mods/randomizer/res/fused_shadow_2.bti new file mode 100644 index 0000000000000000000000000000000000000000..9da47c28f54406e3f507b5cfc7a13255e1b1a1ab GIT binary patch literal 2402 zcmd5;y^b735bo)op6Z$E?b@Dh&+Z&HwyN`7Z6-PfTauU z(18O7gd~=n@EFK%0bk9`*%s&|0?VTJcKT;#y1(zMuWGNi<}-XuW6ej#^e2PXH2CVk znA387SC@6u#yZ<#OY1udcWvF;euHq=6Yp((=s1!wyVMCqW5z-fJJYyMIA-U)>j8!K zF?-PR#MF_q;w5p6ck_Ec@EfR{rFQoku%PIr_n9j>Ib=FAC7Hw*=1k(SOkHrEJ=HP_ zi{~!w?1obV_RiaGJZyWaglMgpX4l(8D1%GBWN4bb2$Rp`lXspnGmD!@stV=d2no$LI%;E<~{#77MmE zm8=;;xmM%|Y|CuSA!lO2^D$yjGZC@Z@UzH-FPaC|t!)Fa5J%!GRQCD?QNgw37Kf{rP`BtVx*2AS_W@3F_RyRlqn`j2TqePcW;{}vDxg)2lCljhcya)g zFuwR;hIeG1^)JkBKH`W(I1A zWh9)y--3_>Y815vq$WB+?mFQtlFI>S1?g1~@{oT-Yw zVqfhZ)Y{b!s9Xpg5II;jhfBDH5dma)fZhq_j~tLl@LD7WqTXT>PXC*mS=oavKmN<>IF$0l*kmaoy4bH*r~bRLy7zTnpC%v>8*h4nS%_XYFDK z_&e|sj+H^879ccVx~z|91YCDS$y|FC(xP?*xEV*nG_yt+HUbj_7&e3NOLYSmtsF>w z4S~i)slZX4_PHSQv5q#DsC5S!9HaJ-r63>BP?>55%*M29XUsCgt+kq=T8${A-h(d+ zYj58~b=kleSq`y&t?&3R;2$lb9stTAW$(tmHT?mXx7s-Vr{C$@e0}T9b+~5Dzn1?u z3-VWY{__0n`{{i1=g+6>$4|fd{QTqjmlr>sK0ZI8C!gFrzW(Ct^Yz24Z=QX6^Xj|v YBl_*?_opxacoeQ4{`%_q4_Dv*4Ontoa{vGU literal 0 HcmV?d00001 diff --git a/mods/randomizer/res/fused_shadow_3.bti b/mods/randomizer/res/fused_shadow_3.bti new file mode 100644 index 0000000000000000000000000000000000000000..9bed3d777d15548c28ed081e307351008ab3900e GIT binary patch literal 2418 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 literal 0 HcmV?d00001 diff --git a/mods/randomizer/res/mirror_shard_2.bti b/mods/randomizer/res/mirror_shard_2.bti new file mode 100644 index 0000000000000000000000000000000000000000..73578ed559baf7563888aac401680b16fe41397b GIT binary patch literal 2456 zcmcJQzsnp&7{~X$yPcW6-P@VFotc}Rc{h9W?%n&#PKo#W=Y*`2-pe4k&F zbfP&v(Ml(JHj0u-gt4-MZ}<^KljZ!^)Bd)D4c%V&rygYqCX%J;V5QS;iAjumQPfXT z(!-^ki+s z8ZMQ{jpW=oA+T_2jW){gvhtd9n_J68b;tsk`&>)IxXCp$ieSGMRozBGsX7}CyOHKP zO%p;bH#Vtj_$$0=xEf5im!weD?M?dABp&s$dN$~FTbUC=m(iTo{Vawvvgs6V3r|H| z(jObxVUosye^eBt3ix$WfJZl+OOS%r1j0%ixuzOu;CZvIbtAo3x$@Et*0^`pXko3! z1G&a*C7#!wtV_X#E}c{xB@>91R*E2mXGEc%cZpI(h44u$IqP9Y8efy zjE1)%Ef-n|o^LQ=wB;;EKIKvqZI#b?9&n+T=Sp)4kzkWvmBd=#H z_*iNy4>NjXlhPzX&W*RW3*bkM6e)xM%aRnM;QgpO=sRndekU6nupKgx%lx5z8O`?TaVzQ-Ob3g^4?02x zBY!Y@S6(S}oS?{h6fI_f@4C@@h_*zP0t*rms*p2Mu~58H>`pr#0E-X3j=O<{fj~gA}F2w+?_5G4EfEVqr z)wH#}NozaAdclb0d9K$4l2%r(bj~}T9Y&HH*>J&fZqakBbB%V?hQS-BQ0I*`k{MJy zL>`h2Jnah9x0Spg%AqA>q?{e~j5Y-sD{@@K#b^s*p@80uV}>3T1>gVu=#X~LsMUea zvs@z}1>PgkE(^3zvAxY0$NT7ZMHr)%&?pH;EsA4MArw-85fzVu0rHF?8E}DT*)x6v zra0NmCEwd={IN!{`L6IMJ*9(XEA_PPsQV`RNBtEYC-4G02^QE(8%miV$pI#3kYP}F znXsnXV>%r);WF}hJ>(D}hjE`xD~QeOwA?Z|&FZ*3MZEWAL(|>4--1bYj~(+KaHpE_ z67}F1I5-Xd)uGTKt-qsQ%N?z>ofXAhP(X5>r&Bh_GCI!Ex+cD%aazoFifQcyosqaX zu$4^w#^aw%v7WI^Q9L1xJDlHh`(t<4eHyO1j*`wt}@aE$U#3HMw*#OeggvJS^ zq0c5E--fHbVYkwV|7s_~p|m=L^Wx=#-Z*I&H-`<1)5KDqV7A3uFauHL)x M=ItMEym4prCs>xX1ONa4 literal 0 HcmV?d00001 diff --git a/mods/randomizer/res/mirror_shard_3.bti b/mods/randomizer/res/mirror_shard_3.bti new file mode 100644 index 0000000000000000000000000000000000000000..51c15a739646c08d30eba705f75c813e60a245dd GIT binary patch literal 2456 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 literal 0 HcmV?d00001 diff --git a/mods/randomizer/src/hooks.cpp b/mods/randomizer/src/hooks.cpp index b6ca691d02..30b8dc2dcf 100644 --- a/mods/randomizer/src/hooks.cpp +++ b/mods/randomizer/src/hooks.cpp @@ -726,15 +726,27 @@ HookAction hookPreObjGbCreate(ModContext*, void* args, void* retval, void*) { return HOOK_CONTINUE; } +const std::map kCustomItemImages = { + {dItemNo_Randomizer_MAGIC_LV1_e, "shadow_crystal.bti"}, + {dItemNo_Randomizer_FUSED_SHADOW_1_e, "fused_shadow_1.bti"}, + {dItemNo_Randomizer_FUSED_SHADOW_2_e, "fused_shadow_2.bti"}, + {dItemNo_Randomizer_FUSED_SHADOW_3_e, "fused_shadow_3.bti"}, + {dItemNo_Randomizer_MIRROR_PIECE_1_e, "mirror_shard_1.bti"}, + {dItemNo_Randomizer_MIRROR_PIECE_2_e, "mirror_shard_2.bti"}, + {dItemNo_Randomizer_MIRROR_PIECE_3_e, "mirror_shard_3.bti"}, + {dItemNo_Randomizer_MIRROR_PIECE_4_e, "mirror_shard_4.bti"}, +}; + void hookPostReadItemTexture(ModContext*, void* args, void*, void*) { const u8 item_no = mods::arg(args, 0); void* tex_buf1 = mods::arg(args, 1); - if (tex_buf1 == nullptr || item_no != dItemNo_Randomizer_MAGIC_LV1_e) { + if (tex_buf1 == nullptr || !kCustomItemImages.contains(item_no)) { return; } ResourceBuffer bti = RESOURCE_BUFFER_INIT; - if (session::svc_mng.resource->load(session::svc_mng.mod_ctx, "shadow_crystal.bti", &bti) == MOD_OK) { + auto& imagePath = kCustomItemImages.at(item_no); + if (session::svc_mng.resource->load(session::svc_mng.mod_ctx, imagePath, &bti) == MOD_OK) { std::memcpy(tex_buf1, bti.data, bti.size < 0xC00 ? bti.size : 0xC00); session::svc_mng.resource->free(session::svc_mng.mod_ctx, &bti); }