From a4b55e3011e75037a3a2a1a0d99f4bcd93508389 Mon Sep 17 00:00:00 2001 From: Eebit Date: Sat, 22 Aug 2026 22:21:06 -0400 Subject: [PATCH] (sprites-dtcm) Name/extract common sprite definitions --- config/YFEE01/arm9/dtcm/delinks.txt | 3 ++ config/YFEE01/arm9/dtcm/symbols.txt | 19 +++++----- config/YFEE01/arm9/relocs.txt | 1 - include/unknown_data.h | 19 +++++----- src/button.cpp | 8 ++-- src/dtcm/sprites-dtcm.cpp | 57 +++++++++++++++++++++++++++++ src/face.cpp | 10 ++--- src/map_sprite.cpp | 4 +- src/ov000/subtitle_help.cpp | 6 +-- 9 files changed, 92 insertions(+), 35 deletions(-) create mode 100644 src/dtcm/sprites-dtcm.cpp diff --git a/config/YFEE01/arm9/dtcm/delinks.txt b/config/YFEE01/arm9/dtcm/delinks.txt index a20bfa9..f273376 100644 --- a/config/YFEE01/arm9/dtcm/delinks.txt +++ b/config/YFEE01/arm9/dtcm/delinks.txt @@ -1,2 +1,5 @@ .data start:0x027e0000 end:0x027e00e0 kind:data align:32 .bss start:0x027e00e0 end:0x027e1bc0 kind:bss align:32 + +src/dtcm/sprites-dtcm.cpp: + .data start:0x027e0010 end:0x027e0058 \ No newline at end of file diff --git a/config/YFEE01/arm9/dtcm/symbols.txt b/config/YFEE01/arm9/dtcm/symbols.txt index c1fa775..5a71fb1 100644 --- a/config/YFEE01/arm9/dtcm/symbols.txt +++ b/config/YFEE01/arm9/dtcm/symbols.txt @@ -2,16 +2,15 @@ gpMainScreenSt kind:data(any) addr:0x027e0000 gpSubScreenSt kind:data(any) addr:0x027e0004 gpMainDispIo kind:data(any) addr:0x027e0008 gpSubDispIo kind:data(any) addr:0x027e000c -data_027e0010 kind:data(any) addr:0x027e0010 -data_027e0018 kind:data(any) addr:0x027e0018 -data_027e0020 kind:data(any) addr:0x027e0020 -data_027e0021 kind:data(any) addr:0x027e0021 -data_027e0028 kind:data(any) addr:0x027e0028 -data_027e0030 kind:data(any) addr:0x027e0030 -data_027e0038 kind:data(any) addr:0x027e0038 -data_027e0040 kind:data(any) addr:0x027e0040 -data_027e0048 kind:data(any) addr:0x027e0048 -data_027e0050 kind:data(any) addr:0x027e0050 +Sprite_32x16 kind:data(any) addr:0x027e0010 +Sprite_16x8 kind:data(any) addr:0x027e0018 +Sprite_32x8 kind:data(any) addr:0x027e0020 +Sprite_32x32 kind:data(any) addr:0x027e0028 +Sprite_64x64 kind:data(any) addr:0x027e0030 +Sprite_16x16 kind:data(any) addr:0x027e0038 +Sprite_8x8 kind:data(any) addr:0x027e0040 +Sprite_64x32 kind:data(any) addr:0x027e0048 +Sprite_8x16 kind:data(any) addr:0x027e0050 data_027e0058 kind:data(any) addr:0x027e0058 data_027e0078 kind:data(any) addr:0x027e0078 data_027e00e0 kind:bss addr:0x027e00e0 diff --git a/config/YFEE01/arm9/relocs.txt b/config/YFEE01/arm9/relocs.txt index 26ade54..a48aa24 100644 --- a/config/YFEE01/arm9/relocs.txt +++ b/config/YFEE01/arm9/relocs.txt @@ -10,7 +10,6 @@ from:0x02000900 kind:arm_call to:0x020c3b30 module:main from:0x02000918 kind:load to:0x027e0000 module:dtcm from:0x02000930 kind:load to:0x01ffc6bc module:itcm from:0x02000934 kind:load to:0x02000c50 module:main -from:0x02000b3c kind:load to:0x027e0021 module:dtcm from:0x02000b44 kind:load to:0x027e0000 module:dtcm from:0x02000b68 kind:load to:0x020e8a60 module:main from:0x02000b6c kind:load to:0x020e8a78 module:main diff --git a/include/unknown_data.h b/include/unknown_data.h index 6300dc1..ab02eb8 100644 --- a/include/unknown_data.h +++ b/include/unknown_data.h @@ -3313,16 +3313,15 @@ extern struct UnkStruct_021974fc * data_021974fc; // extern ??? gpSubScreenSt // extern ??? gpMainDispIo // extern ??? gpSubDispIo -// extern ??? data_027e0010 -// extern ??? data_027e0018 -// extern ??? data_027e0020 -// extern ??? data_027e0021 -// extern ??? data_027e0028 -// extern ??? data_027e0030 -// extern ??? data_027e0038 -// extern ??? data_027e0040 -// extern ??? data_027e0048 -// extern ??? data_027e0050 +// extern ??? Sprite_32x16 +// extern ??? Sprite_16x8 +// extern ??? Sprite_32x8 +// extern ??? Sprite_32x32 +// extern ??? Sprite_64x64 +// extern ??? Sprite_16x16 +// extern ??? Sprite_8x8 +// extern ??? Sprite_64x32 +// extern ??? Sprite_8x16 // extern ??? data_027e0058 // extern ??? data_027e0078 extern int data_027e00e0; diff --git a/src/button.cpp b/src/button.cpp index 4afcd16..f2b4acb 100644 --- a/src/button.cpp +++ b/src/button.cpp @@ -12,8 +12,8 @@ #include "proc_ex.hpp" extern u16 data_020ca6c4[]; -extern u16 data_027e0010[]; -extern u16 data_027e0038[]; +extern u16 Sprite_32x16[]; +extern u16 Sprite_16x16[]; class ScrollMenu_unk_04 { @@ -477,7 +477,7 @@ void Button::func_02034d40(s32 kind) case BUTTON_KIND_R_ARROW: this->unk_44 = 0x20; this->unk_46 = 0x10; - this->unk_54 = data_027e0010; + this->unk_54 = Sprite_32x16; this->anime = NULL; return; @@ -486,7 +486,7 @@ void Button::func_02034d40(s32 kind) case BUTTON_KIND_R_REFINE: this->unk_44 = 0x10; this->unk_46 = 0x10; - this->unk_54 = data_027e0038; + this->unk_54 = Sprite_16x16; this->anime = NULL; return; diff --git a/src/dtcm/sprites-dtcm.cpp b/src/dtcm/sprites-dtcm.cpp new file mode 100644 index 0000000..b6070b6 --- /dev/null +++ b/src/dtcm/sprites-dtcm.cpp @@ -0,0 +1,57 @@ +#include "global.h" + +#include "oam.h" + +u16 Sprite_64x32[] = +{ + OAM0_Y(+0) | OAM0_SHAPE_64x32, OAM1_X(+0) | OAM1_SIZE_64x32, OAM2_CHR(0), + -1, +}; + +u16 Sprite_8x8[] = +{ + OAM0_Y(+0) | OAM0_SHAPE_8x8, OAM1_X(+0) | OAM1_SIZE_8x8, OAM2_CHR(0), + -1, +}; + +u16 Sprite_16x16[] = +{ + OAM0_Y(+0) | OAM0_SHAPE_16x16, OAM1_X(+0) | OAM1_SIZE_16x16, OAM2_CHR(0), + -1, +}; + +u16 Sprite_64x64[] = +{ + OAM0_Y(+0) | OAM0_SHAPE_64x64, OAM1_X(+0) | OAM1_SIZE_64x64, OAM2_CHR(0), + -1, +}; + +u16 Sprite_32x32[] = +{ + OAM0_Y(+0) | OAM0_SHAPE_32x32, OAM1_X(+0) | OAM1_SIZE_32x32, OAM2_CHR(0), + -1, +}; + +u16 Sprite_32x8[] = +{ + OAM0_Y(+0) | OAM0_SHAPE_32x8, OAM1_X(+0) | OAM1_SIZE_32x8, OAM2_CHR(0), + -1, +}; + +u16 Sprite_16x8[] = +{ + OAM0_Y(+0) | OAM0_SHAPE_16x8, OAM1_X(+0) | OAM1_SIZE_16x8, OAM2_CHR(0), + -1, +}; + +u16 Sprite_32x16[] = +{ + OAM0_Y(+0) | OAM0_SHAPE_32x16, OAM1_X(+0) | OAM1_SIZE_32x16, OAM2_CHR(0), + -1, +}; + +u16 Sprite_8x16[] = +{ + OAM0_Y(+0) | OAM0_SHAPE_8x16, OAM1_X(+0) | OAM1_SIZE_8x16, OAM2_CHR(0), + -1, +}; diff --git a/src/face.cpp b/src/face.cpp index 59b65a3..1efb12a 100644 --- a/src/face.cpp +++ b/src/face.cpp @@ -503,7 +503,7 @@ void Face::UpdateBlink(void) return; } -extern u16 data_027e0048[]; +extern u16 Sprite_64x32[]; void Face::DrawBlink(void) { @@ -539,7 +539,7 @@ void Face::DrawBlink(void) tmp = this->unk_14 - 1; - PutSpriteActiveScreen(OAM1_X(x) | hFlip, OAM0_Y(y) | OAM0_256COLORS, attr, data_027e0048, tmp); + PutSpriteActiveScreen(OAM1_X(x) | hFlip, OAM0_Y(y) | OAM0_256COLORS, attr, Sprite_64x32, tmp); return; } @@ -570,7 +570,7 @@ void Face::DrawBlink(void) tmp = this->unk_14 - 1; - PutSpriteActiveScreen(OAM1_X(x) | hFlip, OAM0_Y(y) | OAM0_256COLORS, attr, data_027e0048, tmp); + PutSpriteActiveScreen(OAM1_X(x) | hFlip, OAM0_Y(y) | OAM0_256COLORS, attr, Sprite_64x32, tmp); return; } } @@ -669,7 +669,7 @@ void Face::DrawMouth(void) } } -extern u16 data_027e0028[]; +extern u16 Sprite_32x32[]; void Face::DrawMouthExt(s32 x, s32 y, s32 arg3) { @@ -698,7 +698,7 @@ void Face::DrawMouthExt(s32 x, s32 y, s32 arg3) temp_r4 = this->unk_14 - 1; - PutSpriteActiveScreen(OAM1_X(xOam1) | hFlip, OAM0_Y(yOam0) | OAM0_256COLORS, oam2, data_027e0028, temp_r4); + PutSpriteActiveScreen(OAM1_X(xOam1) | hFlip, OAM0_Y(yOam0) | OAM0_256COLORS, oam2, Sprite_32x32, temp_r4); return; } diff --git a/src/map_sprite.cpp b/src/map_sprite.cpp index 56e8a75..99b4205 100644 --- a/src/map_sprite.cpp +++ b/src/map_sprite.cpp @@ -159,7 +159,7 @@ extern vu32 gElapsedFrames; extern const u8 data_020c515c[]; -extern u16 data_027e0028[]; +extern u16 Sprite_32x32[]; EC void SetSpriteDirectoryForJob(s32 jid, BOOL isMovingMapSprite) { @@ -721,7 +721,7 @@ EC void func_0203ee78(s32 jid, s32 arg1, s32 x, s32 y, s32 arg4, s32 palId, s32 (x & 0x1ff) | isFlipped, (yOam0 & 0xff) | 0x2000, (arg4 + data_020c515c[iVar2] * 0x20) >> (gpActiveScreenSt->dispIo->dispcnt.unk_02_bit_0 & 0x3ff) | (palId << 0xc), - data_027e0028, arg6); + Sprite_32x32, arg6); return; } diff --git a/src/ov000/subtitle_help.cpp b/src/ov000/subtitle_help.cpp index 0790c9e..87998d6 100644 --- a/src/ov000/subtitle_help.cpp +++ b/src/ov000/subtitle_help.cpp @@ -142,7 +142,7 @@ EC void LineHelp_ov000_021d68a8(ProcLineHelp * proc) return; } -extern u16 data_027e0010[]; +extern u16 Sprite_32x16[]; void ProcLineHelp::Loop(void) { @@ -200,7 +200,7 @@ void ProcLineHelp::Loop(void) uVar1 & 0x1ff, 0xc0 - this->unk_54 & 0xff, (this->unk_5c << 0x1c) >> 0x10 | 0xc00 | (this->unk_58 + iVar2 * 8) >> gpActiveScreenSt->dispIo->dispcnt.bit_13_14 & 0x3ff, - data_027e0010, 0); + Sprite_32x16, 0); } else { @@ -211,7 +211,7 @@ void ProcLineHelp::Loop(void) uVar1 & 0x1ff, 0xc0 - this->unk_54 & 0xff, (this->unk_5c << 0x1c) >> 0x10 | 0xc00 | (this->unk_58 + iVar3) >> gpActiveScreenSt->dispIo->dispcnt.bit_13_14 & 0x3ff, - data_027e0010, 0); + Sprite_32x16, 0); iVar3 = iVar3 + 8; } }