summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDizzyEggg <jajkodizzy@wp.pl>2017-08-22 19:05:38 +0200
committerDizzyEggg <jajkodizzy@wp.pl>2017-08-22 19:05:38 +0200
commit77cfea2ecfdcb28fa286b967c9635b5e10ff99a2 (patch)
treee0d7730ab59ded72ebf80ee837e9274ebd80ea96
parentbe47f6b54bd4b586d435d6fbff56bc315ff72efc (diff)
all functions decompiled
-rw-r--r--asm/battle_transition.s219
-rw-r--r--ld_script.txt1
-rw-r--r--src/battle_transition.c248
3 files changed, 145 insertions, 323 deletions
diff --git a/asm/battle_transition.s b/asm/battle_transition.s
deleted file mode 100644
index f99f53fb3..000000000
--- a/asm/battle_transition.s
+++ /dev/null
@@ -1,219 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
-
-
- thumb_func_start sub_811D8FC
-sub_811D8FC: @ 811D8FC
- push {r4-r7,lr}
- adds r6, r0, 0
- ldr r0, [sp, 0x14]
- ldr r5, [sp, 0x18]
- ldr r4, [sp, 0x1C]
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 16
- lsrs r3, 16
- lsls r0, 16
- lsrs r0, 16
- adds r7, r0, 0
- lsls r5, 16
- lsrs r5, 16
- lsls r4, 16
- lsrs r4, 16
- strh r1, [r6]
- strh r2, [r6, 0x2]
- strh r1, [r6, 0x4]
- strh r2, [r6, 0x6]
- strh r3, [r6, 0x8]
- strh r7, [r6, 0xA]
- strh r5, [r6, 0xC]
- strh r4, [r6, 0xE]
- lsls r3, 16
- asrs r3, 16
- lsls r1, 16
- asrs r1, 16
- subs r3, r1
- strh r3, [r6, 0x10]
- lsls r0, r3, 16
- cmp r0, 0
- bge _0811D94E
- negs r0, r3
- strh r0, [r6, 0x10]
- lsls r0, r5, 16
- asrs r0, 16
- negs r0, r0
- strh r0, [r6, 0xC]
-_0811D94E:
- lsls r0, r7, 16
- asrs r0, 16
- lsls r1, r2, 16
- asrs r1, 16
- subs r1, r0, r1
- strh r1, [r6, 0x12]
- lsls r0, r1, 16
- cmp r0, 0
- bge _0811D96C
- negs r0, r1
- strh r0, [r6, 0x12]
- lsls r0, r4, 16
- asrs r0, 16
- negs r0, r0
- strh r0, [r6, 0xE]
-_0811D96C:
- movs r0, 0
- strh r0, [r6, 0x14]
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_811D8FC
-
- thumb_func_start sub_811D978
-sub_811D978: @ 811D978
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r3, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- ldrh r0, [r3, 0x10]
- mov r8, r0
- movs r1, 0x10
- ldrsh r6, [r3, r1]
- ldrh r2, [r3, 0x12]
- mov r12, r2
- movs r4, 0x12
- ldrsh r5, [r3, r4]
- cmp r6, r5
- ble _0811D9C8
- ldrh r0, [r3, 0xC]
- ldrh r2, [r3, 0x4]
- adds r1, r0, r2
- strh r1, [r3, 0x4]
- ldrh r2, [r3, 0x14]
- add r2, r12
- strh r2, [r3, 0x14]
- lsls r1, r2, 16
- asrs r1, 16
- adds r4, r0, 0
- ldrh r7, [r3, 0xE]
- cmp r1, r6
- ble _0811D9EE
- ldrh r1, [r3, 0x6]
- adds r0, r7, r1
- strh r0, [r3, 0x6]
- mov r1, r8
- b _0811D9EA
-_0811D9C8:
- ldrh r0, [r3, 0xE]
- ldrh r2, [r3, 0x6]
- adds r1, r0, r2
- strh r1, [r3, 0x6]
- ldrh r2, [r3, 0x14]
- add r2, r8
- strh r2, [r3, 0x14]
- lsls r1, r2, 16
- asrs r1, 16
- ldrh r4, [r3, 0xC]
- adds r7, r0, 0
- cmp r1, r5
- ble _0811D9EE
- ldrh r1, [r3, 0x4]
- adds r0, r4, r1
- strh r0, [r3, 0x4]
- mov r1, r12
-_0811D9EA:
- subs r0, r2, r1
- strh r0, [r3, 0x14]
-_0811D9EE:
- movs r5, 0
- lsls r0, r4, 16
- asrs r2, r0, 16
- cmp r2, 0
- ble _0811DA06
- movs r4, 0x4
- ldrsh r1, [r3, r4]
- movs r4, 0x8
- ldrsh r0, [r3, r4]
- ldrh r4, [r3, 0x8]
- cmp r1, r0
- bge _0811DA18
-_0811DA06:
- cmp r2, 0
- bge _0811DA26
- movs r0, 0x4
- ldrsh r1, [r3, r0]
- movs r2, 0x8
- ldrsh r0, [r3, r2]
- ldrh r4, [r3, 0x8]
- cmp r1, r0
- bgt _0811DA26
-_0811DA18:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- mov r0, r9
- cmp r0, 0
- beq _0811DA26
- strh r4, [r3, 0x4]
-_0811DA26:
- lsls r0, r7, 16
- asrs r2, r0, 16
- cmp r2, 0
- ble _0811DA3C
- movs r4, 0x6
- ldrsh r1, [r3, r4]
- movs r4, 0xA
- ldrsh r0, [r3, r4]
- ldrh r4, [r3, 0xA]
- cmp r1, r0
- bge _0811DA4E
-_0811DA3C:
- cmp r2, 0
- bge _0811DA5C
- movs r0, 0x6
- ldrsh r1, [r3, r0]
- movs r2, 0xA
- ldrsh r0, [r3, r2]
- ldrh r4, [r3, 0xA]
- cmp r1, r0
- bgt _0811DA5C
-_0811DA4E:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- mov r0, r10
- cmp r0, 0
- beq _0811DA5C
- strh r4, [r3, 0x6]
-_0811DA5C:
- cmp r5, 0x2
- beq _0811DA64
- movs r0, 0
- b _0811DA66
-_0811DA64:
- movs r0, 0x1
-_0811DA66:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811D978
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/ld_script.txt b/ld_script.txt
index 80b882108..3e4a3ea91 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -227,7 +227,6 @@ SECTIONS {
src/landmark.o(.text);
src/fldeff_strength.o(.text);
src/battle_transition.o(.text);
- asm/battle_transition.o(.text);
src/battle_811DA74.o(.text);
asm/battle_message.o(.text);
src/choose_party.o(.text);
diff --git a/src/battle_transition.c b/src/battle_transition.c
index fcf49a7fb..88d3330f9 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -41,18 +41,7 @@ struct TransitionData
s16 field_1E;
s16 field_20;
s16 field_22;
- s16 field_24;
- s16 field_26;
- s16 field_28;
- s16 field_2A;
- s16 field_2C;
- s16 field_2E;
- s16 field_30;
- s16 field_32;
- s16 field_34;
- s16 field_36;
- s16 field_38;
- s16 field_3A;
+ s16 data[11];
};
#define TRANSITION_STRUCT (*(struct TransitionData *) (ewram + 0xC000))
@@ -178,11 +167,10 @@ static void sub_811D6A8(u16** a0, u16** a1);
static void sub_811D690(u16** a0);
static void sub_811D6D4(void);
static void sub_811D6E8(s16* array, s16 sinAdd, s16 index, s16 indexIncrementer, s16 amplitude, s16 arrSize);
-
-void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3);
-void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6);
-bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2);
-void sub_811CFD0(struct Sprite* sprite);
+static void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3);
+static void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6);
+static bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2);
+static void sub_811CFD0(struct Sprite* sprite);
// const data
@@ -964,7 +952,7 @@ static bool8 Phase2_Transition5_Func1(struct Task* task)
}
SetVBlankCallback(VBlankCB_Phase2_Transition5);
- TRANSITION_STRUCT.field_2C = 120;
+ TRANSITION_STRUCT.data[4] = 120;
task->tState++;
return TRUE;
@@ -974,16 +962,16 @@ static bool8 Phase2_Transition5_Func2(struct Task* task)
{
TRANSITION_STRUCT.VBlank_DMA = 0;
- sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, -1, 1, 1);
+ sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], -1, 1, 1);
do
{
- gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (TRANSITION_STRUCT.field_28 + 1) | 0x7800;
- } while (!sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1));
+ gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] + 1) | 0x7800;
+ } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1));
- TRANSITION_STRUCT.field_2C += 16;
- if (TRANSITION_STRUCT.field_2C >= 240)
+ TRANSITION_STRUCT.data[4] += 16;
+ if (TRANSITION_STRUCT.data[4] >= 240)
{
- TRANSITION_STRUCT.field_2E = 0;
+ TRANSITION_STRUCT.data[5] = 0;
task->tState++;
}
@@ -998,30 +986,30 @@ static bool8 Phase2_Transition5_Func3(struct Task* task)
TRANSITION_STRUCT.VBlank_DMA = 0;
- sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, 240, TRANSITION_STRUCT.field_2E, 1, 1);
+ sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, 240, TRANSITION_STRUCT.data[5], 1, 1);
while (1)
{
- r1 = 120, r3 = TRANSITION_STRUCT.field_28 + 1;
- if (TRANSITION_STRUCT.field_2E >= 80)
- r1 = TRANSITION_STRUCT.field_28, r3 = 240;
- gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (r3) | (r1 << 8);
+ r1 = 120, r3 = TRANSITION_STRUCT.data[2] + 1;
+ if (TRANSITION_STRUCT.data[5] >= 80)
+ r1 = TRANSITION_STRUCT.data[2], r3 = 240;
+ gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8);
if (var != 0)
break;
- var = sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1);
+ var = sub_811D978(TRANSITION_STRUCT.data, 1, 1);
}
- TRANSITION_STRUCT.field_2E += 8;
- if (TRANSITION_STRUCT.field_2E >= 160)
+ TRANSITION_STRUCT.data[5] += 8;
+ if (TRANSITION_STRUCT.data[5] >= 160)
{
- TRANSITION_STRUCT.field_2C = 240;
+ TRANSITION_STRUCT.data[4] = 240;
task->tState++;
}
else
{
- while (TRANSITION_STRUCT.field_2A < TRANSITION_STRUCT.field_2E)
+ while (TRANSITION_STRUCT.data[3] < TRANSITION_STRUCT.data[5])
{
- gUnknown_03004DE0[0][++TRANSITION_STRUCT.field_2A] = (r3) | (r1 << 8);
+ gUnknown_03004DE0[0][++TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8);
}
}
@@ -1033,16 +1021,16 @@ static bool8 Phase2_Transition5_Func4(struct Task* task)
{
TRANSITION_STRUCT.VBlank_DMA = 0;
- sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, 160, 1, 1);
+ sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], 160, 1, 1);
do
{
- gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (TRANSITION_STRUCT.field_28 << 8) | 0xF0;
- } while (!sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1));
+ gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] << 8) | 0xF0;
+ } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1));
- TRANSITION_STRUCT.field_2C -= 16;
- if (TRANSITION_STRUCT.field_2C <= 0)
+ TRANSITION_STRUCT.data[4] -= 16;
+ if (TRANSITION_STRUCT.data[4] <= 0)
{
- TRANSITION_STRUCT.field_2E = 160;
+ TRANSITION_STRUCT.data[5] = 160;
task->tState++;
}
@@ -1057,31 +1045,31 @@ static bool8 Phase2_Transition5_Func5(struct Task* task)
TRANSITION_STRUCT.VBlank_DMA = 0;
- sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, 0, TRANSITION_STRUCT.field_2E, 1, 1);
+ sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, 0, TRANSITION_STRUCT.data[5], 1, 1);
while (1)
{
- r1 = gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] & 0xFF, r2 = TRANSITION_STRUCT.field_28;
- if (TRANSITION_STRUCT.field_2E <= 80)
- r2 = 120, r1 = TRANSITION_STRUCT.field_28;
- gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (r1) | (r2 << 8);
+ r1 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF, r2 = TRANSITION_STRUCT.data[2];
+ if (TRANSITION_STRUCT.data[5] <= 80)
+ r2 = 120, r1 = TRANSITION_STRUCT.data[2];
+ gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8);
r3 = 0;
if (var != 0)
break;
- var = sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1);
+ var = sub_811D978(TRANSITION_STRUCT.data, 1, 1);
}
- TRANSITION_STRUCT.field_2E -= 8;
- if (TRANSITION_STRUCT.field_2E <= 0)
+ TRANSITION_STRUCT.data[5] -= 8;
+ if (TRANSITION_STRUCT.data[5] <= 0)
{
- TRANSITION_STRUCT.field_2C = r3;
+ TRANSITION_STRUCT.data[4] = r3;
task->tState++;
}
else
{
- while (TRANSITION_STRUCT.field_2A > TRANSITION_STRUCT.field_2E)
+ while (TRANSITION_STRUCT.data[3] > TRANSITION_STRUCT.data[5])
{
- gUnknown_03004DE0[0][--TRANSITION_STRUCT.field_2A] = (r1) | (r2 << 8);
+ gUnknown_03004DE0[0][--TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8);
}
}
@@ -1093,20 +1081,20 @@ static bool8 Phase2_Transition5_Func6(struct Task* task)
{
TRANSITION_STRUCT.VBlank_DMA = 0;
- sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, 0, 1, 1);
+ sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], 0, 1, 1);
do
{
s16 r2, r3;
- r2 = 120, r3 = TRANSITION_STRUCT.field_28;
- if (TRANSITION_STRUCT.field_28 >= 120)
+ r2 = 120, r3 = TRANSITION_STRUCT.data[2];
+ if (TRANSITION_STRUCT.data[2] >= 120)
r2 = 0, r3 = 240;
- gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (r3) | (r2 << 8);
+ gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r2 << 8);
- } while (!sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1));
+ } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1));
- TRANSITION_STRUCT.field_2C += 16;
- if (TRANSITION_STRUCT.field_28 > 120)
+ TRANSITION_STRUCT.data[4] += 16;
+ if (TRANSITION_STRUCT.data[2] > 120)
task->tState++;
TRANSITION_STRUCT.VBlank_DMA++;
@@ -1639,12 +1627,12 @@ void sub_811C90C(struct Sprite* sprite)
while (gUnknown_083FD880[sprite->data0](sprite));
}
-bool8 sub_811C934(struct Sprite* sprite)
+static bool8 sub_811C934(struct Sprite* sprite)
{
return FALSE;
}
-bool8 sub_811C938(struct Sprite* sprite)
+static bool8 sub_811C938(struct Sprite* sprite)
{
s16 arr0[2];
s16 arr1[2];
@@ -1658,7 +1646,7 @@ bool8 sub_811C938(struct Sprite* sprite)
return TRUE;
}
-bool8 sub_811C984(struct Sprite* sprite)
+static bool8 sub_811C984(struct Sprite* sprite)
{
sprite->pos1.x += sprite->data1;
if (sprite->data7 && sprite->pos1.x < 133)
@@ -1668,7 +1656,7 @@ bool8 sub_811C984(struct Sprite* sprite)
return FALSE;
}
-bool8 sub_811C9B8(struct Sprite* sprite)
+static bool8 sub_811C9B8(struct Sprite* sprite)
{
sprite->data1 += sprite->data2;
sprite->pos1.x += sprite->data1;
@@ -1681,7 +1669,7 @@ bool8 sub_811C9B8(struct Sprite* sprite)
return FALSE;
}
-bool8 sub_811C9E4(struct Sprite* sprite)
+static bool8 sub_811C9E4(struct Sprite* sprite)
{
sprite->data1 += sprite->data2;
sprite->pos1.x += sprite->data1;
@@ -1931,7 +1919,7 @@ static void HBlankCB_Phase2_Transition9(void)
REG_BLDY = gUnknown_03004DE0[1][REG_VCOUNT];
}
-void sub_811CFD0(struct Sprite* sprite)
+static void sub_811CFD0(struct Sprite* sprite)
{
if (sprite->data5)
{
@@ -2053,7 +2041,7 @@ static bool8 Phase2_Transition11_Func1(struct Task* task)
static bool8 Phase2_Transition11_Func2(struct Task* task)
{
- sub_811D8FC(&TRANSITION_STRUCT.field_24,
+ sub_811D8FC(TRANSITION_STRUCT.data,
gUnknown_083FD8F4[task->data[1]][0],
gUnknown_083FD8F4[task->data[1]][1],
gUnknown_083FD8F4[task->data[1]][2],
@@ -2073,30 +2061,30 @@ static bool8 Phase2_Transition11_Func3(struct Task* task)
for (i = 0, nextFunc = FALSE; i < 16; i++)
{
- s16 r3 = gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] >> 8;
- s16 r4 = gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] & 0xFF;
+ s16 r3 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] >> 8;
+ s16 r4 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF;
if (task->data[2] == 0)
{
- if (r3 < TRANSITION_STRUCT.field_28)
- r3 = TRANSITION_STRUCT.field_28;
+ if (r3 < TRANSITION_STRUCT.data[2])
+ r3 = TRANSITION_STRUCT.data[2];
if (r3 > r4)
r3 = r4;
}
else
{
- if (r4 > TRANSITION_STRUCT.field_28)
- r4 = TRANSITION_STRUCT.field_28;
+ if (r4 > TRANSITION_STRUCT.data[2])
+ r4 = TRANSITION_STRUCT.data[2];
if (r4 <= r3)
r4 = r3;
}
- gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (r4) | (r3 << 8);
+ gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r4) | (r3 << 8);
if (nextFunc)
{
task->tState++;
break;
}
else
- nextFunc = sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1);
+ nextFunc = sub_811D978(TRANSITION_STRUCT.data, 1, 1);
}
TRANSITION_STRUCT.VBlank_DMA++;
@@ -2265,37 +2253,36 @@ static void sub_811D6E8(s16* array, s16 sinAdd, s16 index, s16 indexIncrementer,
}
}
-void sub_811D764(u16* array, s16 a1, s16 a2, s16 a3)
+static void sub_811D764(u16* array, s16 a1, s16 a2, s16 a3)
{
s16 i;
memset(array, 0xA, 160 * sizeof(s16));
for (i = 0; i < 64; i++)
{
- s16 sinResult, cosResult, r1, r6, r7, r8;
- s16 r2, r3;
- s16 j;
+ s16 sinResult, cosResult;
+ s16 toStoreOrr, r2, r3, toStore, r7, r8;
sinResult = Sin(i, a3);
cosResult = Cos(i, a3);
- r1 = a1 - sinResult;
- r6 = a1 + sinResult;
+ toStoreOrr = a1 - sinResult;
+ toStore = a1 + sinResult;
r7 = a2 - cosResult;
r8 = a2 + cosResult;
- if (r1 < 0)
- r1 = 0;
- if (r6 > 0xF0)
- r6 = 0xF0;
+ if (toStoreOrr < 0)
+ toStoreOrr = 0;
+ if (toStore > 0xF0)
+ toStore = 0xF0;
if (r7 < 0)
r7 = 0;
if (r8 > 0x9F)
r8 = 0x9F;
- r6 |= (r1 << 8);
- array[r7] = r6;
- array[r8] = r6;
+ toStore |= (toStoreOrr << 8);
+ array[r7] = toStore;
+ array[r8] = toStore;
cosResult = Cos(i + 1, a3);
r3 = a2 - cosResult;
@@ -2306,26 +2293,81 @@ void sub_811D764(u16* array, s16 a1, s16 a2, s16 a3)
if (r2 > 0x9F)
r2 = 0x9F;
- j = r7;
- while (j > r3)
- {
- array[--j] = r6;
- }
- j = r7;
- while (j < r3)
- {
- array[++j] = r6;
- }
+ while (r7 > r3)
+ array[--r7] = toStore;
+ while (r7 < r3)
+ array[++r7] = toStore;
+
+ while (r8 > r2)
+ array[--r8] = toStore;
+ while (r8 < r2)
+ array[++r8] = toStore;
+ }
+}
+
+static void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6)
+{
+ a0[0] = a1;
+ a0[1] = a2;
+ a0[2] = a1;
+ a0[3] = a2;
+ a0[4] = a3;
+ a0[5] = a4;
+ a0[6] = a5;
+ a0[7] = a6;
+ a0[8] = a3 - a1;
+ if (a0[8] < 0)
+ {
+ a0[8] = -a0[8];
+ a0[6] = -a5;
+ }
+ a0[9] = a4 - a2;
+ if (a0[9] < 0)
+ {
+ a0[9] = -a0[9];
+ a0[7] = -a6;
+ }
+ a0[10] = 0;
+}
- j = r8;
- while (j > r2)
+static bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2)
+{
+ u8 var;
+ if (a0[8] > a0[9])
+ {
+ a0[2] += a0[6];
+ a0[10] += a0[9];
+ if (a0[10] > a0[8])
{
- array[--j] = r6;
+ a0[3] += a0[7];
+ a0[10] -= a0[8];
}
- j = r8;
- while (j < r2)
+ }
+ else
+ {
+ a0[3] += a0[7];
+ a0[10] += a0[8];
+ if (a0[10] > a0[9])
{
- array[++j] = r6;
+ a0[2] += a0[6];
+ a0[10] -= a0[9];
}
}
+ var = 0;
+ if ((a0[6] > 0 && a0[2] >= a0[4]) || (a0[6] < 0 && a0[2] <= a0[4]))
+ {
+ var++;
+ if (a1)
+ a0[2] = a0[4];
+ }
+ if ((a0[7] > 0 && a0[3] >= a0[5]) || (a0[7] < 0 && a0[3] <= a0[5]))
+ {
+ var++;
+ if (a2)
+ a0[3] = a0[5];
+ }
+ if (var == 2)
+ return TRUE;
+ else
+ return FALSE;
}