summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcamthesaxman <cameronghall@cox.net>2017-09-21 18:12:02 -0500
committercamthesaxman <cameronghall@cox.net>2017-09-21 18:12:02 -0500
commit3185d7c252ef5eb036edbe8976de41abc40ee498 (patch)
tree800cf620cc5b2995e9df73cad0b7d939580a339c
parent61e8416b6e7d1b309b7382169c3fe47bc46f7c90 (diff)
get sub_807E4EC to match
-rw-r--r--asm/field_weather.s100
-rw-r--r--src/field_weather.c33
2 files changed, 20 insertions, 113 deletions
diff --git a/asm/field_weather.s b/asm/field_weather.s
index abc714c55..3a0a70325 100644
--- a/asm/field_weather.s
+++ b/asm/field_weather.s
@@ -5,106 +5,6 @@
.text
- thumb_func_start sub_807E4EC
-sub_807E4EC: @ 807E4EC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- movs r1, 0x30
- ldrsh r0, [r7, r1]
- cmp r0, 0
- bne _0807E500
- ldr r0, _0807E5A4 @ =0x00000169
- strh r0, [r7, 0x30]
-_0807E500:
- movs r2, 0x30
- ldrsh r1, [r7, r2]
- ldr r0, _0807E5A8 @ =0x41c64e6d
- muls r0, r1
- ldr r3, _0807E5AC @ =0x00003039
- adds r0, r3
- lsls r0, 1
- lsrs r0, 17
- movs r1, 0x96
- lsls r1, 2
- bl __umodsi3
- movs r1, 0
- mov r8, r1
- strh r0, [r7, 0x30]
- ldr r1, _0807E5B0 @ =gUnknown_0839AAC4
- ldr r0, _0807E5B4 @ =gUnknown_08396FC4
- ldr r5, [r0]
- ldr r2, _0807E5B8 @ =0x000006dc
- adds r5, r2
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldrh r6, [r0]
- movs r3, 0x30
- ldrsh r0, [r7, r3]
- movs r1, 0x1E
- bl __modsi3
- adds r4, r0, 0
- lsls r4, 16
- asrs r4, 16
- lsls r0, r4, 3
- strh r0, [r7, 0x32]
- movs r1, 0x30
- ldrsh r0, [r7, r1]
- movs r1, 0x1E
- bl __divsi3
- lsls r0, 16
- lsls r4, 7
- strh r4, [r7, 0x32]
- asrs r0, 9
- strh r0, [r7, 0x34]
- ldr r2, _0807E5BC @ =gUnknown_0839AABC
- ldrb r1, [r5]
- lsls r1, 2
- adds r1, r2
- movs r3, 0
- ldrsh r1, [r1, r3]
- muls r1, r6
- subs r4, r1
- strh r4, [r7, 0x32]
- ldrb r1, [r5]
- lsls r1, 2
- adds r2, 0x2
- adds r1, r2
- movs r2, 0
- ldrsh r1, [r1, r2]
- muls r1, r6
- subs r0, r1
- strh r0, [r7, 0x34]
- adds r0, r7, 0
- movs r1, 0
- bl StartSpriteAnim
- mov r3, r8
- strh r3, [r7, 0x36]
- adds r2, r7, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- strh r6, [r7, 0x2E]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0807E5A4: .4byte 0x00000169
-_0807E5A8: .4byte 0x41c64e6d
-_0807E5AC: .4byte 0x00003039
-_0807E5B0: .4byte gUnknown_0839AAC4
-_0807E5B4: .4byte gUnknown_08396FC4
-_0807E5B8: .4byte 0x000006dc
-_0807E5BC: .4byte gUnknown_0839AABC
- thumb_func_end sub_807E4EC
-
thumb_func_start sub_807E5C0
sub_807E5C0: @ 807E5C0
push {r4,r5,lr}
diff --git a/src/field_weather.c b/src/field_weather.c
index f1b4d4391..fff4ac673 100644
--- a/src/field_weather.c
+++ b/src/field_weather.c
@@ -1438,31 +1438,38 @@ bool8 sub_807E460(void)
}
extern const struct Coords16 gUnknown_0839AAC4[];
-extern const struct Coords16 gUnknown_0839AABC[];
+//extern const struct Coords16 gUnknown_0839AABC[];
+extern const s16 gUnknown_0839AABC[][2];
-/*
void sub_807E4EC(struct Sprite *sprite)
{
u32 randVal;
u16 r6;
- s16 r4;
- s16 r0;
+ s32 r4;
+ s32 r0;
if (sprite->data1 == 0)
sprite->data1 = 361;
randVal = sprite->data1 * 1103515245 + 12345;
sprite->data1 = ((randVal & 0x7FFF0000) >> 16) % 600;
r6 = gUnknown_0839AAC4[gUnknown_08396FC4->unknown_6DC].x;
- r4 = sprite->data1 % 31;
- sprite->data2 = r4 * 8;
- r0 = sprite->data1 / 31;
- sprite->data2 = r4 * 128;
- sprite->data3 = r0 * 128;
- sprite->data2 = r4 * 128 - gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC].x * r6;
- sprite->data3 = r0 * 128 - gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC].y * r6;
+
+ r4 = sprite->data1 % 30;
+ sprite->data2 = r4 * 8; // useless assignment
+
+ r0 = sprite->data1 / 30;
+ sprite->data3 = r0 * 8; // useless assignment
+
+ sprite->data2 = r4;
+ sprite->data2 <<= 7;
+
+ sprite->data3 = r0;
+ sprite->data3 <<= 7;
+
+ sprite->data2 -= gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC][0] * r6;
+ sprite->data3 -= gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC][1] * r6;
StartSpriteAnim(sprite, 0);
sprite->data4 = 0;
- sprite->invisible = FALSE;
+ sprite->coordOffsetEnabled = FALSE;
sprite->data0 = r6;
}
-*/ \ No newline at end of file