summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2017-05-03 18:02:14 -0700
committerYamaArashi <shadow962@live.com>2017-05-03 18:02:14 -0700
commit218b9abd41fced633c28e15e3a000f18bfb1c0d4 (patch)
tree188de042c04ff6fa45998ce37737995cfda16ea6
parent7f03ba4951c5045274dab3f2a3de8e8d498b8df3 (diff)
Struct_0202F7D4 -> AffineAnimCmd
-rw-r--r--include/sprite.h8
-rw-r--r--src/rom_8077ABC.c39
2 files changed, 22 insertions, 25 deletions
diff --git a/include/sprite.h b/include/sprite.h
index 42620c9e9..bda635885 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -74,7 +74,7 @@ struct AffineAnimFrameCmd
struct AffineAnimLoopCmd
{
s16 type;
- u16 count;
+ s16 count;
};
struct AffineAnimJumpCmd
@@ -91,10 +91,14 @@ union AffineAnimCmd
struct AffineAnimJumpCmd jump;
};
+#define AFFINEANIMCMDTYPE_LOOP 0x7FFD
+#define AFFINEANIMCMDTYPE_JUMP 0x7FFE
+#define AFFINEANIMCMDTYPE_END 0x7FFF
+
#define AFFINEANIMCMD_FRAME(_xScale, _yScale, _rotation, _duration) \
{.frame = {.xScale = _xScale, .yScale = _yScale, .rotation = _rotation, .duration = _duration}}
#define AFFINEANIMCMD_END \
- {.type = 0x7FFF}
+ {.type = AFFINEANIMCMDTYPE_END}
struct AffineAnimState
{
diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c
index 472221b50..7dcc28b3a 100644
--- a/src/rom_8077ABC.c
+++ b/src/rom_8077ABC.c
@@ -90,13 +90,6 @@ struct BGCnt {
u16 size:2;
};
-struct Struct_0202F7D4 {
- s16 field_0;
- s16 field_2;
- u8 field_4;
- u8 field_5;
-};
-
#define BG1CNT (*(volatile struct BGCnt*)REG_ADDR_BG1CNT)
#define BG2CNT (*(volatile struct BGCnt*)REG_ADDR_BG2CNT)
#define BG3CNT (*(volatile struct BGCnt*)REG_ADDR_BG3CNT)
@@ -168,7 +161,7 @@ void sub_807A8D4(struct Sprite *sprite);
void sub_807A960(struct Sprite *sprite);
-EWRAM_DATA struct Struct_0202F7D4 *gUnknown_0202F7D4 = NULL;
+EWRAM_DATA union AffineAnimCmd *gUnknown_0202F7D4 = NULL;
EWRAM_DATA u32 filler_0202F7D8[3] = {0};
const struct Struct_gUnknown_0837F578 gUnknown_0837F578[][4] = {
@@ -1507,39 +1500,39 @@ void sub_80798F4(struct Task *task, u8 a2, void *a3) {
bool8 sub_807992C(struct Task *task) {
gUnknown_0202F7D4 = sub_8079BFC(task->data[13], task->data[14]) + (task->data[7] << 3);
- switch (gUnknown_0202F7D4->field_0) {
+ switch (gUnknown_0202F7D4->type) {
default:
- if (!gUnknown_0202F7D4->field_5) {
- task->data[10] = gUnknown_0202F7D4->field_0;
- task->data[11] = gUnknown_0202F7D4->field_2;
- task->data[12] = gUnknown_0202F7D4->field_4;
+ if (!gUnknown_0202F7D4->frame.duration) {
+ task->data[10] = gUnknown_0202F7D4->frame.xScale;
+ task->data[11] = gUnknown_0202F7D4->frame.yScale;
+ task->data[12] = gUnknown_0202F7D4->frame.rotation;
task->data[7]++;
gUnknown_0202F7D4++;
}
- task->data[10] += gUnknown_0202F7D4->field_0;
- task->data[11] += gUnknown_0202F7D4->field_2;
- task->data[12] += gUnknown_0202F7D4->field_4;
+ task->data[10] += gUnknown_0202F7D4->frame.xScale;
+ task->data[11] += gUnknown_0202F7D4->frame.yScale;
+ task->data[12] += gUnknown_0202F7D4->frame.rotation;
obj_id_set_rotscale(task->data[15], task->data[10], task->data[11], task->data[12]);
sub_8079A64(task->data[15]);
- if (++task->data[8] >= gUnknown_0202F7D4->field_5) {
+ if (++task->data[8] >= gUnknown_0202F7D4->frame.duration) {
task->data[8] = 0;
task->data[7]++;
}
break;
- case 0x7ffe:
- task->data[7] = gUnknown_0202F7D4->field_2;
+ case AFFINEANIMCMDTYPE_JUMP:
+ task->data[7] = gUnknown_0202F7D4->jump.target;
break;
- case 0x7ffd:
- if (gUnknown_0202F7D4->field_2) {
+ case AFFINEANIMCMDTYPE_LOOP:
+ if (gUnknown_0202F7D4->loop.count) {
if (task->data[9]) {
if (!--task->data[9]) {
task->data[7]++;
break;
}
} else {
- task->data[9] = gUnknown_0202F7D4->field_2;
+ task->data[9] = gUnknown_0202F7D4->loop.count;
}
if (!task->data[7]) {
break;
@@ -1547,7 +1540,7 @@ bool8 sub_807992C(struct Task *task) {
for (;;) {
task->data[7]--;
gUnknown_0202F7D4--;
- if (gUnknown_0202F7D4->field_0 == 0x7ffd) {
+ if (gUnknown_0202F7D4->type == AFFINEANIMCMDTYPE_LOOP) {
task->data[7]++;
return TRUE;
}