summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/btl_attrs.s89
-rw-r--r--include/battle.h1
-rw-r--r--src/battle/battle_1.c56
3 files changed, 103 insertions, 43 deletions
diff --git a/data/btl_attrs.s b/data/btl_attrs.s
index 845d0c3f4..926edc5a1 100644
--- a/data/btl_attrs.s
+++ b/data/btl_attrs.s
@@ -8,50 +8,53 @@
.section .rodata
- .align 2
+@ .align 2
@ 81F9528
- .4byte 0x101 @ unknown data
-
- .align 2
-gOamData_81F952C:: @ 81F952C
- .2byte 0x0300
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gOamData_81F9534:: @ 81F9534
- .2byte 0x0300
- .2byte 0xC000
- .2byte 0x0040
-
- .align 2
-gSpriteAffineAnim_81F953C:: @ 81F953C
- obj_rot_scal_anim_frame 0x80, 0x80, 0, 0
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_81F954C:: @ 81F954C
- obj_rot_scal_anim_frame 0x80, 0x80, 0, 0
- obj_rot_scal_anim_frame 0x18, 0x18, 0, -128
- obj_rot_scal_anim_frame 0x18, 0x18, 0, -128
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnimTable_81F956C:: @ 81F956C
- .4byte gSpriteAffineAnim_81F953C
- .4byte gSpriteAffineAnim_81F954C
-
- .align 2
-gSpriteTemplate_81F9574:: @ 81F9574
- spr_template 10000, 10000, gOamData_81F952C, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_81F956C, nullsub_36
-
- .align 2
-gSpriteTemplate_81F958C:: @ 81F958C
- spr_template 10000, 10000, gOamData_81F9534, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_81F956C, nullsub_36
-
- .align 2
-gUnknown_081F95A4:: @ 81F95A4
- obj_tiles gUnknown_08E5DC2C, 4096, 0x2710
+@ .4byte 0x101 @ unknown data
+
+@ .align 2
+@gOamData_81F952C:: @ 81F952C
+@ .byte 0x00
+@ .byte 0x03
+@ .byte 0x00
+@ .byte 0xC0
+@ .byte 0x00
+@ .byte 0x00
+
+@ .align 2
+@gOamData_81F9534:: @ 81F9534
+@ .2byte 0x0300
+@ .2byte 0xC000
+@ .2byte 0x0040
+
+@ .align 2
+@gSpriteAffineAnim_81F953C:: @ 81F953C
+@ obj_rot_scal_anim_frame 0x80, 0x80, 0, 0
+@ obj_rot_scal_anim_end
+
+@ .align 2
+@gSpriteAffineAnim_81F954C:: @ 81F954C
+@ obj_rot_scal_anim_frame 0x80, 0x80, 0, 0
+@ obj_rot_scal_anim_frame 0x18, 0x18, 0, -128
+@ obj_rot_scal_anim_frame 0x18, 0x18, 0, -128
+@ obj_rot_scal_anim_end
+
+@ .align 2
+@gSpriteAffineAnimTable_81F956C:: @ 81F956C
+@ .4byte gSpriteAffineAnim_81F953C
+@ .4byte gSpriteAffineAnim_81F954C
+
+@ .align 2
+@gSpriteTemplate_81F9574:: @ 81F9574
+@ spr_template 10000, 10000, gOamData_81F952C, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_81F956C, nullsub_36
+
+@ .align 2
+@gSpriteTemplate_81F958C:: @ 81F958C
+@ spr_template 10000, 10000, gOamData_81F9534, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_81F956C, nullsub_36
+
+@ .align 2
+@gUnknown_081F95A4:: @ 81F95A4
+@ obj_tiles gUnknown_08E5DC2C, 4096, 0x2710
.align 2
gBattleTerrainTable:: @ 81F95AC
diff --git a/include/battle.h b/include/battle.h
index 3dc1aeaf2..04d259fc9 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -726,6 +726,7 @@ void BattleMainCB2(void);
void sub_800F838(struct Sprite *);
u8 CreateNPCTrainerParty(struct Pokemon *, u16);
void sub_800FCFC(void);
+void nullsub_36(struct Sprite *);
void c2_8011A1C(void);
void sub_80101B8(void);
void c2_081284E0(void);
diff --git a/src/battle/battle_1.c b/src/battle/battle_1.c
index 70674b3b4..9ef0b92cd 100644
--- a/src/battle/battle_1.c
+++ b/src/battle/battle_1.c
@@ -3,6 +3,7 @@
#include "battle_setup.h"
#include "battle.h"
#include "trainer.h"
+#include "gba/types.h"
#include "constants/species.h"
#include "constants/moves.h"
#include "constants/items.h"
@@ -465,3 +466,58 @@ const u8 gEnemyMonElevation[] = {
#include "../data/text/move_names_de.h"
#endif
+const u32 gUnknown_81F9528 = 0x101;
+
+const struct OamData gOamData_81F952C = {
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .size = 3
+};
+
+const struct OamData gOamData_81F9534 = {
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .size = 3,
+ .tileNum = 64
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_81F953C[] = {
+ AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_81F954C[] = {
+ AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
+ AFFINEANIMCMD_FRAME(0x18, 0x18, 0, -128),
+ AFFINEANIMCMD_FRAME(0x18, 0x18, 0, -128),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_81F956C[] = {
+ gSpriteAffineAnim_81F953C,
+ gSpriteAffineAnim_81F954C
+};
+
+const struct SpriteTemplate gSpriteTemplate_81F9574 = {
+ .tileTag = 10000,
+ .paletteTag = 10000,
+ .oam = &gOamData_81F952C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_81F956C,
+ .callback = nullsub_36
+};
+
+const struct SpriteTemplate gSpriteTemplate_81F958C = {
+ .tileTag = 10000,
+ .paletteTag = 10000,
+ .oam = &gOamData_81F9534,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_81F956C,
+ .callback = nullsub_36
+};
+
+extern const u8 gUnknown_08E5DC2C[];
+
+const struct CompressedSpriteSheet gUnknown_081F95A4[] = {
+ {gUnknown_08E5DC2C, 4096, 0x2710},
+};