diff options
Diffstat (limited to 'src/roulette.c')
-rw-r--r-- | src/roulette.c | 610 |
1 files changed, 26 insertions, 584 deletions
diff --git a/src/roulette.c b/src/roulette.c index 39db5630b..25c079cda 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -902,7 +902,7 @@ static void sub_8140470(void) { sub_815168C(&gUnknown_0203AB88->varB8, i, &gUnknown_085B6388[i]); } - + for (i = 0; i < PARTY_SIZE; i++) { switch (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2)) @@ -953,7 +953,7 @@ static void sub_81405CC(void) case 4: if (free_temp_tile_data_buffers_if_possible()) return; - + sub_8140470(); CopyToBgTilemapBuffer(2, gUnknown_085B5FA0, 0, 0); break; @@ -1379,8 +1379,6 @@ static u8 sub_814118C(u16 r0, u16 r1) } } -// r7/r8 swap -#ifdef NONMATCHING static void sub_8141344(u8 taskId) { u8 randf; @@ -1412,8 +1410,7 @@ static void sub_8141344(u8 taskId) g = S16TOPOSFLOAT(g) / 5.0f; gUnknown_0203AB88->var82 = g * 3; - gUnknown_0203AB88->var84 = g; - gUnknown_0203AB88->var86 = g; + gUnknown_0203AB88->var86 = gUnknown_0203AB88->var84 = g; gUnknown_0203AB88->var88 = S16TOPOSFLOAT(angles[(rand & 1) + r5]); gUnknown_0203AB88->var8C = S16TOPOSFLOAT(gUnknown_085B6348[gUnknown_0203AB88->var04_0].var18); @@ -1424,260 +1421,6 @@ static void sub_8141344(u8 taskId) gUnknown_0203AB88->varA0 = 36.0f; gTasks[taskId].func = sub_814155C; } -#else -static const u16 gUnknown_085B6422[4] = {0, 180, 90, 270}; -NAKED -static void sub_8141344(u8 taskId) -{ - asm_unified(" push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x8\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r10, r0\n\ - movs r4, 0\n\ - ldr r1, =gUnknown_085B6422\n\ - mov r0, sp\n\ - movs r2, 0x8\n\ - bl memcpy\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r7, r0, 16\n\ - adds r0, r7, 0\n\ - movs r1, 0x64\n\ - bl __umodsi3\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ - ldr r3, =gUnknown_0203AB88\n\ - ldr r0, [r3]\n\ - ldr r2, =gTasks\n\ - mov r5, r10\n\ - lsls r1, r5, 2\n\ - add r1, r10\n\ - lsls r1, 3\n\ - adds r1, r2\n\ - ldrh r2, [r1, 0x14]\n\ - adds r0, 0x7C\n\ - strb r2, [r0]\n\ - ldr r0, [r3]\n\ - adds r2, r0, 0\n\ - adds r2, 0x7F\n\ - strb r4, [r2]\n\ - subs r2, 0x1\n\ - strb r4, [r2]\n\ - adds r0, 0x7D\n\ - strb r4, [r0]\n\ - ldrh r0, [r1, 0x18]\n\ - adds r1, r7, 0\n\ - bl sub_814118C\n\ - adds r4, r0, 0\n\ - lsls r4, 24\n\ - lsrs r1, r4, 24\n\ - adds r0, r7, 0\n\ - bl __modsi3\n\ - lsrs r4, 25\n\ - subs r0, r4\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - ldr r0, =gLocalTime\n\ - ldrb r0, [r0, 0x2]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - movs r5, 0x1\n\ - cmp r0, 0xC\n\ - bgt _081413C8\n\ - movs r5, 0\n\ -_081413C8:\n\ - cmp r6, 0x4F\n\ - bhi _081413E0\n\ - lsls r0, r5, 25\n\ - b _081413EA\n\ - .pool\n\ -_081413E0:\n\ - lsls r1, r5, 24\n\ - asrs r1, 24\n\ - movs r0, 0x1\n\ - subs r0, r1\n\ - lsls r0, 25\n\ -_081413EA:\n\ - lsrs r5, r0, 24\n\ - ldr r0, _08141530 @ =gUnknown_0203AB88\n\ - ldr r6, [r0]\n\ - ldrb r0, [r6, 0x4]\n\ - lsls r0, 30\n\ - lsrs r0, 25\n\ - ldr r1, _08141534 @ =gUnknown_085B6348\n\ - adds r0, r1\n\ - lsls r4, 24\n\ - asrs r4, 24\n\ - ldrh r0, [r0, 0x1A]\n\ - adds r4, r0\n\ - adds r0, r6, 0\n\ - adds r0, 0x80\n\ - strh r4, [r0]\n\ - lsls r4, 16\n\ - asrs r4, 16\n\ - adds r0, r4, 0\n\ - bl __floatsisf\n\ - cmp r4, 0\n\ - bge _0814141C\n\ - ldr r1, _08141538 @ =0x47800000\n\ - bl __addsf3\n\ -_0814141C:\n\ - ldr r1, _0814153C @ =0x40A00000\n\ - bl __divsf3\n\ - bl __fixunssfsi\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - lsls r0, r4, 1\n\ - adds r0, r4\n\ - movs r2, 0x82\n\ - adds r2, r6\n\ - mov r8, r2\n\ - strh r0, [r2]\n\ - adds r0, r6, 0\n\ - adds r0, 0x84\n\ - strh r4, [r0]\n\ - adds r0, 0x2\n\ - strh r4, [r0]\n\ - movs r0, 0x88\n\ - adds r0, r6\n\ - mov r9, r0\n\ - movs r0, 0x1\n\ - ands r0, r7\n\ - lsls r1, r5, 24\n\ - asrs r1, 24\n\ - adds r0, r1\n\ - lsls r0, 1\n\ - add r0, sp\n\ - movs r1, 0\n\ - ldrsh r4, [r0, r1]\n\ - adds r0, r4, 0\n\ - bl __floatsisf\n\ - cmp r4, 0\n\ - bge _08141468\n\ - ldr r1, _08141538 @ =0x47800000\n\ - bl __addsf3\n\ -_08141468:\n\ - mov r2, r9\n\ - str r0, [r2]\n\ - adds r7, r6, 0\n\ - adds r7, 0x8C\n\ - ldrb r0, [r6, 0x4]\n\ - lsls r0, 30\n\ - lsrs r0, 25\n\ - ldr r5, _08141534 @ =gUnknown_085B6348\n\ - adds r0, r5\n\ - movs r1, 0x18\n\ - ldrsh r4, [r0, r1]\n\ - adds r0, r4, 0\n\ - bl __floatsisf\n\ - adds r5, r0, 0\n\ - cmp r4, 0\n\ - bge _08141492\n\ - ldr r1, _08141538 @ =0x47800000\n\ - bl __addsf3\n\ - adds r5, r0, 0\n\ -_08141492:\n\ - str r5, [r7]\n\ - adds r7, r6, 0\n\ - adds r7, 0x90\n\ - ldr r1, _08141540 @ =0x3F000000\n\ - adds r0, r5, 0\n\ - bl __mulsf3\n\ - adds r1, r5, 0\n\ - bl __subsf3\n\ - adds r5, r0, 0\n\ - mov r2, r8\n\ - movs r0, 0\n\ - ldrsh r4, [r2, r0]\n\ - adds r0, r4, 0\n\ - bl __floatsisf\n\ - adds r2, r0, 0\n\ - cmp r4, 0\n\ - bge _081414C2\n\ - ldr r1, _08141538 @ =0x47800000\n\ - bl __addsf3\n\ - adds r2, r0, 0\n\ -_081414C2:\n\ - adds r0, r5, 0\n\ - adds r1, r2, 0\n\ - bl __divsf3\n\ - str r0, [r7]\n\ - adds r1, r6, 0\n\ - adds r1, 0x94\n\ - ldr r0, _08141544 @ =0x42880000\n\ - str r0, [r1]\n\ - adds r1, 0x8\n\ - ldr r0, _08141548 @ =0x00000000\n\ - str r0, [r1]\n\ - adds r5, r6, 0\n\ - adds r5, 0x98\n\ - mov r1, r8\n\ - movs r2, 0\n\ - ldrsh r4, [r1, r2]\n\ - adds r0, r4, 0\n\ - bl __floatsisf\n\ - adds r2, r0, 0\n\ - cmp r4, 0\n\ - bge _081414F8\n\ - ldr r1, _08141538 @ =0x47800000\n\ - bl __addsf3\n\ - adds r2, r0, 0\n\ -_081414F8:\n\ - ldr r0, _0814154C @ =0x41000000\n\ - adds r1, r2, 0\n\ - bl __divsf3\n\ - bl __negsf2\n\ - str r0, [r5]\n\ - adds r1, r6, 0\n\ - adds r1, 0xA0\n\ - ldr r0, _08141550 @ =0x42100000\n\ - str r0, [r1]\n\ - ldr r1, _08141554 @ =gTasks\n\ - mov r5, r10\n\ - lsls r0, r5, 2\n\ - add r0, r10\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - ldr r1, _08141558 @ =sub_814155C\n\ - str r1, [r0]\n\ - add sp, 0x8\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08141530:\n\ - .4byte gUnknown_0203AB88\n\ -_08141534:\n\ - .4byte gUnknown_085B6348\n\ -_08141538:\n\ - .4byte 0x47800000\n\ -_0814153C:\n\ - .4byte 0x40A00000\n\ -_08141540:\n\ - .4byte 0x3F000000\n\ -_08141544:\n\ - .4byte 0x42880000\n\ -_08141548:\n\ - .4byte 0x00000000\n\ -_0814154C:\n\ - .4byte 0x41000000\n\ -_08141550:\n\ - .4byte 0x42100000\n\ -_08141554:\n\ - .4byte gTasks\n\ -_08141558:\n\ - .4byte sub_814155C"); -} -#endif // NONMATCHING static void sub_814155C(u8 taskId) { @@ -4345,17 +4088,17 @@ static void sub_81448B8(struct Sprite *sprite) gUnknown_0203AB88->var38 = sprite; } -#ifdef NONMATCHING static void sub_8144A24(struct Sprite *sprite) { u8 z; u16 o; - u8 h = 0; // r10 (sp+0xc) - u8 j = 5; // r9 (r9) - u8 p = 0; // sp+0xc (sp+0x10) - u8 i; - u8 s[10] = {}; // sp+0 (sp+0) - u16 t = Random(); // sp+0x10 (r10) + u8 h = 0; + u8 j = 5; + u8 p = 0; + u8 i = 0; + u8 val; + u8 s[10] = {}; + u16 rand = Random(); gUnknown_0203AB88->var7D = 1; gUnknown_0203AB88->var03_5 = TRUE; @@ -4364,13 +4107,14 @@ static void sub_8144A24(struct Sprite *sprite) gUnknown_0203AB88->var88 = sprite->data[3]; gUnknown_0203AB88->var98 = 0.0f; gUnknown_0203AB88->var8C = gUnknown_085B6348[gUnknown_0203AB88->var04_0].var1C; + o = (gUnknown_0203AB88->var04_0 * 30 + 33) + (0x1 - gUnknown_0203AB88->var03_0) * 15; for (i = 0; i < 4; i++) { if (o < sprite->data[3] && sprite->data[3] <= o + 90) { sprite->data[0] = i / 2; - gUnknown_0203AB88->var03_0 = i & 1; + gUnknown_0203AB88->var03_0 = i % 2; break; } if (i == 3) @@ -4381,354 +4125,52 @@ static void sub_8144A24(struct Sprite *sprite) } o += 90; } + if (gUnknown_0203AB88->var03_0) { if (sprite->data[0]) - { PlayCry1(SPECIES_TAILLOW, -63); - } else - { PlayCry1(SPECIES_TAILLOW, 63); - } } else { PlayCry1(SPECIES_SHROOMISH, -63); } - i = 2; + + val = 2; z = (gUnknown_0203AB88->var7F + 2) % 12; + if (gUnknown_0203AB88->var03_0 == 1 && gUnknown_0203AB88->var04_0 == 1) j += 6; else - j += i; - for (; i < j; i++) + j += val; + + for (i = val; i < j; i++) { if (!(gUnknown_0203AB88->var08 & gUnknown_085B62E4[z].var04)) { s[h++] = i; - if (!p && (gUnknown_085B62E4[z].var04 & gUnknown_085B6154[gUnknown_0203AB88->var1B[gUnknown_0203AB88->var1A_0]].var00)) - { + if (p == 0 && (gUnknown_085B62E4[z].var04 & gUnknown_085B6154[gUnknown_0203AB88->var1B[gUnknown_0203AB88->var1A_0]].var0C)) p = i; - } } z = (z + 1) % 0xC; } + if ((gUnknown_0203AB88->var03_0 + 1) & gUnknown_0203AB88->var02) { - if (p && (t & 0xFF) < 0xc0) - { + if (p && (rand & 0xFF) < 0xc0) sprite->data[7] = p; - } else - { - sprite->data[7] = s[t % h]; - } + sprite->data[7] = s[rand % h]; } else { - sprite->data[7] = s[t % h]; + sprite->data[7] = s[rand % h]; } + sprite->callback = sub_8144168; } -#else -NAKED -static void sub_8144A24(struct Sprite *sprite) -{ - asm_unified("push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x14\n\ - adds r7, r0, 0\n\ - movs r0, 0\n\ - mov r9, r0\n\ - movs r1, 0x5\n\ - mov r8, r1\n\ - str r0, [sp, 0xC]\n\ - mov r0, sp\n\ - movs r1, 0\n\ - movs r2, 0xA\n\ - bl memset\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x10]\n\ - ldr r3, _08144B10 @ =gUnknown_0203AB88\n\ - ldr r0, [r3]\n\ - adds r0, 0x7D\n\ - movs r5, 0x1\n\ - strb r5, [r0]\n\ - ldr r2, [r3]\n\ - ldrb r0, [r2, 0x3]\n\ - movs r1, 0x20\n\ - orrs r0, r1\n\ - strb r0, [r2, 0x3]\n\ - ldr r2, [r3]\n\ - ldrb r1, [r2, 0x3]\n\ - movs r0, 0x41\n\ - negs r0, r0\n\ - ands r0, r1\n\ - strb r0, [r2, 0x3]\n\ - ldr r0, [r3]\n\ - adds r0, 0x7E\n\ - movs r1, 0xFF\n\ - strb r1, [r0]\n\ - ldr r6, [r3]\n\ - adds r4, r6, 0\n\ - adds r4, 0x88\n\ - movs r1, 0x34\n\ - ldrsh r0, [r7, r1]\n\ - bl __floatsisf\n\ - str r0, [r4]\n\ - adds r1, r6, 0\n\ - adds r1, 0x98\n\ - ldr r0, _08144B14 @ =0x00000000\n\ - str r0, [r1]\n\ - adds r2, r6, 0\n\ - adds r2, 0x8C\n\ - ldr r1, _08144B18 @ =gUnknown_085B6348\n\ - ldrb r0, [r6, 0x4]\n\ - lsls r0, 30\n\ - lsrs r0, 25\n\ - adds r1, 0x1C\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - str r0, [r2]\n\ - ldrb r0, [r6, 0x4]\n\ - lsls r0, 30\n\ - lsrs r0, 30\n\ - lsls r1, r0, 4\n\ - subs r1, r0\n\ - lsls r1, 1\n\ - adds r1, 0x21\n\ - ldrb r0, [r6, 0x3]\n\ - lsls r0, 27\n\ - lsrs r0, 27\n\ - subs r5, r0\n\ - lsls r0, r5, 4\n\ - subs r0, r5\n\ - adds r1, r0\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - mov r5, r9\n\ - movs r0, 0x34\n\ - ldrsh r2, [r7, r0]\n\ -_08144ACA:\n\ - cmp r1, r2\n\ - bge _08144AD6\n\ - adds r0, r1, 0\n\ - adds r0, 0x5A\n\ - cmp r2, r0\n\ - ble _08144B38\n\ -_08144AD6:\n\ - cmp r5, 0x3\n\ - beq _08144B1C\n\ - adds r0, r1, 0\n\ - adds r0, 0x5A\n\ - lsls r0, 16\n\ - lsrs r1, r0, 16\n\ - adds r0, r5, 0x1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - cmp r5, 0x3\n\ - bls _08144ACA\n\ -_08144AEC:\n\ - ldr r0, _08144B10 @ =gUnknown_0203AB88\n\ - ldr r0, [r0]\n\ - ldrb r1, [r0, 0x3]\n\ - movs r0, 0x1F\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08144B64\n\ - movs r1, 0x2E\n\ - ldrsh r0, [r7, r1]\n\ - cmp r0, 0\n\ - beq _08144B58\n\ - movs r0, 0x98\n\ - lsls r0, 1\n\ - movs r1, 0x3F\n\ - negs r1, r1\n\ - bl PlayCry1\n\ - b _08144B70\n\ - .align 2, 0\n\ -_08144B10:\n\ - .4byte gUnknown_0203AB88\n\ -_08144B14:\n\ - .4byte 0x00000000\n\ -_08144B18:\n\ - .4byte gUnknown_085B6348\n\ -_08144B1C:\n\ - movs r0, 0x1\n\ - strh r0, [r7, 0x2E]\n\ - ldr r0, =gUnknown_0203AB88\n\ - ldr r2, [r0]\n\ - ldrb r1, [r2, 0x3]\n\ - movs r0, 0x20\n\ - negs r0, r0\n\ - ands r0, r1\n\ - movs r1, 0x1\n\ - orrs r0, r1\n\ - strb r0, [r2, 0x3]\n\ - b _08144AEC\n\ - .pool\n\ -_08144B38:\n\ - lsrs r0, r5, 1\n\ - strh r0, [r7, 0x2E]\n\ - ldr r0, =gUnknown_0203AB88\n\ - ldr r3, [r0]\n\ - movs r1, 0x1\n\ - ands r1, r5\n\ - ldrb r2, [r3, 0x3]\n\ - movs r0, 0x20\n\ - negs r0, r0\n\ - ands r0, r2\n\ - orrs r0, r1\n\ - strb r0, [r3, 0x3]\n\ - b _08144AEC\n\ - .pool\n\ -_08144B58:\n\ - movs r0, 0x98\n\ - lsls r0, 1\n\ - movs r1, 0x3F\n\ - bl PlayCry1\n\ - b _08144B70\n\ -_08144B64:\n\ - movs r0, 0x99\n\ - lsls r0, 1\n\ - movs r1, 0x3F\n\ - negs r1, r1\n\ - bl PlayCry1\n\ -_08144B70:\n\ - movs r0, 0x2\n\ - mov r10, r0\n\ - ldr r4, =gUnknown_0203AB88\n\ - ldr r5, [r4]\n\ - adds r0, r5, 0\n\ - adds r0, 0x7F\n\ - ldrb r0, [r0]\n\ - adds r0, 0x2\n\ - movs r1, 0xC\n\ - bl __modsi3\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - ldrb r1, [r5, 0x3]\n\ - movs r0, 0x1F\n\ - ands r0, r1\n\ - cmp r0, 0x1\n\ - bne _08144BA8\n\ - ldrb r1, [r5, 0x4]\n\ - movs r0, 0x3\n\ - ands r0, r1\n\ - cmp r0, 0x1\n\ - bne _08144BA8\n\ - mov r0, r8\n\ - adds r0, 0x6\n\ - b _08144BAC\n\ - .pool\n\ -_08144BA8:\n\ - mov r0, r8\n\ - add r0, r10\n\ -_08144BAC:\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r8, r0\n\ - mov r5, r10\n\ - cmp r5, r8\n\ - bcs _08144C18\n\ - ldr r1, =gUnknown_085B6154+0xC\n\ - mov r10, r1\n\ -_08144BBC:\n\ - ldr r3, [r4]\n\ - lsls r0, r6, 3\n\ - ldr r1, =gUnknown_085B62E4+0x4\n\ - adds r0, r1\n\ - ldr r1, [r3, 0x8]\n\ - ldr r2, [r0]\n\ - ands r1, r2\n\ - cmp r1, 0\n\ - bne _08144C02\n\ - mov r0, r9\n\ - adds r1, r0, 0x1\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - mov r9, r1\n\ - add r0, sp\n\ - strb r5, [r0]\n\ - ldr r0, [sp, 0xC]\n\ - cmp r0, 0\n\ - bne _08144C02\n\ - ldrb r1, [r3, 0x1A]\n\ - lsls r1, 28\n\ - lsrs r1, 28\n\ - adds r0, r3, 0\n\ - adds r0, 0x1B\n\ - adds r0, r1\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - add r0, r10\n\ - ldr r0, [r0]\n\ - ands r2, r0\n\ - cmp r2, 0\n\ - beq _08144C02\n\ - str r5, [sp, 0xC]\n\ -_08144C02:\n\ - adds r0, r6, 0x1\n\ - movs r1, 0xC\n\ - bl __modsi3\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - adds r0, r5, 0x1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - cmp r5, r8\n\ - bcc _08144BBC\n\ -_08144C18:\n\ - ldr r0, [r4]\n\ - ldrb r1, [r0, 0x3]\n\ - lsls r1, 27\n\ - lsrs r1, 27\n\ - adds r1, 0x1\n\ - ldrb r0, [r0, 0x2]\n\ - ands r1, r0\n\ - cmp r1, 0\n\ - beq _08144C48\n\ - ldr r1, [sp, 0xC]\n\ - cmp r1, 0\n\ - beq _08144C48\n\ - movs r0, 0xFF\n\ - ldr r1, [sp, 0x10]\n\ - ands r0, r1\n\ - cmp r0, 0xBF\n\ - bhi _08144C48\n\ - mov r0, sp\n\ - ldrh r0, [r0, 0xC]\n\ - b _08144C54\n\ - .pool\n\ -_08144C48:\n\ - ldr r0, [sp, 0x10]\n\ - mov r1, r9\n\ - bl __modsi3\n\ - add r0, sp\n\ - ldrb r0, [r0]\n\ -_08144C54:\n\ - strh r0, [r7, 0x3C]\n\ - ldr r1, =sub_8144168\n\ - str r1, [r7, 0x1C]\n\ - add sp, 0x14\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool"); -} -#endif // NONMATCHING static const u16 gUnknown_085B7B1A[] = { 0x907, @@ -4955,7 +4397,7 @@ static void sub_81450D8(struct Sprite *sprite) static void sub_8145218(struct Sprite *sprite) { s8 t[2] = {-1, 1}; - + if (sprite->data[1]-- >= 0) { sprite->pos1.x += t[gUnknown_0203AB88->var38->data[0]] * 2; |