summaryrefslogtreecommitdiff
path: root/src/fldeff_recordmixing.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fldeff_recordmixing.c')
-rw-r--r--src/fldeff_recordmixing.c83
1 files changed, 83 insertions, 0 deletions
diff --git a/src/fldeff_recordmixing.c b/src/fldeff_recordmixing.c
new file mode 100644
index 000000000..716447f9c
--- /dev/null
+++ b/src/fldeff_recordmixing.c
@@ -0,0 +1,83 @@
+#include "global.h"
+#include "event_object_movement.h"
+#include "fldeff_recordmixing.h"
+#include "sprite.h"
+
+extern const struct OamData gFieldOamData_32x8;
+
+static const u8 sSpriteImage_83D26C0[] = INCBIN_U8("graphics/unknown_sprites/83D2860/0.4bpp");
+static const u8 sSpriteImage_83D2740[] = INCBIN_U8("graphics/unknown_sprites/83D2860/1.4bpp");
+static const u8 sSpriteImage_83D27C0[] = INCBIN_U8("graphics/unknown_sprites/83D2860/2.4bpp");
+static const u16 sPalette_3D2840[] = INCBIN_U16("graphics/unknown/unknown_3D2840.gbapal");
+
+
+static const struct SpriteFrameImage sSpriteImageTable_83FD950[] =
+{
+ { sSpriteImage_83D26C0, sizeof(sSpriteImage_83D26C0) },
+ { sSpriteImage_83D2740, sizeof(sSpriteImage_83D2740) },
+ { sSpriteImage_83D27C0, sizeof(sSpriteImage_83D27C0) },
+};
+
+static const struct SpritePalette sUnknown_083D2878 = { sPalette_3D2840, 0x1000 };
+
+static const union AnimCmd sSpriteAnim_83D2880[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_FRAME(1, 30),
+ ANIMCMD_FRAME(2, 30),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd *const sSpriteAnimTable_83D2890[] =
+{
+ sSpriteAnim_83D2880,
+};
+
+static const struct SpriteTemplate sSpriteTemplate_83D2894 =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = 0x1000,
+ .oam = &gFieldOamData_32x8,
+ .anims = sSpriteAnimTable_83D2890,
+ .images = sSpriteImageTable_83FD950,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+u8 CreateRecordMixingSprite(void)
+{
+ u8 spriteId;
+
+ LoadSpritePalette(&sUnknown_083D2878);
+
+ spriteId = CreateSprite(&sSpriteTemplate_83D2894, 0, 0, 82);
+
+ if (spriteId == MAX_SPRITES)
+ {
+ return MAX_SPRITES;
+ }
+ else
+ {
+ struct Sprite *sprite = &gSprites[spriteId];
+ sub_8060388(16, 13, &sprite->pos1.x, &sprite->pos1.y);
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->pos1.x += 16;
+ sprite->pos1.y += 2;
+ }
+
+ return spriteId;
+}
+
+void DestroyRecordMixingSprite(void)
+{
+ int i;
+
+ for (i = 0; i < MAX_SPRITES; i++)
+ {
+ if (gSprites[i].template == &sSpriteTemplate_83D2894)
+ {
+ FreeSpritePalette(&gSprites[i]);
+ DestroySprite(&gSprites[i]);
+ }
+ }
+}