summaryrefslogtreecommitdiff
path: root/src/roulette_util.c
diff options
context:
space:
mode:
authorM <No Email>2018-01-06 00:21:01 +0100
committerMade-s <made111@gmx.de>2018-01-06 00:24:34 +0100
commite9bb490023f346697b4f432a9add1fe158f2038d (patch)
tree2cba636ce459725a3a6b833a94ff0be750cb4394 /src/roulette_util.c
parentba4b0d8dd2587667c04e6cc63e31afe16fba1381 (diff)
finish roulette file
Diffstat (limited to 'src/roulette_util.c')
-rw-r--r--src/roulette_util.c615
1 files changed, 310 insertions, 305 deletions
diff --git a/src/roulette_util.c b/src/roulette_util.c
index bb47ed540..53585714e 100644
--- a/src/roulette_util.c
+++ b/src/roulette_util.c
@@ -4,378 +4,383 @@
static u8 sub_81249E4(struct UnkStruct3 *);
static u8 sub_8124BEC(struct UnkStruct3 *);
+u8 unref_sub_81249B0(struct UnkStruct0 *, u8);
extern u16 gPlttBufferFaded[];
extern u16 gPlttBufferUnfaded[];
void sub_8124918(struct UnkStruct0 *r0)
{
- r0->val0 = 0;
- r0->val2 = 0;
- memset((&r0->val3), 0, 0xC0);
+ r0->var00 = 0;
+ r0->var02 = 0;
+ memset((&r0->var04), 0, 0xC0);
}
u8 sub_812492C(struct UnkStruct0 *r0, u8 r1, struct UnkStruct1 *r2)
{
- if (!(r1 < 0x10) || (r0->val3[r1].field1))
- return 0xFF;
+ if (!(r1 < 0x10) || (r0->var04[r1].var00_7))
+ return 0xFF;
- r0->val3[r1].val4.val0 = r2->val0;
- r0->val3[r1].val4.val1 = r2->val1;
- r0->val3[r1].val4.val2 = r2->val2;
- r0->val3[r1].val4.val3 = r2->val3;
- r0->val3[r1].val4.val4 = r2->val4;
- r0->val3[r1].val4.field0 = r2->field0;
- r0->val3[r1].val4.field1 = r2->field1;
- r0->val3[r1].val4.field2 = r2->field2;
+ r0->var04[r1].var04.var00 = r2->var00;
+ r0->var04[r1].var04.var02 = r2->var02;
+ r0->var04[r1].var04.var04 = r2->var04;
+ r0->var04[r1].var04.var05 = r2->var05;
+ r0->var04[r1].var04.var06 = r2->var06;
+ r0->var04[r1].var04.var07_0 = r2->var07_0;
+ r0->var04[r1].var04.var07_5 = r2->var07_5;
+ r0->var04[r1].var04.var07_7 = r2->var07_7;
- //Why not r0->val3[r1].val4 = *r2; ?
- r0->val3[r1].field0 = 0x0;
- r0->val3[r1].field1 = 0x1;
+ r0->var04[r1].var00_0 = 0x0;
+ r0->var04[r1].var00_7 = 0x1;
- r0->val3[r1].val2 = 0x0;
- r0->val3[r1].val1 = 0x0;
- if (r0->val3[r1].val4.field2 < 0)
- r0->val3[r1].val3 = 0xFF;
- else
- r0->val3[r1].val3 = 0x1;
- return r1;
+ r0->var04[r1].var02 = 0x0;
+ r0->var04[r1].var01 = 0x0;
+ if (r0->var04[r1].var04.var07_7 < 0)
+ r0->var04[r1].var03 = 0xFF;
+ else
+ r0->var04[r1].var03 = 0x1;
+ return r1;
}
#ifdef NONMATCHING
u8 unref_sub_81249B0(struct UnkStruct0 *r0, u8 r1)
{
- if (!(r1 < 0x10) || (r0->val3[r1].field1))
- return 0xFF;
- r0->val3[r1] = (struct UnkStruct3){0};
- return r1;
+ if (r1 < 0x10)
+ {
+ if (r0->var04[r1].var00_7)
+ {
+ r0->var04[r1] = (struct UnkStruct3){0};
+ return r1;
+ }
+ }
+ return 0xFF;
}
#else
__attribute__((naked))
u8 unref_sub_81249B0(struct UnkStruct0 *r0 , u8 r1)
{
- asm(".syntax unified\n\
- push {r4,lr}\n\
- adds r2, r0, 0\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- adds r4, r1, 0\n\
- cmp r4, 0xF\n\
- bhi _081249DC\n\
- lsls r0, r4, 1\n\
- adds r0, r4\n\
- lsls r0, 2\n\
- adds r1, r2, r0\n\
- ldrb r0, [r1, 0x4]\n\
- lsrs r0, 7\n\
- cmp r0, 0\n\
- beq _081249DC\n\
- adds r0, r1, 0x4\n\
- movs r1, 0\n\
- movs r2, 0xC\n\
- bl memset\n\
- adds r0, r4, 0\n\
- b _081249DE\n\
- _081249DC:\n\
- movs r0, 0xFF\n\
- _081249DE:\n\
- pop {r4}\n\
- pop {r1}\n\
- bx r1\n\
- .syntax divided\n");
+ asm(".syntax unified\n\
+ push {r4,lr}\n\
+ adds r2, r0, 0\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ adds r4, r1, 0\n\
+ cmp r4, 0xF\n\
+ bhi _081249DC\n\
+ lsls r0, r4, 1\n\
+ adds r0, r4\n\
+ lsls r0, 2\n\
+ adds r1, r2, r0\n\
+ ldrb r0, [r1, 0x4]\n\
+ lsrs r0, 7\n\
+ cmp r0, 0\n\
+ beq _081249DC\n\
+ adds r0, r1, 0x4\n\
+ movs r1, 0\n\
+ movs r2, 0xC\n\
+ bl memset\n\
+ adds r0, r4, 0\n\
+ b _081249DE\n\
+ _081249DC:\n\
+ movs r0, 0xFF\n\
+ _081249DE:\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .syntax divided\n");
}
#endif
u8 sub_81249E4(struct UnkStruct3 *r0)
{
- u8 i;
- u8 returnval;
- for (i = 0; i < r0->val4.val2; i++)
- {
- u32 offset = r0->val4.val1 + i;
- struct PlttData *faded = (struct PlttData *)&gPlttBufferFaded[offset];
- struct PlttData *unfaded = (struct PlttData *)&gPlttBufferUnfaded[offset];
- switch(r0->field0)
- {
- case 0x1:
- if ((u32)(faded->r + r0->val3) < 0x20)
- faded->r += r0->val3;
- if ((u32)(faded->g + r0->val3) < 0x20)
- faded->g += r0->val3;
- if ((u32)(faded->b + r0->val3) < 0x20)
- faded->b += r0->val3;
- break;
- case 0x2:
- if (r0->val3 < 0)
- {
- if (!(faded->r + r0->val3 < unfaded->r))
- faded->r += r0->val3;
- if (!(faded->g + r0->val3 < unfaded->g))
- faded->g += r0->val3;
- if (!(faded->b + r0->val3 < unfaded->b))
- faded->b += r0->val3;
- }
- else
- {
- if (!(faded->r + r0->val3 > unfaded->r))
- faded->r += r0->val3;
- if (!(faded->g + r0->val3 > unfaded->g))
- faded->g += r0->val3;
- if (!(faded->b + r0->val3 > unfaded->b))
- faded->b += r0->val3;
- }
- break;
- }
- }
- if (((u32)r0->val2++) != r0->val4.field0)
- {
- returnval = 0x0;
- }
- else
- {
- r0->val2 = 0x0;
- r0->val3 = r0->val3 * -1;
- if (r0->field0 == 0x1)
- r0->field0++;
- else
- r0->field0--;
- returnval = 0x1;
- }
- return returnval;
+ u8 i;
+ u8 returnval;
+ for (i = 0; i < r0->var04.var04; i++)
+ {
+ u32 offset = r0->var04.var02 + i;
+ struct PlttData *faded = (struct PlttData *)&gPlttBufferFaded[offset];
+ struct PlttData *unfaded = (struct PlttData *)&gPlttBufferUnfaded[offset];
+ switch(r0->var00_0)
+ {
+ case 0x1:
+ if ((u32)(faded->r + r0->var03) < 0x20)
+ faded->r += r0->var03;
+ if ((u32)(faded->g + r0->var03) < 0x20)
+ faded->g += r0->var03;
+ if ((u32)(faded->b + r0->var03) < 0x20)
+ faded->b += r0->var03;
+ break;
+ case 0x2:
+ if (r0->var03 < 0)
+ {
+ if (!(faded->r + r0->var03 < unfaded->r))
+ faded->r += r0->var03;
+ if (!(faded->g + r0->var03 < unfaded->g))
+ faded->g += r0->var03;
+ if (!(faded->b + r0->var03 < unfaded->b))
+ faded->b += r0->var03;
+ }
+ else
+ {
+ if (!(faded->r + r0->var03 > unfaded->r))
+ faded->r += r0->var03;
+ if (!(faded->g + r0->var03 > unfaded->g))
+ faded->g += r0->var03;
+ if (!(faded->b + r0->var03 > unfaded->b))
+ faded->b += r0->var03;
+ }
+ break;
+ }
+ }
+ if (((u32)r0->var02++) != r0->var04.var07_0)
+ {
+ returnval = 0x0;
+ }
+ else
+ {
+ r0->var02 = 0x0;
+ r0->var03 = r0->var03 * -1;
+ if (r0->var00_0 == 0x1)
+ r0->var00_0++;
+ else
+ r0->var00_0--;
+ returnval = 0x1;
+ }
+ return returnval;
}
u8 sub_8124BEC(struct UnkStruct3 *r0)
{
- u8 rg2 = 0;
- switch (r0->field0)
- {
- case 0x1:
- for (rg2 = 0; rg2 < r0->val4.val2; rg2++)
- gPlttBufferFaded[r0->val4.val1 + rg2] = r0->val4.val0;
- r0->field0++;
- break;
- case 0x2:
- for (rg2 = 0; rg2 < r0->val4.val2; rg2++)
- gPlttBufferFaded[r0->val4.val1 + rg2] = gPlttBufferUnfaded[r0->val4.val1 + rg2];
- r0->field0--;
- break;
- }
- return 0x1;
+ u8 rg2 = 0;
+ switch (r0->var00_0)
+ {
+ case 0x1:
+ for (rg2 = 0; rg2 < r0->var04.var04; rg2++)
+ gPlttBufferFaded[r0->var04.var02 + rg2] = r0->var04.var00;
+ r0->var00_0++;
+ break;
+ case 0x2:
+ for (rg2 = 0; rg2 < r0->var04.var04; rg2++)
+ gPlttBufferFaded[r0->var04.var02 + rg2] = gPlttBufferUnfaded[r0->var04.var02 + rg2];
+ r0->var00_0--;
+ break;
+ }
+ return 0x1;
}
void task_tutorial_controls_fadein(struct UnkStruct0 *r0)
{
- u8 i = 0;
- if (r0->val0)
- {
- for (i = 0; i < 0x10; i++)
- {
- if ((r0->val2 >> i) & 0x1)
- {
- if (((u8)--r0->val3[i].val1) == 0xFF) // if underflow ?
- {
- if (r0->val3[i].val4.val0 & (0x80 << 8)) // PlttData->unused_15 ?
- sub_81249E4(&r0->val3[i]);
- else
- sub_8124BEC(&r0->val3[i]);
- r0->val3[i].val1 = r0->val3[i].val4.val3;
- }
- }
- }
- }
+ u8 i = 0;
+ if (r0->var00)
+ {
+ for (i = 0; i < 0x10; i++)
+ {
+ if ((r0->var02 >> i) & 0x1)
+ {
+ if (((u8)--r0->var04[i].var01) == 0xFF) // if underflow ?
+ {
+ if (r0->var04[i].var04.var00 & (0x80 << 8)) // PlttData->unused_15 ?
+ sub_81249E4(&r0->var04[i]);
+ else
+ sub_8124BEC(&r0->var04[i]);
+ r0->var04[i].var01 = r0->var04[i].var04.var05;
+ }
+ }
+ }
+ }
}
void sub_8124CE8(struct UnkStruct0 *r0, u16 r1)
{
- u8 i = 0;
- r0->val0++;
- for (i = 0; i < 0x10; i++)
- {
- if ((r1 >> i) & 0x1)
- {
- if (r0->val3[i].field1)
- {
- r0->val2 |= 0x1 << i;
- r0->val3[i].field0 = 0x1;
- }
- }
- }
+ u8 i = 0;
+ r0->var00++;
+ for (i = 0; i < 0x10; i++)
+ {
+ if ((r1 >> i) & 0x1)
+ {
+ if (r0->var04[i].var00_7)
+ {
+ r0->var02 |= 0x1 << i;
+ r0->var04[i].var00_0 = 0x1;
+ }
+ }
+ }
}
void sub_8124D3C(struct UnkStruct0 *r0, u16 r1)
{
- u8 i;
- for (i = 0; i < 0x10; i++)
- {
- if ((r0->val2 >> i) & 0x1)
- {
- if (r0->val3[i].field1)
- {
- if ((r1 >> i) & 0x1)
- {
- u32 offset = r0->val3[i].val4.val1;
- u16 *faded = &gPlttBufferFaded[offset];
- u16 *unfaded = &gPlttBufferUnfaded[offset];
- memcpy(faded, unfaded, r0->val3[i].val4.val2 * 2);
- r0->val3[i].field0 = 0x0;
- r0->val3[i].val2 = 0x0;
- r0->val3[i].val1 = 0x0;
- if (r0->val3[i].val4.field2 < 0)
- r0->val3[i].val3 = 0xFF;
- else
- r0->val3[i].val3 = 0x1;
- }
- }
- }
- }
- if (r1 == 0xFFFF)
- {
- r0->val0 = 0x0;
- r0->val2 = 0x0;
- }
- else
- {
- r0->val2 = r0->val2 & ~r1;
- }
+ u8 i;
+ for (i = 0; i < 0x10; i++)
+ {
+ if ((r0->var02 >> i) & 0x1)
+ {
+ if (r0->var04[i].var00_7)
+ {
+ if ((r1 >> i) & 0x1)
+ {
+ u32 offset = r0->var04[i].var04.var02;
+ u16 *faded = &gPlttBufferFaded[offset];
+ u16 *unfaded = &gPlttBufferUnfaded[offset];
+ memcpy(faded, unfaded, r0->var04[i].var04.var04 * 2);
+ r0->var04[i].var00_0 = 0x0;
+ r0->var04[i].var02 = 0x0;
+ r0->var04[i].var01 = 0x0;
+ if (r0->var04[i].var04.var07_7 < 0)
+ r0->var04[i].var03 = 0xFF;
+ else
+ r0->var04[i].var03 = 0x1;
+ }
+ }
+ }
+ }
+ if (r1 == 0xFFFF)
+ {
+ r0->var00 = 0x0;
+ r0->var02 = 0x0;
+ }
+ else
+ {
+ r0->var02 = r0->var02 & ~r1;
+ }
}
#ifdef NONMATCHING
void sub_8124DDC(u16 *r0, u16 r1, u8 r2, u8 r3, u8 r4, u8 r5)
{
- u16 *rg0;
- u8 c;
- u8 i = 0;
- u32 offset= r3 * 0x20 + r2;
- rg0 = &r0[offset];
- for (i = 0; i < r5; i++)
- {
- rg0 = &rg0[i * 0x20 ];
- c = 0;
- for (c = 0; c < r4; c++)
- {
- *rg0++ = r1;
- }
- }
+ u16 *rg0;
+ u8 c;
+ u8 i = 0;
+ u32 offset= r3 * 0x20 + r2;
+ rg0 = &r0[offset];
+ for (i = 0; i < r5; i++)
+ {
+ rg0 = &rg0[i * 0x20 ];
+ c = 0;
+ for (c = 0; c < r4; c++)
+ {
+ *rg0++ = r1;
+ }
+ }
}
#else
__attribute__((naked))
void sub_8124DDC(u16 *r0, u16 r1, u8 r2, u8 r3, u8 r4, u8 r5)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- adds r6, r0, 0\n\
- ldr r0, [sp, 0x14]\n\
- ldr r4, [sp, 0x18]\n\
- lsls r1, 16\n\
- lsrs r7, r1, 16\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- lsls r3, 24\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- movs r1, 0\n\
- lsrs r3, 19\n\
- adds r3, r2\n\
- lsls r3, 1\n\
- adds r6, r3\n\
- cmp r1, r4\n\
- bcs _08124E26\n\
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ adds r6, r0, 0\n\
+ ldr r0, [sp, 0x14]\n\
+ ldr r4, [sp, 0x18]\n\
+ lsls r1, 16\n\
+ lsrs r7, r1, 16\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ lsls r3, 24\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ movs r1, 0\n\
+ lsrs r3, 19\n\
+ adds r3, r2\n\
+ lsls r3, 1\n\
+ adds r6, r3\n\
+ cmp r1, r4\n\
+ bcs _08124E26\n\
_08124E04:\n\
- lsls r0, r1, 6\n\
- adds r2, r6, r0\n\
- movs r0, 0\n\
- adds r3, r1, 0x1\n\
- cmp r0, r5\n\
- bcs _08124E1E\n\
+ lsls r0, r1, 6\n\
+ adds r2, r6, r0\n\
+ movs r0, 0\n\
+ adds r3, r1, 0x1\n\
+ cmp r0, r5\n\
+ bcs _08124E1E\n\
_08124E10:\n\
- strh r7, [r2]\n\
- adds r2, 0x2\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, r5\n\
- bcc _08124E10\n\
+ strh r7, [r2]\n\
+ adds r2, 0x2\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, r5\n\
+ bcc _08124E10\n\
_08124E1E:\n\
- lsls r0, r3, 24\n\
- lsrs r1, r0, 24\n\
- cmp r1, r4\n\
- bcc _08124E04\n\
+ lsls r0, r3, 24\n\
+ lsrs r1, r0, 24\n\
+ cmp r1, r4\n\
+ bcc _08124E04\n\
_08124E26:\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
}
#endif
#ifdef NONMATCHING
void sub_8124E2C(u16 *r0, u16 *r1, u8 r2, u8 r3, u8 r4, u8 r5)
{
- u16 *rg0;
- u8 c;
- u8 i = 0;
- u32 offset= r3 * 0x20 + r2;
- //rg0 = &r0[offset];
- for (i = 0; i < r5; i++)
- {
- rg0 = &r0[offset + i * 0x20 ];
- c = 0;
- for (c = 0; c < r4; c++)
- {
- *(rg0++) = *(r1++);
- }
- }
+ u16 *rg0;
+ u8 c;
+ u8 i = 0;
+ u32 offset= r3 * 0x20 + r2;
+ //rg0 = &r0[offset];
+ for (i = 0; i < r5; i++)
+ {
+ rg0 = &r0[offset + i * 0x20 ];
+ c = 0;
+ for (c = 0; c < r4; c++)
+ {
+ *(rg0++) = *(r1++);
+ }
+ }
}
#else
__attribute__((naked))
void sub_8124E2C(u16 *r0, u16 *r1, u8 r2, u8 r3, u8 r4, u8 r5)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- adds r7, r0, 0\n\
- ldr r0, [sp, 0x14]\n\
- ldr r4, [sp, 0x18]\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- lsls r3, 24\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- lsls r4, 24\n\
- lsrs r6, r4, 24\n\
- movs r4, 0\n\
- lsrs r3, 19\n\
- adds r3, r2\n\
- lsls r3, 1\n\
- adds r7, r3\n\
- cmp r4, r6\n\
- bcs _08124E76\n\
- _08124E50:\n\
- lsls r0, r4, 6\n\
- adds r2, r7, r0\n\
- movs r3, 0\n\
- adds r4, 0x1\n\
- cmp r3, r5\n\
- bcs _08124E6E\n\
- _08124E5C:\n\
- ldrh r0, [r1]\n\
- strh r0, [r2]\n\
- adds r1, 0x2\n\
- adds r2, 0x2\n\
- adds r0, r3, 0x1\n\
- lsls r0, 24\n\
- lsrs r3, r0, 24\n\
- cmp r3, r5\n\
- bcc _08124E5C\n\
- _08124E6E:\n\
- lsls r0, r4, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, r6\n\
- bcc _08124E50\n\
- _08124E76:\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ adds r7, r0, 0\n\
+ ldr r0, [sp, 0x14]\n\
+ ldr r4, [sp, 0x18]\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ lsls r3, 24\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ lsls r4, 24\n\
+ lsrs r6, r4, 24\n\
+ movs r4, 0\n\
+ lsrs r3, 19\n\
+ adds r3, r2\n\
+ lsls r3, 1\n\
+ adds r7, r3\n\
+ cmp r4, r6\n\
+ bcs _08124E76\n\
+ _08124E50:\n\
+ lsls r0, r4, 6\n\
+ adds r2, r7, r0\n\
+ movs r3, 0\n\
+ adds r4, 0x1\n\
+ cmp r3, r5\n\
+ bcs _08124E6E\n\
+ _08124E5C:\n\
+ ldrh r0, [r1]\n\
+ strh r0, [r2]\n\
+ adds r1, 0x2\n\
+ adds r2, 0x2\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, r5\n\
+ bcc _08124E5C\n\
+ _08124E6E:\n\
+ lsls r0, r4, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, r6\n\
+ bcc _08124E50\n\
+ _08124E76:\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
}
#endif