From 63e53c5cbc0ac5ff4f1154266da648c666beab5f Mon Sep 17 00:00:00 2001 From: MokhaLeee Date: Wed, 25 Sep 2024 19:56:59 +0800 Subject: [PATCH 1/3] match TSA order on efxskill --- .gitignore | 5 + Makefile | 6 +- data/banim-ekrskill.s | 98 ++++++----- graphics/efxskill/efxskill_1.png | Bin 0 -> 227 bytes graphics/efxskill/efxskill_10.png | Bin 0 -> 1162 bytes graphics/efxskill/efxskill_11.png | Bin 0 -> 1103 bytes graphics/efxskill/efxskill_12.png | Bin 0 -> 968 bytes graphics/efxskill/efxskill_13.png | Bin 0 -> 930 bytes graphics/efxskill/efxskill_14.png | Bin 0 -> 843 bytes graphics/efxskill/efxskill_15.png | Bin 0 -> 752 bytes graphics/efxskill/efxskill_16.png | Bin 0 -> 458 bytes graphics/efxskill/efxskill_2.png | Bin 0 -> 258 bytes graphics/efxskill/efxskill_3.png | Bin 0 -> 298 bytes graphics/efxskill/efxskill_4.png | Bin 0 -> 357 bytes graphics/efxskill/efxskill_5.png | Bin 0 -> 449 bytes graphics/efxskill/efxskill_6.png | Bin 0 -> 582 bytes graphics/efxskill/efxskill_7.png | Bin 0 -> 809 bytes graphics/efxskill/efxskill_8.png | Bin 0 -> 1102 bytes graphics/efxskill/efxskill_9.png | Bin 0 -> 1180 bytes scripts/dump_img.py | 109 ++++++++++++ scripts/dump_img_efxskill.py | 20 +++ scripts/lzss_lib.py | 255 +++++++++++++++++++++++++++++ test.py | 31 ++++ tools/gfxtools/lzss_compress.py | 22 +++ tools/gfxtools/lzss_decompress.py | 18 ++ tools/gfxtools/lzss_lib.py | 255 +++++++++++++++++++++++++++++ tools/gfxtools/rom_def.py | 16 ++ tools/gfxtools/tsa_analysis.py | 47 ++++++ tools/gfxtools/tsa_bin_analysis.py | 45 +++++ tools/gfxtools/tsa_generator.py | 147 +++++++++++++++++ 30 files changed, 1023 insertions(+), 51 deletions(-) create mode 100644 graphics/efxskill/efxskill_1.png create mode 100644 graphics/efxskill/efxskill_10.png create mode 100644 graphics/efxskill/efxskill_11.png create mode 100644 graphics/efxskill/efxskill_12.png create mode 100644 graphics/efxskill/efxskill_13.png create mode 100644 graphics/efxskill/efxskill_14.png create mode 100644 graphics/efxskill/efxskill_15.png create mode 100644 graphics/efxskill/efxskill_16.png create mode 100644 graphics/efxskill/efxskill_2.png create mode 100644 graphics/efxskill/efxskill_3.png create mode 100644 graphics/efxskill/efxskill_4.png create mode 100644 graphics/efxskill/efxskill_5.png create mode 100644 graphics/efxskill/efxskill_6.png create mode 100644 graphics/efxskill/efxskill_7.png create mode 100644 graphics/efxskill/efxskill_8.png create mode 100644 graphics/efxskill/efxskill_9.png create mode 100755 scripts/dump_img.py create mode 100755 scripts/dump_img_efxskill.py create mode 100644 scripts/lzss_lib.py create mode 100644 test.py create mode 100755 tools/gfxtools/lzss_compress.py create mode 100755 tools/gfxtools/lzss_decompress.py create mode 100644 tools/gfxtools/lzss_lib.py create mode 100644 tools/gfxtools/rom_def.py create mode 100755 tools/gfxtools/tsa_analysis.py create mode 100755 tools/gfxtools/tsa_bin_analysis.py create mode 100755 tools/gfxtools/tsa_generator.py diff --git a/.gitignore b/.gitignore index d1758e5c..1c78e2ab 100644 --- a/.gitignore +++ b/.gitignore @@ -74,6 +74,11 @@ tools/agbcc *.fk data/banim/*.bin +*.feimg.bin +*.fetsa1.bin +*.fetsa2.bin +*.fetsa3.bin + # ========================= # Dump Scripts Output # ========================= diff --git a/Makefile b/Makefile index 6659b226..d1919eaa 100644 --- a/Makefile +++ b/Makefile @@ -33,6 +33,7 @@ AIF2PCM := tools/aif2pcm/aif2pcm$(EXE) MID2AGB := tools/mid2agb/mid2agb$(EXE) TEXTENCODE := tools/textencode/textencode$(EXE) JSONPROC := tools/jsonproc/jsonproc$(EXE) +FETSATOOL := tools/gfxtools/tsa_generator.py ifeq ($(UNAME),Darwin) SED := sed -i '' @@ -110,7 +111,7 @@ clean: # Remove converted songs $(RM) -f $(MID_SUBDIR)/*.s $(RM) -f $(AUTO_GEN_TARGETS) - find . \( -iname '*.o' -o -iname '*.obj' -o -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.fk' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + + @find . \( -iname '*.o' -o -iname '*.obj' -o -iname '*.feimg.bin' -o -iname '*.fetsa1.bin' -o -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.fk' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + .PHONY: clean @@ -152,6 +153,9 @@ sound/%.bin: sound/%.aif ; $(AIF2PCM) $< $@ %.4bpp.h: %.4bpp $(BIN2C) $< $(subst .,_,$(notdir $<)) | sed 's/^const //' > $@ +%.feimg.bin %.fetsa1.bin: %.png + $(FETSATOOL) $< $*.feimg.bin $*.fetsa1.bin + # Battle Animation Recipes $(BANIM_OBJECT): $(shell ./scripts/arm_compressing_linker.py -t linker_script_banim.txt -m) diff --git a/data/banim-ekrskill.s b/data/banim-ekrskill.s index 54f12443..0d7377fd 100644 --- a/data/banim-ekrskill.s +++ b/data/banim-ekrskill.s @@ -1,195 +1,193 @@ .section .data - .include "animscr.inc" - .include "gba_sprites.inc" .global Img_EfxSkill1 Img_EfxSkill1: @ 0x085C935C - .incbin "baserom.gba", 0x5C935C, 0x5C9740 - 0x5C935C + .incbin "graphics/efxskill/efxskill_1.feimg.bin.lz" .global Img_EfxSkill2 Img_EfxSkill2: - .incbin "baserom.gba", 0x5C9740, 0x5C9B38 - 0x5C9740 + .incbin "graphics/efxskill/efxskill_2.feimg.bin.lz" .global Img_EfxSkill3 Img_EfxSkill3: - .incbin "baserom.gba", 0x5C9B38, 0x5C9F48 - 0x5C9B38 + .incbin "graphics/efxskill/efxskill_3.feimg.bin.lz" .global Img_EfxSkill4 Img_EfxSkill4: - .incbin "baserom.gba", 0x5C9F48, 0x5CA380 - 0x5C9F48 + .incbin "graphics/efxskill/efxskill_4.feimg.bin.lz" .global Img_EfxSkill5 Img_EfxSkill5: - .incbin "baserom.gba", 0x5CA380, 0x5CA7FC - 0x5CA380 + .incbin "graphics/efxskill/efxskill_5.feimg.bin.lz" .global Img_EfxSkill6 Img_EfxSkill6: - .incbin "baserom.gba", 0x5CA7FC, 0x5CACF4 - 0x5CA7FC + .incbin "graphics/efxskill/efxskill_6.feimg.bin.lz" .global Img_EfxSkill7 Img_EfxSkill7: - .incbin "baserom.gba", 0x5CACF4, 0x5CB2CC - 0x5CACF4 + .incbin "graphics/efxskill/efxskill_7.feimg.bin.lz" .global Img_EfxSkill8 Img_EfxSkill8: - .incbin "baserom.gba", 0x5CB2CC, 0x5CB9AC - 0x5CB2CC + .incbin "graphics/efxskill/efxskill_8.feimg.bin.lz" .global Img_EfxSkill9 Img_EfxSkill9: - .incbin "baserom.gba", 0x5CB9AC, 0x5CC0E8 - 0x5CB9AC + .incbin "graphics/efxskill/efxskill_9.feimg.bin.lz" .global Img_EfxSkillA Img_EfxSkillA: - .incbin "baserom.gba", 0x5CC0E8, 0x5CC820 - 0x5CC0E8 + .incbin "graphics/efxskill/efxskill_10.feimg.bin.lz" .global Img_EfxSkillB Img_EfxSkillB: - .incbin "baserom.gba", 0x5CC820, 0x5CCF14 - 0x5CC820 + .incbin "graphics/efxskill/efxskill_11.feimg.bin.lz" .global Img_EfxSkillC Img_EfxSkillC: - .incbin "baserom.gba", 0x5CCF14, 0x5CD5A0 - 0x5CCF14 + .incbin "graphics/efxskill/efxskill_12.feimg.bin.lz" .global Img_EfxSkillD Img_EfxSkillD: - .incbin "baserom.gba", 0x5CD5A0, 0x5CDC00 - 0x5CD5A0 + .incbin "graphics/efxskill/efxskill_13.feimg.bin.lz" .global Img_EfxSkillE Img_EfxSkillE: - .incbin "baserom.gba", 0x5CDC00, 0x5CE200 - 0x5CDC00 + .incbin "graphics/efxskill/efxskill_14.feimg.bin.lz" .global Img_EfxSkillF Img_EfxSkillF: - .incbin "baserom.gba", 0x5CE200, 0x5CE7C4 - 0x5CE200 + .incbin "graphics/efxskill/efxskill_15.feimg.bin.lz" .global Img_EfxSkill10 Img_EfxSkill10: - .incbin "baserom.gba", 0x5CE7C4, 0x5CEC6C - 0x5CE7C4 + .incbin "graphics/efxskill/efxskill_16.feimg.bin.lz" .global Pal_EfxSkill1 Pal_EfxSkill1: - .incbin "baserom.gba", 0x5CEC6C, 0x5CEC8C - 0x5CEC6C + .incbin "graphics/efxskill/efxskill_1.gbapal" .global Pal_EfxSkill2 Pal_EfxSkill2: - .incbin "baserom.gba", 0x5CEC8C, 0x5CECAC - 0x5CEC8C + .incbin "graphics/efxskill/efxskill_2.gbapal" .global Pal_EfxSkill3 Pal_EfxSkill3: - .incbin "baserom.gba", 0x5CECAC, 0x5CECCC - 0x5CECAC + .incbin "graphics/efxskill/efxskill_3.gbapal" .global Pal_EfxSkill4 Pal_EfxSkill4: - .incbin "baserom.gba", 0x5CECCC, 0x5CECEC - 0x5CECCC + .incbin "graphics/efxskill/efxskill_4.gbapal" .global Pal_EfxSkill5 Pal_EfxSkill5: - .incbin "baserom.gba", 0x5CECEC, 0x5CED0C - 0x5CECEC + .incbin "graphics/efxskill/efxskill_5.gbapal" .global Pal_EfxSkill6 Pal_EfxSkill6: - .incbin "baserom.gba", 0x5CED0C, 0x5CED2C - 0x5CED0C + .incbin "graphics/efxskill/efxskill_6.gbapal" .global Pal_EfxSkill7 Pal_EfxSkill7: - .incbin "baserom.gba", 0x5CED2C, 0x5CED4C - 0x5CED2C + .incbin "graphics/efxskill/efxskill_7.gbapal" .global Pal_EfxSkill8 Pal_EfxSkill8: - .incbin "baserom.gba", 0x5CED4C, 0x5CED6C - 0x5CED4C + .incbin "graphics/efxskill/efxskill_8.gbapal" .global Pal_EfxSkill9 Pal_EfxSkill9: - .incbin "baserom.gba", 0x5CED6C, 0x5CED8C - 0x5CED6C + .incbin "graphics/efxskill/efxskill_9.gbapal" .global Pal_EfxSkillA Pal_EfxSkillA: - .incbin "baserom.gba", 0x5CED8C, 0x5CEDAC - 0x5CED8C + .incbin "graphics/efxskill/efxskill_10.gbapal" .global Pal_EfxSkillB Pal_EfxSkillB: - .incbin "baserom.gba", 0x5CEDAC, 0x5CEDCC - 0x5CEDAC + .incbin "graphics/efxskill/efxskill_11.gbapal" .global Pal_EfxSkillC Pal_EfxSkillC: - .incbin "baserom.gba", 0x5CEDCC, 0x5CEDEC - 0x5CEDCC + .incbin "graphics/efxskill/efxskill_12.gbapal" .global Pal_EfxSkillD Pal_EfxSkillD: - .incbin "baserom.gba", 0x5CEDEC, 0x5CEE0C - 0x5CEDEC + .incbin "graphics/efxskill/efxskill_13.gbapal" .global Pal_EfxSkillE Pal_EfxSkillE: - .incbin "baserom.gba", 0x5CEE0C, 0x5CEE2C - 0x5CEE0C + .incbin "graphics/efxskill/efxskill_14.gbapal" .global Pal_EfxSkillF Pal_EfxSkillF: - .incbin "baserom.gba", 0x5CEE2C, 0x5CEE4C - 0x5CEE2C + .incbin "graphics/efxskill/efxskill_15.gbapal" .global Pal_EfxSkill10 Pal_EfxSkill10: - .incbin "baserom.gba", 0x5CEE4C, 0x5CEE6C - 0x5CEE4C + .incbin "graphics/efxskill/efxskill_16.gbapal" .global Tsa_EfxSkill1 Tsa_EfxSkill1: - .incbin "baserom.gba", 0x5CEE6C, 0x5CEF04 - 0x5CEE6C + .incbin "graphics/efxskill/efxskill_1.fetsa1.bin.lz" .global Tsa_EfxSkill2 Tsa_EfxSkill2: - .incbin "baserom.gba", 0x5CEF04, 0x5CEFA4 - 0x5CEF04 + .incbin "graphics/efxskill/efxskill_2.fetsa1.bin.lz" .global Tsa_EfxSkill3 Tsa_EfxSkill3: - .incbin "baserom.gba", 0x5CEFA4, 0x5CF044 - 0x5CEFA4 + .incbin "graphics/efxskill/efxskill_3.fetsa1.bin.lz" .global Tsa_EfxSkill4 Tsa_EfxSkill4: - .incbin "baserom.gba", 0x5CF044, 0x5CF0E8 - 0x5CF044 + .incbin "graphics/efxskill/efxskill_4.fetsa1.bin.lz" .global Tsa_EfxSkill5 Tsa_EfxSkill5: - .incbin "baserom.gba", 0x5CF0E8, 0x5CF1A0 - 0x5CF0E8 + .incbin "graphics/efxskill/efxskill_5.fetsa1.bin.lz" .global Tsa_EfxSkill6 Tsa_EfxSkill6: - .incbin "baserom.gba", 0x5CF1A0, 0x5CF264 - 0x5CF1A0 + .incbin "graphics/efxskill/efxskill_6.fetsa1.bin.lz" .global Tsa_EfxSkill7 Tsa_EfxSkill7: - .incbin "baserom.gba", 0x5CF264, 0x5CF33C - 0x5CF264 + .incbin "graphics/efxskill/efxskill_7.fetsa1.bin.lz" .global Tsa_EfxSkill8 Tsa_EfxSkill8: - .incbin "baserom.gba", 0x5CF33C, 0x5CF440 - 0x5CF33C + .incbin "graphics/efxskill/efxskill_8.fetsa1.bin.lz" .global Tsa_EfxSkill9 Tsa_EfxSkill9: - .incbin "baserom.gba", 0x5CF440, 0x5CF544 - 0x5CF440 + .incbin "graphics/efxskill/efxskill_9.fetsa1.bin.lz" .global Tsa_EfxSkillA Tsa_EfxSkillA: - .incbin "baserom.gba", 0x5CF544, 0x5CF648 - 0x5CF544 + .incbin "graphics/efxskill/efxskill_10.fetsa1.bin.lz" .global Tsa_EfxSkillB Tsa_EfxSkillB: - .incbin "baserom.gba", 0x5CF648, 0x5CF750 - 0x5CF648 + .incbin "graphics/efxskill/efxskill_11.fetsa1.bin.lz" .global Tsa_EfxSkillC Tsa_EfxSkillC: - .incbin "baserom.gba", 0x5CF750, 0x5CF83C - 0x5CF750 + .incbin "graphics/efxskill/efxskill_12.fetsa1.bin.lz" .global Tsa_EfxSkillD Tsa_EfxSkillD: - .incbin "baserom.gba", 0x5CF83C, 0x5CF91C - 0x5CF83C + .incbin "graphics/efxskill/efxskill_13.fetsa1.bin.lz" .global Tsa_EfxSkillE Tsa_EfxSkillE: - .incbin "baserom.gba", 0x5CF91C, 0x5CF9F4 - 0x5CF91C + .incbin "graphics/efxskill/efxskill_14.fetsa1.bin.lz" .global Tsa_EfxSkillF Tsa_EfxSkillF: - .incbin "baserom.gba", 0x5CF9F4, 0x5CFAC0 - 0x5CF9F4 + .incbin "graphics/efxskill/efxskill_15.fetsa1.bin.lz" .global Tsa_EfxSkill10 Tsa_EfxSkill10: - .incbin "baserom.gba", 0x5CFAC0, 0x5CFB70 - 0x5CFAC0 + .incbin "graphics/efxskill/efxskill_16.fetsa1.bin.lz" diff --git a/graphics/efxskill/efxskill_1.png b/graphics/efxskill/efxskill_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f797801914b04685b07e600aba4d385984188e2b GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^AAooP3p0>B@bym^kTMAH32`lGSkTaL!NOtz1A_!m zj38Kc;PQWFSZ_gSEGAQt{80dWA001}u03ZMW7ytkmZvqRI000CP zNklrLYfbtOuj&qG+~#g4>H4Un0Ed-u^E_O{@LAs{=1=1?a|Q(Fu(u<3^2d| z0}L?000Rs#zyJdbFu(u<4Df#mOTB@G@~I&902cV|SRyagnu>JySBb)MA?o$`62;nO z2&cktQ{Yl`hGF`BTOx7~KBh8!KX zlJvTrlm65hefVm_QiX@MBrV{bpmrJT=yFb?4qwh!U8a9k)cSjKLjTN;;U1?6Upz%H zyCP}>d;v9V%ZIdK<#-xdOyEeZe3`(FM>*QCdOVJ;$7gD3!;TxSHxgx7X~0KH?M^ey z;JQc|Rxh4lYwoPF>#o85^x?~Am|7{~F^yX1wBf4_L=CNabF%W{`oUPwD7_y&iEuqz!A?>WThzilk#9cOzoIk!;-^tQ6L?=W#fd=4R^w zYY`VE+OS&TW8p+56AjiUlitThp2^+TT$OUZTuO5@jer?jAY1JGLjvV(+WHt%yUgWtie-}oEflO+73-L!>lWu70iH7l8xk1Jx2Yh z&ZDb)xKfDDSX$r#t7K!R2(w(F!xJaOYv& zHLR3(ID1>fqme9q_|}M*&51Z@Z->JsM68r{LO0=D$JHu{h(qITeeCK{A8W7)ecZcw ze9gCKE_NzzM&`OTSDOO=N_t!2A%Cj#N|nO%Sf9q7_kKuJAbVU3-0z7Th$g@{YA&1K zz}O;GWd@sOGV3y{%9LB{YMU>fHL!*u04wGFWU#S1p7ejri>AQ(mY&yX#jevA{$yYw zK?GJVIk&@RwOUx#HafMGFcL7C9s1*W3uASeuqM znnFj;>B76Hj~~`uRsM`_{t;amkLtO`8TmD;f!@=F(L5e_*#y5riJLNvwlv4SHJvdh zV)ZiQu)1C}UkdKyZ+HEI5G?O;i!Ip#kLm~F9X}uiYft31x)ROfxjVj24!&_zGuQAt z^I?S#xjieA`LOzjkH+sU`KbLzK<@A+`5*ps0>A(R3^2d|0}L?000Rs#zyJdbFu(u< c3^4uUFWM48oRbO0H2?qr07*qoM6N<$f?gUTa!r_y7gszEyBt<)YilO}8ot-Bu#8+ZqFPt&G}j6|rl% zC~E^T4^Su%P!pRgiLImQkaL`N{(t3R%zQcb|D257zfg<;3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}Swg0!uFfOMLf=7x2RpUoElai@%pgh5L=|OeRZT4KTwJN5%dAK#Jy- zm*DwZ+b=L8+^fWW1VNDL6S>j(W~+5|iwEu$6qj&K)7N~fS}K*!?aHIUVm&^gz=S7V zYgV=?YP)!3v%5!w?+)fwmvDu0hg2dGj-+H61Kj=eN`r~1Bo&|adHlg7T@%p5+{T0s zyMqzG^0$Xfm2FjdG`O**yM$}TulIJScric@-z*z2F=^C25G&gm*dxJGV+gwpmvDz@ zJ8eB$jq7HO&6vua3{b<|`XjJ+@fZU<@h9w#mIc(XIghOoDz#C=edf(0Fqywb4U3mX zTU(o)EPg``OWc-En@!dl2XZ#%)2RFLp}HS?d=KXn@)|1{NLbE5X8qPdM&{AOa?ZtM zl9^1x+Q(BxL~=)m`(2)Y z<{cb>xevyUI8F>gs{Yn`@(mrTX&28jD}GQ9k$NgM)JMc{#~jsp z1@5d_O98f>JbU z>_QIrPUA{12Nuo~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB|+oegW?_ V%*8X0O_2Zq002ovPDHLkV1lsY0IdK3 literal 0 HcmV?d00001 diff --git a/graphics/efxskill/efxskill_12.png b/graphics/efxskill/efxskill_12.png new file mode 100644 index 0000000000000000000000000000000000000000..74ce956f1f3c3cfaa5c7bb3bc13f0eadcb25d833 GIT binary patch literal 968 zcmeAS@N?(olHy`uVBq!ia0vp^AAooP3p0>B@bym^kTMAH32`lGSkTb$A|T*}gToCA ziwg=0J2*HNFfep5FjO!wWH2y9Ffe#9Fjz1!XfQBH0MP_FSZ*Ter zJ#r9XNLWAN2=|A_j3!3aQ!5$-54};9z0)u7jKLt`tQg~W<@(1tfm`nMrA*oTsDMGo z;=qg)DZwKxlYC6?P6>U#Ho~Fy>#wh`>r}k2H6?K-G%&JB;2`RjZ@BsTt2m={?%t2T z`KxbSINe&auj|J#f>tM6TIq=P0eKJj$T;?|#zcLw6@_ zdil_zkAH>x-gzf^%)W+XJSdvuf30rI`uD%rJlM7A6z^gAlVQ@&ujl>l5~#E3v)esK zVP&h+(NcHeL*+aBm1lfDo%Jhw;j19Emi))k$v3ng)?ND$cqyI1{JU-P4DqEKdbZ@8 z4Ly~zq0;nTwErhDJI^hTD(73}%yEl1I`;4*YwDCWyDV)vjn`?fPuR1)dDE=Y$wrDb zQcrUfSptro-RK+j_;2X$p8gGwjw&U{Eq{}=_W6zD!kW7yvL8*(KF!E|d*foU+#er5 zl-l!Nk18!R7e3@x`-!Epuhi1Gx_n|>_t`6b%yH8uZ!Q;q$?|DJf7No4oo=#bvp@P) zPp#ApTgn%GH|9iOs!e_Aio9Nuo}?wnZh zOvH)rbzjde-v#XT=5e&p7bSPOK>_?b#l8<>dFf zWM*4tPC8s)+_zM$IpW=gHhJ}bcD#oVSO58uwuD#u{#cMr)A5Wu9iJzFz@>^G0SU4cMC;jz>8=rgaIVXCb+Hm!(a^Z`Qc7-;npXWzyNqnp&D9d-GR+DcJI%{n0uZQ>FtH8GE)v^ZTeIh@?@(1m&DbvC)EXlw!ZN+ zH_ckhe_!H2gx>SdGf%aCHP~gu@>QMtMped~P-*jK_4xDtu1rz$Idf*#e)inu`<`#r zo9XxCUjE$w!RVBRO4Ub}ONl(uJGM_Txa5~sllyPO%ITM0p1B>&AbP{-eW^JA>HA;3 feeoo1wch%u19~kv6D&l5S(Cxj)z4*}Q$iB}c-y!q literal 0 HcmV?d00001 diff --git a/graphics/efxskill/efxskill_13.png b/graphics/efxskill/efxskill_13.png new file mode 100644 index 0000000000000000000000000000000000000000..7d6fbf474eb41f2a5fe83e91667c41eae87ad794 GIT binary patch literal 930 zcmeAS@N?(olHy`uVBq!ia0vp^AAooP3p0>B@bym^kTMAH32`lGSkTb$A|T*}g~bg8 zg#!Wt8#p*tFfdGDU}#`qC}3bnU|ATGlQqTXY`+)mym{$=a1JAn!2t$lT*Q9q3NtBNn_v9dhog61 zerf-MH`{q>0y5{cI+cRyyL@n$0T5DKXanJ5>>ZRkI(i5esCxV$o?)l`@!3SRb}on>*nW8yS1V;=#_B$?KFvp&68@& zci#2;bj&X9iq)je@AbA%_C6VX;Ng_NnkRH^RvIjOx9CO4WD6V7#cC1{Q*wQzw#`sD zZ@sg|UFzBto^26NObR3B#~7$tG(3*)IP4!Ee=a6_>pgq<$!%L-CwE6(o?kbit#q}k z+rb}8y`_02*}2Vr-s+Zz zJA*c?*t+q=|GKlbYrgI)6x+)8{8&q3ZNT}6E3@pB`Oe>JoniSjc6Q-gMw@V#b2er# zzsxXM!~3eT_|)#5)|WN}zE(P(cgk+f#*5d#>a-U=C=LJ3@H*J_i6tBRwW`^-)c5s& zJ*pL6(U+KQay!`V0z5};5Twig$ zvMe&^@f^!%uD>j3T+iP5asS&(&sfjrz1Vs@@qeA=p@Jtpe`aRuUYR%1m@i4j z^J<9w!{_(Y?2cV>k9@iO?qa!m9?5OpHBI8HbZ@KMwryQ_M_?)2&(q?YZFapan;WyZ p>i=EOt1`CV&e>PsO||*m_g^%3AGW`}K#BnfJYD@<);T3K0RUU)q+I|2 literal 0 HcmV?d00001 diff --git a/graphics/efxskill/efxskill_14.png b/graphics/efxskill/efxskill_14.png new file mode 100644 index 0000000000000000000000000000000000000000..04d3e6f0a453fc3f6c760c816ba52fdd5727decb GIT binary patch literal 843 zcmeAS@N?(olHy`uVBq!ia0vp^AAooP3p0>B@bym^kTMAH32`lGSkTb$A|T*}g~bB} zg%bh-J2*HtFfhzuVCZ0As9<2oU|@(~VDMmIuwY=&U|^7Vu}?#ifr06or;B4q#hkY{ zV~b`5h_HXiVcf;ERJudlEFftUgX`~kKQ=b}+R8XpXF=1qy&o69&Az&&mM^I`-)9r! zL|ze{F!io7x3oihJ=6a^pE>jXoNB%HYCZSv^e*KC4UEieJQ4;8SQz?}^UlA2o8B;Y z_sYz^_cISqvwX3|y7{&BY~7rhwR_{%udK?KiQr={JL|W1%GtEy)UDzbTMsv+H&+=> z7V)2wv#&CDbF;3qwpyx?vWw5u+4eUNZuSeEm@L@$xO2)bnOkcT%9o@*(b&!tH{sM; zPVE~n#U~r)iP~6(?%&vyzn)8FQ`^q)k2T*LdEfL&olJgbcqB&q##!C$Ca1U81H92x0@jztUH<2X4OeS`8T0Etrzm| z-hWTsBHqO_YJVDobm&cf{ndBoTxicdPdBVZwU_{gj=>4Pv2Jhtm@7+ zo`lu$-fx!bESY`f;o4%;+dX@0WACosRB&x6zja&Kgz}Wef9t+ITDN|$^6@qIA0I8U z%eyYLPw$X-<*T{blILDzAH41w@#WRlJ05xAkrtuyGY-T({<2g@PEP&MuIIBdXZlW^ zImh8z;@uGQ&C;GL<0B5<+cK+j?b8+Jt8cA&kowB@bym^kTMAH32`lGSkTb$A|T*}gTo68 zix&zC7X$PRNr(J%-v+lW1VtLYBlag3#!|LlgiRCq6ftzQBs70Gp#Y-LvUcGRc zisuxSr8i{G%s80$|Dq^sgO$F^?3t1m zXVf&8KdY&}ai_PUQgQ4%~J>v%T zuPFjzm)1u9_%L@K$Br16b%qV@$F&Xgr5_%iw^nY=fsco0Ur4-e$0cTZ{N&Qa7aP)7 zY8y-zt^O9cVa0s2PX;wViW6h|%;(L#{rpDM^vACZN^Wew{v;x8!sEGblmD;V!=Rp`5MWOWBk*VNIq znD+im2?IJJ< OGkCiCxvXB@bym^kTMAH32`lGSP&8M!odNA3=Cc< zC_LccIKjZMfq`KH1497=g9ihH1p|Wu1A_zvygnPbQZeW4HGjWD4kE`3 z*BLxwHK<_lDOvBxw?Kh?!Zo=AK~EUM7XRjQyYBF3bJ@amhAQhikJ)Bi+MBf6gV#I# z;vToZ`@X8oKeNZ&cz?)@fTazMctO3UjLo-slN#c0^}2nIlB>(#9eVlZe!=$L>n5I` zzHQb%1Dj7htV`3v)^aEAh>s1NKUGiu#39GklOzvk6+Vv>k*my(U*{D)ebI;4?>@1F zJrxeDNJv-OvEb&D84v!IJz4d0m&Tp7Dy;ecw#)ig?@_Uiakl<$d$oPhhudG|=64-x z+-_I6`Py0ynK;+<*cHDweYl|8cQ^8`xUrc<#?7O5V#=Jq7kBA5+EgzKG|GOy>-A&q z>T>tK&E;=SAAab(ym;B$f1M8eJb1yM;#!6Yj#5HL7d|=zj2s3}S3j3^P6B@bym^kTMAH32`lGSdfu%K|*2%149J^ zLj(hZ0|SEw1A_!EH2F|vB2aIyr;B4q#hkb24|29Rh_E^a|LAzOInL*R%(FEdlm9JK z(Av{{l~cs_O8~P34_ouW1OpiLC$l2b_(Nncn_bqK1LVq4F`IB@bym^kTMAH32`lGSkTb$!op&QfWQO> zh6)CT3oHQeJKaCpo4} zkyKO;aPyj&mdKI;Vst04w)rv;Y7A literal 0 HcmV?d00001 diff --git a/graphics/efxskill/efxskill_4.png b/graphics/efxskill/efxskill_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ff922058f60f1d6300212e05fc47fdb6ea7201ff GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^AAooP3p0>B@bym^kTMAH32`lGSkTb$!op&Qg2Dm; zfe9QO9SjTw3=9bj3=TjQ3=9ek3=+sFiMKKtsP}`Xi(^Q|oVT|W^O_t5*aFrW)Jt7b zlQ4NGVCx{ejOid_z*dQM0nN+iDPKv5W>L({6n@7f9$}`rJM!Z9n?KF;m9P1}zoKDl zAi=}dd@un<{ir`I-}~Tk!4&y3u>*wo1M zeO`KXolVWJKff>EesG%!*$89`IBmLTm^I2P&zp5%dhhdI3- literal 0 HcmV?d00001 diff --git a/graphics/efxskill/efxskill_5.png b/graphics/efxskill/efxskill_5.png new file mode 100644 index 0000000000000000000000000000000000000000..e9eff65d07522411eefc62df2930c7c0fde31154 GIT binary patch literal 449 zcmeAS@N?(olHy`uVBq!ia0vp^AAooP3p0>B@bym^kTMAH32`lGSkTb$A|T*`gTny@ zg#`iv6F4|J7#Io|7!nv50vH$^fa(|+6c`vJAZSbDycG-#j6R+&jv*Cu-rh3wVs;cc z_A%xmH>0RZYXzh9+PAJ7CT+uwG0tsk xt)2N(-mj(g`Kwz8-sze){bgiB2kQ*)SMSWWT3f#56EIE~JYD@<);T3K0RWQ;uMGeI literal 0 HcmV?d00001 diff --git a/graphics/efxskill/efxskill_6.png b/graphics/efxskill/efxskill_6.png new file mode 100644 index 0000000000000000000000000000000000000000..03c5b4bd145f15ed7f11516f79c6abfc72356aba GIT binary patch literal 582 zcmeAS@N?(olHy`uVBq!ia0vp^AAooP3p0>B@bym^kTMAH32`lGSkTb$A|T*`gTny} ziyaCI3j_ovaBy@mFcdH_Brq@pFfdp!FeorENI;O-DITCCo7qr; zt>Ay__N@7 zmQP%~Rr=_+J;v8B@l9jtixblHUpArrPQS`@nV2>k-&78RgaZwX%xpXo$c+E&|KcvN zJYT6HUw32mmo1W8Zm!+EO=d^pg(Uyvd29T(M%~z6^~vCY^`aR+w_nsO&)(g+ky*1~ zp2wC2{e_D(quKTxeZXa(ChT;08P5%Q!~X~0DRwKnN*YLC;;{dFQ|)2U7e;g5T@RM8 z<9F9GN_f9n$4g&Q=JD}Q=Uz=$xwwUI#@ok*!R&ALisiAqJWwNs;X0su-|gpEFaP9V z-rA6=ON`gKZ*CP1wtW+GR@LqK`74LN@(8+KUY2!Zum7*@44N1BM`>;-ezIGH+w8jH zfwObPWX@`~PmeB8N!M<(zh$tL`70M=-kL4$Yh?1$Ox6}YUuzf6TmG#u(DY5{ZT0C( zWy;KMM9$?hyS(r~e#x9z+pSj*Zx7k67s+Vd%2E~-fCy`+19>pd~C9qJ?@g} oqwk#2{5l$#f!e^x&-91e;)s;q#+H++z=Xlz>FVdQ&MBb@0DTzeI{*Lx literal 0 HcmV?d00001 diff --git a/graphics/efxskill/efxskill_7.png b/graphics/efxskill/efxskill_7.png new file mode 100644 index 0000000000000000000000000000000000000000..6e9d3716455b39ef02ff69e53c1af69008382b6f GIT binary patch literal 809 zcmeAS@N?(olHy`uVBq!ia0vp^AAooP3p0>B@bym^kTMAH32`lGSkTb$A|T*`gTny} ziyZ<26F4|J7#Io|7!nv50vH$^fa(|+6c`vJAgGGV?id3D(-uz`$B>FSZ*QK@zMLSz z{^2io{w~E1uGvj*EUfodzF20f!4X?;d9gdX{p#fzbA8&kUoF+Rmlk{UuFUVoIG1Si zJFZh!ZBEZNb$8{mJR3RNY@4TehObuR9{+%S=NGm<&-|1**}U?;-OB)(F1`Z|jLd92 z5(Wt?cvZ)>6n=bXG%9) zZa;jZZffoJO}`q&V?G%i^D}*ZO0I1Czj^a}dd@zzICy_o_J@blp1l72HN5iP{l|Pu zEe^(K>)lR{IMsK>Yu!T``G~(q_qt7ewRqpJ>7VSLFi)@9Iyc^6)rpO}PVdV5-1zj@ zin^o_P5%`eUUSJuR2nPHG1HmyM@z@W^5E1bQ!*lc*eyBu+~VM}kFOW8#V>2CoS%Go zLi(1#+IFeDnB&LARz5s7S6gf1;i5bDi!a=^iWEL@>Ui|T0;eK|uut5Y8{e}3n;oi# z@O<5e`@6jNJUI0G>stF;H7o^*sxu=Zgik(9Qj_cHQN5;;v|~~yJKJ4#r_Sj|3O>ed z__jUd1^;rDC<|%pMP+h+apxx??iGq>k{zf@)+|2q4Cd%nk% z54TtIPA_$J^|Fw@(HeVEMlr^>|HX%;zD^OIzsnOJ>S)fnm?*A0NA~K&#EBx;+)I~x znok#gbE9<4{hciNyVDuJ9iF=MV%}SicHJ}G-_H2S<(6$K=*pefubY!{n(N8Yl!6O) zYnR$^qIcxGGi*g(5v(ERdZI%6Cb~`;r zSI_T8>+4Kvfkd~<5Q?&g=TGqdx3P0z?R z8fO3o7+`<_1{h#~0R|XgfB^;=V1NMz7+`>F2TKAIII{k&FtFuy#~Hu}UT&zs5&P?n zkLkmrr&Vu#o*(&GhtPF_I{c{zA)O=Nd4mu#>{Ey5aDM1qFc*-X;(%_pswH*`SnS6P z(m%;Xl6@+C99ducOcU-=VBLdUL{j0E?J3{z+YNyle4@fA50+oz_h+{!d5&`hD&%~c zjQff+mcKM0bYs%i*4Wf#UlORnC3CFq;{b2Qi%xHKf1m}+bEs%l%krUjdZJTV?8sn$ zMGaQ=F}f!d1`jeM5vU(mXV1dN|tI_qd*ObYeZrC_6TpB5}1401z45xm-wa*^I1 zqz22;y&_i@CtA}my8W6STsp+@h74?F3ZHngaPw%n3rWL?9Bg{Q60Tjw<1N`aW}2}$ z(Vm5aEaCipyw4O4^`>EiQ(y_phkSaHn@7rCM;uPfcce}yZk8>a3=OE~vBfR0h2@A^ zfmj^x%3nqvmbSgP=CV&$xQrAm9mirZL4BE2s?4Q08#o!;Sqrc4rdl{Dx>s^sQi7#u zcxrffDp1@!Qir4ANiW9_`uytxQ}_ti@U~7%7dPnNWeP_Yd7HWMT2ouMYq{Dln*^K; zdu_@?1L;k6{{}-iy1=K8q$}Ny3Y`l{7(X#GwKOtv{)!DMF<1=o=FH)*v%1Q+OeEpN zf-PHTA(LZ9UvUG&|jeXtfV-p3FB{^5V~&li9J1{h#~0R|XgfB^;=V1NMz7+`<_2AIY814`aQ U7BjpkM*si-07*qoM6N<$g3xL35&!@I literal 0 HcmV?d00001 diff --git a/graphics/efxskill/efxskill_9.png b/graphics/efxskill/efxskill_9.png new file mode 100644 index 0000000000000000000000000000000000000000..b472df758fa8ce0199190b37b38964a2c63e216e GIT binary patch literal 1180 zcmV;N1Y`S&P)l$bPfyQg>fP`lAD>np4FNv*emp2d*1GXu^P@p2R)L3iCJ7;YS86Vwv*NLP z;IR3CLS*c5Cw_66hWu4<_}~VG$myG%`0oqt_ycfwznx((#b4VKK*s9O@QX`ri2KYA z%?E*YEZqGE8vfXZKkdNxi9G|Eq7Rv6#>;lbd@NTqK;buQ{6#0eZ^K+v$^8xrH|<@` z-=cx}svCa>(rmIRR1OxU6Lp zQ(};G+emE9V|9~G z#^7+Xv@qkEX)>aKPxZk@deXVItc+9OaO1axdx=RXwG9o|)VOYtCo+umzW>I zSzXNz*jvIU;J1@mU6EaTixaN^-^W(d2V~5Ju2rC6E8{6w#zOeI*SO=u&wE8)w}}_; z!o#{7=A^l8aCp$J=0n%(@bG}=Sd0`5c=%=Bb#h5D?{7a4XEh&A4F%pzJ76)g^poc> zi2GQY%RTiR#-ajwDEHUYQcSB10e00~Ld5%BkqO+`SeQDLGABisfImfaTC>zwR|{b! z=TY`Bg3YR$?xoC&kwxzh5scoQHWs_@PP`bN%M^VKVgZ}Fnv_K`7~nWT3`J9g%8=mB z`>{xyG^^zNB+Lf3R(T~MPmD_w;aO$1;OC1Xqd$f;O4>?Nj>@ytEgQpwTf4fts3en$ zZ-O?_UE#iYQx;sw>Aq~MZYc^cxPd$V!o<9DL>gY{ElG(zn%|{ zw98rFDkJz$>!3bccXd~fJULmwKhmS}2WRh2eEQlEGK)*%YkC>pa`ZO84UiFMCu8_4 zdOLjS=-t0yb$$p7e?v3A?dW|*i;}aTu)W6Hj?Q1`G`wek!v9*k`n!loBKjNR?+W(G$Fv18U uj4;9oBaAS@2qTOz!U!XbFv1AGQ}BPZCOgTJc*6n!0000> 5) & 0x1F) << 3 + b = ((color >> 10) & 0x1F) << 3 + + palette.append(r) + palette.append(g) + palette.append(b) + + return palette + +def create_image_from_4bpp(img_data, tsa_data, pal_bytes, ntiles_x, ntiles_y): + + width = ntiles_x * 8 + height = ntiles_y * 8 + img = Image.new('P', (width, height)) + + pal_data = read_palette_from_binary(pal_bytes) + + tiles_8x8 = [] + + pixels = [0] * (width * height) + + # step1: generate tiles + for tile_idx in range(len(img_data) // 0x20): + _tile = [] + + for y in range(8): + for x in range(0, 8, 2): + offset = tile_idx * (8 * 8 // 2) + y * (8 // 2) + (x // 2) + + byte = img_data[offset] + + pixel1 = byte & 0x0F + pixel2 = (byte >> 4) & 0x0F + + _tile.append(pixel1) + _tile.append(pixel2) + + tiles_8x8.append(_tile) + + # apply TSA + for tile_idx in range(ntiles_x * ntiles_y): + base_y = tile_idx // ntiles_x + base_x = tile_idx % ntiles_x + + tsa_idx = tsa_data[tile_idx] + tile = tiles_8x8[tsa_idx] + + for y in range(8): + for x in range(0, 8): + offset = y * (8 // 2) + (x // 2) + + real_x = x + base_x * 8 + real_y = y + base_y * 8 + + pixels[real_x + 0 + real_y * width] = tile[y * 8 + x] + + img.putpalette(pal_data) + img.putdata(pixels) + return img + +def dump_img(prefix, img_addr, tsa_addr, pal_addr, ntiles_x, ntiles_y): + img_addr &= 0x00FFFFFF + tsa_addr &= 0x00FFFFFF + pal_addr &= 0x00FFFFFF + + pal_bytes = lzss_lib.copy_direct(pal_addr, 0x20) + img_bytes = lzss_lib.lz77_decomp_data(img_addr) + tsa_bytes = lzss_lib.lz77_decomp_data(tsa_addr) + + img_data = array.array('B', img_bytes) + + tsa_data = [] + for i in range(0, len(tsa_bytes), 2): + tsa = struct.unpack('= len(src): + raise ValueError("overflow") + + flags = src[src_pos] + src_pos += 1 + + for i in range(8): + if flags & 0x80: # compressed blocks + if src_pos + 1 >= len(src): + raise ValueError("overflow in flags") + + block_size = (src[src_pos] >> 4) + 3 + block_distance = (((src[src_pos] & 0xF) << 8) | src[src_pos + 1]) + 1 + + src_pos += 2 + + block_pos = dest_pos - block_distance + + if block_pos < 0: + raise ValueError("invalid distance") + + if dest_pos + block_size > dest_size: + block_size = dest_size - dest_pos + print("Destination buffer overflow. Truncating block size.") + + for j in range(block_size): + dest[dest_pos] = dest[block_pos + j] + dest_pos += 1 + + else: # uncompressed blocks + if src_pos >= len(src) or dest_pos >= dest_size: + raise ValueError("overflow in uncompressed blocks") + + dest[dest_pos] = src[src_pos] + src_pos += 1 + dest_pos += 1 + + if dest_pos == dest_size: + return bytes(dest) + + flags <<= 1 + +def lz77_decomp_data(offset): + offset = offset & 0x00FFFFFF + with open(ROM, "rb") as f: + f.seek(offset) + return lz77_decompress(f.read()) + +def copy_direct(offset, len): + offset = offset & 0x00FFFFFF + with open(ROM, "rb") as f: + f.seek(offset) + return f.read(len) + +class SlidingWindow: + # The size of the sliding window + size = 4096 + + # The minimum displacement. + disp_min = 2 + + # The hard minimum — a disp less than this can't be represented in the + # compressed stream. + disp_start = 1 + + # The minimum length for a successful match in the window + match_min = 1 + + # The maximum length of a successful match, inclusive. + match_max = None + + def __init__(self, buf): + self.data = buf + self.hash = defaultdict(list) + self.full = False + + self.start = 0 + self.stop = 0 + #self.index = self.disp_min - 1 + self.index = 0 + + assert self.match_max is not None + + def next(self): + if self.index < self.disp_start - 1: + self.index += 1 + return + + if self.full: + olditem = self.data[self.start] + assert self.hash[olditem][0] == self.start + self.hash[olditem].pop(0) + + item = self.data[self.stop] + self.hash[item].append(self.stop) + self.stop += 1 + self.index += 1 + + if self.full: + self.start += 1 + else: + if self.size <= self.stop: + self.full = True + + def advance(self, n=1): + for _ in range(n): + self.next() + + def search(self): + match_max = self.match_max + match_min = self.match_min + + counts = [] + indices = self.hash[self.data[self.index]] + for i in indices: + matchlen = self.match(i, self.index) + if matchlen >= match_min: + disp = self.index - i + #assert self.index - disp >= 0 + #assert self.disp_min <= disp < self.size + self.disp_min + if self.disp_min <= disp: + counts.append((matchlen, -disp)) + if matchlen >= match_max: + #assert matchlen == match_max + return counts[-1] + + if counts: + match = max(counts, key=itemgetter(0)) + return match + + return None + + def match(self, start, bufstart): + size = self.index - start + + if size == 0: + return 0 + + matchlen = 0 + it = range(min(len(self.data) - bufstart, self.match_max)) + for i in it: + if self.data[start + (i % size)] == self.data[bufstart + i]: + matchlen += 1 + else: + break + return matchlen + +class NLZ10Window(SlidingWindow): + size = 4096 + + match_min = 3 + match_max = 3 + 0xf + +class NLZ11Window(SlidingWindow): + size = 4096 + + match_min = 3 + match_max = 0x111 + 0xFFFF + +class NOverlayWindow(NLZ10Window): + disp_min = 3 + +def _compress(input, windowclass=NLZ10Window): + + window = windowclass(input) + + i = 0 + while True: + if len(input) <= i: + break + match = window.search() + if match: + yield match + #if match[1] == -283: + # raise Exception(match, i) + window.advance(match[0]) + i += match[0] + else: + yield input[i] + window.next() + i += 1 + +def packflags(flags): + n = 0 + for i in range(8): + n <<= 1 + try: + if flags[i]: + n |= 1 + except IndexError: + pass + return n + +def chunkit(it, n): + buf = [] + for x in it: + buf.append(x) + if n <= len(buf): + yield buf + buf = [] + if buf: + yield buf + + +def lz77_compress(input): + # header + out = b'' + out += (pack("B", packflags(flags))) + + for t in tokens: + if type(t) == tuple: + count, disp = t + count -= 3 + disp = (-disp) - 1 + assert 0 <= disp < 4096 + sh = (count << 12) | disp + out += (pack(">H", sh)) + else: + out += (pack(">B", t)) + + length += 1 + length += sum(2 if f else 1 for f in flags) + + # padding + # padding = 4 - (length % 4 or 4) + # if padding: + # out += (b'\x00' * padding) + return out diff --git a/test.py b/test.py new file mode 100644 index 00000000..53ad4090 --- /dev/null +++ b/test.py @@ -0,0 +1,31 @@ +from PIL import Image +import sys, re + +def reduce_palette(image_path, output_path): + # 打开原始图像 + image = Image.open(image_path) + + # 确保图像是调色板模式 + if image.mode != 'P': + raise ValueError("Image must be in 'P' mode (palette mode)") + + # 获取原始调色板 + palette = image.getpalette() + + # 只保留前 16 个颜色 + new_palette = palette[:16 * 3] # 每个颜色有三个值(R, G, B) + + # 创建新的图像 + new_image = Image.new('P', image.size) + + # 将新调色板应用到新图像 + new_image.putpalette(new_palette) + + # 重新调色,确保使用新调色板 + new_image.putdata(image.getdata()) + + # 保存新的图像 + new_image.save(output_path) + +# 示例使用 +reduce_palette(f'{sys.argv[1]}.png', f'{sys.argv[1]}.png') diff --git a/tools/gfxtools/lzss_compress.py b/tools/gfxtools/lzss_compress.py new file mode 100755 index 00000000..0f85815d --- /dev/null +++ b/tools/gfxtools/lzss_compress.py @@ -0,0 +1,22 @@ +#!/bin/python3 + +import sys +import lzss_lib + +def main(args): + try: + in_fpath = args[1] + out_fpath = args[2] + + except IndexError: + sys.exit(f"Usage: {args[0]} ") + + with open(in_fpath, 'rb') as f: + bin_data = f.read() + + with open(out_fpath, "wb") as f: + compressed_data = lzss_lib.lz77_compress(bin_data) + f.write(compressed_data) + +if __name__ == '__main__': + main(sys.argv) diff --git a/tools/gfxtools/lzss_decompress.py b/tools/gfxtools/lzss_decompress.py new file mode 100755 index 00000000..c831e8ef --- /dev/null +++ b/tools/gfxtools/lzss_decompress.py @@ -0,0 +1,18 @@ +#!/bin/python3 + +import sys +import lzss_lib + +def main(args): + try: + offset = eval(args[1]) + out_fpath = args[2] + + except IndexError: + sys.exit(f"Usage: {args[0]} ") + + with open(out_fpath, "wb") as f: + f.write(lzss_lib.lz77_decomp_data(offset)) + +if __name__ == '__main__': + main(sys.argv) diff --git a/tools/gfxtools/lzss_lib.py b/tools/gfxtools/lzss_lib.py new file mode 100644 index 00000000..343f03e6 --- /dev/null +++ b/tools/gfxtools/lzss_lib.py @@ -0,0 +1,255 @@ +#!/bin/python3 + +from sys import stderr + +from collections import defaultdict +from operator import itemgetter +from struct import pack, unpack + +import rom_def + +def lz77_decompress(src): + if src[0] != 0x10: + raise ValueError("Not a valid GBA LZ77 compressed stream.") + + dest_size = (src[1] | (src[2] << 8) | (src[3] << 16)) + dest = [0] * dest_size + + src_pos = 4 + dest_pos = 0 + + while True: + if src_pos >= len(src): + raise ValueError("overflow") + + flags = src[src_pos] + src_pos += 1 + + for i in range(8): + if flags & 0x80: # compressed blocks + if src_pos + 1 >= len(src): + raise ValueError("overflow in flags") + + block_size = (src[src_pos] >> 4) + 3 + block_distance = (((src[src_pos] & 0xF) << 8) | src[src_pos + 1]) + 1 + + src_pos += 2 + + block_pos = dest_pos - block_distance + + if block_pos < 0: + raise ValueError("invalid distance") + + if dest_pos + block_size > dest_size: + block_size = dest_size - dest_pos + print("Destination buffer overflow. Truncating block size.") + + for j in range(block_size): + dest[dest_pos] = dest[block_pos + j] + dest_pos += 1 + + else: # uncompressed blocks + if src_pos >= len(src) or dest_pos >= dest_size: + raise ValueError("overflow in uncompressed blocks") + + dest[dest_pos] = src[src_pos] + src_pos += 1 + dest_pos += 1 + + if dest_pos == dest_size: + return bytes(dest) + + flags <<= 1 + +def copy_direct(offset, len): + offset = offset & 0x00FFFFFF + with open(rom_def.ROM, "rb") as f: + f.seek(offset) + return f.read(len) + +def lz77_decomp_data(offset): + offset = offset & 0x00FFFFFF + with open(rom_def.ROM, "rb") as f: + f.seek(offset) + return lz77_decompress(f.read()) + +class SlidingWindow: + # The size of the sliding window + size = 4096 + + # The minimum displacement. + disp_min = 2 + + # The hard minimum — a disp less than this can't be represented in the + # compressed stream. + disp_start = 1 + + # The minimum length for a successful match in the window + match_min = 1 + + # The maximum length of a successful match, inclusive. + match_max = None + + def __init__(self, buf): + self.data = buf + self.hash = defaultdict(list) + self.full = False + + self.start = 0 + self.stop = 0 + #self.index = self.disp_min - 1 + self.index = 0 + + assert self.match_max is not None + + def next(self): + if self.index < self.disp_start - 1: + self.index += 1 + return + + if self.full: + olditem = self.data[self.start] + assert self.hash[olditem][0] == self.start + self.hash[olditem].pop(0) + + item = self.data[self.stop] + self.hash[item].append(self.stop) + self.stop += 1 + self.index += 1 + + if self.full: + self.start += 1 + else: + if self.size <= self.stop: + self.full = True + + def advance(self, n=1): + for _ in range(n): + self.next() + + def search(self): + match_max = self.match_max + match_min = self.match_min + + counts = [] + indices = self.hash[self.data[self.index]] + for i in indices: + matchlen = self.match(i, self.index) + if matchlen >= match_min: + disp = self.index - i + #assert self.index - disp >= 0 + #assert self.disp_min <= disp < self.size + self.disp_min + if self.disp_min <= disp: + counts.append((matchlen, -disp)) + if matchlen >= match_max: + #assert matchlen == match_max + return counts[-1] + + if counts: + match = max(counts, key=itemgetter(0)) + return match + + return None + + def match(self, start, bufstart): + size = self.index - start + + if size == 0: + return 0 + + matchlen = 0 + it = range(min(len(self.data) - bufstart, self.match_max)) + for i in it: + if self.data[start + (i % size)] == self.data[bufstart + i]: + matchlen += 1 + else: + break + return matchlen + +class NLZ10Window(SlidingWindow): + size = 4096 + + match_min = 3 + match_max = 3 + 0xf + +class NLZ11Window(SlidingWindow): + size = 4096 + + match_min = 3 + match_max = 0x111 + 0xFFFF + +class NOverlayWindow(NLZ10Window): + disp_min = 3 + +def _compress(input, windowclass=NLZ10Window): + + window = windowclass(input) + + i = 0 + while True: + if len(input) <= i: + break + match = window.search() + if match: + yield match + #if match[1] == -283: + # raise Exception(match, i) + window.advance(match[0]) + i += match[0] + else: + yield input[i] + window.next() + i += 1 + +def packflags(flags): + n = 0 + for i in range(8): + n <<= 1 + try: + if flags[i]: + n |= 1 + except IndexError: + pass + return n + +def chunkit(it, n): + buf = [] + for x in it: + buf.append(x) + if n <= len(buf): + yield buf + buf = [] + if buf: + yield buf + + +def lz77_compress(input): + # header + out = b'' + out += (pack("B", packflags(flags))) + + for t in tokens: + if type(t) == tuple: + count, disp = t + count -= 3 + disp = (-disp) - 1 + assert 0 <= disp < 4096 + sh = (count << 12) | disp + out += (pack(">H", sh)) + else: + out += (pack(">B", t)) + + length += 1 + length += sum(2 if f else 1 for f in flags) + + # padding + # padding = 4 - (length % 4 or 4) + # if padding: + # out += (b'\x00' * padding) + return out diff --git a/tools/gfxtools/rom_def.py b/tools/gfxtools/rom_def.py new file mode 100644 index 00000000..cbacb493 --- /dev/null +++ b/tools/gfxtools/rom_def.py @@ -0,0 +1,16 @@ +ROM = "baserom.gba" + +BANIM_MODES = { + 0: "NORMAL_ATK", + 1: "NORMAL_ATK_PRIORITY_L", + 2: "CRIT_ATK", + 3: "CRIT_ATK_PRIORITY_L", + 4: "RANGED_ATK", + 5: "RANGED_CRIT_ATK", + 6: "CLOSE_DODGE", + 7: "RANGED_DODGE", + 8: "STANDING", + 9: "STANDING2", + 10: "RANGED_STANDING", + 11: "MISSED_ATK" +} diff --git a/tools/gfxtools/tsa_analysis.py b/tools/gfxtools/tsa_analysis.py new file mode 100755 index 00000000..e9f8f51b --- /dev/null +++ b/tools/gfxtools/tsa_analysis.py @@ -0,0 +1,47 @@ +#!/bin/python3 + +import sys, struct +from collections import Counter +import lzss_lib + +def count_and_sort_numbers(numbers): + counts = Counter(numbers) + sorted_counts = sorted(counts.items()) + return sorted_counts + +def main(args): + try: + offset = eval(args[1]) + width = eval(args[2]) + height = eval(args[3]) + + except IndexError: + sys.exit(f"Usage: {args[0]} ") + + decomped_data = lzss_lib.lz77_decomp_data(offset) + numbers = [(struct.unpack(' ") + + numbers = read_bin_file(filename) + + n_cols = width // 8 + + for col in range(n_cols): + x_start = 8 * col + x_end = 8 * col + 8 + print(f"[col: {col}]") + + for y in range(height): + for x in range(x_start, x_end): + idx = y * width + x + # print(f"[{x}, {y}] = ", end="") + tile = numbers[idx] + tile_0 = numbers[0] + if tile == tile_0: + # print(" ", end="") + print(f" {numbers[idx]:04X}", end=" ") + else: + print(f"0x{numbers[idx]:04X}", end=" ") + + print("") + +if __name__ == '__main__': + main(sys.argv) diff --git a/tools/gfxtools/tsa_generator.py b/tools/gfxtools/tsa_generator.py new file mode 100755 index 00000000..2ae55deb --- /dev/null +++ b/tools/gfxtools/tsa_generator.py @@ -0,0 +1,147 @@ +#!/bin/python3 + +import sys, re +import numpy as np +from PIL import Image + +''' +方案1: +常见于 banim 相关的图片 +1. 整张图按行从左向右扫描, 将获得的独特的 tile 入栈, 从而获得 tile array +2. 上述获得的第一个 tile 丢到末尾作为最后一个 tile +3. tile array 第 0 个 tile 置空 +''' +def process_tiles_method1(tiles, ntile_x, ntile_y): + unique_tiles = [] + tsa_data = [] + tile_dict = {} + + for tile_y in range(0, ntile_y): + for tile_x in range(0, ntile_x): + tile = tiles[tile_y][tile_x] + + tile_4bpp = convert_to_4bpp(tile) + tile_tuple = tuple(tile_4bpp) + + tile_2d = tile.reshape((8, 8)) + tile_hf = np.flip(tile_2d, axis=1).flatten() + tile_vf = np.flip(tile_2d, axis=0).flatten() + tile_se = np.flip(tile_2d).flatten() + + tile_hf_4bpp = convert_to_4bpp(tile_hf) + tile_hf_tuple = tuple(tile_hf_4bpp) + + tile_vf_4bpp = convert_to_4bpp(tile_vf) + tile_vf_tuple = tuple(tile_vf_4bpp) + + tile_se_4bpp = convert_to_4bpp(tile_se) + tile_se_tuple = tuple(tile_se_4bpp) + + if tile_tuple in tile_dict: + tsa_data.append(tile_dict[tile_tuple]) + elif tile_hf_tuple in tile_dict: + tsa_data.append(tile_dict[tile_hf_tuple] | (1 << 10)) + elif tile_vf_tuple in tile_dict: + tsa_data.append(tile_dict[tile_vf_tuple] | (2 << 10)) + elif tile_se_tuple in tile_dict: + tsa_data.append(tile_dict[tile_se_tuple] | (3 << 10)) + else: + # fine, we did not find it + unique_tiles.append(tile_4bpp) + tile_index = len(unique_tiles) - 1 + tile_dict[tile_tuple] = tile_index + tsa_data.append(tile_index) + + # put the first tile to the tale + last_idx = len(unique_tiles) + print(last_idx) + for i, tsa in enumerate(tsa_data): + if tsa == 0: + tsa_data[i] = last_idx + + unique_tiles.append(unique_tiles[0]) + unique_tiles[0] = [0] * 32 + + return unique_tiles, tsa_data + +''' +方案2: (todo) +1. 以 8 个 tile 为一行,将图片分割为多个列 +2. 按照方案1的方式扫描所有列 +''' + +def extract_tiles(image, ntile_x, ntile_y): + tiles = [[None for _ in range(ntile_x)] for _ in range(ntile_y)] + + for tile_y in range(0, ntile_y): + for tile_x in range(0, ntile_x): + x = tile_x * 8 + y = tile_y * 8 + + tile = image.crop((x, y, x + 8, y + 8)) + tile_data = np.array(tile).flatten() + + tiles[tile_y][tile_x] = tile_data + + return tiles + +def convert_to_4bpp(tile): + result = [] + for i in range(0, len(tile), 2): + byte = (tile[i] & 0xF) | ((tile[i + 1] & 0xF) << 4) + result.append(byte) + return result + +def extract_suffix_from_filename(file_name): + match = re.search(r'\.(fetsa(\d+)\.bin)$', file_name) + if match: + return match.group(2) + return None + +def main(args): + try: + png_file = args[1] + out_img = args[2] + out_tsa = args[3] + except IndexError: + sys.exit(f"Usage: {args[0]} [*.png] [*.feimg.bin] [*.fetsa.bin]") + + method = extract_suffix_from_filename(out_tsa) + if method is None: + method = 0 # default + + image = Image.open(png_file) + if image.mode != 'P': + raise ValueError("IMAGE ERRIR (P mode)") + + width, height = image.size + + ntile_x = width // 8 + ntile_y = height // 8 + + tiles = extract_tiles(image, ntile_x, ntile_y) + + if method == 1: + unique_tiles, tsa_data = process_tiles_method1(tiles, ntile_x, ntile_y) + else: + # todo + unique_tiles, tsa_data = process_tiles_method1(tiles, ntile_x, ntile_y) + + with open(out_img, 'wb') as f: + cnt = 0 + for tile in unique_tiles: + cnt += 1 + f.write(bytearray(tile)) + + if cnt > 0x100: + raise ValueError("Compressed image overflowed!") + + for i in range(cnt, 0x100): + f.write(b'\x00' * 32) + + with open(out_tsa, 'wb') as f: + for entry in tsa_data: + f.write(entry.to_bytes(2, byteorder='little')) + +if __name__ == '__main__': + main(sys.argv) From 215a06955e1bf27d147fadc13be50919c9e8ed43 Mon Sep 17 00:00:00 2001 From: MokhaLeee Date: Wed, 25 Sep 2024 19:57:10 +0800 Subject: [PATCH 2/3] remove cache --- test.py | 31 ------------------------------- 1 file changed, 31 deletions(-) delete mode 100644 test.py diff --git a/test.py b/test.py deleted file mode 100644 index 53ad4090..00000000 --- a/test.py +++ /dev/null @@ -1,31 +0,0 @@ -from PIL import Image -import sys, re - -def reduce_palette(image_path, output_path): - # 打开原始图像 - image = Image.open(image_path) - - # 确保图像是调色板模式 - if image.mode != 'P': - raise ValueError("Image must be in 'P' mode (palette mode)") - - # 获取原始调色板 - palette = image.getpalette() - - # 只保留前 16 个颜色 - new_palette = palette[:16 * 3] # 每个颜色有三个值(R, G, B) - - # 创建新的图像 - new_image = Image.new('P', image.size) - - # 将新调色板应用到新图像 - new_image.putpalette(new_palette) - - # 重新调色,确保使用新调色板 - new_image.putdata(image.getdata()) - - # 保存新的图像 - new_image.save(output_path) - -# 示例使用 -reduce_palette(f'{sys.argv[1]}.png', f'{sys.argv[1]}.png') From ca5cd5d4f6574df671e7129ba816e10af6d2ecd1 Mon Sep 17 00:00:00 2001 From: MokhaLeee Date: Wed, 25 Sep 2024 21:12:26 +0800 Subject: [PATCH 3/3] match demonlight BG tsa --- .gitignore | 5 +- Makefile | 6 +- data/banim-ekrdragonfx.s | 1152 +++++++++--------- data/banim-ekrskill.s | 32 +- graphics/efxdragon/DemonLightBg_Close_1.png | Bin 0 -> 1887 bytes graphics/efxdragon/DemonLightBg_Close_10.png | Bin 0 -> 1793 bytes graphics/efxdragon/DemonLightBg_Close_11.png | Bin 0 -> 1819 bytes graphics/efxdragon/DemonLightBg_Close_12.png | Bin 0 -> 1807 bytes graphics/efxdragon/DemonLightBg_Close_13.png | Bin 0 -> 1898 bytes graphics/efxdragon/DemonLightBg_Close_14.png | Bin 0 -> 1949 bytes graphics/efxdragon/DemonLightBg_Close_15.png | Bin 0 -> 1891 bytes graphics/efxdragon/DemonLightBg_Close_16.png | Bin 0 -> 1884 bytes graphics/efxdragon/DemonLightBg_Close_17.png | Bin 0 -> 1879 bytes graphics/efxdragon/DemonLightBg_Close_18.png | Bin 0 -> 1914 bytes graphics/efxdragon/DemonLightBg_Close_19.png | Bin 0 -> 2091 bytes graphics/efxdragon/DemonLightBg_Close_2.png | Bin 0 -> 1906 bytes graphics/efxdragon/DemonLightBg_Close_20.png | Bin 0 -> 2488 bytes graphics/efxdragon/DemonLightBg_Close_21.png | Bin 0 -> 2600 bytes graphics/efxdragon/DemonLightBg_Close_22.png | Bin 0 -> 2792 bytes graphics/efxdragon/DemonLightBg_Close_23.png | Bin 0 -> 2923 bytes graphics/efxdragon/DemonLightBg_Close_24.png | Bin 0 -> 3145 bytes graphics/efxdragon/DemonLightBg_Close_25.png | Bin 0 -> 3358 bytes graphics/efxdragon/DemonLightBg_Close_26.png | Bin 0 -> 3291 bytes graphics/efxdragon/DemonLightBg_Close_27.png | Bin 0 -> 3064 bytes graphics/efxdragon/DemonLightBg_Close_28.png | Bin 0 -> 2586 bytes graphics/efxdragon/DemonLightBg_Close_29.png | Bin 0 -> 1926 bytes graphics/efxdragon/DemonLightBg_Close_3.png | Bin 0 -> 1893 bytes graphics/efxdragon/DemonLightBg_Close_30.png | Bin 0 -> 2103 bytes graphics/efxdragon/DemonLightBg_Close_31.png | Bin 0 -> 2280 bytes graphics/efxdragon/DemonLightBg_Close_32.png | Bin 0 -> 1706 bytes graphics/efxdragon/DemonLightBg_Close_4.png | Bin 0 -> 1802 bytes graphics/efxdragon/DemonLightBg_Close_5.png | Bin 0 -> 1784 bytes graphics/efxdragon/DemonLightBg_Close_6.png | Bin 0 -> 1801 bytes graphics/efxdragon/DemonLightBg_Close_7.png | Bin 0 -> 1790 bytes graphics/efxdragon/DemonLightBg_Close_8.png | Bin 0 -> 1816 bytes graphics/efxdragon/DemonLightBg_Close_9.png | Bin 0 -> 1812 bytes graphics/efxdragon/DemonLightBg_Far_1.png | Bin 0 -> 1896 bytes graphics/efxdragon/DemonLightBg_Far_10.png | Bin 0 -> 1786 bytes graphics/efxdragon/DemonLightBg_Far_11.png | Bin 0 -> 1811 bytes graphics/efxdragon/DemonLightBg_Far_12.png | Bin 0 -> 1804 bytes graphics/efxdragon/DemonLightBg_Far_13.png | Bin 0 -> 1913 bytes graphics/efxdragon/DemonLightBg_Far_14.png | Bin 0 -> 1954 bytes graphics/efxdragon/DemonLightBg_Far_15.png | Bin 0 -> 1876 bytes graphics/efxdragon/DemonLightBg_Far_16.png | Bin 0 -> 1872 bytes graphics/efxdragon/DemonLightBg_Far_17.png | Bin 0 -> 1863 bytes graphics/efxdragon/DemonLightBg_Far_18.png | Bin 0 -> 1919 bytes graphics/efxdragon/DemonLightBg_Far_19.png | Bin 0 -> 2109 bytes graphics/efxdragon/DemonLightBg_Far_2.png | Bin 0 -> 1907 bytes graphics/efxdragon/DemonLightBg_Far_20.png | Bin 0 -> 2431 bytes graphics/efxdragon/DemonLightBg_Far_21.png | Bin 0 -> 2554 bytes graphics/efxdragon/DemonLightBg_Far_22.png | Bin 0 -> 2780 bytes graphics/efxdragon/DemonLightBg_Far_23.png | Bin 0 -> 2929 bytes graphics/efxdragon/DemonLightBg_Far_24.png | Bin 0 -> 3149 bytes graphics/efxdragon/DemonLightBg_Far_25.png | Bin 0 -> 3357 bytes graphics/efxdragon/DemonLightBg_Far_26.png | Bin 0 -> 3312 bytes graphics/efxdragon/DemonLightBg_Far_27.png | Bin 0 -> 3044 bytes graphics/efxdragon/DemonLightBg_Far_28.png | Bin 0 -> 2565 bytes graphics/efxdragon/DemonLightBg_Far_29.png | Bin 0 -> 1888 bytes graphics/efxdragon/DemonLightBg_Far_3.png | Bin 0 -> 1890 bytes graphics/efxdragon/DemonLightBg_Far_30.png | Bin 0 -> 2057 bytes graphics/efxdragon/DemonLightBg_Far_31.png | Bin 0 -> 2238 bytes graphics/efxdragon/DemonLightBg_Far_32.png | Bin 0 -> 1698 bytes graphics/efxdragon/DemonLightBg_Far_4.png | Bin 0 -> 1806 bytes graphics/efxdragon/DemonLightBg_Far_5.png | Bin 0 -> 1791 bytes graphics/efxdragon/DemonLightBg_Far_6.png | Bin 0 -> 1795 bytes graphics/efxdragon/DemonLightBg_Far_7.png | Bin 0 -> 1789 bytes graphics/efxdragon/DemonLightBg_Far_8.png | Bin 0 -> 1818 bytes graphics/efxdragon/DemonLightBg_Far_9.png | Bin 0 -> 1798 bytes include/ekrdragon.h | 384 +++--- scripts/dump_img.py | 18 +- scripts/dump_img_efxskill.py | 20 - scripts/dump_imgs.py | 28 + scripts/generate_declarations.py | 40 + src/banim-efxmagic-demonlight.c | 384 +++--- tools/gfxtools/tsa_generator.py | 34 +- 75 files changed, 1091 insertions(+), 1012 deletions(-) create mode 100644 graphics/efxdragon/DemonLightBg_Close_1.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_10.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_11.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_12.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_13.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_14.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_15.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_16.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_17.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_18.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_19.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_2.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_20.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_21.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_22.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_23.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_24.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_25.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_26.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_27.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_28.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_29.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_3.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_30.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_31.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_32.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_4.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_5.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_6.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_7.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_8.png create mode 100644 graphics/efxdragon/DemonLightBg_Close_9.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_1.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_10.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_11.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_12.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_13.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_14.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_15.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_16.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_17.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_18.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_19.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_2.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_20.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_21.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_22.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_23.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_24.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_25.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_26.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_27.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_28.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_29.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_3.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_30.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_31.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_32.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_4.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_5.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_6.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_7.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_8.png create mode 100644 graphics/efxdragon/DemonLightBg_Far_9.png delete mode 100755 scripts/dump_img_efxskill.py create mode 100755 scripts/dump_imgs.py create mode 100644 scripts/generate_declarations.py diff --git a/.gitignore b/.gitignore index 1c78e2ab..c9588cc8 100644 --- a/.gitignore +++ b/.gitignore @@ -74,7 +74,10 @@ tools/agbcc *.fk data/banim/*.bin -*.feimg.bin +*.feimg1.bin +*.feimg2.bin +*.feimg3.bin + *.fetsa1.bin *.fetsa2.bin *.fetsa3.bin diff --git a/Makefile b/Makefile index d1919eaa..3e805dc7 100644 --- a/Makefile +++ b/Makefile @@ -111,7 +111,7 @@ clean: # Remove converted songs $(RM) -f $(MID_SUBDIR)/*.s $(RM) -f $(AUTO_GEN_TARGETS) - @find . \( -iname '*.o' -o -iname '*.obj' -o -iname '*.feimg.bin' -o -iname '*.fetsa1.bin' -o -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.fk' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + + @find . \( -iname '*.o' -o -iname '*.obj' -o -iname '*.feimg1.bin' -o -iname '*.fetsa1.bin' -o -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.fk' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + .PHONY: clean @@ -153,8 +153,8 @@ sound/%.bin: sound/%.aif ; $(AIF2PCM) $< $@ %.4bpp.h: %.4bpp $(BIN2C) $< $(subst .,_,$(notdir $<)) | sed 's/^const //' > $@ -%.feimg.bin %.fetsa1.bin: %.png - $(FETSATOOL) $< $*.feimg.bin $*.fetsa1.bin +%.feimg1.bin %.fetsa1.bin: %.png + $(FETSATOOL) $< $*.feimg1.bin $*.fetsa1.bin # Battle Animation Recipes diff --git a/data/banim-ekrdragonfx.s b/data/banim-ekrdragonfx.s index eb752acb..47e0a0ed 100644 --- a/data/banim-ekrdragonfx.s +++ b/data/banim-ekrdragonfx.s @@ -1359,389 +1359,389 @@ gUnknown_087A73E0: @ 0x7A73E0 ANIMSCR_FORCE_SPRITE AnimSprite_EfxMaohFlashEyeFire2Obj1_12, 2 ANIMSCR_DISABLED - .global Img_087A73F4 -Img_087A73F4: @ 0x087A73F4 - .incbin "baserom.gba", 0x7A73F4, 0xB44 @ 0x7A7F38 - 0x7A73F4 + .global Img_DemonLightBg_Close_1 +Img_DemonLightBg_Close_1: + .incbin "graphics/efxdragon/DemonLightBg_Close_1.feimg1.bin.lz" - .global Img_087A7F38 -Img_087A7F38: @ 0x087A7F38 - .incbin "baserom.gba", 0x7A7F38, 0xB3C @ 0x7A8A74 - 0x7A7F38 + .global Img_DemonLightBg_Close_2 +Img_DemonLightBg_Close_2: + .incbin "graphics/efxdragon/DemonLightBg_Close_2.feimg1.bin.lz" - .global Img_087A8A74 -Img_087A8A74: @ 0x087A8A74 - .incbin "baserom.gba", 0x7A8A74, 0xB24 @ 0x7A9598 - 0x7A8A74 + .global Img_DemonLightBg_Close_3 +Img_DemonLightBg_Close_3: + .incbin "graphics/efxdragon/DemonLightBg_Close_3.feimg1.bin.lz" - .global Img_087A9598 -Img_087A9598: @ 0x087A9598 - .incbin "baserom.gba", 0x7A9598, 0xA94 @ 0x7AA02C - 0x7A9598 + .global Img_DemonLightBg_Close_4 +Img_DemonLightBg_Close_4: + .incbin "graphics/efxdragon/DemonLightBg_Close_4.feimg1.bin.lz" - .global Img_087AA02C -Img_087AA02C: @ 0x087AA02C - .incbin "baserom.gba", 0x7AA02C, 0xA7C @ 0x7AAAA8 - 0x7AA02C + .global Img_DemonLightBg_Close_5 +Img_DemonLightBg_Close_5: + .incbin "graphics/efxdragon/DemonLightBg_Close_5.feimg1.bin.lz" - .global Img_087AAAA8 -Img_087AAAA8: @ 0x087AAAA8 - .incbin "baserom.gba", 0x7AAAA8, 0xAB0 @ 0x7AB558 - 0x7AAAA8 + .global Img_DemonLightBg_Close_6 +Img_DemonLightBg_Close_6: + .incbin "graphics/efxdragon/DemonLightBg_Close_6.feimg1.bin.lz" - .global Img_087AB558 -Img_087AB558: @ 0x087AB558 - .incbin "baserom.gba", 0x7AB558, 0xA98 @ 0x7ABFF0 - 0x7AB558 + .global Img_DemonLightBg_Close_7 +Img_DemonLightBg_Close_7: + .incbin "graphics/efxdragon/DemonLightBg_Close_7.feimg1.bin.lz" - .global Img_087ABFF0 -Img_087ABFF0: @ 0x087ABFF0 - .incbin "baserom.gba", 0x7ABFF0, 0xAD8 @ 0x7ACAC8 - 0x7ABFF0 + .global Img_DemonLightBg_Close_8 +Img_DemonLightBg_Close_8: + .incbin "graphics/efxdragon/DemonLightBg_Close_8.feimg1.bin.lz" - .global Img_087ACAC8 -Img_087ACAC8: @ 0x087ACAC8 - .incbin "baserom.gba", 0x7ACAC8, 0xA84 @ 0x7AD54C - 0x7ACAC8 + .global Img_DemonLightBg_Close_9 +Img_DemonLightBg_Close_9: + .incbin "graphics/efxdragon/DemonLightBg_Close_9.feimg1.bin.lz" - .global Img_087AD54C -Img_087AD54C: @ 0x087AD54C - .incbin "baserom.gba", 0x7AD54C, 0xAA0 @ 0x7ADFEC - 0x7AD54C + .global Img_DemonLightBg_Close_10 +Img_DemonLightBg_Close_10: + .incbin "graphics/efxdragon/DemonLightBg_Close_10.feimg1.bin.lz" - .global Img_087ADFEC -Img_087ADFEC: @ 0x087ADFEC - .incbin "baserom.gba", 0x7ADFEC, 0xA88 @ 0x7AEA74 - 0x7ADFEC + .global Img_DemonLightBg_Close_11 +Img_DemonLightBg_Close_11: + .incbin "graphics/efxdragon/DemonLightBg_Close_11.feimg1.bin.lz" - .global Img_087AEA74 -Img_087AEA74: @ 0x087AEA74 - .incbin "baserom.gba", 0x7AEA74, 0xAA4 @ 0x7AF518 - 0x7AEA74 + .global Img_DemonLightBg_Close_12 +Img_DemonLightBg_Close_12: + .incbin "graphics/efxdragon/DemonLightBg_Close_12.feimg1.bin.lz" - .global Img_087AF518 -Img_087AF518: @ 0x087AF518 - .incbin "baserom.gba", 0x7AF518, 0xB58 @ 0x7B0070 - 0x7AF518 + .global Img_DemonLightBg_Close_13 +Img_DemonLightBg_Close_13: + .incbin "graphics/efxdragon/DemonLightBg_Close_13.feimg1.bin.lz" - .global Img_087B0070 -Img_087B0070: @ 0x087B0070 - .incbin "baserom.gba", 0x7B0070, 0xB90 @ 0x7B0C00 - 0x7B0070 + .global Img_DemonLightBg_Close_14 +Img_DemonLightBg_Close_14: + .incbin "graphics/efxdragon/DemonLightBg_Close_14.feimg1.bin.lz" - .global Img_087B0C00 -Img_087B0C00: @ 0x087B0C00 - .incbin "baserom.gba", 0x7B0C00, 0xB28 @ 0x7B1728 - 0x7B0C00 + .global Img_DemonLightBg_Close_15 +Img_DemonLightBg_Close_15: + .incbin "graphics/efxdragon/DemonLightBg_Close_15.feimg1.bin.lz" - .global Img_087B1728 -Img_087B1728: @ 0x087B1728 - .incbin "baserom.gba", 0x7B1728, 0xB08 @ 0x7B2230 - 0x7B1728 + .global Img_DemonLightBg_Close_16 +Img_DemonLightBg_Close_16: + .incbin "graphics/efxdragon/DemonLightBg_Close_16.feimg1.bin.lz" - .global Pal_087B2230 -Pal_087B2230: @ 0x087B2230 - .incbin "baserom.gba", 0x7B2230, 0x20 @ 0x7B2250 - 0x7B2230 + .global Pal_DemonLightBg_Close_1 +Pal_DemonLightBg_Close_1: + .incbin "graphics/efxdragon/DemonLightBg_Close_1.gbapal" - .global Pal_087B2250 -Pal_087B2250: @ 0x087B2250 - .incbin "baserom.gba", 0x7B2250, 0x20 @ 0x7B2270 - 0x7B2250 + .global Pal_DemonLightBg_Close_2 +Pal_DemonLightBg_Close_2: + .incbin "graphics/efxdragon/DemonLightBg_Close_2.gbapal" - .global Pal_087B2270 -Pal_087B2270: @ 0x087B2270 - .incbin "baserom.gba", 0x7B2270, 0x20 @ 0x7B2290 - 0x7B2270 + .global Pal_DemonLightBg_Close_3 +Pal_DemonLightBg_Close_3: + .incbin "graphics/efxdragon/DemonLightBg_Close_3.gbapal" - .global Pal_087B2290 -Pal_087B2290: @ 0x087B2290 - .incbin "baserom.gba", 0x7B2290, 0x20 @ 0x7B22B0 - 0x7B2290 + .global Pal_DemonLightBg_Close_4 +Pal_DemonLightBg_Close_4: + .incbin "graphics/efxdragon/DemonLightBg_Close_4.gbapal" - .global Pal_087B22B0 -Pal_087B22B0: @ 0x087B22B0 - .incbin "baserom.gba", 0x7B22B0, 0x20 @ 0x7B22D0 - 0x7B22B0 + .global Pal_DemonLightBg_Close_5 +Pal_DemonLightBg_Close_5: + .incbin "graphics/efxdragon/DemonLightBg_Close_5.gbapal" - .global Pal_087B22D0 -Pal_087B22D0: @ 0x087B22D0 - .incbin "baserom.gba", 0x7B22D0, 0x20 @ 0x7B22F0 - 0x7B22D0 + .global Pal_DemonLightBg_Close_6 +Pal_DemonLightBg_Close_6: + .incbin "graphics/efxdragon/DemonLightBg_Close_6.gbapal" - .global Pal_087B22F0 -Pal_087B22F0: @ 0x087B22F0 - .incbin "baserom.gba", 0x7B22F0, 0x20 @ 0x7B2310 - 0x7B22F0 + .global Pal_DemonLightBg_Close_7 +Pal_DemonLightBg_Close_7: + .incbin "graphics/efxdragon/DemonLightBg_Close_7.gbapal" - .global Pal_087B2310 -Pal_087B2310: @ 0x087B2310 - .incbin "baserom.gba", 0x7B2310, 0x20 @ 0x7B2330 - 0x7B2310 + .global Pal_DemonLightBg_Close_8 +Pal_DemonLightBg_Close_8: + .incbin "graphics/efxdragon/DemonLightBg_Close_8.gbapal" - .global Pal_087B2330 -Pal_087B2330: @ 0x087B2330 - .incbin "baserom.gba", 0x7B2330, 0x20 @ 0x7B2350 - 0x7B2330 + .global Pal_DemonLightBg_Close_9 +Pal_DemonLightBg_Close_9: + .incbin "graphics/efxdragon/DemonLightBg_Close_9.gbapal" - .global Pal_087B2350 -Pal_087B2350: @ 0x087B2350 - .incbin "baserom.gba", 0x7B2350, 0x20 @ 0x7B2370 - 0x7B2350 + .global Pal_DemonLightBg_Close_10 +Pal_DemonLightBg_Close_10: + .incbin "graphics/efxdragon/DemonLightBg_Close_10.gbapal" - .global Pal_087B2370 -Pal_087B2370: @ 0x087B2370 - .incbin "baserom.gba", 0x7B2370, 0x20 @ 0x7B2390 - 0x7B2370 + .global Pal_DemonLightBg_Close_11 +Pal_DemonLightBg_Close_11: + .incbin "graphics/efxdragon/DemonLightBg_Close_11.gbapal" - .global Pal_087B2390 -Pal_087B2390: @ 0x087B2390 - .incbin "baserom.gba", 0x7B2390, 0x20 @ 0x7B23B0 - 0x7B2390 + .global Pal_DemonLightBg_Close_12 +Pal_DemonLightBg_Close_12: + .incbin "graphics/efxdragon/DemonLightBg_Close_12.gbapal" - .global Pal_087B23B0 -Pal_087B23B0: @ 0x087B23B0 - .incbin "baserom.gba", 0x7B23B0, 0x20 @ 0x7B23D0 - 0x7B23B0 + .global Pal_DemonLightBg_Close_13 +Pal_DemonLightBg_Close_13: + .incbin "graphics/efxdragon/DemonLightBg_Close_13.gbapal" - .global Pal_087B23D0 -Pal_087B23D0: @ 0x087B23D0 - .incbin "baserom.gba", 0x7B23D0, 0x20 @ 0x7B23F0 - 0x7B23D0 + .global Pal_DemonLightBg_Close_14 +Pal_DemonLightBg_Close_14: + .incbin "graphics/efxdragon/DemonLightBg_Close_14.gbapal" - .global Pal_087B23F0 -Pal_087B23F0: @ 0x087B23F0 - .incbin "baserom.gba", 0x7B23F0, 0x20 @ 0x7B2410 - 0x7B23F0 + .global Pal_DemonLightBg_Close_15 +Pal_DemonLightBg_Close_15: + .incbin "graphics/efxdragon/DemonLightBg_Close_15.gbapal" - .global Pal_087B2410 -Pal_087B2410: @ 0x087B2410 - .incbin "baserom.gba", 0x7B2410, 0x20 @ 0x7B2430 - 0x7B2410 + .global Pal_DemonLightBg_Close_16 +Pal_DemonLightBg_Close_16: + .incbin "graphics/efxdragon/DemonLightBg_Close_16.gbapal" - .global Tsa_087B2430 -Tsa_087B2430: @ 0x087B2430 - .incbin "baserom.gba", 0x7B2430, 0x274 @ 0x7B26A4 - 0x7B2430 + .global Tsa_DemonLightBg_Close_1 +Tsa_DemonLightBg_Close_1: + .incbin "graphics/efxdragon/DemonLightBg_Close_1.fetsa1.bin.lz" - .global Tsa_087B26A4 -Tsa_087B26A4: @ 0x087B26A4 - .incbin "baserom.gba", 0x7B26A4, 0x278 @ 0x7B291C - 0x7B26A4 + .global Tsa_DemonLightBg_Close_2 +Tsa_DemonLightBg_Close_2: + .incbin "graphics/efxdragon/DemonLightBg_Close_2.fetsa1.bin.lz" - .global Tsa_087B291C -Tsa_087B291C: @ 0x087B291C - .incbin "baserom.gba", 0x7B291C, 0x274 @ 0x7B2B90 - 0x7B291C + .global Tsa_DemonLightBg_Close_3 +Tsa_DemonLightBg_Close_3: + .incbin "graphics/efxdragon/DemonLightBg_Close_3.fetsa1.bin.lz" - .global Tsa_087B2B90 -Tsa_087B2B90: @ 0x087B2B90 - .incbin "baserom.gba", 0x7B2B90, 0x274 @ 0x7B2E04 - 0x7B2B90 + .global Tsa_DemonLightBg_Close_4 +Tsa_DemonLightBg_Close_4: + .incbin "graphics/efxdragon/DemonLightBg_Close_4.fetsa1.bin.lz" - .global Tsa_087B2E04 -Tsa_087B2E04: @ 0x087B2E04 - .incbin "baserom.gba", 0x7B2E04, 0x278 @ 0x7B307C - 0x7B2E04 + .global Tsa_DemonLightBg_Close_5 +Tsa_DemonLightBg_Close_5: + .incbin "graphics/efxdragon/DemonLightBg_Close_5.fetsa1.bin.lz" - .global Tsa_087B307C -Tsa_087B307C: @ 0x087B307C - .incbin "baserom.gba", 0x7B307C, 0x274 @ 0x7B32F0 - 0x7B307C + .global Tsa_DemonLightBg_Close_6 +Tsa_DemonLightBg_Close_6: + .incbin "graphics/efxdragon/DemonLightBg_Close_6.fetsa1.bin.lz" - .global Tsa_087B32F0 -Tsa_087B32F0: @ 0x087B32F0 - .incbin "baserom.gba", 0x7B32F0, 0x278 @ 0x7B3568 - 0x7B32F0 + .global Tsa_DemonLightBg_Close_7 +Tsa_DemonLightBg_Close_7: + .incbin "graphics/efxdragon/DemonLightBg_Close_7.fetsa1.bin.lz" - .global Tsa_087B3568 -Tsa_087B3568: @ 0x087B3568 - .incbin "baserom.gba", 0x7B3568, 0x274 @ 0x7B37DC - 0x7B3568 + .global Tsa_DemonLightBg_Close_8 +Tsa_DemonLightBg_Close_8: + .incbin "graphics/efxdragon/DemonLightBg_Close_8.fetsa1.bin.lz" - .global Tsa_087B37DC -Tsa_087B37DC: @ 0x087B37DC - .incbin "baserom.gba", 0x7B37DC, 0x278 @ 0x7B3A54 - 0x7B37DC + .global Tsa_DemonLightBg_Close_9 +Tsa_DemonLightBg_Close_9: + .incbin "graphics/efxdragon/DemonLightBg_Close_9.fetsa1.bin.lz" - .global Tsa_087B3A54 -Tsa_087B3A54: @ 0x087B3A54 - .incbin "baserom.gba", 0x7B3A54, 0x274 @ 0x7B3CC8 - 0x7B3A54 + .global Tsa_DemonLightBg_Close_10 +Tsa_DemonLightBg_Close_10: + .incbin "graphics/efxdragon/DemonLightBg_Close_10.fetsa1.bin.lz" - .global Tsa_087B3CC8 -Tsa_087B3CC8: @ 0x087B3CC8 - .incbin "baserom.gba", 0x7B3CC8, 0x278 @ 0x7B3F40 - 0x7B3CC8 + .global Tsa_DemonLightBg_Close_11 +Tsa_DemonLightBg_Close_11: + .incbin "graphics/efxdragon/DemonLightBg_Close_11.fetsa1.bin.lz" - .global Tsa_087B3F40 -Tsa_087B3F40: @ 0x087B3F40 - .incbin "baserom.gba", 0x7B3F40, 0x274 @ 0x7B41B4 - 0x7B3F40 + .global Tsa_DemonLightBg_Close_12 +Tsa_DemonLightBg_Close_12: + .incbin "graphics/efxdragon/DemonLightBg_Close_12.fetsa1.bin.lz" - .global Tsa_087B41B4 -Tsa_087B41B4: @ 0x087B41B4 - .incbin "baserom.gba", 0x7B41B4, 0x274 @ 0x7B4428 - 0x7B41B4 + .global Tsa_DemonLightBg_Close_13 +Tsa_DemonLightBg_Close_13: + .incbin "graphics/efxdragon/DemonLightBg_Close_13.fetsa1.bin.lz" - .global Tsa_087B4428 -Tsa_087B4428: @ 0x087B4428 - .incbin "baserom.gba", 0x7B4428, 0x278 @ 0x7B46A0 - 0x7B4428 + .global Tsa_DemonLightBg_Close_14 +Tsa_DemonLightBg_Close_14: + .incbin "graphics/efxdragon/DemonLightBg_Close_14.fetsa1.bin.lz" - .global Tsa_087B46A0 -Tsa_087B46A0: @ 0x087B46A0 - .incbin "baserom.gba", 0x7B46A0, 0x274 @ 0x7B4914 - 0x7B46A0 + .global Tsa_DemonLightBg_Close_15 +Tsa_DemonLightBg_Close_15: + .incbin "graphics/efxdragon/DemonLightBg_Close_15.fetsa1.bin.lz" - .global Tsa_087B4914 -Tsa_087B4914: @ 0x087B4914 - .incbin "baserom.gba", 0x7B4914, 0x274 @ 0x7B4B88 - 0x7B4914 + .global Tsa_DemonLightBg_Close_16 +Tsa_DemonLightBg_Close_16: + .incbin "graphics/efxdragon/DemonLightBg_Close_16.fetsa1.bin.lz" - .global Img_087B4B88 -Img_087B4B88: @ 0x087B4B88 - .incbin "baserom.gba", 0x7B4B88, 0xAF0 @ 0x7B5678 - 0x7B4B88 + .global Img_DemonLightBg_Close_17 +Img_DemonLightBg_Close_17: + .incbin "graphics/efxdragon/DemonLightBg_Close_17.feimg1.bin.lz" - .global Img_087B5678 -Img_087B5678: @ 0x087B5678 - .incbin "baserom.gba", 0x7B5678, 0xB20 @ 0x7B6198 - 0x7B5678 + .global Img_DemonLightBg_Close_18 +Img_DemonLightBg_Close_18: + .incbin "graphics/efxdragon/DemonLightBg_Close_18.feimg1.bin.lz" - .global Img_087B6198 -Img_087B6198: @ 0x087B6198 - .incbin "baserom.gba", 0x7B6198, 0xBBC @ 0x7B6D54 - 0x7B6198 + .global Img_DemonLightBg_Close_19 +Img_DemonLightBg_Close_19: + .incbin "graphics/efxdragon/DemonLightBg_Close_19.feimg1.bin.lz" - .global Img_087B6D54 -Img_087B6D54: @ 0x087B6D54 - .incbin "baserom.gba", 0x7B6D54, 0xD98 @ 0x7B7AEC - 0x7B6D54 + .global Img_DemonLightBg_Close_20 +Img_DemonLightBg_Close_20: + .incbin "graphics/efxdragon/DemonLightBg_Close_20.feimg1.bin.lz" - .global Img_087B7AEC -Img_087B7AEC: @ 0x087B7AEC - .incbin "baserom.gba", 0x7B7AEC, 0xE7C @ 0x7B8968 - 0x7B7AEC + .global Img_DemonLightBg_Close_21 +Img_DemonLightBg_Close_21: + .incbin "graphics/efxdragon/DemonLightBg_Close_21.feimg1.bin.lz" - .global Img_087B8968 -Img_087B8968: @ 0x087B8968 - .incbin "baserom.gba", 0x7B8968, 0xF94 @ 0x7B98FC - 0x7B8968 + .global Img_DemonLightBg_Close_22 +Img_DemonLightBg_Close_22: + .incbin "graphics/efxdragon/DemonLightBg_Close_22.feimg1.bin.lz" - .global Img_087B98FC -Img_087B98FC: @ 0x087B98FC - .incbin "baserom.gba", 0x7B98FC, 0x1014 @ 0x7BA910 - 0x7B98FC + .global Img_DemonLightBg_Close_23 +Img_DemonLightBg_Close_23: + .incbin "graphics/efxdragon/DemonLightBg_Close_23.feimg1.bin.lz" - .global Img_087BA910 -Img_087BA910: @ 0x087BA910 - .incbin "baserom.gba", 0x7BA910, 0x1194 @ 0x7BBAA4 - 0x7BA910 + .global Img_DemonLightBg_Close_24 +Img_DemonLightBg_Close_24: + .incbin "graphics/efxdragon/DemonLightBg_Close_24.feimg1.bin.lz" - .global Img_087BBAA4 -Img_087BBAA4: @ 0x087BBAA4 - .incbin "baserom.gba", 0x7BBAA4, 0x1234 @ 0x7BCCD8 - 0x7BBAA4 + .global Img_DemonLightBg_Close_25 +Img_DemonLightBg_Close_25: + .incbin "graphics/efxdragon/DemonLightBg_Close_25.feimg1.bin.lz" - .global Img_087BCCD8 -Img_087BCCD8: @ 0x087BCCD8 - .incbin "baserom.gba", 0x7BCCD8, 0x1234 @ 0x7BDF0C - 0x7BCCD8 + .global Img_DemonLightBg_Close_26 +Img_DemonLightBg_Close_26: + .incbin "graphics/efxdragon/DemonLightBg_Close_26.feimg1.bin.lz" - .global Img_087BDF0C -Img_087BDF0C: @ 0x087BDF0C - .incbin "baserom.gba", 0x7BDF0C, 0x1150 @ 0x7BF05C - 0x7BDF0C + .global Img_DemonLightBg_Close_27 +Img_DemonLightBg_Close_27: + .incbin "graphics/efxdragon/DemonLightBg_Close_27.feimg1.bin.lz" - .global Img_087BF05C -Img_087BF05C: @ 0x087BF05C - .incbin "baserom.gba", 0x7BF05C, 0xE98 @ 0x7BFEF4 - 0x7BF05C + .global Img_DemonLightBg_Close_28 +Img_DemonLightBg_Close_28: + .incbin "graphics/efxdragon/DemonLightBg_Close_28.feimg1.bin.lz" - .global Img_087BFEF4 -Img_087BFEF4: @ 0x087BFEF4 - .incbin "baserom.gba", 0x7BFEF4, 0xB24 @ 0x7C0A18 - 0x7BFEF4 + .global Img_DemonLightBg_Close_29 +Img_DemonLightBg_Close_29: + .incbin "graphics/efxdragon/DemonLightBg_Close_29.feimg1.bin.lz" - .global Img_087C0A18 -Img_087C0A18: @ 0x087C0A18 - .incbin "baserom.gba", 0x7C0A18, 0xBCC @ 0x7C15E4 - 0x7C0A18 + .global Img_DemonLightBg_Close_30 +Img_DemonLightBg_Close_30: + .incbin "graphics/efxdragon/DemonLightBg_Close_30.feimg1.bin.lz" - .global Img_087C15E4 -Img_087C15E4: @ 0x087C15E4 - .incbin "baserom.gba", 0x7C15E4, 0xD24 @ 0x7C2308 - 0x7C15E4 + .global Img_DemonLightBg_Close_31 +Img_DemonLightBg_Close_31: + .incbin "graphics/efxdragon/DemonLightBg_Close_31.feimg1.bin.lz" - .global Img_087C2308 -Img_087C2308: @ 0x087C2308 - .incbin "baserom.gba", 0x7C2308, 0xA2C @ 0x7C2D34 - 0x7C2308 + .global Img_DemonLightBg_Close_32 +Img_DemonLightBg_Close_32: + .incbin "graphics/efxdragon/DemonLightBg_Close_32.feimg1.bin.lz" - .global Pal_087C2D34 -Pal_087C2D34: @ 0x087C2D34 - .incbin "baserom.gba", 0x7C2D34, 0x20 @ 0x7C2D54 - 0x7C2D34 + .global Pal_DemonLightBg_Close_17 +Pal_DemonLightBg_Close_17: + .incbin "graphics/efxdragon/DemonLightBg_Close_17.gbapal" - .global Pal_087C2D54 -Pal_087C2D54: @ 0x087C2D54 - .incbin "baserom.gba", 0x7C2D54, 0x20 @ 0x7C2D74 - 0x7C2D54 + .global Pal_DemonLightBg_Close_18 +Pal_DemonLightBg_Close_18: + .incbin "graphics/efxdragon/DemonLightBg_Close_18.gbapal" - .global Pal_087C2D74 -Pal_087C2D74: @ 0x087C2D74 - .incbin "baserom.gba", 0x7C2D74, 0x20 @ 0x7C2D94 - 0x7C2D74 + .global Pal_DemonLightBg_Close_19 +Pal_DemonLightBg_Close_19: + .incbin "graphics/efxdragon/DemonLightBg_Close_19.gbapal" - .global Pal_087C2D94 -Pal_087C2D94: @ 0x087C2D94 - .incbin "baserom.gba", 0x7C2D94, 0x20 @ 0x7C2DB4 - 0x7C2D94 + .global Pal_DemonLightBg_Close_20 +Pal_DemonLightBg_Close_20: + .incbin "graphics/efxdragon/DemonLightBg_Close_20.gbapal" - .global Pal_087C2DB4 -Pal_087C2DB4: @ 0x087C2DB4 - .incbin "baserom.gba", 0x7C2DB4, 0x20 @ 0x7C2DD4 - 0x7C2DB4 + .global Pal_DemonLightBg_Close_21 +Pal_DemonLightBg_Close_21: + .incbin "graphics/efxdragon/DemonLightBg_Close_21.gbapal" - .global Pal_087C2DD4 -Pal_087C2DD4: @ 0x087C2DD4 - .incbin "baserom.gba", 0x7C2DD4, 0x20 @ 0x7C2DF4 - 0x7C2DD4 + .global Pal_DemonLightBg_Close_22 +Pal_DemonLightBg_Close_22: + .incbin "graphics/efxdragon/DemonLightBg_Close_22.gbapal" - .global Pal_087C2DF4 -Pal_087C2DF4: @ 0x087C2DF4 - .incbin "baserom.gba", 0x7C2DF4, 0x20 @ 0x7C2E14 - 0x7C2DF4 + .global Pal_DemonLightBg_Close_23 +Pal_DemonLightBg_Close_23: + .incbin "graphics/efxdragon/DemonLightBg_Close_23.gbapal" - .global Pal_087C2E14 -Pal_087C2E14: @ 0x087C2E14 - .incbin "baserom.gba", 0x7C2E14, 0x20 @ 0x7C2E34 - 0x7C2E14 + .global Pal_DemonLightBg_Close_24 +Pal_DemonLightBg_Close_24: + .incbin "graphics/efxdragon/DemonLightBg_Close_24.gbapal" - .global Pal_087C2E34 -Pal_087C2E34: @ 0x087C2E34 - .incbin "baserom.gba", 0x7C2E34, 0x20 @ 0x7C2E54 - 0x7C2E34 + .global Pal_DemonLightBg_Close_25 +Pal_DemonLightBg_Close_25: + .incbin "graphics/efxdragon/DemonLightBg_Close_25.gbapal" - .global Pal_087C2E54 -Pal_087C2E54: @ 0x087C2E54 - .incbin "baserom.gba", 0x7C2E54, 0x20 @ 0x7C2E74 - 0x7C2E54 + .global Pal_DemonLightBg_Close_26 +Pal_DemonLightBg_Close_26: + .incbin "graphics/efxdragon/DemonLightBg_Close_26.gbapal" - .global Pal_087C2E74 -Pal_087C2E74: @ 0x087C2E74 - .incbin "baserom.gba", 0x7C2E74, 0x20 @ 0x7C2E94 - 0x7C2E74 + .global Pal_DemonLightBg_Close_27 +Pal_DemonLightBg_Close_27: + .incbin "graphics/efxdragon/DemonLightBg_Close_27.gbapal" - .global Pal_087C2E94 -Pal_087C2E94: @ 0x087C2E94 - .incbin "baserom.gba", 0x7C2E94, 0x20 @ 0x7C2EB4 - 0x7C2E94 + .global Pal_DemonLightBg_Close_28 +Pal_DemonLightBg_Close_28: + .incbin "graphics/efxdragon/DemonLightBg_Close_28.gbapal" - .global Pal_087C2EB4 -Pal_087C2EB4: @ 0x087C2EB4 - .incbin "baserom.gba", 0x7C2EB4, 0x20 @ 0x7C2ED4 - 0x7C2EB4 + .global Pal_DemonLightBg_Close_29 +Pal_DemonLightBg_Close_29: + .incbin "graphics/efxdragon/DemonLightBg_Close_29.gbapal" - .global Pal_087C2ED4 -Pal_087C2ED4: @ 0x087C2ED4 - .incbin "baserom.gba", 0x7C2ED4, 0x20 @ 0x7C2EF4 - 0x7C2ED4 + .global Pal_DemonLightBg_Close_30 +Pal_DemonLightBg_Close_30: + .incbin "graphics/efxdragon/DemonLightBg_Close_30.gbapal" - .global Pal_087C2EF4 -Pal_087C2EF4: @ 0x087C2EF4 - .incbin "baserom.gba", 0x7C2EF4, 0x20 @ 0x7C2F14 - 0x7C2EF4 + .global Pal_DemonLightBg_Close_31 +Pal_DemonLightBg_Close_31: + .incbin "graphics/efxdragon/DemonLightBg_Close_31.gbapal" - .global Pal_087C2F14 -Pal_087C2F14: @ 0x087C2F14 - .incbin "baserom.gba", 0x7C2F14, 0x20 @ 0x7C2F34 - 0x7C2F14 + .global Pal_DemonLightBg_Close_32 +Pal_DemonLightBg_Close_32: + .incbin "graphics/efxdragon/DemonLightBg_Close_32.gbapal" - .global Tsa_087C2F34 -Tsa_087C2F34: @ 0x087C2F34 - .incbin "baserom.gba", 0x7C2F34, 0x270 @ 0x7C31A4 - 0x7C2F34 + .global Tsa_DemonLightBg_Close_17 +Tsa_DemonLightBg_Close_17: + .incbin "graphics/efxdragon/DemonLightBg_Close_17.fetsa1.bin.lz" - .global Tsa_087C31A4 -Tsa_087C31A4: @ 0x087C31A4 - .incbin "baserom.gba", 0x7C31A4, 0x278 @ 0x7C341C - 0x7C31A4 + .global Tsa_DemonLightBg_Close_18 +Tsa_DemonLightBg_Close_18: + .incbin "graphics/efxdragon/DemonLightBg_Close_18.fetsa1.bin.lz" - .global Tsa_087C341C -Tsa_087C341C: @ 0x087C341C - .incbin "baserom.gba", 0x7C341C, 0x278 @ 0x7C3694 - 0x7C341C + .global Tsa_DemonLightBg_Close_19 +Tsa_DemonLightBg_Close_19: + .incbin "graphics/efxdragon/DemonLightBg_Close_19.fetsa1.bin.lz" - .global Tsa_087C3694 -Tsa_087C3694: @ 0x087C3694 - .incbin "baserom.gba", 0x7C3694, 0x25C @ 0x7C38F0 - 0x7C3694 + .global Tsa_DemonLightBg_Close_20 +Tsa_DemonLightBg_Close_20: + .incbin "graphics/efxdragon/DemonLightBg_Close_20.fetsa1.bin.lz" - .global Tsa_087C38F0 -Tsa_087C38F0: @ 0x087C38F0 - .incbin "baserom.gba", 0x7C38F0, 0x248 @ 0x7C3B38 - 0x7C38F0 + .global Tsa_DemonLightBg_Close_21 +Tsa_DemonLightBg_Close_21: + .incbin "graphics/efxdragon/DemonLightBg_Close_21.fetsa1.bin.lz" - .global Tsa_087C3B38 -Tsa_087C3B38: @ 0x087C3B38 - .incbin "baserom.gba", 0x7C3B38, 0x23C @ 0x7C3D74 - 0x7C3B38 + .global Tsa_DemonLightBg_Close_22 +Tsa_DemonLightBg_Close_22: + .incbin "graphics/efxdragon/DemonLightBg_Close_22.fetsa1.bin.lz" - .global Tsa_087C3D74 -Tsa_087C3D74: @ 0x087C3D74 - .incbin "baserom.gba", 0x7C3D74, 0x234 @ 0x7C3FA8 - 0x7C3D74 + .global Tsa_DemonLightBg_Close_23 +Tsa_DemonLightBg_Close_23: + .incbin "graphics/efxdragon/DemonLightBg_Close_23.fetsa1.bin.lz" - .global Tsa_087C3FA8 -Tsa_087C3FA8: @ 0x087C3FA8 - .incbin "baserom.gba", 0x7C3FA8, 0x238 @ 0x7C41E0 - 0x7C3FA8 + .global Tsa_DemonLightBg_Close_24 +Tsa_DemonLightBg_Close_24: + .incbin "graphics/efxdragon/DemonLightBg_Close_24.fetsa1.bin.lz" - .global Tsa_087C41E0 -Tsa_087C41E0: @ 0x087C41E0 - .incbin "baserom.gba", 0x7C41E0, 0x240 @ 0x7C4420 - 0x7C41E0 + .global Tsa_DemonLightBg_Close_25 +Tsa_DemonLightBg_Close_25: + .incbin "graphics/efxdragon/DemonLightBg_Close_25.fetsa1.bin.lz" - .global Tsa_087C4420 -Tsa_087C4420: @ 0x087C4420 - .incbin "baserom.gba", 0x7C4420, 0x240 @ 0x7C4660 - 0x7C4420 + .global Tsa_DemonLightBg_Close_26 +Tsa_DemonLightBg_Close_26: + .incbin "graphics/efxdragon/DemonLightBg_Close_26.fetsa1.bin.lz" - .global Tsa_087C4660 -Tsa_087C4660: @ 0x087C4660 - .incbin "baserom.gba", 0x7C4660, 0x24C @ 0x7C48AC - 0x7C4660 + .global Tsa_DemonLightBg_Close_27 +Tsa_DemonLightBg_Close_27: + .incbin "graphics/efxdragon/DemonLightBg_Close_27.fetsa1.bin.lz" - .global Tsa_087C48AC -Tsa_087C48AC: @ 0x087C48AC - .incbin "baserom.gba", 0x7C48AC, 0x244 @ 0x7C4AF0 - 0x7C48AC + .global Tsa_DemonLightBg_Close_28 +Tsa_DemonLightBg_Close_28: + .incbin "graphics/efxdragon/DemonLightBg_Close_28.fetsa1.bin.lz" - .global Tsa_087C4AF0 -Tsa_087C4AF0: @ 0x087C4AF0 - .incbin "baserom.gba", 0x7C4AF0, 0x1B0 @ 0x7C4CA0 - 0x7C4AF0 + .global Tsa_DemonLightBg_Close_29 +Tsa_DemonLightBg_Close_29: + .incbin "graphics/efxdragon/DemonLightBg_Close_29.fetsa1.bin.lz" - .global Tsa_087C4CA0 -Tsa_087C4CA0: @ 0x087C4CA0 - .incbin "baserom.gba", 0x7C4CA0, 0x1C4 @ 0x7C4E64 - 0x7C4CA0 + .global Tsa_DemonLightBg_Close_30 +Tsa_DemonLightBg_Close_30: + .incbin "graphics/efxdragon/DemonLightBg_Close_30.fetsa1.bin.lz" - .global Tsa_087C4E64 -Tsa_087C4E64: @ 0x087C4E64 - .incbin "baserom.gba", 0x7C4E64, 0x1D0 @ 0x7C5034 - 0x7C4E64 + .global Tsa_DemonLightBg_Close_31 +Tsa_DemonLightBg_Close_31: + .incbin "graphics/efxdragon/DemonLightBg_Close_31.fetsa1.bin.lz" - .global Tsa_087C5034 -Tsa_087C5034: @ 0x087C5034 - .incbin "baserom.gba", 0x7C5034, 0x15C @ 0x7C5190 - 0x7C5034 + .global Tsa_DemonLightBg_Close_32 +Tsa_DemonLightBg_Close_32: + .incbin "graphics/efxdragon/DemonLightBg_Close_32.fetsa1.bin.lz" .global Img_087C5190 Img_087C5190: @ 0x087C5190 @@ -1899,389 +1899,389 @@ Tsa_087CC9B8: @ 0x087CC9B8 Tsa_087CCAD8: @ 0x087CCAD8 .incbin "baserom.gba", 0x7CCAD8, 0x120 @ 0x7CCBF8 - 0x7CCAD8 - .global Img_087CCBF8 -Img_087CCBF8: @ 0x087CCBF8 - .incbin "baserom.gba", 0x7CCBF8, 0xB40 @ 0x7CD738 - 0x7CCBF8 + .global Img_DemonLightBg_Far_1 +Img_DemonLightBg_Far_1: + .incbin "graphics/efxdragon/DemonLightBg_Far_1.feimg1.bin.lz" - .global Img_087CD738 -Img_087CD738: @ 0x087CD738 - .incbin "baserom.gba", 0x7CD738, 0xB3C @ 0x7CE274 - 0x7CD738 + .global Img_DemonLightBg_Far_2 +Img_DemonLightBg_Far_2: + .incbin "graphics/efxdragon/DemonLightBg_Far_2.feimg1.bin.lz" - .global Img_087CE274 -Img_087CE274: @ 0x087CE274 - .incbin "baserom.gba", 0x7CE274, 0xB24 @ 0x7CED98 - 0x7CE274 + .global Img_DemonLightBg_Far_3 +Img_DemonLightBg_Far_3: + .incbin "graphics/efxdragon/DemonLightBg_Far_3.feimg1.bin.lz" - .global Img_087CED98 -Img_087CED98: @ 0x087CED98 - .incbin "baserom.gba", 0x7CED98, 0xA8C @ 0x7CF824 - 0x7CED98 + .global Img_DemonLightBg_Far_4 +Img_DemonLightBg_Far_4: + .incbin "graphics/efxdragon/DemonLightBg_Far_4.feimg1.bin.lz" - .global Img_087CF824 -Img_087CF824: @ 0x087CF824 - .incbin "baserom.gba", 0x7CF824, 0xA74 @ 0x7D0298 - 0x7CF824 + .global Img_DemonLightBg_Far_5 +Img_DemonLightBg_Far_5: + .incbin "graphics/efxdragon/DemonLightBg_Far_5.feimg1.bin.lz" - .global Img_087D0298 -Img_087D0298: @ 0x087D0298 - .incbin "baserom.gba", 0x7D0298, 0xAA4 @ 0x7D0D3C - 0x7D0298 + .global Img_DemonLightBg_Far_6 +Img_DemonLightBg_Far_6: + .incbin "graphics/efxdragon/DemonLightBg_Far_6.feimg1.bin.lz" - .global Img_087D0D3C -Img_087D0D3C: @ 0x087D0D3C - .incbin "baserom.gba", 0x7D0D3C, 0xA84 @ 0x7D17C0 - 0x7D0D3C + .global Img_DemonLightBg_Far_7 +Img_DemonLightBg_Far_7: + .incbin "graphics/efxdragon/DemonLightBg_Far_7.feimg1.bin.lz" - .global Img_087D17C0 -Img_087D17C0: @ 0x087D17C0 - .incbin "baserom.gba", 0x7D17C0, 0xAD4 @ 0x7D2294 - 0x7D17C0 + .global Img_DemonLightBg_Far_8 +Img_DemonLightBg_Far_8: + .incbin "graphics/efxdragon/DemonLightBg_Far_8.feimg1.bin.lz" - .global Img_087D2294 -Img_087D2294: @ 0x087D2294 - .incbin "baserom.gba", 0x7D2294, 0xA84 @ 0x7D2D18 - 0x7D2294 + .global Img_DemonLightBg_Far_9 +Img_DemonLightBg_Far_9: + .incbin "graphics/efxdragon/DemonLightBg_Far_9.feimg1.bin.lz" - .global Img_087D2D18 -Img_087D2D18: @ 0x087D2D18 - .incbin "baserom.gba", 0x7D2D18, 0xAA0 @ 0x7D37B8 - 0x7D2D18 + .global Img_DemonLightBg_Far_10 +Img_DemonLightBg_Far_10: + .incbin "graphics/efxdragon/DemonLightBg_Far_10.feimg1.bin.lz" - .global Img_087D37B8 -Img_087D37B8: @ 0x087D37B8 - .incbin "baserom.gba", 0x7D37B8, 0xA80 @ 0x7D4238 - 0x7D37B8 + .global Img_DemonLightBg_Far_11 +Img_DemonLightBg_Far_11: + .incbin "graphics/efxdragon/DemonLightBg_Far_11.feimg1.bin.lz" - .global Img_087D4238 -Img_087D4238: @ 0x087D4238 - .incbin "baserom.gba", 0x7D4238, 0xAAC @ 0x7D4CE4 - 0x7D4238 + .global Img_DemonLightBg_Far_12 +Img_DemonLightBg_Far_12: + .incbin "graphics/efxdragon/DemonLightBg_Far_12.feimg1.bin.lz" - .global Img_087D4CE4 -Img_087D4CE4: @ 0x087D4CE4 - .incbin "baserom.gba", 0x7D4CE4, 0xB50 @ 0x7D5834 - 0x7D4CE4 + .global Img_DemonLightBg_Far_13 +Img_DemonLightBg_Far_13: + .incbin "graphics/efxdragon/DemonLightBg_Far_13.feimg1.bin.lz" - .global Img_087D5834 -Img_087D5834: @ 0x087D5834 - .incbin "baserom.gba", 0x7D5834, 0xB88 @ 0x7D63BC - 0x7D5834 + .global Img_DemonLightBg_Far_14 +Img_DemonLightBg_Far_14: + .incbin "graphics/efxdragon/DemonLightBg_Far_14.feimg1.bin.lz" - .global Img_087D63BC -Img_087D63BC: @ 0x087D63BC - .incbin "baserom.gba", 0x7D63BC, 0xB28 @ 0x7D6EE4 - 0x7D63BC + .global Img_DemonLightBg_Far_15 +Img_DemonLightBg_Far_15: + .incbin "graphics/efxdragon/DemonLightBg_Far_15.feimg1.bin.lz" - .global Img_087D6EE4 -Img_087D6EE4: @ 0x087D6EE4 - .incbin "baserom.gba", 0x7D6EE4, 0xB04 @ 0x7D79E8 - 0x7D6EE4 + .global Img_DemonLightBg_Far_16 +Img_DemonLightBg_Far_16: + .incbin "graphics/efxdragon/DemonLightBg_Far_16.feimg1.bin.lz" - .global Pal_087D79E8 -Pal_087D79E8: @ 0x087D79E8 - .incbin "baserom.gba", 0x7D79E8, 0x20 @ 0x7D7A08 - 0x7D79E8 + .global Pal_DemonLightBg_Far_1 +Pal_DemonLightBg_Far_1: + .incbin "graphics/efxdragon/DemonLightBg_Far_1.gbapal" - .global Pal_087D7A08 -Pal_087D7A08: @ 0x087D7A08 - .incbin "baserom.gba", 0x7D7A08, 0x20 @ 0x7D7A28 - 0x7D7A08 + .global Pal_DemonLightBg_Far_2 +Pal_DemonLightBg_Far_2: + .incbin "graphics/efxdragon/DemonLightBg_Far_2.gbapal" - .global Pal_087D7A28 -Pal_087D7A28: @ 0x087D7A28 - .incbin "baserom.gba", 0x7D7A28, 0x20 @ 0x7D7A48 - 0x7D7A28 + .global Pal_DemonLightBg_Far_3 +Pal_DemonLightBg_Far_3: + .incbin "graphics/efxdragon/DemonLightBg_Far_3.gbapal" - .global Pal_087D7A48 -Pal_087D7A48: @ 0x087D7A48 - .incbin "baserom.gba", 0x7D7A48, 0x20 @ 0x7D7A68 - 0x7D7A48 + .global Pal_DemonLightBg_Far_4 +Pal_DemonLightBg_Far_4: + .incbin "graphics/efxdragon/DemonLightBg_Far_4.gbapal" - .global Pal_087D7A68 -Pal_087D7A68: @ 0x087D7A68 - .incbin "baserom.gba", 0x7D7A68, 0x20 @ 0x7D7A88 - 0x7D7A68 + .global Pal_DemonLightBg_Far_5 +Pal_DemonLightBg_Far_5: + .incbin "graphics/efxdragon/DemonLightBg_Far_5.gbapal" - .global Pal_087D7A88 -Pal_087D7A88: @ 0x087D7A88 - .incbin "baserom.gba", 0x7D7A88, 0x20 @ 0x7D7AA8 - 0x7D7A88 + .global Pal_DemonLightBg_Far_6 +Pal_DemonLightBg_Far_6: + .incbin "graphics/efxdragon/DemonLightBg_Far_6.gbapal" - .global Pal_087D7AA8 -Pal_087D7AA8: @ 0x087D7AA8 - .incbin "baserom.gba", 0x7D7AA8, 0x20 @ 0x7D7AC8 - 0x7D7AA8 + .global Pal_DemonLightBg_Far_7 +Pal_DemonLightBg_Far_7: + .incbin "graphics/efxdragon/DemonLightBg_Far_7.gbapal" - .global Pal_087D7AC8 -Pal_087D7AC8: @ 0x087D7AC8 - .incbin "baserom.gba", 0x7D7AC8, 0x20 @ 0x7D7AE8 - 0x7D7AC8 + .global Pal_DemonLightBg_Far_8 +Pal_DemonLightBg_Far_8: + .incbin "graphics/efxdragon/DemonLightBg_Far_8.gbapal" - .global Pal_087D7AE8 -Pal_087D7AE8: @ 0x087D7AE8 - .incbin "baserom.gba", 0x7D7AE8, 0x20 @ 0x7D7B08 - 0x7D7AE8 + .global Pal_DemonLightBg_Far_9 +Pal_DemonLightBg_Far_9: + .incbin "graphics/efxdragon/DemonLightBg_Far_9.gbapal" - .global Pal_087D7B08 -Pal_087D7B08: @ 0x087D7B08 - .incbin "baserom.gba", 0x7D7B08, 0x20 @ 0x7D7B28 - 0x7D7B08 + .global Pal_DemonLightBg_Far_10 +Pal_DemonLightBg_Far_10: + .incbin "graphics/efxdragon/DemonLightBg_Far_10.gbapal" - .global Pal_087D7B28 -Pal_087D7B28: @ 0x087D7B28 - .incbin "baserom.gba", 0x7D7B28, 0x20 @ 0x7D7B48 - 0x7D7B28 + .global Pal_DemonLightBg_Far_11 +Pal_DemonLightBg_Far_11: + .incbin "graphics/efxdragon/DemonLightBg_Far_11.gbapal" - .global Pal_087D7B48 -Pal_087D7B48: @ 0x087D7B48 - .incbin "baserom.gba", 0x7D7B48, 0x20 @ 0x7D7B68 - 0x7D7B48 + .global Pal_DemonLightBg_Far_12 +Pal_DemonLightBg_Far_12: + .incbin "graphics/efxdragon/DemonLightBg_Far_12.gbapal" - .global Pal_087D7B68 -Pal_087D7B68: @ 0x087D7B68 - .incbin "baserom.gba", 0x7D7B68, 0x20 @ 0x7D7B88 - 0x7D7B68 + .global Pal_DemonLightBg_Far_13 +Pal_DemonLightBg_Far_13: + .incbin "graphics/efxdragon/DemonLightBg_Far_13.gbapal" - .global Pal_087D7B88 -Pal_087D7B88: @ 0x087D7B88 - .incbin "baserom.gba", 0x7D7B88, 0x20 @ 0x7D7BA8 - 0x7D7B88 + .global Pal_DemonLightBg_Far_14 +Pal_DemonLightBg_Far_14: + .incbin "graphics/efxdragon/DemonLightBg_Far_14.gbapal" - .global Pal_087D7BA8 -Pal_087D7BA8: @ 0x087D7BA8 - .incbin "baserom.gba", 0x7D7BA8, 0x20 @ 0x7D7BC8 - 0x7D7BA8 + .global Pal_DemonLightBg_Far_15 +Pal_DemonLightBg_Far_15: + .incbin "graphics/efxdragon/DemonLightBg_Far_15.gbapal" - .global Pal_087D7BC8 -Pal_087D7BC8: @ 0x087D7BC8 - .incbin "baserom.gba", 0x7D7BC8, 0x20 @ 0x7D7BE8 - 0x7D7BC8 + .global Pal_DemonLightBg_Far_16 +Pal_DemonLightBg_Far_16: + .incbin "graphics/efxdragon/DemonLightBg_Far_16.gbapal" - .global Tsa_087D7BE8 -Tsa_087D7BE8: @ 0x087D7BE8 - .incbin "baserom.gba", 0x7D7BE8, 0x274 @ 0x7D7E5C - 0x7D7BE8 + .global Tsa_DemonLightBg_Far_1 +Tsa_DemonLightBg_Far_1: + .incbin "graphics/efxdragon/DemonLightBg_Far_1.fetsa1.bin.lz" - .global Tsa_087D7E5C -Tsa_087D7E5C: @ 0x087D7E5C - .incbin "baserom.gba", 0x7D7E5C, 0x278 @ 0x7D80D4 - 0x7D7E5C + .global Tsa_DemonLightBg_Far_2 +Tsa_DemonLightBg_Far_2: + .incbin "graphics/efxdragon/DemonLightBg_Far_2.fetsa1.bin.lz" - .global Tsa_087D80D4 -Tsa_087D80D4: @ 0x087D80D4 - .incbin "baserom.gba", 0x7D80D4, 0x274 @ 0x7D8348 - 0x7D80D4 + .global Tsa_DemonLightBg_Far_3 +Tsa_DemonLightBg_Far_3: + .incbin "graphics/efxdragon/DemonLightBg_Far_3.fetsa1.bin.lz" - .global Tsa_087D8348 -Tsa_087D8348: @ 0x087D8348 - .incbin "baserom.gba", 0x7D8348, 0x274 @ 0x7D85BC - 0x7D8348 + .global Tsa_DemonLightBg_Far_4 +Tsa_DemonLightBg_Far_4: + .incbin "graphics/efxdragon/DemonLightBg_Far_4.fetsa1.bin.lz" - .global Tsa_087D85BC -Tsa_087D85BC: @ 0x087D85BC - .incbin "baserom.gba", 0x7D85BC, 0x278 @ 0x7D8834 - 0x7D85BC + .global Tsa_DemonLightBg_Far_5 +Tsa_DemonLightBg_Far_5: + .incbin "graphics/efxdragon/DemonLightBg_Far_5.fetsa1.bin.lz" - .global Tsa_087D8834 -Tsa_087D8834: @ 0x087D8834 - .incbin "baserom.gba", 0x7D8834, 0x274 @ 0x7D8AA8 - 0x7D8834 + .global Tsa_DemonLightBg_Far_6 +Tsa_DemonLightBg_Far_6: + .incbin "graphics/efxdragon/DemonLightBg_Far_6.fetsa1.bin.lz" - .global Tsa_087D8AA8 -Tsa_087D8AA8: @ 0x087D8AA8 - .incbin "baserom.gba", 0x7D8AA8, 0x278 @ 0x7D8D20 - 0x7D8AA8 + .global Tsa_DemonLightBg_Far_7 +Tsa_DemonLightBg_Far_7: + .incbin "graphics/efxdragon/DemonLightBg_Far_7.fetsa1.bin.lz" - .global Tsa_087D8D20 -Tsa_087D8D20: @ 0x087D8D20 - .incbin "baserom.gba", 0x7D8D20, 0x274 @ 0x7D8F94 - 0x7D8D20 + .global Tsa_DemonLightBg_Far_8 +Tsa_DemonLightBg_Far_8: + .incbin "graphics/efxdragon/DemonLightBg_Far_8.fetsa1.bin.lz" - .global Tsa_087D8F94 -Tsa_087D8F94: @ 0x087D8F94 - .incbin "baserom.gba", 0x7D8F94, 0x278 @ 0x7D920C - 0x7D8F94 + .global Tsa_DemonLightBg_Far_9 +Tsa_DemonLightBg_Far_9: + .incbin "graphics/efxdragon/DemonLightBg_Far_9.fetsa1.bin.lz" - .global Tsa_087D920C -Tsa_087D920C: @ 0x087D920C - .incbin "baserom.gba", 0x7D920C, 0x274 @ 0x7D9480 - 0x7D920C + .global Tsa_DemonLightBg_Far_10 +Tsa_DemonLightBg_Far_10: + .incbin "graphics/efxdragon/DemonLightBg_Far_10.fetsa1.bin.lz" - .global Tsa_087D9480 -Tsa_087D9480: @ 0x087D9480 - .incbin "baserom.gba", 0x7D9480, 0x278 @ 0x7D96F8 - 0x7D9480 + .global Tsa_DemonLightBg_Far_11 +Tsa_DemonLightBg_Far_11: + .incbin "graphics/efxdragon/DemonLightBg_Far_11.fetsa1.bin.lz" - .global Tsa_087D96F8 -Tsa_087D96F8: @ 0x087D96F8 - .incbin "baserom.gba", 0x7D96F8, 0x274 @ 0x7D996C - 0x7D96F8 + .global Tsa_DemonLightBg_Far_12 +Tsa_DemonLightBg_Far_12: + .incbin "graphics/efxdragon/DemonLightBg_Far_12.fetsa1.bin.lz" - .global Tsa_087D996C -Tsa_087D996C: @ 0x087D996C - .incbin "baserom.gba", 0x7D996C, 0x274 @ 0x7D9BE0 - 0x7D996C + .global Tsa_DemonLightBg_Far_13 +Tsa_DemonLightBg_Far_13: + .incbin "graphics/efxdragon/DemonLightBg_Far_13.fetsa1.bin.lz" - .global Tsa_087D9BE0 -Tsa_087D9BE0: @ 0x087D9BE0 - .incbin "baserom.gba", 0x7D9BE0, 0x278 @ 0x7D9E58 - 0x7D9BE0 + .global Tsa_DemonLightBg_Far_14 +Tsa_DemonLightBg_Far_14: + .incbin "graphics/efxdragon/DemonLightBg_Far_14.fetsa1.bin.lz" - .global Tsa_087D9E58 -Tsa_087D9E58: @ 0x087D9E58 - .incbin "baserom.gba", 0x7D9E58, 0x274 @ 0x7DA0CC - 0x7D9E58 + .global Tsa_DemonLightBg_Far_15 +Tsa_DemonLightBg_Far_15: + .incbin "graphics/efxdragon/DemonLightBg_Far_15.fetsa1.bin.lz" - .global Tsa_087DA0CC -Tsa_087DA0CC: @ 0x087DA0CC - .incbin "baserom.gba", 0x7DA0CC, 0x274 @ 0x7DA340 - 0x7DA0CC + .global Tsa_DemonLightBg_Far_16 +Tsa_DemonLightBg_Far_16: + .incbin "graphics/efxdragon/DemonLightBg_Far_16.fetsa1.bin.lz" - .global Img_087DA340 -Img_087DA340: @ 0x087DA340 - .incbin "baserom.gba", 0x7DA340, 0xB00 @ 0x7DAE40 - 0x7DA340 + .global Img_DemonLightBg_Far_17 +Img_DemonLightBg_Far_17: + .incbin "graphics/efxdragon/DemonLightBg_Far_17.feimg1.bin.lz" - .global Img_087DAE40 -Img_087DAE40: @ 0x087DAE40 - .incbin "baserom.gba", 0x7DAE40, 0xB20 @ 0x7DB960 - 0x7DAE40 + .global Img_DemonLightBg_Far_18 +Img_DemonLightBg_Far_18: + .incbin "graphics/efxdragon/DemonLightBg_Far_18.feimg1.bin.lz" - .global Img_087DB960 -Img_087DB960: @ 0x087DB960 - .incbin "baserom.gba", 0x7DB960, 0xBB8 @ 0x7DC518 - 0x7DB960 + .global Img_DemonLightBg_Far_19 +Img_DemonLightBg_Far_19: + .incbin "graphics/efxdragon/DemonLightBg_Far_19.feimg1.bin.lz" - .global Img_087DC518 -Img_087DC518: @ 0x087DC518 - .incbin "baserom.gba", 0x7DC518, 0xD70 @ 0x7DD288 - 0x7DC518 + .global Img_DemonLightBg_Far_20 +Img_DemonLightBg_Far_20: + .incbin "graphics/efxdragon/DemonLightBg_Far_20.feimg1.bin.lz" - .global Img_087DD288 -Img_087DD288: @ 0x087DD288 - .incbin "baserom.gba", 0x7DD288, 0xE40 @ 0x7DE0C8 - 0x7DD288 + .global Img_DemonLightBg_Far_21 +Img_DemonLightBg_Far_21: + .incbin "graphics/efxdragon/DemonLightBg_Far_21.feimg1.bin.lz" - .global Img_087DE0C8 -Img_087DE0C8: @ 0x087DE0C8 - .incbin "baserom.gba", 0x7DE0C8, 0xF68 @ 0x7DF030 - 0x7DE0C8 + .global Img_DemonLightBg_Far_22 +Img_DemonLightBg_Far_22: + .incbin "graphics/efxdragon/DemonLightBg_Far_22.feimg1.bin.lz" - .global Img_087DF030 -Img_087DF030: @ 0x087DF030 - .incbin "baserom.gba", 0x7DF030, 0xFFC @ 0x7E002C - 0x7DF030 + .global Img_DemonLightBg_Far_23 +Img_DemonLightBg_Far_23: + .incbin "graphics/efxdragon/DemonLightBg_Far_23.feimg1.bin.lz" - .global Img_087E002C -Img_087E002C: @ 0x087E002C - .incbin "baserom.gba", 0x7E002C, 0x1164 @ 0x7E1190 - 0x7E002C + .global Img_DemonLightBg_Far_24 +Img_DemonLightBg_Far_24: + .incbin "graphics/efxdragon/DemonLightBg_Far_24.feimg1.bin.lz" - .global Img_087E1190 -Img_087E1190: @ 0x087E1190 - .incbin "baserom.gba", 0x7E1190, 0x11FC @ 0x7E238C - 0x7E1190 + .global Img_DemonLightBg_Far_25 +Img_DemonLightBg_Far_25: + .incbin "graphics/efxdragon/DemonLightBg_Far_25.feimg1.bin.lz" - .global Img_087E238C -Img_087E238C: @ 0x087E238C - .incbin "baserom.gba", 0x7E238C, 0x1200 @ 0x7E358C - 0x7E238C + .global Img_DemonLightBg_Far_26 +Img_DemonLightBg_Far_26: + .incbin "graphics/efxdragon/DemonLightBg_Far_26.feimg1.bin.lz" - .global Img_087E358C -Img_087E358C: @ 0x087E358C - .incbin "baserom.gba", 0x7E358C, 0x10E0 @ 0x7E466C - 0x7E358C + .global Img_DemonLightBg_Far_27 +Img_DemonLightBg_Far_27: + .incbin "graphics/efxdragon/DemonLightBg_Far_27.feimg1.bin.lz" - .global Img_087E466C -Img_087E466C: @ 0x087E466C - .incbin "baserom.gba", 0x7E466C, 0xE48 @ 0x7E54B4 - 0x7E466C + .global Img_DemonLightBg_Far_28 +Img_DemonLightBg_Far_28: + .incbin "graphics/efxdragon/DemonLightBg_Far_28.feimg1.bin.lz" - .global Img_087E54B4 -Img_087E54B4: @ 0x087E54B4 - .incbin "baserom.gba", 0x7E54B4, 0xB20 @ 0x7E5FD4 - 0x7E54B4 + .global Img_DemonLightBg_Far_29 +Img_DemonLightBg_Far_29: + .incbin "graphics/efxdragon/DemonLightBg_Far_29.feimg1.bin.lz" - .global Img_087E5FD4 -Img_087E5FD4: @ 0x087E5FD4 - .incbin "baserom.gba", 0x7E5FD4, 0xBBC @ 0x7E6B90 - 0x7E5FD4 + .global Img_DemonLightBg_Far_30 +Img_DemonLightBg_Far_30: + .incbin "graphics/efxdragon/DemonLightBg_Far_30.feimg1.bin.lz" - .global Img_087E6B90 -Img_087E6B90: @ 0x087E6B90 - .incbin "baserom.gba", 0x7E6B90, 0xD10 @ 0x7E78A0 - 0x7E6B90 + .global Img_DemonLightBg_Far_31 +Img_DemonLightBg_Far_31: + .incbin "graphics/efxdragon/DemonLightBg_Far_31.feimg1.bin.lz" - .global Img_087E78A0 -Img_087E78A0: @ 0x087E78A0 - .incbin "baserom.gba", 0x7E78A0, 0xA2C @ 0x7E82CC - 0x7E78A0 + .global Img_DemonLightBg_Far_32 +Img_DemonLightBg_Far_32: + .incbin "graphics/efxdragon/DemonLightBg_Far_32.feimg1.bin.lz" - .global Pal_087E82CC -Pal_087E82CC: @ 0x087E82CC - .incbin "baserom.gba", 0x7E82CC, 0x20 @ 0x7E82EC - 0x7E82CC + .global Pal_DemonLightBg_Far_17 +Pal_DemonLightBg_Far_17: + .incbin "graphics/efxdragon/DemonLightBg_Far_17.gbapal" - .global Pal_087E82EC -Pal_087E82EC: @ 0x087E82EC - .incbin "baserom.gba", 0x7E82EC, 0x20 @ 0x7E830C - 0x7E82EC + .global Pal_DemonLightBg_Far_18 +Pal_DemonLightBg_Far_18: + .incbin "graphics/efxdragon/DemonLightBg_Far_18.gbapal" - .global Pal_087E830C -Pal_087E830C: @ 0x087E830C - .incbin "baserom.gba", 0x7E830C, 0x20 @ 0x7E832C - 0x7E830C + .global Pal_DemonLightBg_Far_19 +Pal_DemonLightBg_Far_19: + .incbin "graphics/efxdragon/DemonLightBg_Far_19.gbapal" - .global Pal_087E832C -Pal_087E832C: @ 0x087E832C - .incbin "baserom.gba", 0x7E832C, 0x20 @ 0x7E834C - 0x7E832C + .global Pal_DemonLightBg_Far_20 +Pal_DemonLightBg_Far_20: + .incbin "graphics/efxdragon/DemonLightBg_Far_20.gbapal" - .global Pal_087E834C -Pal_087E834C: @ 0x087E834C - .incbin "baserom.gba", 0x7E834C, 0x20 @ 0x7E836C - 0x7E834C + .global Pal_DemonLightBg_Far_21 +Pal_DemonLightBg_Far_21: + .incbin "graphics/efxdragon/DemonLightBg_Far_21.gbapal" - .global Pal_087E836C -Pal_087E836C: @ 0x087E836C - .incbin "baserom.gba", 0x7E836C, 0x20 @ 0x7E838C - 0x7E836C + .global Pal_DemonLightBg_Far_22 +Pal_DemonLightBg_Far_22: + .incbin "graphics/efxdragon/DemonLightBg_Far_22.gbapal" - .global Pal_087E838C -Pal_087E838C: @ 0x087E838C - .incbin "baserom.gba", 0x7E838C, 0x20 @ 0x7E83AC - 0x7E838C + .global Pal_DemonLightBg_Far_23 +Pal_DemonLightBg_Far_23: + .incbin "graphics/efxdragon/DemonLightBg_Far_23.gbapal" - .global Pal_087E83AC -Pal_087E83AC: @ 0x087E83AC - .incbin "baserom.gba", 0x7E83AC, 0x20 @ 0x7E83CC - 0x7E83AC + .global Pal_DemonLightBg_Far_24 +Pal_DemonLightBg_Far_24: + .incbin "graphics/efxdragon/DemonLightBg_Far_24.gbapal" - .global Pal_087E83CC -Pal_087E83CC: @ 0x087E83CC - .incbin "baserom.gba", 0x7E83CC, 0x20 @ 0x7E83EC - 0x7E83CC + .global Pal_DemonLightBg_Far_25 +Pal_DemonLightBg_Far_25: + .incbin "graphics/efxdragon/DemonLightBg_Far_25.gbapal" - .global Pal_087E83EC -Pal_087E83EC: @ 0x087E83EC - .incbin "baserom.gba", 0x7E83EC, 0x20 @ 0x7E840C - 0x7E83EC + .global Pal_DemonLightBg_Far_26 +Pal_DemonLightBg_Far_26: + .incbin "graphics/efxdragon/DemonLightBg_Far_26.gbapal" - .global Pal_087E840C -Pal_087E840C: @ 0x087E840C - .incbin "baserom.gba", 0x7E840C, 0x20 @ 0x7E842C - 0x7E840C + .global Pal_DemonLightBg_Far_27 +Pal_DemonLightBg_Far_27: + .incbin "graphics/efxdragon/DemonLightBg_Far_27.gbapal" - .global Pal_087E842C -Pal_087E842C: @ 0x087E842C - .incbin "baserom.gba", 0x7E842C, 0x20 @ 0x7E844C - 0x7E842C + .global Pal_DemonLightBg_Far_28 +Pal_DemonLightBg_Far_28: + .incbin "graphics/efxdragon/DemonLightBg_Far_28.gbapal" - .global Pal_087E844C -Pal_087E844C: @ 0x087E844C - .incbin "baserom.gba", 0x7E844C, 0x20 @ 0x7E846C - 0x7E844C + .global Pal_DemonLightBg_Far_29 +Pal_DemonLightBg_Far_29: + .incbin "graphics/efxdragon/DemonLightBg_Far_29.gbapal" - .global Pal_087E846C -Pal_087E846C: @ 0x087E846C - .incbin "baserom.gba", 0x7E846C, 0x20 @ 0x7E848C - 0x7E846C + .global Pal_DemonLightBg_Far_30 +Pal_DemonLightBg_Far_30: + .incbin "graphics/efxdragon/DemonLightBg_Far_30.gbapal" - .global Pal_087E848C -Pal_087E848C: @ 0x087E848C - .incbin "baserom.gba", 0x7E848C, 0x20 @ 0x7E84AC - 0x7E848C + .global Pal_DemonLightBg_Far_31 +Pal_DemonLightBg_Far_31: + .incbin "graphics/efxdragon/DemonLightBg_Far_31.gbapal" - .global Pal_087E84AC -Pal_087E84AC: @ 0x087E84AC - .incbin "baserom.gba", 0x7E84AC, 0x20 @ 0x7E84CC - 0x7E84AC + .global Pal_DemonLightBg_Far_32 +Pal_DemonLightBg_Far_32: + .incbin "graphics/efxdragon/DemonLightBg_Far_32.gbapal" - .global Tsa_087E84CC -Tsa_087E84CC: @ 0x087E84CC - .incbin "baserom.gba", 0x7E84CC, 0x270 @ 0x7E873C - 0x7E84CC + .global Tsa_DemonLightBg_Far_17 +Tsa_DemonLightBg_Far_17: + .incbin "graphics/efxdragon/DemonLightBg_Far_17.fetsa1.bin.lz" - .global Tsa_087E873C -Tsa_087E873C: @ 0x087E873C - .incbin "baserom.gba", 0x7E873C, 0x278 @ 0x7E89B4 - 0x7E873C + .global Tsa_DemonLightBg_Far_18 +Tsa_DemonLightBg_Far_18: + .incbin "graphics/efxdragon/DemonLightBg_Far_18.fetsa1.bin.lz" - .global Tsa_087E89B4 -Tsa_087E89B4: @ 0x087E89B4 - .incbin "baserom.gba", 0x7E89B4, 0x278 @ 0x7E8C2C - 0x7E89B4 + .global Tsa_DemonLightBg_Far_19 +Tsa_DemonLightBg_Far_19: + .incbin "graphics/efxdragon/DemonLightBg_Far_19.fetsa1.bin.lz" - .global Tsa_087E8C2C -Tsa_087E8C2C: @ 0x087E8C2C - .incbin "baserom.gba", 0x7E8C2C, 0x25C @ 0x7E8E88 - 0x7E8C2C + .global Tsa_DemonLightBg_Far_20 +Tsa_DemonLightBg_Far_20: + .incbin "graphics/efxdragon/DemonLightBg_Far_20.fetsa1.bin.lz" - .global Tsa_087E8E88 -Tsa_087E8E88: @ 0x087E8E88 - .incbin "baserom.gba", 0x7E8E88, 0x248 @ 0x7E90D0 - 0x7E8E88 + .global Tsa_DemonLightBg_Far_21 +Tsa_DemonLightBg_Far_21: + .incbin "graphics/efxdragon/DemonLightBg_Far_21.fetsa1.bin.lz" - .global Tsa_087E90D0 -Tsa_087E90D0: @ 0x087E90D0 - .incbin "baserom.gba", 0x7E90D0, 0x244 @ 0x7E9314 - 0x7E90D0 + .global Tsa_DemonLightBg_Far_22 +Tsa_DemonLightBg_Far_22: + .incbin "graphics/efxdragon/DemonLightBg_Far_22.fetsa1.bin.lz" - .global Tsa_087E9314 -Tsa_087E9314: @ 0x087E9314 - .incbin "baserom.gba", 0x7E9314, 0x240 @ 0x7E9554 - 0x7E9314 + .global Tsa_DemonLightBg_Far_23 +Tsa_DemonLightBg_Far_23: + .incbin "graphics/efxdragon/DemonLightBg_Far_23.fetsa1.bin.lz" - .global Tsa_087E9554 -Tsa_087E9554: @ 0x087E9554 - .incbin "baserom.gba", 0x7E9554, 0x244 @ 0x7E9798 - 0x7E9554 + .global Tsa_DemonLightBg_Far_24 +Tsa_DemonLightBg_Far_24: + .incbin "graphics/efxdragon/DemonLightBg_Far_24.fetsa1.bin.lz" - .global Tsa_087E9798 -Tsa_087E9798: @ 0x087E9798 - .incbin "baserom.gba", 0x7E9798, 0x248 @ 0x7E99E0 - 0x7E9798 + .global Tsa_DemonLightBg_Far_25 +Tsa_DemonLightBg_Far_25: + .incbin "graphics/efxdragon/DemonLightBg_Far_25.fetsa1.bin.lz" - .global Tsa_087E99E0 -Tsa_087E99E0: @ 0x087E99E0 - .incbin "baserom.gba", 0x7E99E0, 0x248 @ 0x7E9C28 - 0x7E99E0 + .global Tsa_DemonLightBg_Far_26 +Tsa_DemonLightBg_Far_26: + .incbin "graphics/efxdragon/DemonLightBg_Far_26.fetsa1.bin.lz" - .global Tsa_087E9C28 -Tsa_087E9C28: @ 0x087E9C28 - .incbin "baserom.gba", 0x7E9C28, 0x250 @ 0x7E9E78 - 0x7E9C28 + .global Tsa_DemonLightBg_Far_27 +Tsa_DemonLightBg_Far_27: + .incbin "graphics/efxdragon/DemonLightBg_Far_27.fetsa1.bin.lz" - .global Tsa_087E9E78 -Tsa_087E9E78: @ 0x087E9E78 - .incbin "baserom.gba", 0x7E9E78, 0x248 @ 0x7EA0C0 - 0x7E9E78 + .global Tsa_DemonLightBg_Far_28 +Tsa_DemonLightBg_Far_28: + .incbin "graphics/efxdragon/DemonLightBg_Far_28.fetsa1.bin.lz" - .global Tsa_087EA0C0 -Tsa_087EA0C0: @ 0x087EA0C0 - .incbin "baserom.gba", 0x7EA0C0, 0x1A8 @ 0x7EA268 - 0x7EA0C0 + .global Tsa_DemonLightBg_Far_29 +Tsa_DemonLightBg_Far_29: + .incbin "graphics/efxdragon/DemonLightBg_Far_29.fetsa1.bin.lz" - .global Tsa_087EA268 -Tsa_087EA268: @ 0x087EA268 - .incbin "baserom.gba", 0x7EA268, 0x1B4 @ 0x7EA41C - 0x7EA268 + .global Tsa_DemonLightBg_Far_30 +Tsa_DemonLightBg_Far_30: + .incbin "graphics/efxdragon/DemonLightBg_Far_30.fetsa1.bin.lz" - .global Tsa_087EA41C -Tsa_087EA41C: @ 0x087EA41C - .incbin "baserom.gba", 0x7EA41C, 0x1B4 @ 0x7EA5D0 - 0x7EA41C + .global Tsa_DemonLightBg_Far_31 +Tsa_DemonLightBg_Far_31: + .incbin "graphics/efxdragon/DemonLightBg_Far_31.fetsa1.bin.lz" - .global Tsa_087EA5D0 -Tsa_087EA5D0: @ 0x087EA5D0 - .incbin "baserom.gba", 0x7EA5D0, 0x15C @ 0x7EA72C - 0x7EA5D0 + .global Tsa_DemonLightBg_Far_32 +Tsa_DemonLightBg_Far_32: + .incbin "graphics/efxdragon/DemonLightBg_Far_32.fetsa1.bin.lz" .global Img_087EA72C Img_087EA72C: @ 0x087EA72C diff --git a/data/banim-ekrskill.s b/data/banim-ekrskill.s index 0d7377fd..fa7458e0 100644 --- a/data/banim-ekrskill.s +++ b/data/banim-ekrskill.s @@ -2,67 +2,67 @@ .global Img_EfxSkill1 Img_EfxSkill1: @ 0x085C935C - .incbin "graphics/efxskill/efxskill_1.feimg.bin.lz" + .incbin "graphics/efxskill/efxskill_1.feimg1.bin.lz" .global Img_EfxSkill2 Img_EfxSkill2: - .incbin "graphics/efxskill/efxskill_2.feimg.bin.lz" + .incbin "graphics/efxskill/efxskill_2.feimg1.bin.lz" .global Img_EfxSkill3 Img_EfxSkill3: - .incbin "graphics/efxskill/efxskill_3.feimg.bin.lz" + .incbin "graphics/efxskill/efxskill_3.feimg1.bin.lz" .global Img_EfxSkill4 Img_EfxSkill4: - .incbin "graphics/efxskill/efxskill_4.feimg.bin.lz" + .incbin "graphics/efxskill/efxskill_4.feimg1.bin.lz" .global Img_EfxSkill5 Img_EfxSkill5: - .incbin "graphics/efxskill/efxskill_5.feimg.bin.lz" + .incbin "graphics/efxskill/efxskill_5.feimg1.bin.lz" .global Img_EfxSkill6 Img_EfxSkill6: - .incbin "graphics/efxskill/efxskill_6.feimg.bin.lz" + .incbin "graphics/efxskill/efxskill_6.feimg1.bin.lz" .global Img_EfxSkill7 Img_EfxSkill7: - .incbin "graphics/efxskill/efxskill_7.feimg.bin.lz" + .incbin "graphics/efxskill/efxskill_7.feimg1.bin.lz" .global Img_EfxSkill8 Img_EfxSkill8: - .incbin "graphics/efxskill/efxskill_8.feimg.bin.lz" + .incbin "graphics/efxskill/efxskill_8.feimg1.bin.lz" .global Img_EfxSkill9 Img_EfxSkill9: - .incbin "graphics/efxskill/efxskill_9.feimg.bin.lz" + .incbin "graphics/efxskill/efxskill_9.feimg1.bin.lz" .global Img_EfxSkillA Img_EfxSkillA: - .incbin "graphics/efxskill/efxskill_10.feimg.bin.lz" + .incbin "graphics/efxskill/efxskill_10.feimg1.bin.lz" .global Img_EfxSkillB Img_EfxSkillB: - .incbin "graphics/efxskill/efxskill_11.feimg.bin.lz" + .incbin "graphics/efxskill/efxskill_11.feimg1.bin.lz" .global Img_EfxSkillC Img_EfxSkillC: - .incbin "graphics/efxskill/efxskill_12.feimg.bin.lz" + .incbin "graphics/efxskill/efxskill_12.feimg1.bin.lz" .global Img_EfxSkillD Img_EfxSkillD: - .incbin "graphics/efxskill/efxskill_13.feimg.bin.lz" + .incbin "graphics/efxskill/efxskill_13.feimg1.bin.lz" .global Img_EfxSkillE Img_EfxSkillE: - .incbin "graphics/efxskill/efxskill_14.feimg.bin.lz" + .incbin "graphics/efxskill/efxskill_14.feimg1.bin.lz" .global Img_EfxSkillF Img_EfxSkillF: - .incbin "graphics/efxskill/efxskill_15.feimg.bin.lz" + .incbin "graphics/efxskill/efxskill_15.feimg1.bin.lz" .global Img_EfxSkill10 Img_EfxSkill10: - .incbin "graphics/efxskill/efxskill_16.feimg.bin.lz" + .incbin "graphics/efxskill/efxskill_16.feimg1.bin.lz" .global Pal_EfxSkill1 Pal_EfxSkill1: diff --git a/graphics/efxdragon/DemonLightBg_Close_1.png b/graphics/efxdragon/DemonLightBg_Close_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ca74e67cdfa2eb192c1ec0efaa65713d5091ab6f GIT binary patch literal 1887 zcmV-l2cYNo>5iGWs^aB#Bw1QluHx1+iY#<8+a4L1G zUB^fO|G*ae3(3sf$J{#{X%|S4q?l9KGCiDgUvnQL^ZYc9569zSy%`)jM(eR?nx-g< z@-{|QG;P-p>-EuL93P({Gzzc*<{i>LGTGW@x9Udp_QVy2QctanZtwG@(85!(c z6K$bj&1^*^D>-rZ@NtWlf4+{V(TtuHh4#G8!Y#N~Yg)|UY0)%o+bK9P-S5GRvvt&C zl6@o?`hZGrtfeh&tw=Ss$Gk~k-l70#0@R)f*d3nOD-MsH(X777Fa{IPU~^AX7b(n~ zIoKX9?6-%t#1`m{I!rrfW_Ik|tHU|)&QLAEnzW1OCV(s0DgAy6#Or-HzAFx>5|7WT zKe5WlN>#rO1Y{v;aa~9!EFlnr1hyGKu#qj3;=LEE{Bp5S%bq7h)Vb(Pi}#g7jIdd{@^fRs^EmTMXSX4N&JZd9K_O`_`SQl_utNGa+>Q0Y#lqS%SH zBUtuBP$+a1t_%@jRFWUu8sjSy>57u;QjzvF1dnZitR<-#iJG9xeaO@JVBC-6dI0w< zk-YDK9l2T05?zWhWEbzjaR6+>qRuZ3gAIxAdfN76@gfSjC`K4?PD|`?WMjI5Q0o2j z?T_yo7l}RhgKxT=?k53x%)s>3>18RpVUic|0#fs_arhx{|4gzN`|x+R{P=#@cqf04 z+Z3{{Q&-|#4TfpmLO#$pH>Wgy_0;cgLq|`#!F+I1_Jfz=w~hZ-h$&fGCnfil9-nWo z;sdd%iNL76ll%WooYT9Sf12l8k%|8|#1wKaDt%4G=+rpFf>YG*T_p}n&zOrvhUSB5 zQ}XuR=iaBE-rsF0`54ZKKd7#}_`mr4TsU0C&FL3MVY>DtDms>Lb^P7nzsHH^IV7Mr zmy+IwkQd)}m>-;BKB_G&SHXM1uw-nGc4Hc9OASkC>M)1BEaBea{$l?3$#5V+)?A}8 zp}w@R1Hrh|x>`*8t-_LH(#6iCb!phnT$j0@9pxXCej)jXK7$$&DEfw{?Ws3-{ zH28V%tA%f*yM}Pf0hJ7TtI$^?-CYPYED$tr5i^v&W18G)ii82wl(^}8fn|0=tjqHEn#GN%EF1dV*c2I^uPR6x^D6K3~M{nDO|eH;NeL^WdXu zN}PBdGFQt3UXd6{FF=`*ZC!g?>5`X{+rUdA{3kX86ExBMEX9+og}9qb)OFs{(3|q) zHTtrvnp}1zupo<-l0ga}m9Hc*1XnY;ODe)8h!}3f-L|W5oFXQ^NKm7xgEnZZ5@kJ; z17}U3^cib=*g}r9wFdJE>+M5zPPa30pmA^;z9~d$f%PmG&iqv*mWHjk`t>D`vSu%@ z_q$fz3*koo7ce&l9oMAggMMgE_wh%%{C|=IzAk~`OO;itQjCs719u*5<|!-GWB$G+ z8oe2hq5g+Uch2Ecn5gZcm}J?=hl67F#Lw5d5U|H#%{Sp{blr7^Is!hpo8exc;S@=BBGAdj!8LNeU51l&~A3F^D51s z{}D3rzek*rk&%&+k&%&+k&%&+k&%&+k&%&+k&%&+k&%&+k&%&+k&%&+k&%&+k&%(% Z@fQ(>LEM|PJ?j7f002ovPDHLkV1iP*p~L_H literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Close_10.png b/graphics/efxdragon/DemonLightBg_Close_10.png new file mode 100644 index 0000000000000000000000000000000000000000..ca0ccf49d52bd04f0b737ba93457a34767addd8a GIT binary patch literal 1793 zcmV+c2mbhpP)L~P?-3j_y7O^Ev_qO000Jz zNklY*LFt;GTpl#hs7?L=fP{ za0-KN6Bp(Q4EPGk%>3_}r4b-T+{_0^qPR2j{jd2Sr2DGy9C11w4~N5D-|srW+W%}? zMB_25>rupHxm=DIbu(|fuJ_pc1MW|!XTsaB8Jv3k1!#e_>$W`rS=aDq6=>_aB3>b` z-`uugQ(!#+^Xc_fY9W5s`T`}X94S%nreR)#dfK!sYmaIN?ueY+J!?FLMIi58Zxtpx z2Yrc4qnQWE#7goS&Qsb)xS*pzlftWA=K|X&6*MGfP5);ghN|IVYU((98u(5b8p$P0HqyJEd>jd5!VF)<386Y zX1T3QnFp28Qxhv4Crb@+OeOleD=|?wLZA;N`_7GY16E#UumS1(FG)rAYG&Zac_hz< z{hLv9z&V!Hh?GT2w3B{B2c*GOix!G~L@M(Vmo6MD)%1S)-_TAor7iQ=N}!B7bLly1 z`#4RG$|A#o5trbvLDS1-3@*w6Hcn}?RYMcc>U3L9meRuRkU;beYV~De?W6J{C z8aI88-f11B^v)o^D+8%IJ2cZQbqW3-@`dE;9VV_FB`z*9D|1mPIV>!L;*DChbCZ}9 zpkBC8td5kQS%#>!N}V8Xl_kSOKQIH7X4t)!GuBX_s5((4ejR&{JC&{3{-#chOg>1p z#!jT`hd~{Yhf5ofBUYx3a{MNmdsYv|tTlI}?Y2z4=X!U4QivUh1(4tMk!>#Q8*;Xx zL)#LdxTf4Ry&O(8pd&=`bir{8o?mEwPL0=;OoT zmq_-zYJZR$+s$s{Pq=+V43&i!kGJnTOWNGP@-yRN@X1|19S*N97rj6^#B=}bm;Dr< zJZf;6hUWT3c;|d>J?G8iFv1ZZ=;g)510P0kJ7TE%2fv*^M*hGGgcwQYCgmk}$!{-~ z6Fp>D1ZFq1U0u>q+D?2Agj3yjKlNXt5dSFR#b`1K_mc15hZyk*!h#s;|Am-?_l3G| zA1{AFmh<=6U*pf_4nr>ZOn1`a;UT#=;XQLTkSw%5H|k7}KQ0$F+@0d6{)$r$W;c^_ z&SD>hH_e&bi_Oa$N(I=_J8sY4-9jq7@jo%ghWu)#dWDc+FDd@)+Q1%i`x#GA*}Hvr zQ>psmuqB)}Ee?~h4q>ecbKEuVXI<@%G}Z2~Z|ZbEL!Hd5mMSVfj(ymi*l9J)kXOmo zSRbkHR0k6q3i`|>YuubT9EZBOXbvCvbWl_8v7SDi4Afw|w+&P{K@XCO*jy(v`CK{= ze8tVg{S`(k`&)Xo1+V&nz8ai~CW?3@W2|a-QF#?5RM5q!X&1>|I=3r%FFFBYxp(l4 zri)fQ9+l`UsQskH*)USsV>R`}nf}eTZKV8K_57et$L;>iuBU_R;WHK7O!PKe6S*glGxOCVW&7N-84!j zyaxA2o+qt1cQhsHWNJckWkjijn1ik*=YpN34yws|aFoXmVAl=7cLe5o0x^(k0XsEh z?~xT*-l{Kc-r_e##IAgy5lqo2$`P6xl?A>{OCJaIQvUb!9m>G>R_4p2CmyP!{c*1M zw6jWGb_jQeyjo$oMM!&(3SZ|{UtC50BkSI6d;`R+6TY_&JFPq(xarwzQ(q6F zaUWQ}R+<+z{`&`^5dVL~1qB5K1qB5K1qB5K1qB5K1qB5K1qB5K1qB5K1qB5K1qB5K j1qB5K1qB5K1rh%M5=NO#jE*AU!ZWQPd zt;MpgtHNQi*=!0%-QM)$-QMD0_kTPd9|&(gL@?^pd!V(O&X#qzN9=%gI}Ywo=V&d6 zHxSpaR-X5Qu*}EjGt`p!LF$W~Qr|87ZCmD5sGAnmMWEJznA|*QympIF;Gpo(OFIYF zTB5yik_ju36bCp?Xm4Ra#{gJ#<_%}$?UZW)rJ!xBd;6a3B1H9{mHwXJTw;KwPeOnl z7GtrKvnYIl4B!M=G_FW19j{F`2U(V5@jm_ zqoZ@RA`@<1#=0&x5@BOSLYS{a#gYk@;!v{hjgl^5R!S>=hzrxS4XRY7S92a|Brm7^ zn^5BcMtDYvlthYqs=h)5YWcK^*$YyciQAX~KBoKW^StIu`3-K;5(EOHmp92}l#B6G z8EM)orTt>skFc}VgBEUF>vuPdyTI4BK-;(?&NRNJ9U2{54^K7P2k0g=+d}n>RR~cKiIoz+FNm^ z#UIZeLkY3D)uql)oNq9*seE${_7Qlsx^inVJiVnfP*4j(BTTn~Gv0*@!-(QQV@S0y!1yD6s@LBa_@}bUSdn^{}wQfRxz*CYLT3YOQ%|^8ESrJ z>Il_TKunznl2@u_i-;@Uk-EsB5S2K$i3i_CCO#D`ZrfrLVI4V~w{_y;ndl`}S;yg! z%$i-GRs_0RNT?%M({L2`UA&PfLR@AYnTq`6~xw>g#z#WsJ(h0$pFe=Aqw8bD@pyLra8(|cqZW_hY z9aO-;FQ)3rFO77;ty3CezfxZCyGOR z1)%{FHx1*-guqMK=~o-!-8tI#qT>u6cQ)+WmzCs2jZ5?QcS0uq|A;d(GBPqUGBPqU zGBPqUGBPqUGBPqUGBPqUGBPqUGBPqUGBPqUGBPqUGBPqe{sEID=IR4}`eOh9002ov JPDHLkV1h5#cbNbH literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Close_12.png b/graphics/efxdragon/DemonLightBg_Close_12.png new file mode 100644 index 0000000000000000000000000000000000000000..752a5380ef32f3d1b127e9f5723fb2c5c97aeda4 GIT binary patch literal 1807 zcmV+q2k`ibP)L~P?-3j_y7O^01sBW000J> zNkl25n5auiFs&luCeE~slAgmfg<*ur0S89@0Qj=OXg7g+#Ik?KW2Z$ly zDqj=m+T@DU69mXBB;;_0GefRiBtepbUtwbAMPx6yX{(_N3<66 zx-I~d*=$w>)a{~QZ*~@L|NZgtMEIzAOvL+}TXQ_xO$W=m-66J~b+sPczs}Ltbw#{P zT)$re?;YZ3@iou9fNnmy{f>=JV4`8&x>Kn|P61%g(AU^6w;JyRx2e80yXM{n9 z-Z_Oe50N#1XVI}U4`Jz`8L^JY=a((m{zljW>_I_^gndumr2{E%$*~Bbou`^HrYIw> zbAMXXM$F)h5W}4~w^H)QZcTKZ%p}+`mEUjb_6;z>TpUXFT`1}1sg-95I4+DkqiJPH zxDp;@N6wxY^Kt(s)Ue$s&q$H9$AX>YS0Z8)M@O0GC`si&JdYQaLN&Rco)vAAD6N@G zEdd>5VnG|dy^M>au*kKrfW@>UWrfX+VSyL@Se(*kt%f4j63oX7jiN=3eK`#o#HrOu z?WZzP;jrgbb8IJq!<>O-J8L;=H!eO=n36Pc4F6;AE^DK zxmUsNVgMK`MS|H{x95Q%?S8KPnPWVG9FctMrChPZotizyLbb-2bJ4Qdk`MQ?(-YFs z2dAG0YxU49h@G6R=+L%=zNfIkO;S%D{hW`#zea8q->&<2XE^XIVnZak5A?EGh6#s* z#BR0tWF`4FuoKMXa`{5sKZ)@tC=LO)9^4Vnh_SYC^Su1Tv_SfL>zAJcE)4VR9_{Hr zTrP5faERsp&aV9CEV)sDxmVc_*EjZ)rB%>!-ae0m&oJTPsqonWp=!VRaQ^IU0jz#8 zMv}^;wB^pi$5S=yM=-J;jJNH#R{V9CfBeKu{68k1!pL>QdG|9!dIYxsLj3O%WA=M| zuymg zuAy90+;x!`d6z$k$;Ip0smZz0B~#20id!_(yP!D{>6ZtNbFT*{Cwn}BR;tt+iZ&vq znCMl1-SayX#mKYSh8q8dv~^5!G|^?>Aa7aotzC_|Vg?N}3>!7vXK8v2qXH47Gw4L* zu~9M*y^5#;2|q*x>O6l)F?x~0g)HcZ z!bn_+bDQ|m+ek^(ZZJgJu@!h*ClhaOluBhCheLAD?3h{+T<4DM?O{OM*>o~3IR4c| zHndf~zi4lf!IbV(%`5fs<}w9~h`dh8)xd??S4dqQ(@3Qd6tprT6sue7YIQN0(EBGx z8@hOSyY648##NKwnp}H*%B33UTlA49 zfb|ICiGYalw}jO|v|>&p4Ut9uRP!aM8-6E4{)fP8N9vaKoP@lEJf^@) z*zp$|IpMxVD?{!;4!6PnV@M!bS1j=#{}D3rzek*rk&%&+k&%&+k&%&+k&%&+k&%&+ xk&%&+k&%&+k&%&+k&%&+k&%&+k&%%B_!Gm=p4IN6YwQ33002ovPDHLkV1hUojkEv& literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Close_13.png b/graphics/efxdragon/DemonLightBg_Close_13.png new file mode 100644 index 0000000000000000000000000000000000000000..8313f9de742ced5ede5c58b7b40eaa8f47ec0ef8 GIT binary patch literal 1898 zcmV-w2bK7VP)Tf|D<9;v;|Ym~aN0t;_|9B3`C2XX^6xp^Dos~d#-rO6;~ zLt3`tI$mbYHL7L1!Hw>E-tvz4QGO;7;sA3b zY9H|qjx7I^ImRI5v;j8_6kJBsJ3-D{Si%O}R!9R6N3#=U%Beg!=CkMZphByQfcQxxoq^A_*O0YHHb_gkca&(*D=;WWv_Q=L5u;d&HNL&dZI57Zl6^o2 z;+T8wz4e;xiFv_)yjh8om8eLyQ1H|h{L4))%yk>0;ZU(8JJ#nLIacr4gy~{PjmGH4 zIO6=4S(HLhDg|b!-=!!{i5%#6F~Xb{FsQ8pMasRkTm{h%L`JQY@$+2_MYp3&u%y$D zk_n-;2j8L=ORxi?6M=osD$kg>8V&?rVh@Q?qJTCy>{9&@GQ+V8fx&6zV4c#>&18Ni zikWCP8k@xo2D?$SEaq7ms#-R@NHAP<_(L^3k<$G!61V$3rQe;T;ULSbm>d?> zZka`Soi->t)nl~A24pG}PMi`rYv_unp>U0fcoYz{;4}PI)sUL~5}-avkuE=)a{#P8 z4#eyyZMH~U^6`zBL!oU&ux_Dl>i0X&daPQg#f+3B9#{)t*&#U#N{|)W(p6Js6i5q@ za)MJmB3AlP_2VS($jaAXcH36+V?al`6|W>=QD+;;{lto;A66ibF>k?G-_Ya{+H%s;$dBL1HfTN`>+{tz)J z@`0!=|3%`^)9UXpzoP%1z_BmRaX%xM9rPpk{yllt2lD7BY&dzIh3*!*lL{?s%c>hX zXwN@!sQE?_&Bd8}4n=i6hzrj-3P4H1CAC+}Kb=zsgJ^f>0tgr6cTDf1x{c^TC$Hdw z>Sc&uS|8OgGW*87+cx(oyQDD7?RqEO(_*r>Pi)Y=%Kdgy3GQ^1tAi~UPg28RlCbHt zoT9M; z%Y7vG}LYHpo8UCvYTzfV= zm#`ZPw0V=2*10j+)h(7Yez4{;L%eGU${4JVO98Q)qPudTCCM+oH|p)`lM$@ zN(16$#!aV^>VDhQayvh~DNz^60d2&-O4+E5)pHsOBcO8F!OH-?!#z>&BzFWGbyJIA9_Ul26UBPb9fW&|NM@Yo~9&tiKLPA19LPA19LPA19LPA19LPA19LPA19LPA19LPA19 kLPA19LPA19LP7%IPj^b;dsOge7XSbN07*qoM6N<$f^;B|Q2+n{ literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Close_14.png b/graphics/efxdragon/DemonLightBg_Close_14.png new file mode 100644 index 0000000000000000000000000000000000000000..c109e950ba08b3b51f80b26cd4a60a9402f94f2f GIT binary patch literal 1949 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 literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Close_16.png b/graphics/efxdragon/DemonLightBg_Close_16.png new file mode 100644 index 0000000000000000000000000000000000000000..7372fdd31783c625b2e20192736b79649765bc3f GIT binary patch literal 1884 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 V`Bbg_2dV%7002ovPDHLkV1l+b@?8J` literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Close_2.png b/graphics/efxdragon/DemonLightBg_Close_2.png new file mode 100644 index 0000000000000000000000000000000000000000..db1b176fa908eaab7cf817dd6e86c2a26bf881e1 GIT binary patch literal 1906 zcmV-&2aWiNP)87UE@+><@P|ofq6h4zyfT*@VQc_ z`sxHRpcioAS4ehues*TLQVaxeQtVgU4}bQXnVsLIIUEk}r|I1|K5Xv>hn~@SEZep% zilV%UQ5S93Z-(vmezcgT#{=Wz_iOm(9x;b$n#OT!S+|J0VJFF#j+Tg@p968xE>@d8 z(2nC<#e9_-i4Tr=1kM3~#2c%<05ks66dYiDQZ(b*al z-jR{P&W@J}1FV^?h-4)v?jHUG3ry4DI?RL$qtMpSR@b%Vgsr{NnpSYNXxpyq73>=; z_j~Z-+&gNg{9{b`9;`B%iGfPHEw;3cB1LaPYL7*mz{1-J`S+*}uK!MMhbIO(Kw)b% zt8dbc!Ne6T?rEALh02+O?cv@2VXNTi4T?g+v~y;LB`x#qv%`ti1$`Humsn?EMq5Ex z={@O({k{M{0|8k`dbp|NCal0|SG^AgBT_|2Hk5|0CF24; zU9oCr6xCZ{rn=5LP6AiX>|zUNnw^;3s0~g(m4Ab9V_Yi{wpme{Un|nt6k~ zrN3-+UQixV;>9-HM+ug(OKW;dc?-#vEH;-^Ys>~NYZR{bY?{|wUhFi#SzqvRc(Ey@ z>lppMM#&zHY?dzAdzpB()U4rU84TV6mblXaQkJvjR483=!vyGEep$F^XMB8<$IJ+C zLc)q}S0rvq$AI9LQJps-d0_6io|1Sq`G{w$g!gtLbQX}jHdJh}^cqN&q4ck%?rv3z z5JfFFw5I&+)?arKfNCES^&R|U;BU~H`7u&Ul@?;X3k=B$N;8>m!#ZrZK5>PDQskZszcoS_$u-Xi=@=!OB%Z8`0VZ$Xb$` z5$=MfB%|mDj1$0;ZwJ^O?*?c!Z1j|#C2lGDkSlVuSp%}qJHKS>L)uTH>$bY?Xz?V9 zD0O=w!d#oz6H91J*WgMUfBp42!kjo+Hn?c~s z`TUi5KoZlti+?irbpHL$Z}LlA=99PcXJkfKv%g+=!&uk{*%f{{Uci^Zv;8sjbj85a zPn$gma_4UapOU3@R&t-|^6BO(SROGE7+tp0>;FrfQmdNeqdx(e_;2Qbf8cpIoN)Mp(&H#vQA3Y(x53eT4X$w3;#LjI z-k7%f`!Ik9P($J-? z?6mRlJ0DZ+U3fxXtilMg>XTR#0fhz4INUOk)1s-x%}P9)=wo3q(uV$6K_4FGd!~_e zI#?V`c!!L_ZziaNfD1L?$D|QzzFw2Vny?4%XH(IJOIt@)Qu|WJcAe|!E-EFQ*k-Xn zg&Uy}k;B?bY%L327u#8C-Z~|B<>%wJmc6x#iT@l#$o!gRWwB(3QZFHdz^33UG>;nHZd_ot@4gZJ2h&l(6F% zUPeL7OC+e_wvo}$uybJks=?5K(r2vuhkMA8ZrFi*!g_mGUC_zQO^mS7W`S=MMPNP2 z2VH?$ZLlThw*%S%d0)EP#8+!S+am0W9N65rKk2oVEBO@atBO@atBO@atBO@atBO@atBO@at sBO@atBO@atBO@atBO@atBO}A(Z*zM`C9<8Y^8f$<07*qoM6N<$f~GL2_W%F@ literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Close_20.png b/graphics/efxdragon/DemonLightBg_Close_20.png new file mode 100644 index 0000000000000000000000000000000000000000..4940679e5ef8733b84aa21e3ee9be3eb5299e39f GIT binary patch literal 2488 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 literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Close_22.png b/graphics/efxdragon/DemonLightBg_Close_22.png new file mode 100644 index 0000000000000000000000000000000000000000..102e4d5d4d10ac87dfddcf722a91a27e26794b17 GIT binary patch literal 2792 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 Kq+O{A$NUf6r=Ru! literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Close_24.png b/graphics/efxdragon/DemonLightBg_Close_24.png new file mode 100644 index 0000000000000000000000000000000000000000..b18909e26e129ad8a615b22a74ca684ea785cda3 GIT binary patch literal 3145 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 literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Close_25.png b/graphics/efxdragon/DemonLightBg_Close_25.png new file mode 100644 index 0000000000000000000000000000000000000000..1932d401e0af4e87fae7486763f04dec65fc7c8c GIT binary patch literal 3358 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 m`(M3a$tQ~hC z?P2&x+Y(v0UoZw+@ZuP_mPv?7?k-GlZ=nDtaBVf*KMHeYiPN&}r{Of}ww>*9GGd4` zWt(mM`OS6f$t+SZ>)_#>nbhhjTBj5XWU58$7?dfJ{!`B)06z?9|BfWu1Qt$>W~+ZU z91}|S+kJa@auVsxnyoj+n_wQquB_^oDJX`Jayna(b2EC*cvC7jL$+V@o<~>JNG#Nk z6=8=7?v5-_yzY>ez5K9xslC}Tql6}|yH_y32*0aq-d_tBK1_~ubom{a`4oU+GR4=N z*lZO;uQ6$lIpTRGYPNon3LW;FC)A-g1>Io6Ux9cXT?79xWe$=rhbR|QCkeF25TOO016US5<%h9b~R;c zk{|J$LJYxJK`4EF^NJ@i$F-a0Nm zV&It2TCM)I>TZ{Xs9FY0@Wq$!*HcrwbsQT$+q<>)7`}+6sTww!a3qy0*eo z7ul-+jH*rxy=7PP`1N}J;W1yvDhxVMut_2hQDA5&he3N;!(OohY_xruomAo2bo~|o z_2qu1(eID$JK5?Mb(@UB!7g&n5~iNH^)y^T68BtmS~>VjjKgu1dB@GWQ$pUy<-d|H z+4 z7vpI(bW{wYko+Voa?S9=xg7^^9{JG)v}_nBTH(kJWGP_G18u+Dazml?{NGjoW>Hfg z-MKhDv;|SIdYdyAHUdoac-DqLXXaFbe=rlTf8b^*`$9}1V1svB75T&1%dE?^w}IajGa zGZ8j0lGPatExBOsm!*7wsCvJXY%8f%5sIdK&`rSJ6X}Fi+NqyjSGI(eOkSeZ%)xQ? zy{TCC#NfO`2&8n6lOMS&kYAW+GVOCS(gqWJ(RKG-lRF9m1&U{ z*ET%c`B5RP%D71YhC#|V+IcYjN=aN0eE{S_5vFH0yo`43;v5&-$CtBJkbU?&*G~ z8#ChXSDSmvt!ohD%Cp?>f3!%>HE*-qYriisSweiGo&uWn{bbhlJO_7jr%riccy2$p z>4n5nR8w@W<2s*+PrT8buI{z^8)A$Fj77rzz)??OyDGslYH`H#B4hTY zqHa@`hH$M~B~^g00;8E>4|4L(Mzs5~XcL`fcG>|V?rf>LG_n3hq|1AWQo6nJ!G@T| zPhUdrh1HRgr>(!${;W_kR`6EV!63o_r`9P{Ul(D9A2$AzU5C7>-;{`pIN!@3ClFuj z{KfYkh@|jW`w@hON$?6Ja4DMlV4?$e`gg<1SUexFT=T8V?Q0`p%L?K%Coa= z8`bkR^E1Sd1fq9}?v0Axa;p$m;F;nkBGN*xg<7O% zVeg`>VV`W%+g;@DXMJ+QJiY5iO4=tR4neZmm#%{}Eolcpo+L-$%Z42q6@YdbC}Fvm zQddFw1JNMnt7t4>BdWbX=; zn65uvH{tfcz@E(yBpuR(T#A2V%cd7D^*7QR%Gd+PX%-f0)CDT&GiDHt&Xf-+jQ>Lw|eqsf_xR1 z4Q@Yu@GiIEV9U}sf`=RI7Qx&qJi;E_t~Tmvk`akgGO&8n^&xg@4stb$HwWWTJ}wD$X#zCM&$+i3P6tU+ zGG66IZOtV7$DuJ9@Bv?hK(j}C7q1tAd9>dNIa}Et84$c~WZlU9>|GM<#nwf~_L20% zadGnr?+Q1uqR?o)1!X{uZw4*B*;I)1m~X;GYF7B_u9W9$s9$&l+90V_-7_BDEL z+b=L9ab~4f2_SOI^7dy=k&#F6; z4=nxwSqnmnx`sFyq>+zC=YQV=J-rc9Sq^2Xej9uEW0x{GNH){6XKqL6I=2Tyi;7>t zNT#f8rywz2s#Wmx1U5cWgY`tNw2EN31vh?TmmiOt{#@M4{KM05ee0AhM+6C-_QZ9?V z&2H!f)w-p*#@rH}^^H`fj>Hz3Qb);_ytoox582gXfT$=YE*U^M#4Eghf^lAQ&7Vq3 zOFm3x6v!R-fJ%9V<;Hvc&FL2QSJy#oySx_fNrN0~y{!|)b@??{N;+A-4v9RYQ)j>> zjoV(4!}?6^)L$=pF|8XDwm*R1{v!=gl TU&_DZL1w6H_NeZmOWgkenKf3h literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Close_27.png b/graphics/efxdragon/DemonLightBg_Close_27.png new file mode 100644 index 0000000000000000000000000000000000000000..c73dbb769c3a373413af91ebe9449167ee2c54e8 GIT binary patch literal 3064 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 B1BL(q literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Close_28.png b/graphics/efxdragon/DemonLightBg_Close_28.png new file mode 100644 index 0000000000000000000000000000000000000000..9413ca737c0ad187baff36936cc3d0b8093d1e47 GIT binary patch literal 2586 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 M07*qoM6N<$g1zjwbpQYW literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Close_3.png b/graphics/efxdragon/DemonLightBg_Close_3.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf2208f7cbf37cc6200115a965db33941949d7e GIT binary patch literal 1893 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 literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Close_31.png b/graphics/efxdragon/DemonLightBg_Close_31.png new file mode 100644 index 0000000000000000000000000000000000000000..289085702e3a2662ed88efe42691843f380c363c GIT binary patch literal 2280 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 literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Close_4.png b/graphics/efxdragon/DemonLightBg_Close_4.png new file mode 100644 index 0000000000000000000000000000000000000000..286db15c7b59b851c08c7946799191210f519ef4 GIT binary patch literal 1802 zcmV+l2le=gP)Q5^FPCtc?7&W9ryeF{dRjdA(r;v zYV;T^`nGKsSK1}?_mhM5^Xn(EbG>*?YIF~$sdhnJ%Pq( zYNasQxeu(Z#4vY~1uIQxbPGJslV@Qx=^iw{1Kx#lEut2*-7t9BfRZHzJ5B8MleGSc zVL&iv>7x+9owINTZW8m>p7R>!fqzYL7sG6U`Na0d$X;3Aj8lo&osArQn}>VGCSVT; zm~9Y(BMUw29lJpYOS5Lgnio%TOGmhWYqJ)yOc4d%ZOPD{l^vU?T2(?o5|XIl4+%RD zMlc~;nbNNpie%i1#4-j1GiN$3At5BQQKtohUhtBA=Sn(JQwXz73>6m&CQ8lANF%wA zb_pN$F2S^Jsnuz_@Nf0ci&bJQ?KdI9F^#9A6_wkW-acTp9 zKrfe>E=fkUxD^&jZ0(h9++y01($*}lWHIW9Kt>jBgcQ6m_H;(aNLgtptUboY=qQtk zwQnSKO`ElGy!m3{XblMp`AeB=CWg!vt?#u%X$hHVh&|GG#JVIB$7Xcl;wG~oayWP< z(y~^(EKdh{9twm8_X}$JYZE?$)}nNx=1o!zBfasz*qU+oGMur*25B3?&JQTQ32x1i z+CQ0F^ogETy3Ld#Hg;{To9#f{;twYU*O!g!%}3vvRwEO;&kHqsBpJeR1CX^O&mW=v z9u%9NKyc=Ahj+n?T_uVwUc?!|*p>iKowpxY> zgM!3vwRk@gdpvn4V*lNV6~{q$WltDxUJ$xMVgkK-dHtSgk(Ac|{6zS0miTSI{{~3k zy3q#~oX^4`miueF>`Qp^BEe;91}*oM`^GA0Id5L_a7R4TN1%Q>jzLK9XiKp3|1Q;jc4M7=S|9b3auuCz#CG;Ez@^Any$2^v0wv4m;fcD>w0d)6=}jZ+KaK4RF+o7>b#?b}q2#~C zqNDN4G&*)Tz@H$h`uP2g>08;>8@#Rf7LNVNcMMyYFLFQ1E_kHd?wucXsFmD_YxKfg z7)Vidnkq&=PFU{CU@*mkA=v_`Mmi+&?V7b9jx$y>MLX6>n$ zlc1K3J{UEgE@_G$`L%{74zIA}yEBS&AL{IJP-4=cv2@7fg}!Y>#DZQur*V#yUy7L= z)tQoOfR`3N)piDLbB7wawhuFv&n~xB9tPS38}RTy2x8iwOO}o;px+1tW)`lh(dB8WW2Lz+d4_wTXFCt>l?GZ8OU{ zt#RMx(Bxi`vi1! z_VR}m>H0V}J2r|fnO#n}3KxxI;8i$qCyd(hJ>4EsdINr__?|^)(kzW&q_P?Xw zR<8W0#Oyqqz&@P2h8`6)GJia;R5)ajr#*Ouum6trQD}c;-%l$XfIP7%Ep-SyRib$4 z+3}orjoi`7acoP;X9MdeBL3q)LLvV5hzkk|3JMAe3JMAe3JMAe3JMAe3JMAe3JMAe s3JMAe3JMAe3JMAe3JMAe3JL&!0;0aY;R31Q7XSbN07*qoM6N<$f4iEYpeZ3|FMe?I^fP05$ppL#onB-ePMjU$8dPY_>G^ z2Ml-FRDrh(l4ku2$;{mM3}plfl5OTRqNL%R`+o8II9dJjyKz`j990|W7RD}q^ukt%1b012J&u0-bGe&Y(mPs8-b$k;s*)Kf;e;rpW&YNwTeu* z6^Qj2P|O_Zu!MvVW|!~Q@|C7FhST0P2A*$Hm~)}vvd}z@{3I_@ou}x9pzT^TWnDQf zQg%|pujVgxV#OhZI$>W23B+P%|BX|&tn&Nm`)SP=>6U(RZUfw)lVuL}F}EklQCTFj zH7Z?)#dJqbJ7aN$$0b_`8CkeiQt-mm(-S%-%4$QM`6Lm-sh244wN$mHp3%+LIB33< zxJefQAdN#fIu+MjfnfR>Pny3`|!7Sx2|F+$>Sn7AlaE;*O@PutFW9IUY4hg zn@{CPDj2G8U%7)^E8T${G_SK{nCJ~(p)_ZEEP;=z!8H^@U!B6mUUeQ+Tvr2>MN(-! zk&4*ZGjH7?uRy9N;I8C|<=H_4a)Xs=9GEy<_nJD75JqT#yk=}mDZhr$bRh5nNSNyijMuB*&<7d&V7(91?%4$0skz zcZuo%Ma;h)ksI61)#!J)IKKzj3<&}B>i*)B&_>b@*FQ0y4gNSB-bC7W2geJPLp=BQ ze%ZJ2pL-2XQ}bAIUxi=1f}ZpIei~|zz~ZUjK0o`PTm^N+Z*l+e>2vravch6KNppRk z^OC#apC?YCfQ5MP!*lJ-4r{e8-~ZoXZFhAqEd5VWh`&B@g|W&p`D;9l77z{L`2Qo~ zNb!x|w_>)4kDl)H^Y4)Pd~EyB{$k=9^1~M|(-hvT5Mcp19I3s<#AM_Cm*;0S@Ezm$ z{+81aW<1CTDU2*1x~GAQ=UOo_WS+^Wz5ITdjQHSF&2lPlLaq}^#kOp(;U=snPx z7)k%^mZx~*iY^=341Jr?j0|)>@4h%@pdX$0Jkw!3MQ%)G}heK;qs6 zfL3aT0$QP3Z6PCdxJ~CFoeJ6Ed|UFk$*44I(uWV(4B88|A()@yo{{vR>+I6K;>{rAq1wG6>y2@F#&Hz)AQZZ--$cO^1;0=)KAdFO-;_IzMlJkRfy;3sTfc z{2;GR61v}^S4wf?m)@b#yF1{&Vcl0FG(bqKQp-#ZUdB#ubCh>a(LSh-(|Ft;_Me3K z&##0+{QnUb6ciK`6ciK`6ciK`6ciK`6ciK`6ciK`6ciK`6ciK`6ciK`6ciK`6ciK` aMEnIVu)P0nj3yEQ0000w;0W=lycE_SpCfZV!hC!q1;h!ug+Ppe5Ed;s#h3%OU*g0<8z}UJ38x zW#kR4J77M%`&Vj*>Y~2Lsr6mJ@3v)LgQ{*(UBU*qBTkdM_||9m zJr9ztmBb_k+^4iRa3Gl`g;&7a8P@{Jz*mFeYwzB^C%bS!;NRkPZGB*LI}$8ddaney z0RuONR8zOF0t8yJ2`B;xj+8to)wj`TgV%S$sYD#^jt0S~8za0IwI8Ad)&{N*5{V$3 zOhfc6I`$eMtQBiUtkdGL>J~mzT(Ad*!wL!ep1fO;cagQKjFFY9MWF;FA(6U`zerdV z#37F`qW$2!Qe?udK&)b5rkFX?;Rp#q%x)AF4HGnqm+X6Pq-!cGoK;#oh~k3b=Ht{n zjd3J5iO!SsLQuCgn$i_Uq*0`V|C+Z{#EL@*RswJMf=q6o_Wy9kmc{sa`unuzO>$*8 zJhlN|(9$tS_n60%;;1Y#vNb9_4~OZAF>T4>5|0~QA!KCXxsrkoT5mT~WT~>+Q0JIV zon(2ZwV!M1k{-6kLGz`=ReA^jWjv(Q(m>~m)%Uea=?IyqO+C_}n$SFA#c;kvuBh+F z%C+EH(h+&Qc&5^_G`uWN9WS4%k<>7xaXab$cIE+c(0o2BhKb(rC$#3#9Sh*2Zg2~Y z(7lVZ$5u@q)LfT6v_({DvJ|ngOK;si?LZ8gh!h+RAbadgL(jzFb*HE&GK3KZAg>wQ zQrfQ}R1*lj0P^jcn+36xvyFY{U|T}pll$-?)>HA_+tEk=0h55&yMOZ%FT7N-VTxl^ zxjyF!M}ovZ>hal2@_nK@fQf&S{~eGU$Ia#7Z@9d80@xx033T>!`B`WqX^ZDy7)OKO zce}ShtPUuLc9KCM5RoQB%)(aSW2_k{ups8Yqn@{2Xe z=KP<>qgwV3adp4r5`@+6E=V(ik>#;{>A6w9xxmukq_5(P&|OM(j5RmZTeIaWgo1la z@hcSUQ0slww(FYj1AknE!sqk=6WO^j4LAt2al1On{h+(wo|erUoTGT?Q0sHoRBEnP zZ5C8lO*zUE+T2NUTDNi0-EP%H1A2C*yUmdp9e%~!wc%Dx7RafAE2u?xgTJ|J4ME9d zJanV7Twu7J<9sH=5Dyo(Cm3mFThTzUB5i43RK)3KTgXPqv*A)MWKe?_qw=0hQzefO z)W5aPPS0}UX^wLYb+P&?nMN^YWC&6V_GrsUh-I1?zmM#s{J=&4X@+$C$2BFsEdA_R zO<#({ZL4=|^hH=-$StC}*no%rRuR+lX|7qejf1i)bx^8%>K!I-_yI8w@&+XrgOp3CkhVIGa|^vSQ?xoF zz{inuP8QE})Qu&UOoL-+>CI01V7l20?hon< zmDCkv5cz=3dLe$tuo#$D=Clp6A`5@B0t|qZ=@7Watp`4SlEb z%J*2zPLrRvKgbX!kw%>AD1VSw7YRM@(AP=v;?um$jr@DoeL27YM49F|ze@?c5j%a8 zqr7{H_E}Aw#^XNNe_>+3N&Nkdkcqz@aYjZ)Mn*1&v5Z+ffUYY6$cCHQ!RZ>Op4Txjq_NXREDY8mS%7tn%Phc5H5vi2B zz-c1*0R*^BQW$!LWOrw0_M5#s2S@^f1in#S$7dv#Jbt`{$m|zBeCOM zCf4OC@4vgE~ zOO!;B!_)^e$8cH^D4Jwb#X4>mYuOhH8$;}r3@{*RhKjNrI!FgQX;}A7rG18z-zqUwC3%Q zdFt#tf$77febnt)a)civK@qD~^4)zZ$#nMZSy5IWaaZn`^bebRq(xSrF-#~1mt6Nl=GsUu zSu=Uqcmc;!^NN!7c!HE1l}e_G`8o9*0wO2PXM<#zvC~f*i(|IOhWNM|T>C<3e3|rL z4$ygUaou)Q7TJ_b&8!SQYn*jEU4a1H5eZCcKyG7Y>N_F!-`CLMeaX|l0dks&EmQeb zgwlbeW`xKOJ1G{-&dyf$osn%BUB~W=H;JCWcZaQy?u4ilaC&#IpTdS05F0u2OkzxLX}QI7xoUR3`}W+jQ*|xnsMz?cEL+=Z^%PWXS8U9$jNAtbx?V^-qEqg};u+ zH=g(f7l1|Wd3)ooRQvKCAOgdEv8@X$<#pG(lfR`8z?!?)4aIP*_STgzq^)NfBZgu?yfVqF*7tIkz{NcoRc2i7D5ZVi+O3r~ z^4JQWmvNlOP)}CB%sSB+GZxnB!K8(@TrqQ0V|XDfD&LC{NSZ!x{o{zD`lGR3iP&14 z?1xK0^`w_H{1&K~VxFVHQ9lw}yr3*Hue5b)JB}pu2w$>tc9%gZQ02_w6IHt26~}?LXc6L6e75F z6K$h~sxe?yu=v|B4`C`)rVI97y8wm9P0E%{m50M{{7lr!)Qc(ZCQ(yxi5~tgkuEIA zhFdHg%sk=?r8~2-bA-4}H;9Pw|6a*WpVB2|NSz(?!5*=MZgy^cW-^KZXtu_f3^OvVrB%()(kogL zA}u&|VdVVe½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 literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Far_11.png b/graphics/efxdragon/DemonLightBg_Far_11.png new file mode 100644 index 0000000000000000000000000000000000000000..b8777db840d0a55c3eedd297009429e49a7645f2 GIT binary patch literal 1811 zcmV+u2kiKXP)pJ zv*_3bKv|kKBi3Q@SapkVQ`WBM(9mw`FraFEZ^^L2~W*eDq_VUggRxfNM*Y_e(RJit9(EG|FY)O^hm$hN+1MHE6W_5W40&BQCTFj zH7Xq!(~g{W#NrB%OO6mSvT&`W;DxED2Xsu7)rPwANg`aQPHuUprK&ach&Ef}p!rhb zCS3%8s|(jDFZ-R={-V1w$FPao)Faags0qbm1zFrt7R6L4xuhfV$W6&%UR6n$vpkb{ z_)w0df}s-j)|~E6WaMfYO|uv5b6Nou0A9I=T2k5wEbgu6rnpsM266 z;$ZNNm+wT@yJ1jAr0_O$AfW*{V4Jt%svfC3MLlps7@+|QnvpG~{2D^jfxsUi_nik7 zizSnTvrSypU|T|P;6^)(^;CTKY3m~&p%d_W_pi_Kz?q5-lN_VUlNon7(sKE&9$&m9 zZAG%-GK(nE%r>zs@|P+(?+*SI0?n#=dPp# zu6jD)beUX6YZ+?sjm-x1>`W!Ahe~Ew0~C@n>ymHcWcKvARjo>y9V)UaPG7LGELY>_VPtse_~k zEoqqdq2_i)jVazRez!1C7I|LT(Y&#RlBqw~82JB=0~+dbHOvPR%~lxEfhOWxz_Nk@#(XMJhF%jxJ1< z`V9gS8*!ETND(E815j!)+@$wj5L~pU>on5xtG)PioSlhFhgz!()aq&EufiD)Ntz5p z=Yiz4>G%@jns*E&(RyW4cPegd$|KW+&8!z>w$E znXAQ=PU2r^Act(%I!UG8(y!|WsEw)g-XQIKJom)Nd&Pt}TgD7&vtu5q6oSg!IwFjV zYc>&R+`y|?uHro8VckixCjU&)U3!Hoto&M`u4?v-@9_e&zfOU733b6vv|0UwpDk4J z=8&d_63!`QsCI0+^HiUOZMYId^6acAKpp-m~#`|)>-<*Ik8>DX=*H?&+Y z{BXqV+?yQt5Rah~nbzvE&oyrgC^fo2|0fjUuSZ-^P*6}%P*6}%P*6}%P*6}% zP*6}%P*6}%P*6}%P*6}%P*6}%P*6}%P*6}1@fQyn=IU4;D;EF&002ovPDHLkV1gAb Bdp-aF literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Far_12.png b/graphics/efxdragon/DemonLightBg_Far_12.png new file mode 100644 index 0000000000000000000000000000000000000000..6bd7bdc8bc1270a59b937661e15b03185be02876 GIT binary patch literal 1804 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 literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Far_14.png b/graphics/efxdragon/DemonLightBg_Far_14.png new file mode 100644 index 0000000000000000000000000000000000000000..002f916f239f05a7aa922b386a5eb60349e01717 GIT binary patch literal 1954 zcmV;T2VMAyP)4wAE&Xs0wpdqWYl5RkaZb0P%5}gaI=@Vo%E@IDi zx`AeM1N#aI@c!@sVqIi1PJ^#mtpwtG@8SJ|<~!ostHb^JJWazeoW}FPVJBz-o2F@s zqF5{~R*#R5OGfoe)9&`ialF{4hiUqB{rpP!>w6ML5#O(qqaDZdc_f??uadI9gv39Z{q>%B>bah z8V17#qEoT5u)UqptiIyLF)a|cXbSE~yWFe8-ZKDsN+nHSq zFJ9ZId_f8*MqE*A(q+WVkzN%Pcl5k9ztP^X*~~noR$HoLRgyJxE3Y17L=NeQYnHc4 zyGO!ZyvzD5nmFH8L|w7f0R|LekuEf?0_`BojEH^hB#_Om+;!>fXw(R5vk0q1e4an4+7V2=UGCSg`cHu zcgl2o*#-Eh+(LbVdJHA`iKyA!dsQbyrFFm@9b#oWf^IJj0T7+|^F?|REX#&kle>^} zn}y5=XR%F_tc|g`T?1q_J0FC02&(<3tAbJ8$Q6q5(=Zl3v?cOV~Jw`IBB-`M-{xHn-K*)X?Sa)+TB(=EEvUVT4JANkW& zh#lKU{EjeDyXjhxUvGj&hZ&l_y1jIMduWy9ffx4Wy^2?76|1*#o435g?(ks}?rEg% zM{@&zLv7d!OYZIVl>)~73i7srN0#u*Ub>O3WBfv%w9=6@FS(EM z_1lSa2@D{hnQx#5gs`3XFRUuVgK||hmuGO zEvKj6nT~iW=?H?QZmoH7^NY<`mL0iglkELEhVX?0Bxq>|pRH|;d0*)2RW?Cm=$zN~KTNhDFGA}1f8W`=-8g6rXDw{{>kEl%w6g#7MTQ0J} zY`du`XcEn*jxHG&4Nrcm&l-<%cKu#jM(U5fclv2jPZ7`cH9+_nlK&P#KWvH!WX{w~mLijD zh9w{10}o$(FdN0}sms%zpS_@MKu24kFG;1LpZK}Qo5=fZ%^Og;0 z5fV2|xHJ)|@xZ@&gS!%H9q~;#ec46E6Y5dTPsv+J5%F0By2mD`gZAb|b9u)xo)QxE z<#fRu=_ZJd24vFvVI!gD9l>i{1&17*(Sla4d0lCVJ07k41dA^SWb6wrDJY>3#e#N% zKUHwPVkKsEf7VN?6AuPw^^r*V(tJojy&&1PL5fKz+RQK4)d9OAfql>XT>?~Jd9A?p zSY4p+5|MtqS zRcu>TI|x?{TBGj~F8Gq{iW>e1LH|kAFyg=e)2A67KSfY#cRRVENB%*&>mQPT^Ihk& zINS)meB+5#N~^+L2E>2=PsqeSk2oVEBO@atBO@atBO@atBO@atBO@atBO@atBO@at oBO@atBO@atBO@atBO?Rw52Kw+b3GX43jhEB07*qoM6N<$f()XmuK)l5 literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Far_15.png b/graphics/efxdragon/DemonLightBg_Far_15.png new file mode 100644 index 0000000000000000000000000000000000000000..6fd31f86379d1fd7e83bb5e4208713f138d4160d GIT binary patch literal 1876 zcmV-a2dnsrP)DA#zG{1Krj*MJv42<4^8 zJ5StN8|+-Mokx{MGheMi&TWvH`8|kS!CVzI=>fiZgl3VO~@Cx8B1rxrLnXjo_ViN zFaFRdhZ@uA5ls+v&#v0rMjh0<_&bpL+`2!YAtaKdDdemg1QqMP! z{6Yw7wJ51N*9R=Y94oChNI9g@A>o00upO1VfXjl(z$$fme`kHwX#sC;gEPi#l0q|S z2QH(ZVi9^SUG~|hY;rZo!~+YZnx4=9dvRs%L~l(!WG=!A<7l%cPEJ$D>x9`wKR5=- zCKMcm)dpvvkEH3t7#X+yFetxPs}fR-T@;FpD>F9#}nv9)dC zNj=!!p}Ue>x*#HvtBdkrD`zFv_pL<-nk57IoC1fD{0BiCQ(7ELm>gEs$FfNBdTUT< zv_qhZj>=#{f|P)WvwutBx&fsJ0U=^1S_`>I6%Z|_NJ!5|$O&h|HG&u5$jXPzL3yI? zYaE55!0al5<*JKI5wDA+c&SQs1#$)L{WuY}qY|VE)M-~G4+C0Nfap{&z(OD{NM5d} zc}HGOIeaDgF``2k3vR>8!VI1J$wP56`ZmI2O7qq$hmR!I{**-InW4NH?v0QWHRcpYJjLa;4Ad^x=O0gGN2O5o$mD zj=N!wnwR<&%f_kA4Q3fVG9+2~lnzrd)9J zVF}QOXL!1q#QbQ^I6dHBU<#`~ApY->iGLii^I<**2}c@@!2gpz{QYp=bu;%bcy2Fn zpzm__ff5h?6P+mjA&KH0o#1GFhf)pV#h>lngp~0S+VT%7x&VB9u@r%2p57$=;RFpNK;6Qy+^|Ee6gX&1LLN?lFp zofZwzn*}^wuDAQg+!vMDE?hN8u2;1S=KR(!>Plry(p~q^)|!qQX=kf96{iaWZel~l z#HCtmqq1IaErC?WeqD+^Ol@*^5i#le0wmSN5*7=KIxhXnIJ{5U_7mbB5<~Vprx|xx zoUFSTZdV)6q|1>+sAqQr`@T`j8=$QqkSfx&Qn zg(pGlQk3(Jd3a7FeZ$p3qG4{04ItCxVn``pDt&s_O~bZwA=GO5>F6=HlGrYQ*Y+1E zkXU3>;fphejk|O01>-bzWGXecgc)NBU+#Cg*;{uisqQu{Jy&Y$wZsLZ1d#TxQbzJP z$2&KePPgjr_QWp-NOOHjfB}WQBKGZQe;a)zg5r^gAemj7j`P8Jkd1tHI2;e^?phKB z*`R6$aY`#&j)o|JceOTff9~_^@u=F!%dnpoS$0%6NSo8=zS$p2jfa~Mc(LrNyo%YdnSb+^UAw1;ty4)JA&^k zMLSdRe!{LG#SWD|NPW(Iu9*fB#RONWBO@at zBO@atBO@atBO@atBO@atBO@atBO@atBO@atBO@atBO@atBO@at1Mm;rI`t O0000eB5(l{-N8(h9GsEHhaLqS?7r=+p`F_9O4u{@j+Yy=o zYi(Us6Toz_Sj;Dc>V32B`rYAhIJyO1PrtnoK7Jd)i0@zhnA6EkIvnn?;%hRboR{FGOt3Q_3APLH(*R|UL-#F zK|x-ey!XT{TG^=!yu>A8m)!>B+(ns*-vh}R#v3<6k{;okSGeV^m6{fwZw7|1W_B4i zLpy|fM8e!jf3&{2Yn;H+XBNOu0|VCy^9E}BJuE>0C&?!8vj-S&7~YkmXO60aXKy=a zVK(oW*xF!^unQ?5KUxI+z(flnjbKg47q}aNb=MmA05`-l zALQwUA68a4)D%w-YZ6dL?E=+80A<8w+(!`BfGC|tOQB*(eq0XaSEz@&P8S1eG*KDn zo5y~^1hrTcRb8^x(#%?Eu|eb)fjEYQ2kt?36z(GYc16_V?OhC2#|38AkgQWONgIb@%c$$5ww4lIOfaz6d<#pT(v@lLCmMOYP8*XAXpz}azFWss(2Bf^lp~e>WNBLvrXFqY z*j>pZO+3An2K#uHrPmBsOe{Lo%#Kbx00M`hFulhhzK`6*zany2RUXSC$?L6wp|Kew zsJJseS)C~*1nBJFVz{=T^e7-G_Fx9vKrRvmL`x|W((}#d1QTlnFTjnIkC|f|i0h%o zDilR#R}r|vD;Vz}%*iPps}fy-oIrc8a~GL=kl04*w5y`S0<9=OWU4tC#&Zz$7vflKP^sSfx0=&Cw+|AWT)Uz8Q_QUVE z8|J8Kso%lOp1%$%W8Qh=9sz|L$gc3q|Ci)?X;tif&wZ20s2GQcr&Gq`(#3qi|0bekTxd)#bj6O}HB9e$rm>7H_ zyEv-pJjC!2#GmBQ=Vtxu^|K40#zk`X=XDUm8FwKJ;ZNv7ah(R!ECtMMySkJrZQ0m2 zt)7U!gBE7J*&QBppG8tTW5uxNJTK~&knh`ORaYWgqVBSP_Ib{PCK@hHzN0u^7El8l zt0lUwXd6}1%dJJA>e#DyvDoXeFnPr*3ucmc1%Xr+O0c!*6 zjxljDpkGD3n#gKp?_DHA7q24ROwXehv~U)3#L^{n2d1o9C69<^hC=hfWT`MLWcZ0N zL`l!IT^|uX7CdSnhobyO&&8)0;zv6*6@HSW7Np`S@I$^R*lwn*6cX#rxQP&_a;^tX zSkR%uv#52+%DGPypCif8aCMYuoLjX4c-pd22TvNaKp%Pad6zp{|8WL&43XirtAFKe5pO3*Gu zyq}RPh+@Z(1azWahPF=7iu;0_sBP^Zq_B!B97X}_F1)uhfB#ROQXBO@atBO@at zBO@atBO@atBO@atBO@atBO@atBO@atBO@atBO@atBO@at1Mm-v#v$KnCm0q00000< KMNUMnLSTXmG-2fc literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Far_17.png b/graphics/efxdragon/DemonLightBg_Far_17.png new file mode 100644 index 0000000000000000000000000000000000000000..bf38910099c91bf8b1e6c8b395842466f76c4f5e GIT binary patch literal 1863 zcmV-N2e|l&P)1&h5auhaw!CV$4qynY=IY%o+)D=T0lazxt(&VQxIL#3jP!v3ES3VAOX@7(ZCle~3N{@N`rhUKWC7unns zzP}Ae3#=N-EP(#bJB!BAPBf4Gudb{WMbX^!i(wc6SDN^mh(DhuzSl1}LLgoN@!V2M zN2@}hnHgHgOXS}3W8}^@`{>%dr_gnX?=%jsW-FTpVxa%;dL3p7PVe21;OyI=!3rJL z-cDUuLt^cy!^|XN5rGU4-gCMLYemUzeL0=I9yl$y49RcXmiRdsKU5uBFh)5+W7evt zdTNBfnB0>2+5v6DQtlyQVbU>*ge<8THW1=VMGLZ;s)&y`=_f}CCKfCzPyrmhPG9fZ zf~gEw#kg}-up)X|h5>E4r*REd?v<7Wp-C2m+q0@j!PKyiAO)Fw3#C8}E82QKR{et8 zPev)f4rhi)m!{lAf~TC<;5FdJm8ddWAI?&ghjLM4)>;#=d)beISq54*>jT^Q$Qc!^ zBR+=2#_`64{Ab>AinOym$y+F~QWWi(^^{Sw=O>gPS!nb&My(=S7;)?Wp7hx~+%V^5 zaWe~&yu83!acMfmevt@aWQ7|e;xECrB3>|c(X+AF!K?>9C1$X(Wy1Cett70EJNl6v z_2C}AK)Ip!vH8*MYg@H^e;xv6;b1_;F|*F$oWHP5Q%D{1*f6syJR{AcjN)7Y>COpehuzLGL!O@=J~FXo>*Uf8eJ{H(q*u<2 z&rIuaZlyha-tN9?ea>61oHqKm^@sh#$Au+z8J$yhKD~JSPM`iBZOk`o|2wkhUd5+@ zqp0^!`jnt!-BC&~F#&Gfabnbz+uN@c#V7OZCvDQWc@MFS#E1QxFgEJ!?H^MPXuO;F z9rm5Q^}x>}J_&WGPe1fih|T`JHJj+sSWsIjQ$vz;Q6w_-ZxKT`8Fl$R>teLk`mnXN z|7;AZPiE^!0V`>T9$^0|-^+aCGuv+iw$QGDN`3VE`ZNysEYQJLGMjAs@|S6?*Xk;0 zbabq|+l;I)Y~$7jcHpL}rF_``S$K`bex+` zA*VGct@E(Ez)5#h(DPxioM`MYPzOCsesc@l$Z@~YZS?&1OA(B3BNq7Ro|`$WM-T`B z`}$GGi5j^1bXYP`(ZT#m>s2dNdM7!&0x>_W9JfjCHP%~noVGf`v7rE9C!*jYgKL;Z z9^#1D&Nld$c;NFI6-%I^oQj#Zk&jL}VR0X2X?>6nSHNc~(exl8I= z`YmhRR+@1|k(9%;5t-29@?kJ1HC?#j%HEbKTit!0#Na)y3>|-LLTgy!valB} z1$&-Vkl!1J$OQh5uZ?L@u(Mn;)RYtV4j4S6P&LlZ#J~$DATO+olxu|SFK**4;a)CZx<1lx$ibjNOOqPp_eLR66g6&!FoJCDXIC2o^FqyWG#5~%Rf5MiDK?n0C4>Bc~@ z6ZI+WgJYP=AQ)wkijt@&RCuMh+qYlgD7w?58YjOR zsI1@M1$?_lMRZ5}Sc{ih5k%Egxk?vpVj$wBr3IaJ;;SQmwD+69$jk1JFJUoZyO_xq zMIMvfeTf05iZn0k-4Sv=KW|c#vtZw&g#GdVJEmsh|BN^zBO@atBO@atBO@atBO@at zBO@atBO@atBO@atBO@atBO@atBO@atBO@aN@DEvNHkdV3kj(%9002ovPDHLkV1l{1 Bga`lt literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Far_18.png b/graphics/efxdragon/DemonLightBg_Far_18.png new file mode 100644 index 0000000000000000000000000000000000000000..c52d6e0cb9ffaa758e88815f00ea698580cae888 GIT binary patch literal 1919 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 Qf&c&j07*qoM6N<$f;#HwhyVZp literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Far_22.png b/graphics/efxdragon/DemonLightBg_Far_22.png new file mode 100644 index 0000000000000000000000000000000000000000..d78cd70df258df35b4335e03cf856a2781fb2e22 GIT binary patch literal 2780 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 bp@ZXpCf9NzNJkMs00000NkvXXu0mjf1U;VO literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Far_24.png b/graphics/efxdragon/DemonLightBg_Far_24.png new file mode 100644 index 0000000000000000000000000000000000000000..0e4913ab0d6aef0cb71b3a5ee4beec2cb0aa8366 GIT binary patch literal 3149 zcmb7`=_3=4Wt`Z-|oH-_mO}WXDTOwyhn)*1V7}}Kkm~$jkMD8O;#O4?p!;GBe zSmeILK5i1_`u6)1eh=QS*R$8-H};;T2^Twvoq>UY%gof!=C61Du7DZvm+c294u1u` zXJKdL7g+#hfaVS;z~2Jdn9*cIADf*aqVIA_1p#hO!QLw3kB8h9E-}Ee@vPeWL!P7V=r#&cA<&~0n!HSQvDMG^#Ww8hppR!2 zBdP^}e$U4u!uQr>?`nzE!3X7n;4bkY8f!5v+Bi(-Mz*JM#)D@mzL?Gv4L5IqF7V_!ySkWG&45h0Z7W_!4}W)6pIOB0~U zO>bGZKGUC@$eyOn_#1MwG)Mt&f+}QwGj_=g%&Rc91zRIe_~6?Iz|1`-6dIS1Z7ABK zFn^$Kj5RARf~mWts?ihzJu-ii{Mq4y;gR@TaJ7!3#`_n}R;8_I*OODyWKQF6L2|`pcY^Jv{^|^15?D9BDWDvm&6p>tV=I};roM%Rk9q8F7M8O zku>A(+XV{dk~UK{GkuQA;h5>SU&FKX^mX11oFz&mVg3Y$;gWp8{~o<_x|mm_5qD?} z6L~J9maJ9eeYO1vFIB?(jl+&t#TU2ySZW~T9rHPOeuGr>8lt012`S|vB3!pmB@WmP;t|opg~-zn#vEV=OIwcJ!zkp4a*--qQ z)Bc^IG>~4Q6E>;ggLD5%aI0)?)tq_5haxdciA)!=e{Q93o5mGNwM-16(R2r3s}Aab z6@Qs7t?3{dsx1+UQRdJMjp#6zOUb^sE!_+f&yA z>=qFNPPi_-T3cSi_!BP<)tzM9$1o!2V+Z1*y=w!nS^HT0;u%Z%c$Qh01zZXwv6Z{C zP)NMLyCJ4fEhn^rkF-tyr>Hl-5@_Q}j!cF3Nz$D(cjK-gjN=|nAc8|?4*#U zNk@xwYwK&+IE4`1cDPi17hcIa?3<#DATQgs#Lu|0UBIX+xobBewBVw+F7sO;T%?`G zfaloFAMAGdy7phr_r4?=E8k+Xmw<^A5DB_8t(bGzVS0_bBATgA@AK-Se|{4ldV}j$ zIc(d@oSrG-V;>&^G)^!RgIaONlm@9gXp-)b0Z&C*c1Z#y7{|2mnNR1aHSL#a=y z4C64Fv*){Ly}{9=d+5Z{j8M(Ri$$KA>Ox9@#H(#SJEuE=I{Eo4(R&JXl($-I0 zTn_nR#sJsM=LUJx8dn#fvFCV}N(;~CAlv@RxcSp`%RX4HCRE@-N)xIYJLlU_YOi{sR|IiY77|)KGDlMH0wC0DSXv*Bh`}r%u>&1&f-T60ON*}Sbf$W@iO<_4 zVhT}0->9aJL@Cdfwl2hZMTCNJPTcTb0aUWMWm zvSwmDv`&^MR2q%H_vE5K^e8|E}5VNSW9f$q3zP zO-lc_w)&rLi5Jqa7mmts1se_N-)`D%;4a83{af^aF4grodp~C?e!v(d)AXn4_Y-t_ z|FIPOMh)U4d9N>PW$nyuEW52~nqIZEzrR0WXzfEXc3|ZpBsFKpwZy7clo(PyJf3vGiGV&Y{2L7Uh1>nN^`MCW>z=IEv0Pao&K3~~A7Io_dv`M9$JSy5r=L2j64 zPzm3KCYLmu)f*nZ_n!0uOlk*S$asE3X!U0+G5}(Lmo3d^8vo4H+~bDaR~%%l0oN`` zbn(NmV;>-oH%r%{_Lw*l07klJpK;UAd^Ud>rR2tWgs~7s^tZV}mruExu;5}M&vW@< z_GEso_^lqe7sHKv={9-`9A>eOZ?+y+qQ3dFV^u1i^7$LU(>wJ=Olk>&U&L15U0SzP zV}GmitX%t-uKtV8;K=!65aG+s5j#prqvLgwbP&*@ZGQgP|AT3hnYM3&y5(v7-7PDB2^`V3}9mWI{0T`~Uyc~~XE literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Far_25.png b/graphics/efxdragon/DemonLightBg_Far_25.png new file mode 100644 index 0000000000000000000000000000000000000000..7d144f755f9d5aa6dfd9cd65a15ffc903231d915 GIT binary patch literal 3357 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 literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Far_26.png b/graphics/efxdragon/DemonLightBg_Far_26.png new file mode 100644 index 0000000000000000000000000000000000000000..5d5d58755197a94cb26f979760e856d19d2ed489 GIT binary patch literal 3312 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 jHDk|^nsQ9fwiXh8c;Ed1=L*zV9(2d z#X!xF8aLx2h^XF$hyl`(4pFS&pG!i6XCd3 zDTK^QM~53^sgyF#*8Vitv3pp0o==fw{&^bVv2c^8B8>4%mSW`!in?5dr3lNFb0kDv z*FsE~8^(9$SvQC!Vb{}q%LAauD5krmccRe}kBhhatR!;Kki)uk@zPoxq&gBwCYy5i$`grz?5fYciU=p7gkt#)@F`yP|z6_A1K-$NrwsBzm2J zEGW+v3~$W-nq&x8F#$K}bD>sYKkaj*)^B1;^u7PxltkkjxEcHGDOJCXNfKPrTVyhR_vg(Sac8qj z*ge0Vb6j1%TD*SY6LZRDOX0>S?8mGOkR*q}^^qhCZ8XhXO@d(<=XX!s<;fY#ozGt_ zOb~tcYVndJ|Gdt%#`mMyGrn?1luTdJCoT&uXR*&|R za+1!!wr_?DoJ_x?=EqY-rf&F)(udPmfakPEB0|Ruf3VFO;$jli|7gDS@@%1}szY zu>&4ee2tV}cqEv&0|3)rAjXu5nTt~_%dtg5IW5GYVg)YW7CrE+r0$D&hQ%jGS=-i#%8v5PBZwCAf7Z}RVz)2Vhk3P)1Rg0<02 zRYyVkK^0f@MpyNcsv44?_v>15Phs?lPl9(OnARtDI*{?0(@L<=o6(xVPXR`jsGatA z;YL@Nl6-~9s}X&DN}-jTAR4tFH)Fz1%K~ctIrCYsxa44YC0}*GrV)^Z9KJZW_cJ zw33=UDvTja#s#l5mp{-u5N;?zl6P>gVzZg7_IetpH-CI|^Znhww={3vA;GEU!suj> z>*^K`4cCBOnb6h;lJ_9ju_50aY%`Ss1l}$8=QwusxS1F++R+u=at)XztB%S^^W*Np zS54KVwp9-9yXEp8O}xpmkkgthLgJReaia~lS&toE*vf1sSG@lr(YLo3UdL*RC9vP4 zlJadC(#aC3lfC^Gv_yoK3BPUWVcEgz}AoXvi?XqlgvH}@IN zlv6$_vd>k+t%oaGkkN|kb|w&GHmxvB&Wk-w!w)x%Cdc*0>ovTmvrFdZIh~2=8%(|(&qDCljburc{v9pkPJ^#a`ShR7B2{J3M$ zK!X7GCNGvI@I@y1vz)3~VY7%g9&(8L)D(1|D<<8xgWC}w88;;Qewxz=^xY3%{OFq* zKAlVb55Bp;@{iIQ;JPDRG3oUk$Vo^Opb~x0#wzFOR)TcqOier2P$g}5$m%b#M(;s> z6}aE=cu9@9pk#EBb5*OmmtC==zwmyifoAk1%N?@0%`b69FX+~%w?RU-l8|m-6dJkq z*I6&pRQVc9wup z>8he0+v1~=*L*4|l02x^%#+=6?tMR@dx5v{G z|8-y+Hf-3iVZ(+E8#Zj%uwlc74I4IW*sx*4h7B7wY}l}2!-fqTHf-3iVZ(+E8#Zj% bu)*;^iQiXpt@va_00000NkvXXu0mjfBu)df literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Far_29.png b/graphics/efxdragon/DemonLightBg_Far_29.png new file mode 100644 index 0000000000000000000000000000000000000000..55289b99d7e71259abaf8c4219adf42350a611d0 GIT binary patch literal 1888 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 literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Far_30.png b/graphics/efxdragon/DemonLightBg_Far_30.png new file mode 100644 index 0000000000000000000000000000000000000000..d42b3d0fae65254719b72a27551c81c57cc28058 GIT binary patch literal 2057 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 literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Far_4.png b/graphics/efxdragon/DemonLightBg_Far_4.png new file mode 100644 index 0000000000000000000000000000000000000000..4f38f287764fdeb7002690640a2fceab0f5d9dd9 GIT binary patch literal 1806 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 literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Far_8.png b/graphics/efxdragon/DemonLightBg_Far_8.png new file mode 100644 index 0000000000000000000000000000000000000000..71c0255a42bd9f9900ef4437f7dba2c62d948752 GIT binary patch literal 1818 zcmV+#2j%#QP)4 z-m4YKxD|*+42%Uc?{ru~LI~!yCpYqK4S$lf%5c)V%E0p;R9y661_DH*AIZ~1=PW%t z$-SUKQ`V@DQQK2Th`J>rHadi$C2)qX$mIHIkS#0%jjR6i^nFhUBwMknRGM8O}{WfbR!n^a7H!K8MpVs5O36wH-+I-_HvtTa^IJ4S9Mma3N2BYIdH z2hEofPtrvJGbneQNoGqUv;0D8Kj^LqT0$nWsYj*_u@XrrwmxGS*>$X0dGX@0*p?&3 z%knh&1WAdimG#rt{E)di-SMC~K=Znn3=_TKtA&@hi2|#Z`=X>mxhkxQSNt3_Jb@>h zirCmAXWh_=#L5H3HFO0`n3UxAhrRJaKrviOtrs>@XLbm~H$ah>`ykfvDbosgJeyFA zodjD7IbrhPY-QgXY#Vn6xesi%LGs68Ms9t$A@SVnCBKoOl4DT0nNf!$8`Gbz9@K~( zE*gE}%jFYuL-W(Vyy^y4g&1c( zhnhLLeI}a#S#N-UGEVV1rExXVf;KjfsSFqm zzB(D0Fo~IhYm!doQGKKcl7wL>SxpbgX9on2+PlHLg2}W_dHY()cjBd7uQfm|u6llP z22$q&BKJO!yv`0*w2(jK752onSl*;Va3dvEPy5G2K8PtvI-DO{sErqhm7v-q{n0a0 zD*{E{w|dXjKpcm_upk+1Hz8%L6|=Gl7;K!SChsJiL2iTQLEaf>&5$M`QFh{3I3_LO zIP}(7(8`EVF0Ro;1|xFw5$K!SkQ;tan# z&}928hj@j3JnLl}q_L@7+mj44S7Tw=ZRzYlkJpT+SpUVrdh5?cm)VF!&ZcJ+BdWqO zbX>cH_;jla;q!HMjwN7;kysAey1 zN{QZY`~lkvs@^IY@@3m|`zNH>55;b1A3Bk#Af)Vq?#Gk8HErCDq$S?lKb&c9YQKED z7gPP1(;D*5Od1d?>O7J@Z;1SJN=xmg+eE)HvB)bU)cCLe35EFehzkk|3JMAe3JMAe z3JMAe3JMAe3JMAe3JMAe3JMAe3JMAe3JMAe3JMAe3JL=L2G-rOzLQ)z6#xJL07*qo IM6N<$g8WEcF#rGn literal 0 HcmV?d00001 diff --git a/graphics/efxdragon/DemonLightBg_Far_9.png b/graphics/efxdragon/DemonLightBg_Far_9.png new file mode 100644 index 0000000000000000000000000000000000000000..6a42afd252732b51bb7f0563f662660dc624299a GIT binary patch literal 1798 zcmV+h2l@DkP)duX6C+Uca;>5)64-RQRK{=`jYqyl-!s zuqm(}fcgC9-%x)*;-D{3lFE@1^{#8?HK-VicM)7$k!t}XMLVf$lr36_C5?7!#p~MoX9afvOP`bg z;haTaEj#8NA?Hh&3ICent_v4Ta%Ou&WUoALk5h>_oDCe)svqGqHUWfvf`elbII^N= z$+2^QvNUT(to`B{ZtaNhv-ZRs85~j8yU5Cp1t{%`LJ2s>>qgY^5ABo|;%GIi4rfxUm!=G;`B9Ija_esXCPGJ2TQvQ)Z*IcF;gTx`FUW(T(J3zkfT_ z9B}@OxCdP53VS_mgqV-$fW+Q_(y)8O7i4m~8)O4wc%!?Y{vXzSnjYyFTM5Kj)zoU{ z(#vQTSK_2JyjbbDn09n&WwVvvsUw7pELsFC`>*` zwJv?*RrgmQD)Gm&!JF9gxF`h{LnaQd7pC{<-VkwW*tBM9DZhp=X+X{{{0ijzZDgAX z`-+@x;;IDO5}?SbZjJR+d=EXnkCUdvE52!)SI_al8xs3t7<@S#evXvyq4kLizKBCS_fLM= z4{__g2B)cby*#&n$1CVLukZVz&OnyemkUbeLa6!=-aUW5T!JK*@KIQbku=sfsataA zyvDB>_hrop7UHgev*xaINsFYN_!j69+YK!J&yk70FY#@R$1AymzsKlH5EjI6|2D*U z<=%O^&zCXRZgP9bR|k=$`-f<3$a4=Qysv=Cp%Z zPwu~lk>zduOqHfxy}G7!5K=uRKv?H)q+5u2Hsn|{*(^(M?zL)?$L;+<%+-C$coWn-g8=EbzqEmM5$i;Tmrg*u1^TL;fQ zOs+=kNWE8GOl&InxyexTHmV%XR5Q^W9{RLUSC3dzA8Z$)hT9!AGt|ngnzS25VvIA$ zpAJ=@N%w)TxS==>FjDDX)2lUj)erS$?_4xix2bS;ibm>XtEhER7o(<~BzMgG2&1PT zRkzE@66*9D@px3CwV)Q17B6fctvp(FsrgFt&?c=LDZflHc%P&5Z0bo=X=~UeV zUf|FdVPqkW-_y zl%ny31Vh-A(Qw`{Hi0M@_fs2FX=4Xzoza&v2hCnFL)z@vjZ_T5v7*%xVOUEt(XFE= zmBF@4%FjC*_OR|GS(EefV(3w-u=3-DvM9+j;g3TBYZ&S~qqM3#3 zZC5hLT$3o7@EROX^eQQidzut=GVO$86r#r{PQ}!czR8g~*f-77Os~E~*|dE~I|Aa2 z5#UT1^Ps&$R%CfnU!Xk2Z*PQM`9dR@qE0E%`=Re}4F(HVUn&1P`X1$lFOZm>IzMlJ zob5gBv{aYG7qWy_=Z&%O&$xXY}ytDYA+@vUOdUo2>gXAAn z$7ww71M3$iR(WMa0q_3$pOA^aA8|%TMn*> 10 + tile_2d = np.array(tile).reshape((8, 8)) + if flip == 1: # hf + real_tile = np.flip(tile_2d, axis=1).flatten() + elif flip == 2: # vf + real_tile = np.flip(tile_2d, axis=0).flatten() + elif flip == 3: # se + real_tile = np.flip(tile_2d).flatten() for y in range(8): for x in range(0, 8): @@ -65,7 +79,7 @@ def create_image_from_4bpp(img_data, tsa_data, pal_bytes, ntiles_x, ntiles_y): real_x = x + base_x * 8 real_y = y + base_y * 8 - pixels[real_x + 0 + real_y * width] = tile[y * 8 + x] + pixels[real_x + 0 + real_y * width] = real_tile[y * 8 + x] img.putpalette(pal_data) img.putdata(pixels) diff --git a/scripts/dump_img_efxskill.py b/scripts/dump_img_efxskill.py deleted file mode 100755 index 7bf4f949..00000000 --- a/scripts/dump_img_efxskill.py +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/python3 - -import sys -from dump_img import dump_img - -rom = "baserom.gba" -ImgLut_EfxSkill = 0x5d9370 -TsaLut_EfxSkill = 0x5d9330 -PalLut_EfxSkill = 0x5d93b0 - -with open(rom, 'rb') as f: - rom_data = f.read() - -for i in range(11, 16): - img_addr = int.from_bytes(rom_data[ImgLut_EfxSkill + 4 * i:ImgLut_EfxSkill + 4 * i + 4], 'little') - tsa_addr = int.from_bytes(rom_data[TsaLut_EfxSkill + 4 * i:TsaLut_EfxSkill + 4 * i + 4], 'little') - pal_addr = int.from_bytes(rom_data[PalLut_EfxSkill + 4 * i:PalLut_EfxSkill + 4 * i + 4], 'little') - - print(f"IMG 0x{img_addr:08X}, TSA 0x{tsa_addr:08X}, PAL 0x{pal_addr:08X}") - dump_img(f"graphics/efxskill/efxskill_{i + 1}", img_addr, tsa_addr, pal_addr, 30, 20) diff --git a/scripts/dump_imgs.py b/scripts/dump_imgs.py new file mode 100755 index 00000000..65738e61 --- /dev/null +++ b/scripts/dump_imgs.py @@ -0,0 +1,28 @@ +#!/bin/python3 + +import sys +from dump_img import dump_img + +rom = "baserom.gba" +IMGs = 0x085d7c90 +TSAs = 0x085d7c70 +PALs = 0x085d7cb0 +LENGTH = 8 +PREFIX = "graphics/efxdragon/DemonLightBg4_Close_" +WIDTH = 30 +HEIGHT = 20 + +with open(rom, 'rb') as f: + rom_data = f.read() + +IMGs = IMGs & 0x00FFFFFF +TSAs = TSAs & 0x00FFFFFF +PALs = PALs & 0x00FFFFFF + +for i in range(LENGTH): + img_addr = int.from_bytes(rom_data[IMGs + 4 * i:IMGs + 4 * i + 4], 'little') + tsa_addr = int.from_bytes(rom_data[TSAs + 4 * i:TSAs + 4 * i + 4], 'little') + pal_addr = int.from_bytes(rom_data[PALs + 4 * i:PALs + 4 * i + 4], 'little') + + print(f"IMG 0x{img_addr:08X}, TSA 0x{tsa_addr:08X}, PAL 0x{pal_addr:08X}") + dump_img(f"{PREFIX}{i + 1}", img_addr, tsa_addr, pal_addr, 30, 20) diff --git a/scripts/generate_declarations.py b/scripts/generate_declarations.py new file mode 100644 index 00000000..d5bd18b3 --- /dev/null +++ b/scripts/generate_declarations.py @@ -0,0 +1,40 @@ +#!/bin/python3 + +PREFIX = DemonLightBg4_Close +LENGTH = 8 + +for i in range(1, 1 + LENGTH): + print(f"extern u16 CONST_DATA Pal_{PREFIX}_{i}[];") + +for i in range(1, 1 + LENGTH): + print(f" Pal_{PREFIX}_{i},") + +for i in range(1, 1 + LENGTH): + print(f" .global Pal_{PREFIX}_{i}") + print(f"Pal_{PREFIX}_{i}:") + print(f" .incbin \"graphics/efxdragon/{PREFIX}_{i}.gbapal\"") + print("") + +for i in range(1, 1 + LENGTH): + print(f"extern u16 CONST_DATA Tsa_{PREFIX}_{i}[];") + +for i in range(1, 1 + LENGTH): + print(f" Tsa_{PREFIX}_{i},") + +for i in range(1, 1 + LENGTH): + print(f" .global Tsa_{PREFIX}_{i}") + print(f"Tsa_{PREFIX}_{i}:") + print(f" .incbin \"graphics/efxdragon/{PREFIX}_{i}.fetsa1.bin.lz\"") + print("") + +for i in range(1, 1 + LENGTH): + print(f"extern u16 CONST_DATA Img_{PREFIX}_{i}[];") + +for i in range(1, 1 + LENGTH): + print(f" Img_{PREFIX}_{i},") + +for i in range(1, 1 + LENGTH): + print(f" .global Img_{PREFIX}_{i}") + print(f"Img_{PREFIX}_{i}:") + print(f" .incbin \"graphics/efxdragon/{PREFIX}_{i}.feimg1.bin.lz\"") + print("") diff --git a/src/banim-efxmagic-demonlight.c b/src/banim-efxmagic-demonlight.c index e644346a..0735cdeb 100644 --- a/src/banim-efxmagic-demonlight.c +++ b/src/banim-efxmagic-demonlight.c @@ -133,218 +133,218 @@ struct ProcCmd CONST_DATA ProcScr_efxMaohFlashBG1[] = u16 * CONST_DATA TsaArray_DemonLightBg1_Close[] = { - Tsa_087B2430, - Tsa_087B26A4, - Tsa_087B291C, - Tsa_087B2B90, - Tsa_087B2E04, - Tsa_087B307C, - Tsa_087B32F0, - Tsa_087B3568, - Tsa_087B37DC, - Tsa_087B3A54, - Tsa_087B3CC8, - Tsa_087B3F40, - Tsa_087B41B4, - Tsa_087B4428, - Tsa_087B46A0, - Tsa_087B4914, - Tsa_087C2F34, - Tsa_087C31A4, - Tsa_087C341C, - Tsa_087C3694, - Tsa_087C38F0, - Tsa_087C3B38, - Tsa_087C3D74, - Tsa_087C3FA8, - Tsa_087C41E0, - Tsa_087C4420, - Tsa_087C4660, - Tsa_087C48AC, - Tsa_087C4AF0, - Tsa_087C4CA0, - Tsa_087C4E64, - Tsa_087C5034, + Tsa_DemonLightBg_Close_1, + Tsa_DemonLightBg_Close_2, + Tsa_DemonLightBg_Close_3, + Tsa_DemonLightBg_Close_4, + Tsa_DemonLightBg_Close_5, + Tsa_DemonLightBg_Close_6, + Tsa_DemonLightBg_Close_7, + Tsa_DemonLightBg_Close_8, + Tsa_DemonLightBg_Close_9, + Tsa_DemonLightBg_Close_10, + Tsa_DemonLightBg_Close_11, + Tsa_DemonLightBg_Close_12, + Tsa_DemonLightBg_Close_13, + Tsa_DemonLightBg_Close_14, + Tsa_DemonLightBg_Close_15, + Tsa_DemonLightBg_Close_16, + Tsa_DemonLightBg_Close_17, + Tsa_DemonLightBg_Close_18, + Tsa_DemonLightBg_Close_19, + Tsa_DemonLightBg_Close_20, + Tsa_DemonLightBg_Close_21, + Tsa_DemonLightBg_Close_22, + Tsa_DemonLightBg_Close_23, + Tsa_DemonLightBg_Close_24, + Tsa_DemonLightBg_Close_25, + Tsa_DemonLightBg_Close_26, + Tsa_DemonLightBg_Close_27, + Tsa_DemonLightBg_Close_28, + Tsa_DemonLightBg_Close_29, + Tsa_DemonLightBg_Close_30, + Tsa_DemonLightBg_Close_31, + Tsa_DemonLightBg_Close_32, }; u16 * CONST_DATA ImgArray_DemonLightBg1_Close[] = { - Img_087A73F4, - Img_087A7F38, - Img_087A8A74, - Img_087A9598, - Img_087AA02C, - Img_087AAAA8, - Img_087AB558, - Img_087ABFF0, - Img_087ACAC8, - Img_087AD54C, - Img_087ADFEC, - Img_087AEA74, - Img_087AF518, - Img_087B0070, - Img_087B0C00, - Img_087B1728, - Img_087B4B88, - Img_087B5678, - Img_087B6198, - Img_087B6D54, - Img_087B7AEC, - Img_087B8968, - Img_087B98FC, - Img_087BA910, - Img_087BBAA4, - Img_087BCCD8, - Img_087BDF0C, - Img_087BF05C, - Img_087BFEF4, - Img_087C0A18, - Img_087C15E4, - Img_087C2308, + Img_DemonLightBg_Close_1, + Img_DemonLightBg_Close_2, + Img_DemonLightBg_Close_3, + Img_DemonLightBg_Close_4, + Img_DemonLightBg_Close_5, + Img_DemonLightBg_Close_6, + Img_DemonLightBg_Close_7, + Img_DemonLightBg_Close_8, + Img_DemonLightBg_Close_9, + Img_DemonLightBg_Close_10, + Img_DemonLightBg_Close_11, + Img_DemonLightBg_Close_12, + Img_DemonLightBg_Close_13, + Img_DemonLightBg_Close_14, + Img_DemonLightBg_Close_15, + Img_DemonLightBg_Close_16, + Img_DemonLightBg_Close_17, + Img_DemonLightBg_Close_18, + Img_DemonLightBg_Close_19, + Img_DemonLightBg_Close_20, + Img_DemonLightBg_Close_21, + Img_DemonLightBg_Close_22, + Img_DemonLightBg_Close_23, + Img_DemonLightBg_Close_24, + Img_DemonLightBg_Close_25, + Img_DemonLightBg_Close_26, + Img_DemonLightBg_Close_27, + Img_DemonLightBg_Close_28, + Img_DemonLightBg_Close_29, + Img_DemonLightBg_Close_30, + Img_DemonLightBg_Close_31, + Img_DemonLightBg_Close_32, }; u16 * CONST_DATA PalArray_DemonLightBg1_Close[] = { - Pal_087B2230, - Pal_087B2250, - Pal_087B2270, - Pal_087B2290, - Pal_087B22B0, - Pal_087B22D0, - Pal_087B22F0, - Pal_087B2310, - Pal_087B2330, - Pal_087B2350, - Pal_087B2370, - Pal_087B2390, - Pal_087B23B0, - Pal_087B23D0, - Pal_087B23F0, - Pal_087B2410, - Pal_087C2D34, - Pal_087C2D54, - Pal_087C2D74, - Pal_087C2D94, - Pal_087C2DB4, - Pal_087C2DD4, - Pal_087C2DF4, - Pal_087C2E14, - Pal_087C2E34, - Pal_087C2E54, - Pal_087C2E74, - Pal_087C2E94, - Pal_087C2EB4, - Pal_087C2ED4, - Pal_087C2EF4, - Pal_087C2F14, + Pal_DemonLightBg_Close_1, + Pal_DemonLightBg_Close_2, + Pal_DemonLightBg_Close_3, + Pal_DemonLightBg_Close_4, + Pal_DemonLightBg_Close_5, + Pal_DemonLightBg_Close_6, + Pal_DemonLightBg_Close_7, + Pal_DemonLightBg_Close_8, + Pal_DemonLightBg_Close_9, + Pal_DemonLightBg_Close_10, + Pal_DemonLightBg_Close_11, + Pal_DemonLightBg_Close_12, + Pal_DemonLightBg_Close_13, + Pal_DemonLightBg_Close_14, + Pal_DemonLightBg_Close_15, + Pal_DemonLightBg_Close_16, + Pal_DemonLightBg_Close_17, + Pal_DemonLightBg_Close_18, + Pal_DemonLightBg_Close_19, + Pal_DemonLightBg_Close_20, + Pal_DemonLightBg_Close_21, + Pal_DemonLightBg_Close_22, + Pal_DemonLightBg_Close_23, + Pal_DemonLightBg_Close_24, + Pal_DemonLightBg_Close_25, + Pal_DemonLightBg_Close_26, + Pal_DemonLightBg_Close_27, + Pal_DemonLightBg_Close_28, + Pal_DemonLightBg_Close_29, + Pal_DemonLightBg_Close_30, + Pal_DemonLightBg_Close_31, + Pal_DemonLightBg_Close_32, }; u16 * CONST_DATA TsaArray_DemonLightBg1_Far[] = { - Tsa_087D7BE8, - Tsa_087D7E5C, - Tsa_087D80D4, - Tsa_087D8348, - Tsa_087D85BC, - Tsa_087D8834, - Tsa_087D8AA8, - Tsa_087D8D20, - Tsa_087D8F94, - Tsa_087D920C, - Tsa_087D9480, - Tsa_087D96F8, - Tsa_087D996C, - Tsa_087D9BE0, - Tsa_087D9E58, - Tsa_087DA0CC, - Tsa_087E84CC, - Tsa_087E873C, - Tsa_087E89B4, - Tsa_087E8C2C, - Tsa_087E8E88, - Tsa_087E90D0, - Tsa_087E9314, - Tsa_087E9554, - Tsa_087E9798, - Tsa_087E99E0, - Tsa_087E9C28, - Tsa_087E9E78, - Tsa_087EA0C0, - Tsa_087EA268, - Tsa_087EA41C, - Tsa_087EA5D0, + Tsa_DemonLightBg_Far_1, + Tsa_DemonLightBg_Far_2, + Tsa_DemonLightBg_Far_3, + Tsa_DemonLightBg_Far_4, + Tsa_DemonLightBg_Far_5, + Tsa_DemonLightBg_Far_6, + Tsa_DemonLightBg_Far_7, + Tsa_DemonLightBg_Far_8, + Tsa_DemonLightBg_Far_9, + Tsa_DemonLightBg_Far_10, + Tsa_DemonLightBg_Far_11, + Tsa_DemonLightBg_Far_12, + Tsa_DemonLightBg_Far_13, + Tsa_DemonLightBg_Far_14, + Tsa_DemonLightBg_Far_15, + Tsa_DemonLightBg_Far_16, + Tsa_DemonLightBg_Far_17, + Tsa_DemonLightBg_Far_18, + Tsa_DemonLightBg_Far_19, + Tsa_DemonLightBg_Far_20, + Tsa_DemonLightBg_Far_21, + Tsa_DemonLightBg_Far_22, + Tsa_DemonLightBg_Far_23, + Tsa_DemonLightBg_Far_24, + Tsa_DemonLightBg_Far_25, + Tsa_DemonLightBg_Far_26, + Tsa_DemonLightBg_Far_27, + Tsa_DemonLightBg_Far_28, + Tsa_DemonLightBg_Far_29, + Tsa_DemonLightBg_Far_30, + Tsa_DemonLightBg_Far_31, + Tsa_DemonLightBg_Far_32, }; u16 * CONST_DATA ImgArray_DemonLightBg1_Far[] = { - Img_087CCBF8, - Img_087CD738, - Img_087CE274, - Img_087CED98, - Img_087CF824, - Img_087D0298, - Img_087D0D3C, - Img_087D17C0, - Img_087D2294, - Img_087D2D18, - Img_087D37B8, - Img_087D4238, - Img_087D4CE4, - Img_087D5834, - Img_087D63BC, - Img_087D6EE4, - Img_087DA340, - Img_087DAE40, - Img_087DB960, - Img_087DC518, - Img_087DD288, - Img_087DE0C8, - Img_087DF030, - Img_087E002C, - Img_087E1190, - Img_087E238C, - Img_087E358C, - Img_087E466C, - Img_087E54B4, - Img_087E5FD4, - Img_087E6B90, - Img_087E78A0, + Img_DemonLightBg_Far_1, + Img_DemonLightBg_Far_2, + Img_DemonLightBg_Far_3, + Img_DemonLightBg_Far_4, + Img_DemonLightBg_Far_5, + Img_DemonLightBg_Far_6, + Img_DemonLightBg_Far_7, + Img_DemonLightBg_Far_8, + Img_DemonLightBg_Far_9, + Img_DemonLightBg_Far_10, + Img_DemonLightBg_Far_11, + Img_DemonLightBg_Far_12, + Img_DemonLightBg_Far_13, + Img_DemonLightBg_Far_14, + Img_DemonLightBg_Far_15, + Img_DemonLightBg_Far_16, + Img_DemonLightBg_Far_17, + Img_DemonLightBg_Far_18, + Img_DemonLightBg_Far_19, + Img_DemonLightBg_Far_20, + Img_DemonLightBg_Far_21, + Img_DemonLightBg_Far_22, + Img_DemonLightBg_Far_23, + Img_DemonLightBg_Far_24, + Img_DemonLightBg_Far_25, + Img_DemonLightBg_Far_26, + Img_DemonLightBg_Far_27, + Img_DemonLightBg_Far_28, + Img_DemonLightBg_Far_29, + Img_DemonLightBg_Far_30, + Img_DemonLightBg_Far_31, + Img_DemonLightBg_Far_32, }; u16 * CONST_DATA PalArray_DemonLightBg1_Far[] = { - Pal_087D79E8, - Pal_087D7A08, - Pal_087D7A28, - Pal_087D7A48, - Pal_087D7A68, - Pal_087D7A88, - Pal_087D7AA8, - Pal_087D7AC8, - Pal_087D7AE8, - Pal_087D7B08, - Pal_087D7B28, - Pal_087D7B48, - Pal_087D7B68, - Pal_087D7B88, - Pal_087D7BA8, - Pal_087D7BC8, - Pal_087E82CC, - Pal_087E82EC, - Pal_087E830C, - Pal_087E832C, - Pal_087E834C, - Pal_087E836C, - Pal_087E838C, - Pal_087E83AC, - Pal_087E83CC, - Pal_087E83EC, - Pal_087E840C, - Pal_087E842C, - Pal_087E844C, - Pal_087E846C, - Pal_087E848C, - Pal_087E84AC, + Pal_DemonLightBg_Far_1, + Pal_DemonLightBg_Far_2, + Pal_DemonLightBg_Far_3, + Pal_DemonLightBg_Far_4, + Pal_DemonLightBg_Far_5, + Pal_DemonLightBg_Far_6, + Pal_DemonLightBg_Far_7, + Pal_DemonLightBg_Far_8, + Pal_DemonLightBg_Far_9, + Pal_DemonLightBg_Far_10, + Pal_DemonLightBg_Far_11, + Pal_DemonLightBg_Far_12, + Pal_DemonLightBg_Far_13, + Pal_DemonLightBg_Far_14, + Pal_DemonLightBg_Far_15, + Pal_DemonLightBg_Far_16, + Pal_DemonLightBg_Far_17, + Pal_DemonLightBg_Far_18, + Pal_DemonLightBg_Far_19, + Pal_DemonLightBg_Far_20, + Pal_DemonLightBg_Far_21, + Pal_DemonLightBg_Far_22, + Pal_DemonLightBg_Far_23, + Pal_DemonLightBg_Far_24, + Pal_DemonLightBg_Far_25, + Pal_DemonLightBg_Far_26, + Pal_DemonLightBg_Far_27, + Pal_DemonLightBg_Far_28, + Pal_DemonLightBg_Far_29, + Pal_DemonLightBg_Far_30, + Pal_DemonLightBg_Far_31, + Pal_DemonLightBg_Far_32, }; // clang-format on diff --git a/tools/gfxtools/tsa_generator.py b/tools/gfxtools/tsa_generator.py index 2ae55deb..39c546cc 100755 --- a/tools/gfxtools/tsa_generator.py +++ b/tools/gfxtools/tsa_generator.py @@ -7,20 +7,30 @@ ''' 方案1: 常见于 banim 相关的图片 -1. 整张图按行从左向右扫描, 将获得的独特的 tile 入栈, 从而获得 tile array -2. 上述获得的第一个 tile 丢到末尾作为最后一个 tile -3. tile array 第 0 个 tile 置空 +1. 第 0 个 tile 置 0 +2. 整张图按行从左向右扫描, 将获得的独特的 tile 入栈, 从而获得 tile array +3. 上述获得的第一个 tile 丢到末尾作为最后一个 tile ''' def process_tiles_method1(tiles, ntile_x, ntile_y): unique_tiles = [] tsa_data = [] tile_dict = {} + unique_tiles.append([0] * 32) + + is_first = True + for tile_y in range(0, ntile_y): for tile_x in range(0, ntile_x): tile = tiles[tile_y][tile_x] tile_4bpp = convert_to_4bpp(tile) + + # skip tile[0] + if tile_4bpp == [0] * 32: + tsa_data.append(0) + continue + tile_tuple = tuple(tile_4bpp) tile_2d = tile.reshape((8, 8)) @@ -47,20 +57,24 @@ def process_tiles_method1(tiles, ntile_x, ntile_y): tsa_data.append(tile_dict[tile_se_tuple] | (3 << 10)) else: # fine, we did not find it - unique_tiles.append(tile_4bpp) - tile_index = len(unique_tiles) - 1 + if is_first: + is_first = False + first_tile_4bpp = tile_4bpp + tile_index = -1 + else: + unique_tiles.append(tile_4bpp) + tile_index = len(unique_tiles) - 1 + tile_dict[tile_tuple] = tile_index tsa_data.append(tile_index) # put the first tile to the tale last_idx = len(unique_tiles) - print(last_idx) for i, tsa in enumerate(tsa_data): - if tsa == 0: + if tsa == -1: tsa_data[i] = last_idx - unique_tiles.append(unique_tiles[0]) - unique_tiles[0] = [0] * 32 + unique_tiles.append(first_tile_4bpp) return unique_tiles, tsa_data @@ -104,7 +118,7 @@ def main(args): out_img = args[2] out_tsa = args[3] except IndexError: - sys.exit(f"Usage: {args[0]} [*.png] [*.feimg.bin] [*.fetsa.bin]") + sys.exit(f"Usage: {args[0]} [*.png] [*.feimg1.bin] [*.fetsa.bin]") method = extract_suffix_from_filename(out_tsa) if method is None: