diff options
Diffstat (limited to 'src')
39 files changed, 1362 insertions, 3844 deletions
diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c index 1c88dc23e..674ae5188 100644 --- a/src/battle/anim/dark.c +++ b/src/battle/anim/dark.c @@ -14,7 +14,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; extern u16 gBattle_BG1_X; extern u16 gBattle_BG1_Y; extern u16 gBattle_BG2_X; @@ -69,7 +69,7 @@ static void sub_80DFC9C(u8 taskId) gTasks[taskId].data[2] = 0; if (r2 == 16) { - gSprites[gObjectBankIDs[gAnimBankAttacker]].invisible = 1; + gSprites[gBankSpriteIds[gAnimBankAttacker]].invisible = 1; DestroyAnimVisualTask(taskId); } } @@ -792,13 +792,13 @@ static void sub_80E08CC(u8 priority) void sub_80E0918(u8 taskId) { u8 toBG2 = GetBankIdentity_permutated(gAnimBankAttacker) ^ 1 ? 1 : 0; - sub_8076034(gAnimBankAttacker, toBG2); - gSprites[gObjectBankIDs[gAnimBankAttacker]].invisible = 0; + MoveBattlerSpriteToBG(gAnimBankAttacker, toBG2); + gSprites[gBankSpriteIds[gAnimBankAttacker]].invisible = 0; if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2)) { - sub_8076034(gAnimBankAttacker ^ 2, toBG2 ^ 1); - gSprites[gObjectBankIDs[gAnimBankAttacker ^ 2]].invisible = 0; + MoveBattlerSpriteToBG(gAnimBankAttacker ^ 2, toBG2 ^ 1); + gSprites[gBankSpriteIds[gAnimBankAttacker ^ 2]].invisible = 0; } DestroyAnimVisualTask(taskId); @@ -851,7 +851,7 @@ void sub_80E0A4C(u8 taskId) { if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2) == TRUE) { - gSprites[gObjectBankIDs[gAnimBankAttacker ^ 2]].oam.priority--; + gSprites[gBankSpriteIds[gAnimBankAttacker ^ 2]].oam.priority--; REG_BG1CNT_BITFIELD.priority = 1; var0 = 1; } @@ -937,7 +937,7 @@ static void sub_80E0CD0(u8 taskId) if (gTasks[taskIdCopy].data[6] == 1) { - gSprites[gObjectBankIDs[gAnimBankAttacker ^ 2]].oam.priority++; + gSprites[gBankSpriteIds[gAnimBankAttacker ^ 2]].oam.priority++; } DestroyAnimVisualTask(taskIdCopy); @@ -985,7 +985,7 @@ void sub_80E0E24(u8 taskId) { bank = GetBankByIdentity(identity); if (IsAnimBankSpriteVisible(bank)) - spriteId = gObjectBankIDs[bank]; + spriteId = gBankSpriteIds[bank]; else spriteId = 0xFF; } diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c index bf39e01c0..4f25cf1a5 100644 --- a/src/battle/anim/dragon.c +++ b/src/battle/anim/dragon.c @@ -19,7 +19,7 @@ extern u8 gBankAttacker; extern u16 gBattle_BG1_X; extern u16 gBattle_BG2_X; extern u16 gUnknown_03000730[]; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; // Outrage diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c index f9e505bf2..be3a280af 100644 --- a/src/battle/anim/draw.c +++ b/src/battle/anim/draw.c @@ -59,7 +59,6 @@ void sub_80D0C88(u8 taskId) task->func = sub_80D0D68; } -#ifdef NONMATCHING void sub_80D0D68(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -99,126 +98,13 @@ void sub_80D0D68(u8 taskId) if (++task->data[3] >= task->data[15]) { - gScanlineEffect.unk15 = 3; + gScanlineEffect.state = 3; DestroyAnimVisualTask(taskId); } } break; } } -#else -__attribute__((naked)) -void sub_80D0D68(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4,lr}\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - lsls r0, r4, 2\n\ - adds r0, r4\n\ - lsls r0, 3\n\ - ldr r1, _080D0D88 @ =gTasks\n\ - adds r3, r0, r1\n\ - movs r1, 0x10\n\ - ldrsh r0, [r3, r1]\n\ - cmp r0, 0\n\ - beq _080D0D8C\n\ - cmp r0, 0x1\n\ - beq _080D0DA2\n\ - b _080D0E22\n\ - .align 2, 0\n\ -_080D0D88: .4byte gTasks\n\ -_080D0D8C:\n\ - ldrh r0, [r3, 0x12]\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0x12]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x14\n\ - ble _080D0E22\n\ - ldrh r0, [r3, 0x10]\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0x10]\n\ - b _080D0E22\n\ -_080D0DA2:\n\ - ldrh r0, [r3, 0xA]\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0xA]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x3\n\ - ble _080D0E22\n\ - movs r0, 0\n\ - strh r0, [r3, 0xA]\n\ - ldrh r1, [r3, 0xE]\n\ - movs r0, 0x3\n\ - ands r0, r1\n\ - strh r0, [r3, 0xC]\n\ - ldrh r0, [r3, 0x8]\n\ - subs r0, r1\n\ - strh r0, [r3, 0x12]\n\ - movs r2, 0xC\n\ - ldrsh r1, [r3, r2]\n\ - cmp r1, 0x1\n\ - beq _080D0DD8\n\ - cmp r1, 0x1\n\ - ble _080D0DE0\n\ - cmp r1, 0x2\n\ - beq _080D0DDC\n\ - cmp r1, 0x3\n\ - beq _080D0DDC\n\ - b _080D0DE0\n\ -_080D0DD8:\n\ - subs r0, 0x2\n\ - b _080D0DDE\n\ -_080D0DDC:\n\ - adds r0, 0x1\n\ -_080D0DDE:\n\ - strh r0, [r3, 0x12]\n\ -_080D0DE0:\n\ - movs r1, 0x12\n\ - ldrsh r0, [r3, r1]\n\ - cmp r0, 0\n\ - blt _080D0E04\n\ - ldr r2, _080D0E28 @ =gScanlineEffectRegBuffers\n\ - lsls r0, 1\n\ - adds r0, r2\n\ - ldrh r1, [r3, 0x14]\n\ - strh r1, [r0]\n\ - movs r1, 0x12\n\ - ldrsh r0, [r3, r1]\n\ - lsls r0, 1\n\ - movs r1, 0xF0\n\ - lsls r1, 3\n\ - adds r2, r1\n\ - adds r0, r2\n\ - ldrh r1, [r3, 0x14]\n\ - strh r1, [r0]\n\ -_080D0E04:\n\ - ldrh r0, [r3, 0xE]\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0xE]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - movs r2, 0x26\n\ - ldrsh r1, [r3, r2]\n\ - cmp r0, r1\n\ - blt _080D0E22\n\ - ldr r1, _080D0E2C @ =gScanlineEffect\n\ - movs r0, 0x3\n\ - strb r0, [r1, 0x15]\n\ - adds r0, r4, 0\n\ - bl DestroyAnimVisualTask\n\ -_080D0E22:\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080D0E28: .4byte gScanlineEffectRegBuffers\n\ -_080D0E2C: .4byte gScanlineEffect\n\ -.syntax divided\n"); -} -#endif void sub_80D0E30(struct Sprite* sprite) { diff --git a/src/battle/anim/fight.c b/src/battle/anim/fight.c index b20813fcb..160b51274 100644 --- a/src/battle/anim/fight.c +++ b/src/battle/anim/fight.c @@ -11,7 +11,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gBankAttacker; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; extern u8 gBanksBySide[]; extern u16 gBattle_BG1_X; extern u16 gBattle_BG1_Y; @@ -24,7 +24,7 @@ extern u16 gBattle_WIN0V; extern u16 gBattlePartyID[]; extern u8 gAnimMoveTurn; -extern struct SpriteTemplate gBattleAnimSpriteTemplate_83DB4A8; +extern struct SpriteTemplate gBasicHitSplatSpriteTemplate; static void sub_80D927C(struct Sprite *sprite); static void sub_80D9328(struct Sprite *sprite); @@ -122,7 +122,7 @@ void sub_80D90F4(struct Sprite *sprite) sprite->pos1.y += y; sprite->data[0] = gBattleAnimArgs[1]; - sprite->data[7] = CreateSprite(&gBattleAnimSpriteTemplate_83DB4A8, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1); + sprite->data[7] = CreateSprite(&gBasicHitSplatSpriteTemplate, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1); if (sprite->data[7] != 64) { StartSpriteAffineAnim(&gSprites[sprite->data[7]], 0); diff --git a/src/battle/anim/heated_rock.c b/src/battle/anim/heated_rock.c index 51cfbd007..055960f40 100644 --- a/src/battle/anim/heated_rock.c +++ b/src/battle/anim/heated_rock.c @@ -50,101 +50,25 @@ void sub_80D5994(struct Sprite *sprite, s16 x, s16 y) sprite->data[5] = y * 8; } -#ifdef NONMATCHING void sub_80D59B0(struct Sprite *sprite) { int var1; - int var2; - if (++sprite->data[0] > 2) { sprite->data[0] = 0; ++sprite->data[1]; - sprite->data[3] += ((u16)sprite->data[1] * (u16)sprite->data[1]); + var1 = (u16)sprite->data[1] * (u16)sprite->data[1]; + sprite->data[3] += var1; } - var1 = (u16)sprite->data[4] + (u16)sprite->data[2]; - sprite->data[2] = var1; - var1 = (s16)var1 >> 3; - sprite->pos1.x = var1; - - var2 = (u16)sprite->data[5] + (u16)sprite->data[3]; - sprite->data[3] = var2; - var2 = (s16)var2 >> 3; - sprite->pos1.y = var2; + sprite->data[2] += sprite->data[4]; + sprite->pos1.x = sprite->data[2] >> 3; + sprite->data[3] += sprite->data[5]; + sprite->pos1.y = sprite->data[3] >> 3; - if ((u32)((var1 + 8) << 16) > 0x1000000 || var2 < -8 || var2 > 120) - { - sprite->invisible = 1; - } -} -#else -__attribute__((naked)) -void sub_80D59B0(struct Sprite *sprite) -{ - asm(".syntax unified\n\ - push {lr}\n\ - adds r2, r0, 0\n\ - ldrh r0, [r2, 0x2E]\n\ - adds r0, 0x1\n\ - strh r0, [r2, 0x2E]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x2\n\ - ble _080D59DA\n\ - movs r0, 0\n\ - strh r0, [r2, 0x2E]\n\ - ldrh r0, [r2, 0x30]\n\ - adds r0, 0x1\n\ - strh r0, [r2, 0x30]\n\ - ldrh r0, [r2, 0x30]\n\ - adds r1, r0, 0\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - ldrh r3, [r2, 0x34]\n\ - adds r0, r3\n\ - strh r0, [r2, 0x34]\n\ -_080D59DA:\n\ - ldrh r0, [r2, 0x36]\n\ - ldrh r1, [r2, 0x32]\n\ - adds r0, r1\n\ - strh r0, [r2, 0x32]\n\ - lsls r0, 16\n\ - asrs r0, 19\n\ - strh r0, [r2, 0x20]\n\ - ldrh r1, [r2, 0x38]\n\ - ldrh r3, [r2, 0x34]\n\ - adds r1, r3\n\ - strh r1, [r2, 0x34]\n\ - lsls r1, 16\n\ - asrs r3, r1, 19\n\ - strh r3, [r2, 0x22]\n\ - adds r0, 0x8\n\ - lsls r0, 16\n\ - movs r1, 0x80\n\ - lsls r1, 17\n\ - cmp r0, r1\n\ - bhi _080D5A10\n\ - adds r1, r3, 0\n\ - movs r0, 0x8\n\ - negs r0, r0\n\ - cmp r1, r0\n\ - blt _080D5A10\n\ - cmp r1, 0x78\n\ - ble _080D5A1C\n\ -_080D5A10:\n\ - adds r0, r2, 0\n\ - adds r0, 0x3E\n\ - ldrb r1, [r0]\n\ - movs r2, 0x4\n\ - orrs r1, r2\n\ - strb r1, [r0]\n\ -_080D5A1C:\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); + if (sprite->pos1.x < -8 || sprite->pos1.x > 0xf8 || sprite->pos1.y < -8 || sprite->pos1.y > 120) + sprite->invisible = TRUE; } -#endif // NONMATCHING void sub_80D5A20(struct Sprite *sprite) { diff --git a/src/battle/anim/lunge_1.c b/src/battle/anim/lunge_1.c index d379c8f09..a2adfba13 100644 --- a/src/battle/anim/lunge_1.c +++ b/src/battle/anim/lunge_1.c @@ -8,7 +8,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; static void sub_80CD7CC(struct Sprite* sprite); static void sub_80CD81C(struct Sprite* sprite); @@ -46,7 +46,7 @@ void sub_80CD7CC(struct Sprite* sprite) sprite->data[0] = 6; sprite->data[1] = (GetBankSide(gAnimBankAttacker)) ? 2 : -2; sprite->data[2] = 0; - sprite->data[3] = gObjectBankIDs[gAnimBankAttacker]; + sprite->data[3] = gBankSpriteIds[gAnimBankAttacker]; StoreSpriteCallbackInData(sprite, sub_80CD81C); sprite->callback = sub_8078458; } @@ -55,7 +55,7 @@ void sub_80CD81C(struct Sprite* sprite) { if (sprite->data[0] == 0) { - sprite->data[3] = gObjectBankIDs[gAnimBankAttacker]; + sprite->data[3] = gBankSpriteIds[gAnimBankAttacker]; sub_8078E70(sprite->data[3], 0); sprite->data[4] = (sprite->data[6] = GetBankSide(gAnimBankAttacker)) ? 0x300 : 0xFFFFFD00; sprite->data[5] = 0; @@ -76,7 +76,7 @@ void sub_80CD8A8(struct Sprite* sprite) sprite->data[0] = 4; sprite->data[1] = (GetBankSide(gAnimBankAttacker)) ? -3 : 3; sprite->data[2] = 0; - sprite->data[3] = gObjectBankIDs[gAnimBankAttacker]; + sprite->data[3] = gBankSpriteIds[gAnimBankAttacker]; StoreSpriteCallbackInData(sprite, sub_80CD9B8); sprite->callback = sub_8078458; } @@ -94,7 +94,7 @@ void sub_80CD91C(struct Sprite* sprite) { if (sprite->data[0] == 0) { - sprite->data[3] = gObjectBankIDs[gAnimBankAttacker]; + sprite->data[3] = gBankSpriteIds[gAnimBankAttacker]; sprite->data[6] = GetBankSide(gAnimBankAttacker); if (GetBankSide(gAnimBankAttacker)) { diff --git a/src/battle/anim/lunge_2.c b/src/battle/anim/lunge_2.c index fe2470567..f222b291d 100644 --- a/src/battle/anim/lunge_2.c +++ b/src/battle/anim/lunge_2.c @@ -8,7 +8,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; static void sub_80CDB60(u8 taskId); static void sub_80CDD20(u8 taskId); @@ -20,7 +20,7 @@ void sub_80CDAC8(u8 taskId) { u8 a; - gTasks[taskId].data[0] = gObjectBankIDs[gAnimBankAttacker]; + gTasks[taskId].data[0] = gBankSpriteIds[gAnimBankAttacker]; a = GetBankSide(gAnimBankAttacker); gTasks[taskId].data[1] = a; gTasks[taskId].data[2] = 0; diff --git a/src/battle/anim/powder.c b/src/battle/anim/powder.c index a0be20d6f..5d67311dc 100644 --- a/src/battle/anim/powder.c +++ b/src/battle/anim/powder.c @@ -6,12 +6,17 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; -static void sub_80CA768(struct Sprite* sprite); +static void AnimMovePowderParticleStep(struct Sprite* sprite); -// powder +// Animates the falling particles that horizontally wave back and forth. // Used by Sleep Powder, Stun Spore, and Poison Powder. - -void sub_80CA710(struct Sprite* sprite) +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: total duration in frames +// arg 3: vertical movement speed (sub-pixel value) +// arg 4: wave amplitude +// arg 5: wave speed +void AnimMovePowderParticle(struct Sprite* sprite) { sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; @@ -28,10 +33,10 @@ void sub_80CA710(struct Sprite* sprite) } sprite->data[4] = gBattleAnimArgs[5]; - sprite->callback = sub_80CA768; + sprite->callback = AnimMovePowderParticleStep; } -void sub_80CA768(struct Sprite* sprite) +static void AnimMovePowderParticleStep(struct Sprite* sprite) { if (sprite->data[0] > 0) { diff --git a/src/battle/anim/psychic.c b/src/battle/anim/psychic.c index 6617183cb..37c527183 100644 --- a/src/battle/anim/psychic.c +++ b/src/battle/anim/psychic.c @@ -14,7 +14,7 @@ extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; extern u16 gBattle_BG1_X; extern u16 gBattle_BG2_X; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; extern const union AffineAnimCmd *const gUnknown_083DA888[]; extern struct AffineAnimFrameCmd gUnknown_083DA8A4; @@ -53,11 +53,11 @@ void sub_80DB74C(struct Sprite *sprite) u8 toBG_2 = (identity ^ var0) != 0; if (IsAnimBankSpriteVisible(bank)) - sub_8076034(bank, toBG_2); + MoveBattlerSpriteToBG(bank, toBG_2); bank = bankCopy ^ 2; if (IsAnimBankSpriteVisible(bank)) - sub_8076034(bank, toBG_2 ^ var0); + MoveBattlerSpriteToBG(bank, toBG_2 ^ var0); } if (!IsContest() && IsDoubleBattle()) @@ -134,11 +134,11 @@ static void sub_80DB92C(struct Sprite *sprite) u8 bank = bankCopy = GetBankByIdentity(IDENTITY_OPPONENT_MON1); if (IsAnimBankSpriteVisible(bank)) - gSprites[gObjectBankIDs[bank]].invisible = 0; + gSprites[gBankSpriteIds[bank]].invisible = 0; bank = bankCopy ^ 2; if (IsAnimBankSpriteVisible(bank)) - gSprites[gObjectBankIDs[bank]].invisible = 0; + gSprites[gBankSpriteIds[bank]].invisible = 0; } sprite->invisible = 1; diff --git a/src/battle/anim/ring.c b/src/battle/anim/ring.c index 915cadcbc..759652f0c 100644 --- a/src/battle/anim/ring.c +++ b/src/battle/anim/ring.c @@ -10,7 +10,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; static void sub_80D1098(struct Sprite* sprite); @@ -94,23 +94,23 @@ void sub_80D10B8(struct Sprite* sprite) { r9 = GetBankPosition(bankr7, r10) + gBattleAnimArgs[0]; if (IsAnimBankSpriteVisible(bankr8 ^ 2)) - sprite->subpriority = gSprites[gObjectBankIDs[bankr8 ^ 2]].subpriority - 1; + sprite->subpriority = gSprites[gBankSpriteIds[bankr8 ^ 2]].subpriority - 1; else - sprite->subpriority = gSprites[gObjectBankIDs[bankr8]].subpriority - 1; + sprite->subpriority = gSprites[gBankSpriteIds[bankr8]].subpriority - 1; } else { r9 = GetBankPosition(bankr7, r10) - gBattleAnimArgs[0]; if (gMain.inBattle && IsAnimBankSpriteVisible(bankr7 ^ 2)) { - if (gSprites[gObjectBankIDs[bankr7]].pos1.x < gSprites[gObjectBankIDs[bankr7 ^ 2]].pos1.x) - sprite->subpriority = gSprites[gObjectBankIDs[bankr7 ^ 2]].subpriority + 1; + if (gSprites[gBankSpriteIds[bankr7]].pos1.x < gSprites[gBankSpriteIds[bankr7 ^ 2]].pos1.x) + sprite->subpriority = gSprites[gBankSpriteIds[bankr7 ^ 2]].subpriority + 1; else - sprite->subpriority = gSprites[gObjectBankIDs[bankr7]].subpriority - 1; + sprite->subpriority = gSprites[gBankSpriteIds[bankr7]].subpriority - 1; } else { - sprite->subpriority = gSprites[gObjectBankIDs[bankr7]].subpriority - 1; + sprite->subpriority = gSprites[gBankSpriteIds[bankr7]].subpriority - 1; } } diff --git a/src/battle/anim/shadow_minimize.c b/src/battle/anim/shadow_minimize.c index 94069374f..61645bc59 100644 --- a/src/battle/anim/shadow_minimize.c +++ b/src/battle/anim/shadow_minimize.c @@ -93,7 +93,7 @@ void sub_80D04E0(u8 taskId) sub_8078F40(task->data[0]); gSprites[task->data[15]].pos2.y = 0; DestroyAnimVisualTask(taskId); - break; + break; } } @@ -110,10 +110,11 @@ void sub_80D0614(struct Task* task, u8 taskId) } else { - gSprites[r8].oam.objMode = 1; - gSprites[r8].oam.affineMode = 3; - gSprites[r8].affineAnimPaused = 1; - gSprites[r8].oam.matrixNum = r6; + gSprites[r8].oam.objMode = ST_OAM_OBJ_BLEND; + gSprites[r8].oam.affineMode = ST_OAM_AFFINE_DOUBLE; + gSprites[r8].affineAnimPaused = TRUE; + r6 &= 0x1f; + gSprites[r8].oam.matrixNum = r6; // need to inhibit optimizing out the mov r0, 0x3f / neg r0, r0 gSprites[r8].subpriority = task->data[7] - task->data[3]; task->data[3]++; task->data[6]++; @@ -132,7 +133,7 @@ __attribute__((naked)) void sub_80D0614(struct Task* task, u8 taskId) { asm(".syntax unified\n\ - push {r4-r7,lr}\n\ + push {r4-r7,lr}\n\ mov r7, r9\n\ mov r6, r8\n\ push {r6,r7}\n\ diff --git a/src/battle/anim/unused_4.c b/src/battle/anim/unused_4.c index bda476a0a..50ffaba4a 100644 --- a/src/battle/anim/unused_4.c +++ b/src/battle/anim/unused_4.c @@ -8,7 +8,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; static void sub_80CD9D4(struct Sprite* sprite); @@ -27,7 +27,7 @@ void sub_80CD9D4(struct Sprite* sprite) { case 0: sprite->data[1] = 0; - sprite->data[2] = gObjectBankIDs[gAnimBankAttacker]; + sprite->data[2] = gBankSpriteIds[gAnimBankAttacker]; sprite->data[3] = GetBankSide(gAnimBankAttacker); sprite->data[4] = (sprite->data[3] != 0) ? 0x200 : -0x200; sprite->data[5] = 0; diff --git a/src/battle/anim/unused_7.c b/src/battle/anim/unused_7.c index 2be6e7633..5a2de33c3 100644 --- a/src/battle/anim/unused_7.c +++ b/src/battle/anim/unused_7.c @@ -8,7 +8,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; // unused_7 @@ -32,7 +32,7 @@ void sub_80CF3C4(struct Sprite* sprite) u8 a; sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2); sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3); - a = gObjectBankIDs[gAnimBankTarget]; + a = gBankSpriteIds[gAnimBankTarget]; if (GetBankSide(gAnimBankAttacker) != 0) { sprite->pos1.x -= gBattleAnimArgs[0]; diff --git a/src/battle/anim/unused_9.c b/src/battle/anim/unused_9.c index cf3ccb0d4..0efd40c02 100644 --- a/src/battle/anim/unused_9.c +++ b/src/battle/anim/unused_9.c @@ -3,6 +3,7 @@ #include "trig.h" #include "battle_anim.h" #include "sound.h" +#include "palette.h" extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; @@ -26,23 +27,19 @@ void sub_80CFDFC(struct Sprite* sprite) void sub_80CFE2C(struct Sprite* sprite) { u16 r7; - u16* r1; - u16* r2; + u16 r5; int i; if (++sprite->data[1] == 2) { sprite->data[1] = 0; - r7 = gPlttBufferFaded[sprite->data[0] + 8]; - r2 = &gPlttBufferFaded[0x10]; - r1 = &gPlttBufferFaded[sprite->data[0] + 9]; - for (i = 7; i >= 0; i--) + r5 = sprite->data[0]; + r7 = gPlttBufferFaded[r5 + 8]; + for (i = 0; i < 8; i++) { - *r2 = *r1; - r1++; - r2++; + gPlttBufferFaded[r5 + i + 8] = gPlttBufferFaded[r5 + i + 9]; } + gPlttBufferFaded[r5 + 15] = r7; - gPlttBufferFaded[sprite->data[0] + 15] = r7; if (++sprite->data[2] == 0x18) DestroyAnimSprite(sprite); } diff --git a/src/battle/anim/wisp_fire.c b/src/battle/anim/wisp_fire.c index 348ce6426..24cecb60c 100644 --- a/src/battle/anim/wisp_fire.c +++ b/src/battle/anim/wisp_fire.c @@ -10,7 +10,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankTarget; extern u8 gAnimBankAttacker; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; extern s8 gUnknown_083D9794[16]; extern s8 gUnknown_083D97A4[16]; @@ -175,7 +175,7 @@ void sub_80D60B4(u8 taskId) } gTasks[taskId].data[0]++; - spriteId = gObjectBankIDs[gAnimBankTarget]; + spriteId = gBankSpriteIds[gAnimBankTarget]; if (!gTasks[taskId].data[4]) unk = gUnknown_083D9794[gTasks[taskId].data[0] % 10]; diff --git a/src/battle/anim/withdraw.c b/src/battle/anim/withdraw.c index e67248b9f..933c97fa9 100644 --- a/src/battle/anim/withdraw.c +++ b/src/battle/anim/withdraw.c @@ -8,7 +8,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; static void sub_80CF514(u8 taskId); @@ -17,13 +17,13 @@ static void sub_80CF514(u8 taskId); void sub_80CF4D8(u8 taskId) { - sub_8078E70(gObjectBankIDs[gAnimBankAttacker], 0); + sub_8078E70(gBankSpriteIds[gAnimBankAttacker], 0); gTasks[taskId].func = sub_80CF514; } void sub_80CF514(u8 taskId) { - u8 a = gObjectBankIDs[gAnimBankAttacker]; + u8 a = gBankSpriteIds[gAnimBankAttacker]; s16 b; if (GetBankSide(gAnimBankAttacker) == 0) { diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index b09d9ad8d..e37c33d0f 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -88,7 +88,7 @@ extern u16 gBattlePartyID[]; extern u8 gCurrentActionFuncId; extern u8 gBanksByTurnOrder[]; extern struct UnknownStruct12 gUnknown_02024AD0[]; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; extern u16 gCurrentMove; // This is mis-named. It is a species, not a move ID. extern u8 gLastUsedAbility; extern u8 gStringBank; @@ -4671,7 +4671,7 @@ void dp11b_obj_instanciate(u8 bank, u8 b, s8 c, s8 d) } else { - objectID = gObjectBankIDs[bank]; + objectID = gBankSpriteIds[bank]; ewram17810[bank].unk3 = spriteId; ewram17810[bank].unk0_2 = 1; gSprites[spriteId].data[0] = 0xC0; @@ -8307,9 +8307,8 @@ void HandleAction_UseItem(void) } else { - ewram16003 = gBankAttacker; - switch (ewram160D8(gBankAttacker)) + switch (ewram160D8((ewram16003 = gBankAttacker))) { case AI_ITEM_FULL_RESTORE: case AI_ITEM_HEAL_HP: diff --git a/src/battle/battle_7.c b/src/battle/battle_7.c index b4c71b9c2..85c1d4aed 100644 --- a/src/battle/battle_7.c +++ b/src/battle/battle_7.c @@ -26,7 +26,7 @@ extern u8 gActiveBank; extern u8 gNoOfAllBanks; extern u16 gBattlePartyID[]; extern u8 gBanksBySide[]; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; extern u16 gUnknown_02024DE8; extern u8 gDoingBattleAnim; extern u32 gTransformedPersonalities[]; @@ -169,9 +169,9 @@ bool8 move_anim_start_t3(u8 a, u8 b, u8 c, u8 d, u16 e) } if (ewram17800[a].substituteSprite && sub_803163C(d) == 0) return TRUE; - if (ewram17800[a].substituteSprite && d == 2 && gSprites[gObjectBankIDs[a]].invisible) + if (ewram17800[a].substituteSprite && d == 2 && gSprites[gBankSpriteIds[a]].invisible) { - refresh_graphics_maybe(a, 1, gObjectBankIDs[a]); + refresh_graphics_maybe(a, 1, gBankSpriteIds[a]); sub_80324E0(a); return TRUE; } @@ -592,12 +592,12 @@ void sub_8031F24(void) s32 i; for (i = 0; i < gNoOfAllBanks; i++) - ewram17800[i].invisible = gSprites[gObjectBankIDs[i]].invisible; + ewram17800[i].invisible = gSprites[gBankSpriteIds[i]].invisible; } void sub_8031F88(u8 a) { - ewram17800[a].invisible = gSprites[gObjectBankIDs[a]].invisible; + ewram17800[a].invisible = gSprites[gBankSpriteIds[a]].invisible; } void sub_8031FC4(u8 a, u8 b, bool8 c) @@ -611,7 +611,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) if (c) { - StartSpriteAnim(&gSprites[gObjectBankIDs[a]], ewram17840.unk0); + StartSpriteAnim(&gSprites[gBankSpriteIds[a]], ewram17840.unk0); paletteOffset = 0x100 + a * 16; LoadPalette(ewram16400 + ewram17840.unk0 * 32, paletteOffset, 32); gBattleMonForms[a] = ewram17840.unk0; @@ -620,7 +620,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) BlendPalette(paletteOffset, 16, 6, 0x7FFF); CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); } - gSprites[gObjectBankIDs[a]].pos1.y = sub_8077F68(a); + gSprites[gBankSpriteIds[a]].pos1.y = sub_8077F68(a); } else { @@ -673,7 +673,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) gTransformedPersonalities[a]); } } - DmaCopy32Defvars(3, gUnknown_081FAF4C[r10], (void *)(VRAM + 0x10000 + gSprites[gObjectBankIDs[a]].oam.tileNum * 32), 0x800); + DmaCopy32Defvars(3, gUnknown_081FAF4C[r10], (void *)(VRAM + 0x10000 + gSprites[gBankSpriteIds[a]].oam.tileNum * 32), 0x800); paletteOffset = 0x100 + a * 16; lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personalityValue); LZDecompressWram(lzPaletteData, gSharedMem); @@ -692,8 +692,8 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) ewram17800[a].transformedSpecies = species; gBattleMonForms[a] = gBattleMonForms[b]; } - gSprites[gObjectBankIDs[a]].pos1.y = sub_8077F68(a); - StartSpriteAnim(&gSprites[gObjectBankIDs[a]], gBattleMonForms[a]); + gSprites[gBankSpriteIds[a]].pos1.y = sub_8077F68(a); + StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]); } } @@ -833,15 +833,15 @@ void sub_80326EC(u8 a) { if (IsBankSpritePresent(i) != 0) { - gSprites[gObjectBankIDs[i]].oam.affineMode = a; + gSprites[gBankSpriteIds[i]].oam.affineMode = a; if (a == 0) { - ewram17810[i].unk6 = gSprites[gObjectBankIDs[i]].oam.matrixNum; - gSprites[gObjectBankIDs[i]].oam.matrixNum = 0; + ewram17810[i].unk6 = gSprites[gBankSpriteIds[i]].oam.matrixNum; + gSprites[gBankSpriteIds[i]].oam.matrixNum = 0; } else { - gSprites[gObjectBankIDs[i]].oam.matrixNum = ewram17810[i].unk6; + gSprites[gBankSpriteIds[i]].oam.matrixNum = ewram17810[i].unk6; } } } @@ -867,7 +867,7 @@ void sub_80328A4(struct Sprite *sprite) { bool8 invisible = FALSE; u8 r4 = sprite->data[0]; - struct Sprite *r7 = &gSprites[gObjectBankIDs[r4]]; + struct Sprite *r7 = &gSprites[gBankSpriteIds[r4]]; if (!r7->inUse || IsBankSpritePresent(r4) == 0) { diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c index c71c12ce7..03ce1798f 100644 --- a/src/battle/battle_anim.c +++ b/src/battle/battle_anim.c @@ -14,6 +14,7 @@ #include "task.h" #include "ewram.h" #include "graphics.h" +#include "constants/battle_anim.h" // sprites start at 10000 and thus must be subtracted of 10000 to account for the true index. #define GET_TRUE_SPRITE_INDEX(i) (i - 10000) @@ -1287,7 +1288,7 @@ const struct BattleAnimBackground gBattleAnimBackgroundTable[] = }; extern u16 gBattlePartyID[4]; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; extern u8 gBankAttacker; extern u8 gBankTarget; EWRAM_DATA const u8 *sBattleAnimScriptPtr = NULL; @@ -1327,7 +1328,7 @@ extern struct MusicPlayerInfo gMPlay_BGM; extern struct MusicPlayerInfo gMPlay_SE1; extern struct MusicPlayerInfo gMPlay_SE2; -extern const u16 gUnknown_081C7160[]; +extern const u16 gSingingMoves[]; extern const u8 *const gBattleAnims_Moves[]; static void RunAnimScriptCommand(void); @@ -1521,10 +1522,11 @@ void LaunchBattleAnimation(const u8 *const moveAnims[], u16 move, u8 isMoveAnim) if (isMoveAnim) { - for (i = 0; gUnknown_081C7160[i] != 0xFFFF; i++) + for (i = 0; gSingingMoves[i] != 0xFFFF; i++) { - if (move == gUnknown_081C7160[i]) + if (move == gSingingMoves[i]) { + // Lower the volume for the short song that gets played. m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 128); break; } @@ -1607,28 +1609,28 @@ static void RunAnimScriptCommand(void) static void ScriptCmd_loadspritegfx(void) { - u16 index; + u16 tag; sBattleAnimScriptPtr++; - index = T1_READ_16(sBattleAnimScriptPtr); - LoadCompressedObjectPic(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)]); - LoadCompressedObjectPalette(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(index)]); + tag = T1_READ_16(sBattleAnimScriptPtr); + LoadCompressedObjectPic(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(tag)]); + LoadCompressedObjectPalette(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(tag)]); sBattleAnimScriptPtr += 2; - AddSpriteIndex(GET_TRUE_SPRITE_INDEX(index)); + AddSpriteIndex(GET_TRUE_SPRITE_INDEX(tag)); gAnimFramesToWait = 1; gAnimScriptCallback = WaitAnimFrameCount; } static void ScriptCmd_unloadspritegfx(void) { - u16 index; + u16 tag; sBattleAnimScriptPtr++; - index = T1_READ_16(sBattleAnimScriptPtr); - FreeSpriteTilesByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)].tag); - FreeSpritePaletteByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)].tag); + tag = T1_READ_16(sBattleAnimScriptPtr); + FreeSpriteTilesByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(tag)].tag); + FreeSpritePaletteByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(tag)].tag); sBattleAnimScriptPtr += 2; - ClearSpriteIndex(GET_TRUE_SPRITE_INDEX(index)); + ClearSpriteIndex(GET_TRUE_SPRITE_INDEX(tag)); } static void ScriptCmd_createsprite(void) @@ -1810,7 +1812,7 @@ static void ScriptCmd_monbg(void) u8 bank; u8 identity; bool8 toBG_2; - u16 r4; + u16 spriteId; u8 taskId; sBattleAnimScriptPtr++; @@ -1834,12 +1836,12 @@ static void ScriptCmd_monbg(void) else toBG_2 = 1; - sub_8076034(bank, toBG_2); - r4 = gObjectBankIDs[bank]; + MoveBattlerSpriteToBG(bank, toBG_2); + spriteId = gBankSpriteIds[bank]; taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10); - gTasks[taskId].data[0] = r4; - gTasks[taskId].data[1] = gSprites[r4].pos1.x + gSprites[r4].pos2.x; - gTasks[taskId].data[2] = gSprites[r4].pos1.y + gSprites[r4].pos2.y; + gTasks[taskId].data[0] = spriteId; + gTasks[taskId].data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x; + gTasks[taskId].data[2] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y; if (toBG_2 == 0) { gTasks[taskId].data[3] = gBattle_BG1_X; @@ -1855,8 +1857,9 @@ static void ScriptCmd_monbg(void) gMonAnimTaskIdArray[0] = taskId; } + bank ^= 2; - if (animBank > 1 && IsAnimBankSpriteVisible(bank)) + if (animBank >= ANIM_BANK_ATK_PARTNER && IsAnimBankSpriteVisible(bank)) { identity = GetBankIdentity(bank); identity += 0xFF; @@ -1864,12 +1867,12 @@ static void ScriptCmd_monbg(void) toBG_2 = 0; else toBG_2 = 1; - sub_8076034(bank, toBG_2); - r4 = gObjectBankIDs[bank]; + MoveBattlerSpriteToBG(bank, toBG_2); + spriteId = gBankSpriteIds[bank]; taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10); - gTasks[taskId].data[0] = r4; - gTasks[taskId].data[1] = gSprites[r4].pos1.x + gSprites[r4].pos2.x; - gTasks[taskId].data[2] = gSprites[r4].pos1.y + gSprites[r4].pos2.y; + gTasks[taskId].data[0] = spriteId; + gTasks[taskId].data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x; + gTasks[taskId].data[2] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y; if (toBG_2 == 0) { gTasks[taskId].data[3] = gBattle_BG1_X; @@ -1902,17 +1905,17 @@ bool8 IsAnimBankSpriteVisible(u8 bank) return FALSE; if (IsContest()) return TRUE; // this line wont ever be reached. - if (!(EWRAM_17800[bank].unk0 & 1) || !gSprites[gObjectBankIDs[bank]].invisible) + if (!(EWRAM_17800[bank].unk0 & 1) || !gSprites[gBankSpriteIds[bank]].invisible) return TRUE; return FALSE; } -void sub_8076034(u8 a, u8 b) +void MoveBattlerSpriteToBG(u8 bank, u8 toBG_2) { u8 spriteId; - if (b == 0) + if (toBG_2 == 0) { volatile u8 pointlessZero; struct UnknownStruct2 s; @@ -1928,23 +1931,23 @@ void sub_8076034(u8 a, u8 b) REG_BG1CNT_BITFIELD.screenSize = 1; REG_BG1CNT_BITFIELD.areaOverflowMode = 0; - spriteId = gObjectBankIDs[a]; + spriteId = gBankSpriteIds[bank]; gBattle_BG1_X = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32; if (IsContest() != 0 && IsSpeciesNotUnown(EWRAM_19348) != 0) gBattle_BG1_X--; gBattle_BG1_Y = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32; - gSprites[gObjectBankIDs[a]].invisible = TRUE; + gSprites[gBankSpriteIds[bank]].invisible = TRUE; REG_BG1HOFS = gBattle_BG1_X; REG_BG1VOFS = gBattle_BG1_Y; - LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, s.unk8 * 16, 32); - DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + a * 16, (u16 *)PLTT + s.unk8 * 16, 32); + LoadPalette(gPlttBufferUnfaded + 0x100 + bank * 16, s.unk8 * 16, 32); + DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + bank * 16, (u16 *)PLTT + s.unk8 * 16, 32); if (IsContest() != 0) r2 = 0; else - r2 = GetBankIdentity(a); + r2 = GetBankIdentity(bank); sub_80E4EF8(0, 0, r2, s.unk8, (u32)s.unk0, (((s32)s.unk4 - VRAM) / 2048), REG_BG1CNT_BITFIELD.charBaseBlock); if (IsContest() != 0) sub_8076380(); @@ -1962,18 +1965,18 @@ void sub_8076034(u8 a, u8 b) REG_BG2CNT_BITFIELD.screenSize = 1; REG_BG2CNT_BITFIELD.areaOverflowMode = 0; - spriteId = gObjectBankIDs[a]; + spriteId = gBankSpriteIds[bank]; gBattle_BG2_X = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32; gBattle_BG2_Y = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32; - gSprites[gObjectBankIDs[a]].invisible = TRUE; + gSprites[gBankSpriteIds[bank]].invisible = TRUE; REG_BG2HOFS = gBattle_BG2_X; REG_BG2VOFS = gBattle_BG2_Y; - LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, 0x90, 32); - DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + a * 16, (void *)(PLTT + 0x120), 32); + LoadPalette(gPlttBufferUnfaded + 0x100 + bank * 16, 0x90, 32); + DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + bank * 16, (void *)(PLTT + 0x120), 32); - sub_80E4EF8(0, 0, GetBankIdentity(a), 9, 0x6000, 0x1E, REG_BG2CNT_BITFIELD.charBaseBlock); + sub_80E4EF8(0, 0, GetBankIdentity(bank), 9, 0x6000, 0x1E, REG_BG2CNT_BITFIELD.charBaseBlock); } } @@ -2096,9 +2099,9 @@ static void ScriptCmd_clearmonbg(void) bank = gAnimBankTarget; if (gMonAnimTaskIdArray[0] != 0xFF) - gSprites[gObjectBankIDs[bank]].invisible = FALSE; + gSprites[gBankSpriteIds[bank]].invisible = FALSE; if (animBankId > 1 && gMonAnimTaskIdArray[1] != 0xFF) - gSprites[gObjectBankIDs[bank ^ 2]].invisible = FALSE; + gSprites[gBankSpriteIds[bank ^ 2]].invisible = FALSE; else animBankId = 0; @@ -2166,8 +2169,8 @@ static void ScriptCmd_monbg_22(void) r1 = 0; else r1 = 1; - sub_8076034(bank, r1); - gSprites[gObjectBankIDs[bank]].invisible = FALSE; + MoveBattlerSpriteToBG(bank, r1); + gSprites[gBankSpriteIds[bank]].invisible = FALSE; } bank ^= 2; @@ -2179,8 +2182,8 @@ static void ScriptCmd_monbg_22(void) r1 = 0; else r1 = 1; - sub_8076034(bank, r1); - gSprites[gObjectBankIDs[bank]].invisible = FALSE; + MoveBattlerSpriteToBG(bank, r1); + gSprites[gBankSpriteIds[bank]].invisible = FALSE; } sBattleAnimScriptPtr++; } @@ -2205,9 +2208,9 @@ static void ScriptCmd_clearmonbg_23(void) bank = gAnimBankTarget; if (IsAnimBankSpriteVisible(bank)) - gSprites[gObjectBankIDs[bank]].invisible = FALSE; + gSprites[gBankSpriteIds[bank]].invisible = FALSE; if (animBankId > 1 && IsAnimBankSpriteVisible(bank ^ 2)) - gSprites[gObjectBankIDs[bank ^ 2]].invisible = FALSE; + gSprites[gBankSpriteIds[bank ^ 2]].invisible = FALSE; else animBankId = 0; @@ -2244,13 +2247,13 @@ static void sub_80769A4(u8 taskId) static void ScriptCmd_setalpha(void) { - u16 half1, half2; + u16 spriteAlpha, bgAlpha; sBattleAnimScriptPtr++; - half1 = *(sBattleAnimScriptPtr++); - half2 = *(sBattleAnimScriptPtr++) << 8; - REG_BLDCNT = 0x3F40; - REG_BLDALPHA = half1 | half2; + spriteAlpha = *(sBattleAnimScriptPtr++); + bgAlpha = *(sBattleAnimScriptPtr++) << 8; + REG_BLDCNT = BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_EFFECT_BLEND; + REG_BLDALPHA = spriteAlpha | bgAlpha; } static void ScriptCmd_setbldcnt(void) @@ -2699,13 +2702,13 @@ s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan) static void ScriptCmd_playsewithpan(void) { - u16 songId; + u16 soundId; s8 pan; sBattleAnimScriptPtr++; - songId = T1_READ_16(sBattleAnimScriptPtr); + soundId = T1_READ_16(sBattleAnimScriptPtr); pan = T1_READ_8(sBattleAnimScriptPtr + 2); - PlaySE12WithPanning(songId, BattleAnimAdjustPanning(pan)); + PlaySE12WithPanning(soundId, BattleAnimAdjustPanning(pan)); sBattleAnimScriptPtr += 3; } diff --git a/src/battle/battle_anim_807B69C.c b/src/battle/battle_anim_807B69C.c index 058a45769..6043efb0c 100644 --- a/src/battle/battle_anim_807B69C.c +++ b/src/battle/battle_anim_807B69C.c @@ -15,7 +15,7 @@ extern bool8 gAnimScriptActive; extern void (*gAnimScriptCallback)(void); extern s16 gBattleAnimArgs[]; extern u8 gAnimBankTarget; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; extern const u8 *const gBattleAnims_StatusConditions[]; @@ -72,7 +72,7 @@ static void sub_807BDAC(u8); u8 unref_sub_807B69C(u8 a, u8 b) { - u8 spriteId1 = gObjectBankIDs[a]; + u8 spriteId1 = gBankSpriteIds[a]; u8 taskId = CreateTask(sub_807B7E0, 10); u8 spriteId2; u8 i; diff --git a/src/battle/battle_anim_80A7E7C.c b/src/battle/battle_anim_80A7E7C.c index f109333e3..2f10b07ae 100644 --- a/src/battle/battle_anim_80A7E7C.c +++ b/src/battle/battle_anim_80A7E7C.c @@ -9,13 +9,13 @@ extern s16 gBattleAnimArgs[8]; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; extern s32 gAnimMoveDmg; extern u16 gAnimMovePower; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -static void sub_80A7EF0(u8 taskId); +static void AnimTask_ShakeMonStep(u8 taskId); static void sub_80A808C(u8 taskId); static void sub_80A81D8(u8 taskId); static void sub_80A8374(u8 taskId); @@ -91,28 +91,35 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83C2010 = .callback = sub_80A8818, }; -void sub_80A7E7C(u8 taskId) +// Task to facilitate simple shaking of a pokemon's picture in battle. +// The shaking alternates between the original position and the target position. +// arg 0: anim battler +// arg 1: x pixel offset +// arg 2: y pixel offset +// arg 3: num times to shake +// arg 4: frame delay +void AnimTask_ShakeMon(u8 taskId) { - u8 sprite; - sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); - if (sprite == 0xff) + u8 spriteId; + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); + if (spriteId == 0xff) { DestroyAnimVisualTask(taskId); return; } - gSprites[sprite].pos2.x = gBattleAnimArgs[1]; - gSprites[sprite].pos2.y = gBattleAnimArgs[2]; - TASK.data[0] = sprite; + gSprites[spriteId].pos2.x = gBattleAnimArgs[1]; + gSprites[spriteId].pos2.y = gBattleAnimArgs[2]; + TASK.data[0] = spriteId; TASK.data[1] = gBattleAnimArgs[3]; TASK.data[2] = gBattleAnimArgs[4]; TASK.data[3] = gBattleAnimArgs[4]; TASK.data[4] = gBattleAnimArgs[1]; TASK.data[5] = gBattleAnimArgs[2]; - TASK.func = sub_80A7EF0; - sub_80A7EF0(taskId); + TASK.func = AnimTask_ShakeMonStep; + AnimTask_ShakeMonStep(taskId); } -static void sub_80A7EF0(u8 taskId) +static void AnimTask_ShakeMonStep(u8 taskId) { if (TASK.data[3] == 0) { @@ -185,11 +192,11 @@ void sub_80A7FA0(u8 taskId) { r6 = 1; } - sprite = gObjectBankIDs[side]; + sprite = gBankSpriteIds[side]; } else { - sprite = gObjectBankIDs[gAnimBankAttacker]; + sprite = gBankSpriteIds[gAnimBankAttacker]; } if (r6) { @@ -408,7 +415,7 @@ static void sub_80A8530(struct Sprite *sprite) } sprite->data[0] = gBattleAnimArgs[0]; sprite->data[2] = 0; - sprite->data[3] = gObjectBankIDs[gAnimBankAttacker]; + sprite->data[3] = gBankSpriteIds[gAnimBankAttacker]; sprite->data[4] = gBattleAnimArgs[0]; StoreSpriteCallbackInData(sprite, sub_80A85A4); sprite->callback = sub_8078458; @@ -450,11 +457,11 @@ static void sub_80A8638(struct Sprite *sprite) int spriteId; if (!gBattleAnimArgs[0]) { - spriteId = gObjectBankIDs[gAnimBankAttacker]; + spriteId = gBankSpriteIds[gAnimBankAttacker]; } else { - spriteId = gObjectBankIDs[gAnimBankTarget]; + spriteId = gBankSpriteIds[gAnimBankTarget]; } sprite->data[0] = gBattleAnimArgs[2]; sprite->data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x; @@ -523,7 +530,7 @@ static void sub_80A8764(struct Sprite *sprite) { v1 = gAnimBankTarget; } - spriteId = gObjectBankIDs[v1]; + spriteId = gBankSpriteIds[v1]; if (GetBankSide(v1)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; @@ -559,7 +566,7 @@ static void sub_80A8818(struct Sprite *sprite) { v1 = gAnimBankTarget; } - spriteId = gObjectBankIDs[v1]; + spriteId = gBankSpriteIds[v1]; if (GetBankSide(v1)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; @@ -668,7 +675,7 @@ void sub_80A8A80(u8 taskId) DestroyAnimVisualTask(taskId); return; } - spriteId = gObjectBankIDs[gAnimBankAttacker ^ 2]; + spriteId = gBankSpriteIds[gAnimBankAttacker ^ 2]; break; case 3: if (!IsAnimBankSpriteVisible(gAnimBankTarget ^ 2)) @@ -676,7 +683,7 @@ void sub_80A8A80(u8 taskId) DestroyAnimVisualTask(taskId); return; } - spriteId = gObjectBankIDs[gAnimBankTarget ^ 2]; + spriteId = gBankSpriteIds[gAnimBankTarget ^ 2]; break; default: DestroyAnimVisualTask(taskId); diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c index 40f50d7ff..604c21e6d 100644 --- a/src/battle/battle_controller_linkopponent.c +++ b/src/battle/battle_controller_linkopponent.c @@ -27,7 +27,7 @@ struct MovePpInfo extern u8 gActiveBank; extern u8 gBattleBufferA[][0x200]; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; extern u16 gBattlePartyID[]; extern u8 gHealthboxIDs[]; extern u16 gBattleTypeFlags; @@ -266,18 +266,18 @@ void sub_803752C(void) void sub_803757C(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy) LinkOpponentBufferExecCompleted(); } void sub_80375B4(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy) { - sub_8031B74(gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam); - gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = gSprites[gObjectBankIDs[gActiveBank]].data[5]; - FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + sub_8031B74(gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam); + gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum = gSprites[gBankSpriteIds[gActiveBank]].data[5]; + FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]); + DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); LinkOpponentBufferExecCompleted(); } } @@ -381,8 +381,8 @@ void sub_8037840(void) void sub_8037A74(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].animEnded == TRUE - && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0) + if (gSprites[gBankSpriteIds[gActiveBank]].animEnded == TRUE + && gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0) { if (!ewram17810[gActiveBank].unk0_7) { @@ -414,7 +414,7 @@ void sub_8037B24(void) void sub_8037B78(void) { - if (!gSprites[gObjectBankIDs[gActiveBank]].inUse) + if (!gSprites[gBankSpriteIds[gActiveBank]].inUse) { sub_8043DB0(gHealthboxIDs[gActiveBank]); LinkOpponentBufferExecCompleted(); @@ -425,8 +425,8 @@ void sub_8037BBC(void) { if (!ewram17810[gActiveBank].unk0_6) { - FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]); + DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); sub_8032A08(gActiveBank); sub_8043DB0(gHealthboxIDs[gActiveBank]); LinkOpponentBufferExecCompleted(); @@ -441,7 +441,7 @@ void sub_8037C2C(void) void dp01t_0F_4_move_anim(void) { - u8 spriteId = gObjectBankIDs[gActiveBank]; + u8 spriteId = gBankSpriteIds[gActiveBank]; if (gSprites[spriteId].data[1] == 32) { @@ -485,7 +485,7 @@ void sub_8037D64(void) ewram17810[gActiveBank].unk1_0 = 0; FreeSpriteTilesByTag(0x27F9); FreeSpritePaletteByTag(0x27F9); - StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0); + StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 0); sub_8045A5C( gHealthboxIDs[gActiveBank], &gEnemyParty[gBattlePartyID[gActiveBank]], @@ -1155,15 +1155,15 @@ void LinkOpponentHandleLoadPokeSprite(void) BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank); GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank)); - gObjectBankIDs[gActiveBank] = CreateSprite( + gBankSpriteIds[gActiveBank] = CreateSprite( &gUnknown_02024E8C, GetBankPosition(gActiveBank, 2), sub_8077F68(gActiveBank), sub_8079E90(gActiveBank)); - gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240; - gSprites[gObjectBankIDs[gActiveBank]].data[0] = gActiveBank; - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; - StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], gBattleMonForms[gActiveBank]); + gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240; + gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank; + gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank; + StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]); sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES)); gBattleBankFunc[gActiveBank] = sub_8037A74; } @@ -1185,18 +1185,18 @@ void sub_8039430(u8 a, u8 b) gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0); BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a); GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a)); - gObjectBankIDs[a] = CreateSprite( + gBankSpriteIds[a] = CreateSprite( &gUnknown_02024E8C, GetBankPosition(a, 2), sub_8077F68(a), sub_8079E90(a)); - gSprites[gUnknown_0300434C[a]].data[1] = gObjectBankIDs[a]; - gSprites[gObjectBankIDs[a]].data[0] = a; - gSprites[gObjectBankIDs[a]].data[2] = species; - gSprites[gObjectBankIDs[a]].oam.paletteNum = a; - StartSpriteAnim(&gSprites[gObjectBankIDs[a]], gBattleMonForms[a]); - gSprites[gObjectBankIDs[a]].invisible = TRUE; - gSprites[gObjectBankIDs[a]].callback = SpriteCallbackDummy; + gSprites[gUnknown_0300434C[a]].data[1] = gBankSpriteIds[a]; + gSprites[gBankSpriteIds[a]].data[0] = a; + gSprites[gBankSpriteIds[a]].data[2] = species; + gSprites[gBankSpriteIds[a]].oam.paletteNum = a; + StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]); + gSprites[gBankSpriteIds[a]].invisible = TRUE; + gSprites[gBankSpriteIds[a]].callback = SpriteCallbackDummy; gSprites[gUnknown_0300434C[a]].data[0] = sub_8046400(0, 0xFE); } @@ -1209,8 +1209,8 @@ void LinkOpponentHandleReturnPokeToBall(void) } else { - FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]); + DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); sub_8032A08(gActiveBank); sub_8043DB0(gHealthboxIDs[gActiveBank]); LinkOpponentBufferExecCompleted(); @@ -1257,17 +1257,17 @@ void LinkOpponentHandleTrainerThrow(void) } sub_8031A6C(gender, gActiveBank); GetMonSpriteTemplate_803C5A0(gender, GetBankIdentity(gActiveBank)); - gObjectBankIDs[gActiveBank] = CreateSprite( + gBankSpriteIds[gActiveBank] = CreateSprite( &gUnknown_02024E8C, 176 + xOffset, 40 + 4 * (8 - gTrainerFrontPicCoords[gender].coords), sub_8079E90(gActiveBank)); - gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240; - gSprites[gObjectBankIDs[gActiveBank]].data[0] = 2; - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[gender].tag); - gSprites[gObjectBankIDs[gActiveBank]].data[5] = gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum; - gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[gender].tag); - gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam = gender; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; + gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240; + gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2; + gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[gender].tag); + gSprites[gBankSpriteIds[gActiveBank]].data[5] = gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum; + gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[gender].tag); + gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = gender; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0; gBattleBankFunc[gActiveBank] = sub_803757C; } @@ -1278,12 +1278,12 @@ void LinkOpponentHandleTrainerSlide(void) void LinkOpponentHandleTrainerSlideBack(void) { - oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); - gSprites[gObjectBankIDs[gActiveBank]].data[0] = 35; - gSprites[gObjectBankIDs[gActiveBank]].data[2] = 280; - gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); + oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]); + gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35; + gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280; + gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34; + StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy); gBattleBankFunc[gActiveBank] = sub_80375B4; } @@ -1299,7 +1299,7 @@ void LinkOpponentHandlecmd10(void) { ewram17810[gActiveBank].unk4 = 0; PlaySE12WithPanning(SE_POKE_DEAD, 63); - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8010384; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8010384; gBattleBankFunc[gActiveBank] = sub_8037B78; } } @@ -1574,14 +1574,14 @@ void LinkOpponentHandlecmd40(void) void LinkOpponentHandleHitAnimation(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE) + if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE) { LinkOpponentBufferExecCompleted(); } else { gDoingBattleAnim = TRUE; - gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0; + gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0; sub_8047858(gActiveBank); gBattleBankFunc[gActiveBank] = dp01t_0F_4_move_anim; } @@ -1629,12 +1629,12 @@ void LinkOpponentHandleTrainerBallThrow(void) { u8 taskId; - oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); - gSprites[gObjectBankIDs[gActiveBank]].data[0] = 35; - gSprites[gObjectBankIDs[gActiveBank]].data[2] = 280; - gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], sub_803A3A8); + oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]); + gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35; + gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280; + gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34; + StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_803A3A8); taskId = CreateTask(sub_803A2C4, 5); gTasks[taskId].data[0] = gActiveBank; if (ewram17810[gActiveBank].unk0_0) @@ -1733,7 +1733,7 @@ void LinkOpponentHandleSpriteInvisibility(void) { if (IsBankSpritePresent(gActiveBank) != 0) { - gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; + gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; sub_8031F88(gActiveBank); } LinkOpponentBufferExecCompleted(); diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c index 3a16e12e6..e1f93ba08 100644 --- a/src/battle/battle_controller_linkpartner.c +++ b/src/battle/battle_controller_linkpartner.c @@ -35,7 +35,7 @@ extern u8 gBattleBufferA[][0x200]; extern u8 gActiveBank; extern u32 gBattleExecBuffer; extern u16 gBattlePartyID[]; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; extern u8 gBattleOutcome; extern u16 gUnknown_02024DE8; extern u8 gUnknown_02024E68[]; @@ -260,17 +260,17 @@ void LinkPartnerBufferRunCommand(void) void sub_811DAE4(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy) LinkPartnerBufferExecCompleted(); } void sub_811DB1C(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy) { nullsub_10(0); - FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]); + DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); LinkPartnerBufferExecCompleted(); } } @@ -338,8 +338,8 @@ void sub_811DCA0(void) void sub_811DDE8(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].animEnded - && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0) + if (gSprites[gBankSpriteIds[gActiveBank]].animEnded + && gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0) LinkPartnerBufferExecCompleted(); } @@ -362,11 +362,11 @@ void bx_t3_healthbar_update(void) void sub_811DE98(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].pos1.y + gSprites[gObjectBankIDs[gActiveBank]].pos2.y > 160) + if (gSprites[gBankSpriteIds[gActiveBank]].pos1.y + gSprites[gBankSpriteIds[gActiveBank]].pos2.y > 160) { nullsub_9(GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES)); - FreeOamMatrix(gSprites[gObjectBankIDs[gActiveBank]].oam.matrixNum); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + FreeOamMatrix(gSprites[gBankSpriteIds[gActiveBank]].oam.matrixNum); + DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); sub_8043DB0(gHealthboxIDs[gActiveBank]); LinkPartnerBufferExecCompleted(); } @@ -376,8 +376,8 @@ void sub_811DF34(void) { if (!ewram17810[gActiveBank].unk0_6) { - FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]); + DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); sub_8043DB0(gHealthboxIDs[gActiveBank]); LinkPartnerBufferExecCompleted(); } @@ -391,7 +391,7 @@ void sub_811DFA0(void) void bx_blink_t3(void) { - u8 spriteId = gObjectBankIDs[gActiveBank]; + u8 spriteId = gBankSpriteIds[gActiveBank]; if (gSprites[spriteId].data[1] == 32) { gSprites[spriteId].data[1] = 0; @@ -435,7 +435,7 @@ void sub_811E0CC(void) FreeSpritePaletteByTag(0x27F9); CreateTask(c3_0802FDF4, 10); HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); - StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0); + StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 0); sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 0); sub_804777C(gActiveBank); sub_8043DFC(gHealthboxIDs[gActiveBank]); @@ -1104,15 +1104,15 @@ void LinkPartnerHandleLoadPokeSprite(void) GetMonSpriteTemplate_803C56C( GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES), GetBankIdentity(gActiveBank)); - gObjectBankIDs[gActiveBank] = CreateSprite( + gBankSpriteIds[gActiveBank] = CreateSprite( &gUnknown_02024E8C, GetBankPosition(gActiveBank, 2), sub_8077F68(gActiveBank), sub_8079E90(gActiveBank)); - gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240; - gSprites[gObjectBankIDs[gActiveBank]].data[0] = gActiveBank; - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; - StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], gBattleMonForms[gActiveBank]); + gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240; + gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank; + gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank; + StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]); gBattleBankFunc[gActiveBank] = sub_811DDE8; } @@ -1134,18 +1134,18 @@ void sub_811F864(u8 a, u8 b) species = GetMonData(&gPlayerParty[gBattlePartyID[a]], MON_DATA_SPECIES); gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0); GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a)); - gObjectBankIDs[a] = CreateSprite( + gBankSpriteIds[a] = CreateSprite( &gUnknown_02024E8C, GetBankPosition(a, 2), sub_8077F68(a), sub_8079E90(a)); - gSprites[gUnknown_0300434C[a]].data[1] = gObjectBankIDs[a]; - gSprites[gObjectBankIDs[a]].data[0] = a; - gSprites[gObjectBankIDs[a]].data[2] = species; - gSprites[gObjectBankIDs[a]].oam.paletteNum = a; - StartSpriteAnim(&gSprites[gObjectBankIDs[a]], gBattleMonForms[a]); - gSprites[gObjectBankIDs[a]].invisible = TRUE; - gSprites[gObjectBankIDs[a]].callback = SpriteCallbackDummy; + gSprites[gUnknown_0300434C[a]].data[1] = gBankSpriteIds[a]; + gSprites[gBankSpriteIds[a]].data[0] = a; + gSprites[gBankSpriteIds[a]].data[2] = species; + gSprites[gBankSpriteIds[a]].oam.paletteNum = a; + StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]); + gSprites[gBankSpriteIds[a]].invisible = TRUE; + gSprites[gBankSpriteIds[a]].callback = SpriteCallbackDummy; gSprites[gUnknown_0300434C[a]].data[0] = sub_8046400(0, 0xFF); } @@ -1158,8 +1158,8 @@ void LinkPartnerHandleReturnPokeToBall(void) } else { - FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]); + DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); sub_8043DB0(gHealthboxIDs[gActiveBank]); LinkPartnerBufferExecCompleted(); } @@ -1205,14 +1205,14 @@ void LinkPartnerHandleTrainerThrow(void) } LoadPlayerTrainerBankSprite(gender, gActiveBank); GetMonSpriteTemplate_803C5A0(gender, GetBankIdentity(gActiveBank)); - gObjectBankIDs[gActiveBank] = CreateSprite( + gBankSpriteIds[gActiveBank] = CreateSprite( &gUnknown_02024E8C, 80 + xOffset, 80 + 4 * (8 - gTrainerBackPicCoords[gender].coords), sub_8079E90(gActiveBank)); - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; - gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240; - gSprites[gObjectBankIDs[gActiveBank]].data[0] = -2; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; + gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank; + gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240; + gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0; gBattleBankFunc[gActiveBank] = sub_811DAE4; } @@ -1223,12 +1223,12 @@ void LinkPartnerHandleTrainerSlide(void) void LinkPartnerHandleTrainerSlideBack(void) { - oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); - gSprites[gObjectBankIDs[gActiveBank]].data[0] = 35; - gSprites[gObjectBankIDs[gActiveBank]].data[2] = -40; - gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); + oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]); + gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35; + gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40; + gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34; + StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy); gBattleBankFunc[gActiveBank] = sub_811DB1C; } @@ -1245,9 +1245,9 @@ void LinkPartnerHandlecmd10(void) ewram17810[gActiveBank].unk4 = 0; HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); PlaySE12WithPanning(SE_POKE_DEAD, -64); - gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0; - gSprites[gObjectBankIDs[gActiveBank]].data[2] = 5; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80105EC; + gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0; + gSprites[gBankSpriteIds[gActiveBank]].data[2] = 5; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80105EC; gBattleBankFunc[gActiveBank] = sub_811DE98; } } @@ -1519,14 +1519,14 @@ void LinkPartnerHandlecmd40(void) void LinkPartnerHandleHitAnimation(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE) + if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE) { LinkPartnerBufferExecCompleted(); } else { gDoingBattleAnim = TRUE; - gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0; + gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0; sub_8047858(gActiveBank); gBattleBankFunc[gActiveBank] = bx_blink_t3; } @@ -1575,19 +1575,19 @@ void LinkPartnerHandleTrainerBallThrow(void) u8 r4; u8 taskId; - oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); - gSprites[gObjectBankIDs[gActiveBank]].data[0] = 50; - gSprites[gObjectBankIDs[gActiveBank]].data[2] = -40; - gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - gSprites[gObjectBankIDs[gActiveBank]].data[5] = gActiveBank; - StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38); - StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1); + oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]); + gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50; + gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40; + gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34; + gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank; + StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8030E38); + StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1); r4 = AllocSpritePalette(0xD6F9); LoadCompressedPalette( gTrainerBackPicPaletteTable[gLinkPlayers[sub_803FC34(gActiveBank)].gender].data, 0x100 + r4 * 16, 0x20); - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = r4; + gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = r4; taskId = CreateTask(sub_812071C, 5); gTasks[taskId].data[0] = gActiveBank; if (ewram17810[gActiveBank].unk0_0) @@ -1673,7 +1673,7 @@ void LinkPartnerHandleSpriteInvisibility(void) { if (IsBankSpritePresent(gActiveBank) != 0) { - gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; + gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; sub_8031F88(gActiveBank); } LinkPartnerBufferExecCompleted(); diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index 338f8d418..5fb642e0c 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -34,7 +34,7 @@ extern u8 gUnknown_02023A14_50; extern u8 gActiveBank; extern u8 gBattleBufferA[][0x200]; extern u16 gBattlePartyID[]; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; extern u8 gBattleMonForms[]; extern struct SpriteTemplate gUnknown_02024E8C; extern void (*gBattleBankFunc[])(void); @@ -280,25 +280,25 @@ void OpponentBufferRunCommand(void) void sub_8032B4C(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy) OpponentBufferExecCompleted(); } // Duplicate of sub_8032B4C void sub_8032B84(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy) OpponentBufferExecCompleted(); } void sub_8032BBC(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy) { - sub_8031B74(gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam); - gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = gSprites[gObjectBankIDs[gActiveBank]].data[5]; - FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + sub_8031B74(gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam); + gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum = gSprites[gBankSpriteIds[gActiveBank]].data[5]; + FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]); + DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); OpponentBufferExecCompleted(); } } @@ -386,8 +386,8 @@ void sub_8032E2C(void) void sub_8033018(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].animEnded == TRUE - && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0) + if (gSprites[gBankSpriteIds[gActiveBank]].animEnded == TRUE + && gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0) { if (!ewram17810[gActiveBank].unk0_7) { @@ -419,7 +419,7 @@ void sub_80330C8(void) void sub_803311C(void) { - if (!gSprites[gObjectBankIDs[gActiveBank]].inUse) + if (!gSprites[gBankSpriteIds[gActiveBank]].inUse) { sub_8043DB0(gHealthboxIDs[gActiveBank]); OpponentBufferExecCompleted(); @@ -430,8 +430,8 @@ void sub_8033160(void) { if (!ewram17810[gActiveBank].unk0_6) { - FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]); + DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); sub_8032A08(gActiveBank); sub_8043DB0(gHealthboxIDs[gActiveBank]); OpponentBufferExecCompleted(); @@ -446,7 +446,7 @@ void sub_80331D0(void) void bx_blink_t7(void) { - u8 spriteId = gObjectBankIDs[gActiveBank]; + u8 spriteId = gBankSpriteIds[gActiveBank]; if (gSprites[spriteId].data[1] == 32) { @@ -490,7 +490,7 @@ void sub_8033308(void) ewram17810[gActiveBank].unk1_0 = 0; FreeSpriteTilesByTag(0x27F9); FreeSpritePaletteByTag(0x27F9); - StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0); + StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 0); sub_8045A5C( gHealthboxIDs[gActiveBank], &gEnemyParty[gBattlePartyID[gActiveBank]], @@ -1126,16 +1126,16 @@ void OpponentHandleLoadPokeSprite(void) BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank); GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank)); - gObjectBankIDs[gActiveBank] = CreateSprite( + gBankSpriteIds[gActiveBank] = CreateSprite( &gUnknown_02024E8C, GetBankPosition(gActiveBank, 2), sub_8077F68(gActiveBank), sub_8079E90(gActiveBank)); - gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240; - gSprites[gObjectBankIDs[gActiveBank]].data[0] = gActiveBank; - gSprites[gObjectBankIDs[gActiveBank]].data[2] = species; - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; - StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], gBattleMonForms[gActiveBank]); + gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240; + gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank; + gSprites[gBankSpriteIds[gActiveBank]].data[2] = species; + gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank; + StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]); sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES)); gBattleBankFunc[gActiveBank] = sub_8033018; } @@ -1158,18 +1158,18 @@ void sub_803495C(u8 a, u8 b) gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0); BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a); GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a)); - gObjectBankIDs[a] = CreateSprite( + gBankSpriteIds[a] = CreateSprite( &gUnknown_02024E8C, GetBankPosition(a, 2), sub_8077F68(a), sub_8079E90(a)); - gSprites[gObjectBankIDs[a]].data[0] = a; - gSprites[gObjectBankIDs[a]].data[2] = species; - gSprites[gUnknown_0300434C[a]].data[1] = gObjectBankIDs[a]; - gSprites[gObjectBankIDs[a]].oam.paletteNum = a; - StartSpriteAnim(&gSprites[gObjectBankIDs[a]], gBattleMonForms[a]); - gSprites[gObjectBankIDs[a]].invisible = TRUE; - gSprites[gObjectBankIDs[a]].callback = SpriteCallbackDummy; + gSprites[gBankSpriteIds[a]].data[0] = a; + gSprites[gBankSpriteIds[a]].data[2] = species; + gSprites[gUnknown_0300434C[a]].data[1] = gBankSpriteIds[a]; + gSprites[gBankSpriteIds[a]].oam.paletteNum = a; + StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]); + gSprites[gBankSpriteIds[a]].invisible = TRUE; + gSprites[gBankSpriteIds[a]].callback = SpriteCallbackDummy; gSprites[gUnknown_0300434C[a]].data[0] = sub_8046400(0, 0xFE); } @@ -1182,8 +1182,8 @@ void OpponentHandleReturnPokeToBall(void) } else { - FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]); + DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); sub_8032A08(gActiveBank); sub_8043DB0(gHealthboxIDs[gActiveBank]); OpponentBufferExecCompleted(); @@ -1234,18 +1234,18 @@ void OpponentHandleTrainerThrow(void) sub_8031A6C(trainerPicIndex, gActiveBank); GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBankIdentity(gActiveBank)); - gObjectBankIDs[gActiveBank] = CreateSprite( + gBankSpriteIds[gActiveBank] = CreateSprite( &gUnknown_02024E8C, 0xB0, 40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicIndex].coords), sub_8079E90(gActiveBank)); - gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240; - gSprites[gObjectBankIDs[gActiveBank]].data[0] = 2; - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag); - gSprites[gObjectBankIDs[gActiveBank]].data[5] = gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum; - gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag); - gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam = trainerPicIndex; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; + gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240; + gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2; + gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag); + gSprites[gBankSpriteIds[gActiveBank]].data[5] = gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum; + gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag); + gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = trainerPicIndex; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0; gBattleBankFunc[gActiveBank] = sub_8032B4C; } @@ -1264,30 +1264,30 @@ void OpponentHandleTrainerSlide(void) sub_8031A6C(trainerPicIndex, gActiveBank); GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBankIdentity(gActiveBank)); - gObjectBankIDs[gActiveBank] = CreateSprite( + gBankSpriteIds[gActiveBank] = CreateSprite( &gUnknown_02024E8C, 0xB0, 40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicIndex].coords), 0x1E); - gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 96; - gSprites[gObjectBankIDs[gActiveBank]].pos1.x += 32; - gSprites[gObjectBankIDs[gActiveBank]].data[0] = -2; - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag); - gSprites[gObjectBankIDs[gActiveBank]].data[5] = gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum; - gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag); - gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam = trainerPicIndex; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; + gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 96; + gSprites[gBankSpriteIds[gActiveBank]].pos1.x += 32; + gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2; + gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag); + gSprites[gBankSpriteIds[gActiveBank]].data[5] = gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum; + gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag); + gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = trainerPicIndex; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0; gBattleBankFunc[gActiveBank] = sub_8032B84; } void OpponentHandleTrainerSlideBack(void) { - oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); - gSprites[gObjectBankIDs[gActiveBank]].data[0] = 35; - gSprites[gObjectBankIDs[gActiveBank]].data[2] = 280; - gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); + oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]); + gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35; + gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280; + gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34; + StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy); gBattleBankFunc[gActiveBank] = sub_8032BBC; } @@ -1303,7 +1303,7 @@ void OpponentHandlecmd10(void) { ewram17810[gActiveBank].unk4 = 0; PlaySE12WithPanning(SE_POKE_DEAD, 63); - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8010384; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8010384; gBattleBankFunc[gActiveBank] = sub_803311C; } } @@ -2166,14 +2166,14 @@ void OpponentHandlecmd40(void) void OpponentHandleHitAnimation(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE) + if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE) { OpponentBufferExecCompleted(); } else { gDoingBattleAnim = TRUE; - gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0; + gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0; sub_8047858(gActiveBank); gBattleBankFunc[gActiveBank] = bx_blink_t7; } @@ -2221,12 +2221,12 @@ void OpponentHandleTrainerBallThrow(void) { u8 taskId; - oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); - gSprites[gObjectBankIDs[gActiveBank]].data[0] = 35; - gSprites[gObjectBankIDs[gActiveBank]].data[2] = 280; - gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], sub_8035C10); + oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]); + gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35; + gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280; + gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34; + StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8035C10); taskId = CreateTask(sub_8035C44, 5); gTasks[taskId].data[0] = gActiveBank; if (ewram17810[gActiveBank].unk0_0) @@ -2325,7 +2325,7 @@ void OpponentHandleSpriteInvisibility(void) { if (IsBankSpritePresent(gActiveBank) != 0) { - gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; + gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; sub_8031F88(gActiveBank); } OpponentBufferExecCompleted(); diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index e03e21849..33a29c064 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -53,7 +53,7 @@ extern u8 gBankInMenu; extern u16 gBattlePartyID[]; extern u8 gHealthboxIDs[]; extern u8 gDoingBattleAnim; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; extern u16 gBattleTypeFlags; extern u8 gBattleOutcome; extern void (*gAnimScriptCallback)(void); @@ -143,7 +143,7 @@ extern bool8 gDoingBattleAnim; extern u16 gBattleTypeFlags; extern u32 gBattleExecBuffer; extern u8 gBattleBufferA[][0x200]; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; extern u8 gActionSelectionCursor[]; extern u8 gMoveSelectionCursor[]; extern u8 gAbsentBankFlags; @@ -370,7 +370,7 @@ void PlayerBufferRunCommand(void) void bx_0802E404(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0) + if (gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0) PlayerBufferExecCompleted(); } @@ -498,7 +498,7 @@ void sub_802C2EC(void) { DestroyMenuCursor(); PlaySE(SE_SELECT); - gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574; + gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010574; Emitcmd33(1, 10, gMoveSelectionCursor[gActiveBank] | (gUnknown_03004344 << 8)); dp11b_obj_free(gUnknown_03004344, 1); PlayerBufferExecCompleted(); @@ -507,7 +507,7 @@ void sub_802C2EC(void) else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); - gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574; + gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010574; gBattleBankFunc[gActiveBank] = sub_802C68C; dp11b_obj_instanciate(gActiveBank, 1, 7, 1); dp11b_obj_instanciate(gActiveBank, 0, 7, 1); @@ -516,7 +516,7 @@ void sub_802C2EC(void) else if (gMain.newKeys & 0x60) { PlaySE(SE_SELECT); - gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574; + gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010574; do { u8 var = GetBankIdentity(gUnknown_03004344); @@ -557,13 +557,13 @@ void sub_802C2EC(void) if (gAbsentBankFlags & gBitTable[gUnknown_03004344]) i = 0; } while (i == 0); - gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520; + gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010520; } //_0802C540 else if (gMain.newKeys & 0x90) { PlaySE(SE_SELECT); - gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574; + gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010574; do { u8 var = GetBankIdentity(gUnknown_03004344); @@ -603,7 +603,7 @@ void sub_802C2EC(void) if (gAbsentBankFlags & gBitTable[gUnknown_03004344]) i = 0; } while (i == 0); - gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520; + gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010520; } } @@ -679,7 +679,7 @@ void sub_802C68C(void) gUnknown_03004344 = GetBankByIdentity(3); else gUnknown_03004344 = GetBankByIdentity(1); - gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520; + gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010520; } } else if (gMain.newKeys & B_BUTTON) @@ -1684,24 +1684,24 @@ void debug_sub_803107C(void) void sub_802D204(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy) PlayerBufferExecCompleted(); } // duplicate of sub_802D204 void sub_802D23C(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy) PlayerBufferExecCompleted(); } void sub_802D274(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy) { nullsub_10(gSaveBlock2.playerGender); - FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]); + DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); PlayerBufferExecCompleted(); } } @@ -2176,13 +2176,13 @@ void sub_802DDC4(u8 taskId) void sub_802DE10(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].pos1.y + gSprites[gObjectBankIDs[gActiveBank]].pos2.y > DISPLAY_HEIGHT) + if (gSprites[gBankSpriteIds[gActiveBank]].pos1.y + gSprites[gBankSpriteIds[gActiveBank]].pos2.y > DISPLAY_HEIGHT) { u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES); nullsub_9(species); - FreeOamMatrix(gSprites[gObjectBankIDs[gActiveBank]].oam.matrixNum); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + FreeOamMatrix(gSprites[gBankSpriteIds[gActiveBank]].oam.matrixNum); + DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); sub_8043DB0(gHealthboxIDs[gActiveBank]); PlayerBufferExecCompleted(); } @@ -2192,8 +2192,8 @@ void sub_802DEAC(void) { if (!ewram17810[gActiveBank].unk0_6) { - FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]); + DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); sub_8043DB0(gHealthboxIDs[gActiveBank]); PlayerBufferExecCompleted(); } @@ -2260,7 +2260,7 @@ void bx_wait_t1(void) void bx_blink_t1(void) { - u8 spriteId = gObjectBankIDs[gActiveBank]; + u8 spriteId = gBankSpriteIds[gActiveBank]; if (gSprites[spriteId].data[1] == 32) { @@ -3020,7 +3020,7 @@ void PlayerHandlecmd3(void) void PlayerHandleLoadPokeSprite(void) { BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; + gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank; gBattleBankFunc[gActiveBank] = bx_0802E404; } @@ -3044,18 +3044,18 @@ void sub_802F934(u8 bank, u8 b) species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES); gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0); GetMonSpriteTemplate_803C56C(species, GetBankIdentity(bank)); - gObjectBankIDs[bank] = CreateSprite( + gBankSpriteIds[bank] = CreateSprite( &gUnknown_02024E8C, GetBankPosition(bank, 2), sub_8077F68(bank), sub_8079E90(bank)); - gSprites[gUnknown_0300434C[bank]].data[1] = gObjectBankIDs[bank]; - gSprites[gObjectBankIDs[bank]].data[0] = bank; - gSprites[gObjectBankIDs[bank]].data[2] = species; - gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; - StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]); - gSprites[gObjectBankIDs[bank]].invisible = TRUE; - gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; + gSprites[gUnknown_0300434C[bank]].data[1] = gBankSpriteIds[bank]; + gSprites[gBankSpriteIds[bank]].data[0] = bank; + gSprites[gBankSpriteIds[bank]].data[2] = species; + gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank; + StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]); + gSprites[gBankSpriteIds[bank]].invisible = TRUE; + gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy; gSprites[gUnknown_0300434C[bank]].data[0] = sub_8046400(0, 0xFF); } @@ -3068,8 +3068,8 @@ void PlayerHandleReturnPokeToBall(void) } else { - FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]); + DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); sub_8043DB0(gHealthboxIDs[gActiveBank]); PlayerBufferExecCompleted(); } @@ -3111,15 +3111,15 @@ void PlayerHandleTrainerThrow(void) } LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank); GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank)); - gObjectBankIDs[gActiveBank] = CreateSprite( + gBankSpriteIds[gActiveBank] = CreateSprite( &gUnknown_02024E8C, r7 + 80, (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80, sub_8079E90(gActiveBank)); - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; - gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240; - gSprites[gObjectBankIDs[gActiveBank]].data[0] = -2; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; + gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank; + gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240; + gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0; gBattleBankFunc[gActiveBank] = sub_802D204; } @@ -3127,27 +3127,27 @@ void PlayerHandleTrainerSlide(void) { LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank); GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank)); - gObjectBankIDs[gActiveBank] = CreateSprite( + gBankSpriteIds[gActiveBank] = CreateSprite( &gUnknown_02024E8C, 80, (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80, 30); - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; - gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -96; - gSprites[gObjectBankIDs[gActiveBank]].data[0] = 2; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; + gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank; + gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -96; + gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0; gBattleBankFunc[gActiveBank] = sub_802D23C; } void PlayerHandleTrainerSlideBack(void) { - oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); - gSprites[gObjectBankIDs[gActiveBank]].data[0] = 50; - gSprites[gObjectBankIDs[gActiveBank]].data[2] = -40; - gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); - StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1); + oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]); + gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50; + gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40; + gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34; + StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy); + StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1); gBattleBankFunc[gActiveBank] = sub_802D274; } @@ -3166,9 +3166,9 @@ void PlayerHandlecmd10(void) ewram17810[gActiveBank].unk4 = 0; HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); PlaySE12WithPanning(SE_POKE_DEAD, -64); - gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0; - gSprites[gObjectBankIDs[gActiveBank]].data[2] = 5; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80105EC; + gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0; + gSprites[gBankSpriteIds[gActiveBank]].data[2] = 5; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80105EC; gBattleBankFunc[gActiveBank] = sub_802DE10; } } @@ -3540,14 +3540,14 @@ void PlayerHandlecmd40(void) void PlayerHandleHitAnimation(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE) + if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE) { PlayerBufferExecCompleted(); } else { gDoingBattleAnim = 1; - gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0; + gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0; sub_8047858(gActiveBank); gBattleBankFunc[gActiveBank] = bx_blink_t1; } @@ -3596,17 +3596,17 @@ void PlayerHandleTrainerBallThrow(void) u8 paletteNum; u8 taskId; - oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); - gSprites[gObjectBankIDs[gActiveBank]].data[0] = 50; - gSprites[gObjectBankIDs[gActiveBank]].data[2] = -40; - gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - gSprites[gObjectBankIDs[gActiveBank]].data[5] = gActiveBank; - StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38); - StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1); + oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]); + gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50; + gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40; + gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34; + gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank; + StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8030E38); + StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1); paletteNum = AllocSpritePalette(0xD6F8); LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2.playerGender].data, 0x100 + paletteNum * 16, 32); - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = paletteNum; + gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = paletteNum; taskId = CreateTask(task05_08033660, 5); gTasks[taskId].data[0] = gActiveBank; if (ewram17810[gActiveBank].unk0_0) @@ -3623,7 +3623,7 @@ void sub_8030E38(struct Sprite *sprite) FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum)); DestroySprite(sprite); BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[r4]], r4); - StartSpriteAnim(&gSprites[gObjectBankIDs[r4]], 0); + StartSpriteAnim(&gSprites[gBankSpriteIds[r4]], 0); } void task05_08033660(u8 taskId) @@ -3702,7 +3702,7 @@ void PlayerHandleSpriteInvisibility(void) { if (IsBankSpritePresent(gActiveBank)) { - gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; + gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; sub_8031F88(gActiveBank); } PlayerBufferExecCompleted(); diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c index 5896e5e18..e9425e7e7 100644 --- a/src/battle/battle_controller_safari.c +++ b/src/battle/battle_controller_safari.c @@ -28,7 +28,7 @@ extern u16 gBattle_BG0_Y; extern u16 gBattle_BG0_X; extern u8 gBattleBufferA[][0x200]; extern bool8 gDoingBattleAnim; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; extern struct SpriteTemplate gUnknown_02024E8C; extern u16 gBattleTypeFlags; extern u32 gBattleExecBuffer; @@ -288,7 +288,7 @@ void bx_battle_menu_t6_2(void) void sub_812B65C(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy) SafariBufferExecCompleted(); } @@ -399,15 +399,15 @@ void SafariHandleTrainerThrow(void) { LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank); GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank)); - gObjectBankIDs[gActiveBank] = CreateSprite( + gBankSpriteIds[gActiveBank] = CreateSprite( &gUnknown_02024E8C, 80, (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80, 30); - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; - gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240; - gSprites[gObjectBankIDs[gActiveBank]].data[0] = -2; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; + gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank; + gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240; + gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0; gBattleBankFunc[gActiveBank] = sub_812B65C; } diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c index 49f530129..3eacaa085 100644 --- a/src/battle/battle_controller_wally.c +++ b/src/battle/battle_controller_wally.c @@ -31,7 +31,7 @@ extern u8 gActiveBank; extern void (*gBattleBankFunc[])(void); extern u32 gBattleExecBuffer; extern u8 gBattleBufferA[][0x200]; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; extern MainCallback gPreBattleCallback1; extern bool8 gDoingBattleAnim; extern u16 gBattlePartyID[]; @@ -325,7 +325,7 @@ void sub_81372BC(void) void sub_813741C(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy) WallyBufferExecCompleted(); } @@ -436,7 +436,7 @@ void sub_81377B0(void) void bx_blink_t5(void) { - u8 spriteId = gObjectBankIDs[gActiveBank]; + u8 spriteId = gBankSpriteIds[gActiveBank]; if (gSprites[spriteId].data[1] == 32) { @@ -457,8 +457,8 @@ void sub_813789C(void) { if (!ewram17810[gActiveBank].unk0_6) { - FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]); + DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); sub_8043DB0(gHealthboxIDs[gActiveBank]); WallyBufferExecCompleted(); } @@ -467,7 +467,7 @@ void sub_813789C(void) // Duplicate of sub_813741C void sub_8137908(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy) WallyBufferExecCompleted(); } @@ -1093,8 +1093,8 @@ void WallyHandleReturnPokeToBall(void) } else { - FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); - DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]); + DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); sub_8043DB0(gHealthboxIDs[gActiveBank]); WallyBufferExecCompleted(); } @@ -1104,14 +1104,14 @@ void WallyHandleTrainerThrow(void) { LoadPlayerTrainerBankSprite(2, gActiveBank); GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank)); - gObjectBankIDs[gActiveBank] = CreateSprite( + gBankSpriteIds[gActiveBank] = CreateSprite( &gUnknown_02024E8C, 80, 80 + 4 * (8 - gTrainerBackPicCoords[2].coords), 30); - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; - gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240; - gSprites[gObjectBankIDs[gActiveBank]].data[0] = -2; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; + gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank; + gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240; + gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0; gBattleBankFunc[gActiveBank] = sub_813741C; } @@ -1119,14 +1119,14 @@ void WallyHandleTrainerSlide(void) { LoadPlayerTrainerBankSprite(2, gActiveBank); GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank)); - gObjectBankIDs[gActiveBank] = CreateSprite( + gBankSpriteIds[gActiveBank] = CreateSprite( &gUnknown_02024E8C, 80, 80 + 4 * (8 - gTrainerBackPicCoords[2].coords), 30); - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; - gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -96; - gSprites[gObjectBankIDs[gActiveBank]].data[0] = 2; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; + gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank; + gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -96; + gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0; gBattleBankFunc[gActiveBank] = sub_8137908; } @@ -1432,14 +1432,14 @@ void WallyHandlecmd40(void) void WallyHandleHitAnimation(void) { - if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE) + if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE) { WallyBufferExecCompleted(); } else { gDoingBattleAnim = 1; - gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0; + gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0; sub_8047858(gActiveBank); gBattleBankFunc[gActiveBank] = bx_blink_t5; } @@ -1480,17 +1480,17 @@ void WallyHandleTrainerBallThrow(void) u8 paletteNum; u8 taskId; - oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); - gSprites[gObjectBankIDs[gActiveBank]].data[0] = 50; - gSprites[gObjectBankIDs[gActiveBank]].data[2] = -40; - gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; - gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - gSprites[gObjectBankIDs[gActiveBank]].data[5] = gActiveBank; - StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38); - StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1); + oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]); + gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50; + gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40; + gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y; + gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34; + gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank; + StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8030E38); + StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1); paletteNum = AllocSpritePalette(0xD6F8); LoadCompressedPalette(gTrainerBackPicPaletteTable[2].data, 0x100 + paletteNum * 16, 32); - gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = paletteNum; + gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = paletteNum; taskId = CreateTask(sub_8139A2C, 5); gTasks[taskId].data[0] = gActiveBank; if (ewram17810[gActiveBank].unk0_0) @@ -1508,18 +1508,18 @@ void sub_81398BC(u8 bank) species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES); gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0); GetMonSpriteTemplate_803C56C(species, GetBankIdentity(bank)); - gObjectBankIDs[bank] = CreateSprite( + gBankSpriteIds[bank] = CreateSprite( &gUnknown_02024E8C, GetBankPosition(bank, 2), sub_8077F68(bank), sub_8079E90(bank)); - gSprites[gUnknown_0300434C[bank]].data[1] = gObjectBankIDs[bank]; - gSprites[gObjectBankIDs[bank]].data[0] = bank; - gSprites[gObjectBankIDs[bank]].data[2] = species; - gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; - StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]); - gSprites[gObjectBankIDs[bank]].invisible = TRUE; - gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; + gSprites[gUnknown_0300434C[bank]].data[1] = gBankSpriteIds[bank]; + gSprites[gBankSpriteIds[bank]].data[0] = bank; + gSprites[gBankSpriteIds[bank]].data[2] = species; + gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank; + StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]); + gSprites[gBankSpriteIds[bank]].invisible = TRUE; + gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy; gSprites[gUnknown_0300434C[bank]].data[0] = sub_8046400(0, 0xFF); } diff --git a/src/battle/pokeball.c b/src/battle/pokeball.c index 6f27469ce..f5b8e1c5d 100644 --- a/src/battle/pokeball.c +++ b/src/battle/pokeball.c @@ -21,7 +21,7 @@ extern u16 gBattleTypeFlags; extern u8 gBankTarget; extern u8 gActiveBank; extern u16 gBattlePartyID[]; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; extern u8 gDoingBattleAnim; extern u8 gHealthboxIDs[]; @@ -442,9 +442,9 @@ static void sub_80466F4(struct Sprite *sprite) { sprite->data[5] = 0; sprite->callback = sub_8046760; - StartSpriteAffineAnim(&gSprites[gObjectBankIDs[sprite->data[6]]], 2); - AnimateSprite(&gSprites[gObjectBankIDs[sprite->data[6]]]); - gSprites[gObjectBankIDs[sprite->data[6]]].data[1] = 0; + StartSpriteAffineAnim(&gSprites[gBankSpriteIds[sprite->data[6]]], 2); + AnimateSprite(&gSprites[gBankSpriteIds[sprite->data[6]]]); + gSprites[gBankSpriteIds[sprite->data[6]]].data[1] = 0; } } @@ -453,17 +453,17 @@ static void sub_8046760(struct Sprite *sprite) sprite->data[5]++; if (sprite->data[5] == 11) PlaySE(SE_SUIKOMU); - if (gSprites[gObjectBankIDs[sprite->data[6]]].affineAnimEnded) + if (gSprites[gBankSpriteIds[sprite->data[6]]].affineAnimEnded) { StartSpriteAnim(sprite, 2); - gSprites[gObjectBankIDs[sprite->data[6]]].invisible = TRUE; + gSprites[gBankSpriteIds[sprite->data[6]]].invisible = TRUE; sprite->data[5] = 0; sprite->callback = sub_80467F8; } else { - gSprites[gObjectBankIDs[sprite->data[6]]].data[1] += 0x60; - gSprites[gObjectBankIDs[sprite->data[6]]].pos2.y = -gSprites[gObjectBankIDs[sprite->data[6]]].data[1] >> 8; + gSprites[gBankSpriteIds[sprite->data[6]]].data[1] += 0x60; + gSprites[gBankSpriteIds[sprite->data[6]]].pos2.y = -gSprites[gBankSpriteIds[sprite->data[6]]].data[1] >> 8; } } @@ -747,9 +747,9 @@ static void sub_8046C78(struct Sprite *sprite) gTasks[taskId].data[2] = r4_2; gTasks[taskId].data[15] = 0; } - StartSpriteAffineAnim(&gSprites[gObjectBankIDs[sprite->data[6]]], 1); - AnimateSprite(&gSprites[gObjectBankIDs[sprite->data[6]]]); - gSprites[gObjectBankIDs[sprite->data[6]]].data[1] = 0x1000; + StartSpriteAffineAnim(&gSprites[gBankSpriteIds[sprite->data[6]]], 1); + AnimateSprite(&gSprites[gBankSpriteIds[sprite->data[6]]]); + gSprites[gBankSpriteIds[sprite->data[6]]].data[1] = 0x1000; } static void sub_8046E7C(struct Sprite *sprite) @@ -766,25 +766,25 @@ static void sub_8046E9C(struct Sprite *sprite) bool8 r7 = FALSE; u8 r4 = sprite->data[6]; - gSprites[gObjectBankIDs[r4]].invisible = FALSE; + gSprites[gBankSpriteIds[r4]].invisible = FALSE; if (sprite->animEnded) sprite->invisible = TRUE; - if (gSprites[gObjectBankIDs[r4]].affineAnimEnded) + if (gSprites[gBankSpriteIds[r4]].affineAnimEnded) { - StartSpriteAffineAnim(&gSprites[gObjectBankIDs[r4]], 0); + StartSpriteAffineAnim(&gSprites[gBankSpriteIds[r4]], 0); r7 = TRUE; } else { - gSprites[gObjectBankIDs[r4]].data[1] -= 288; - gSprites[gObjectBankIDs[r4]].pos2.y = gSprites[gObjectBankIDs[r4]].data[1] >> 8; + gSprites[gBankSpriteIds[r4]].data[1] -= 288; + gSprites[gBankSpriteIds[r4]].pos2.y = gSprites[gBankSpriteIds[r4]].data[1] >> 8; } if (sprite->animEnded && r7) { s32 i; u32 r3; - gSprites[gObjectBankIDs[r4]].pos2.y = 0; + gSprites[gBankSpriteIds[r4]].pos2.y = 0; gDoingBattleAnim = 0; ewram17810[r4].unk0_3 = 0; FreeSpriteOamMatrix(sprite); @@ -819,8 +819,8 @@ static void sub_8046FBC(struct Sprite *sprite) } else if (sprite->data[4] == 315) { - FreeOamMatrix(gSprites[gObjectBankIDs[sprite->data[6]]].oam.matrixNum); - DestroySprite(&gSprites[gObjectBankIDs[sprite->data[6]]]); + FreeOamMatrix(gSprites[gBankSpriteIds[sprite->data[6]]].oam.matrixNum); + DestroySprite(&gSprites[gBankSpriteIds[sprite->data[6]]]); DestroySpriteAndFreeResources(sprite); if (gMain.inBattle) ewram17810[r7].unk0_3 = 0; diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c index a78cb20df..0da29441e 100644 --- a/src/battle/reshow_battle_screen.c +++ b/src/battle/reshow_battle_screen.c @@ -25,7 +25,7 @@ extern u8 gBankInMenu; extern u16 gBattlePartyID[4]; extern u8 gNoOfAllBanks; extern u16 gBattleTypeFlags; -extern u8 gObjectBankIDs[4]; +extern u8 gBankSpriteIds[4]; extern u8 gBattleMonForms[4]; extern u8 gHealthboxIDs[4]; @@ -243,46 +243,46 @@ static void sub_807B184(u8 bank) if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0) return; GetMonSpriteTemplate_803C56C(GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank)); - gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, GetBankPosition(bank, 2), posY, sub_8079E90(bank)); - gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; - gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; - gSprites[gObjectBankIDs[bank]].data[0] = bank; - gSprites[gObjectBankIDs[bank]].data[2] = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES); - StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]); + gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, GetBankPosition(bank, 2), posY, sub_8079E90(bank)); + gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank; + gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy; + gSprites[gBankSpriteIds[bank]].data[0] = bank; + gSprites[gBankSpriteIds[bank]].data[2] = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES); + StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]); } else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0) { GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(0)); - gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, 0x50, + gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, 0x50, (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80, sub_8079E90(0)); - gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; - gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; - gSprites[gObjectBankIDs[bank]].data[0] = bank; + gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank; + gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy; + gSprites[gBankSpriteIds[bank]].data[0] = bank; } else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0) { GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(0)); - gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, 0x50, + gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, 0x50, (8 - gTrainerBackPicCoords[2].coords) * 4 + 80, sub_8079E90(0)); - gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; - gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; - gSprites[gObjectBankIDs[bank]].data[0] = bank; + gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank; + gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy; + gSprites[gBankSpriteIds[bank]].data[0] = bank; } else { if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0) return; GetMonSpriteTemplate_803C56C(GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank)); - gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, GetBankPosition(bank, 2), posY, sub_8079E90(bank)); - gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank; - gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy; - gSprites[gObjectBankIDs[bank]].data[0] = bank; - gSprites[gObjectBankIDs[bank]].data[2] = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES); - StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]); + gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, GetBankPosition(bank, 2), posY, sub_8079E90(bank)); + gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank; + gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy; + gSprites[gBankSpriteIds[bank]].data[0] = bank; + gSprites[gBankSpriteIds[bank]].data[2] = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES); + StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]); } - gSprites[gObjectBankIDs[bank]].invisible = ewram17800[bank].invisible; + gSprites[gBankSpriteIds[bank]].invisible = ewram17800[bank].invisible; } } diff --git a/src/contest.c b/src/contest.c index e2695627e..84e5d807b 100644 --- a/src/contest.c +++ b/src/contest.c @@ -47,7 +47,7 @@ extern u16 gBattleTypeFlags; extern u8 gBankAttacker; extern u8 gBankTarget; extern u8 gBanksBySide[]; -extern u8 gObjectBankIDs[]; +extern u8 gBankSpriteIds[]; extern u16 gBattle_BG3_X; extern s16 gBattle_BG1_Y; extern u16 gBattle_BG3_Y; @@ -553,7 +553,7 @@ u8 sub_80AB70C(u8 *a) gBattleTypeFlags = 0; gBankAttacker = 2; gBankTarget = 3; - gObjectBankIDs[gBankAttacker] = CreateJudgeSprite(); + gBankSpriteIds[gBankAttacker] = CreateJudgeSprite(); sub_80B292C(); break; default: @@ -931,7 +931,7 @@ void debug_sub_80BA054(u8 taskId) gSprites[r6].pos2.x = 120; gSprites[r6].callback = sub_80AD8FC; gTasks[taskId].data[2] = r6; - gObjectBankIDs[gBankAttacker] = r6; + gBankSpriteIds[gBankAttacker] = r6; gTasks[taskId].data[3] = 0; gTasks[taskId].data[0]++; sContest.unk1925E = 0; @@ -1143,7 +1143,7 @@ void sub_80AC2CC(u8 taskId) gSprites[spriteId].pos2.x = 120; gSprites[spriteId].callback = sub_80AD8FC; gTasks[taskId].data[2] = spriteId; - gObjectBankIDs[gBankAttacker] = spriteId; + gBankSpriteIds[gBankAttacker] = spriteId; sub_80B0BC4(sub_80B09E4(sContest.unk19215), FALSE); gTasks[taskId].data[0] = 4; return; @@ -2147,7 +2147,7 @@ void Contest_CreatePlayerMon(u8 partyIndex) else gContestMons[gContestPlayerMonIndex].trainerGfxId = MAP_OBJ_GFX_LINK_MAY; gContestMons[gContestPlayerMonIndex].flags = 0; - gContestMons[gContestPlayerMonIndex].unk2C = 0; + gContestMons[gContestPlayerMonIndex].unk2C[0] = 0; gContestMons[gContestPlayerMonIndex].species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES); GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, name); StringGetEnd10(name); @@ -2214,7 +2214,7 @@ void Contest_CreatePlayerMon(u8 partyIndex) gContestMons[gContestPlayerMonIndex].tough = tough; } -void Contest_InitAllPokemon(u8 a, u8 b) +void Contest_InitAllPokemon(u8 contestType, u8 rank) { s32 i; u8 opponentsCount = 0; @@ -2225,17 +2225,17 @@ void Contest_InitAllPokemon(u8 a, u8 b) // Find all suitable opponents for (i = 0; i < 60; i++) { - if (b == gContestOpponents[i].unk1C_0) + if (rank == gContestOpponents[i].whichRank) { - if (a == 0 && gContestOpponents[i].unk1C_2) + if (contestType == 0 && gContestOpponents[i].aiPool_Cool) opponents[opponentsCount++] = i; - else if (a == 1 && gContestOpponents[i].unk1C_3) + else if (contestType == 1 && gContestOpponents[i].aiPool_Beauty) opponents[opponentsCount++] = i; - else if (a == 2 && gContestOpponents[i].unk1C_4) + else if (contestType == 2 && gContestOpponents[i].aiPool_Cute) opponents[opponentsCount++] = i; - else if (a == 3 && gContestOpponents[i].unk1C_5) + else if (contestType == 3 && gContestOpponents[i].aiPool_Smart) opponents[opponentsCount++] = i; - else if (a == 4 && gContestOpponents[i].unk1C_6) + else if (contestType == 4 && gContestOpponents[i].aiPool_Tough) opponents[opponentsCount++] = i; } } @@ -5415,14 +5415,14 @@ void sub_80B28F0(u8 a) void sub_80B292C(void) { - gObjectBankIDs[3] = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); - InitSpriteAffineAnim(&gSprites[gObjectBankIDs[gBankTarget]]); + gBankSpriteIds[3] = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); + InitSpriteAffineAnim(&gSprites[gBankSpriteIds[gBankTarget]]); sub_80B2968(); } void sub_80B2968(void) { - struct Sprite *sprite = &gSprites[gObjectBankIDs[3]]; + struct Sprite *sprite = &gSprites[gBankSpriteIds[3]]; sprite->pos2.x = 0; sprite->pos2.y = 0; diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index efd952ef7..c8f80eb50 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -76,166 +76,6 @@ const struct MenuAction gMatsudaDebugMenuActions[] = {gMatsudaDebugMenu_ActionSetAllArtMuseumText, MatsudaDebugMenu_SetArtMuseumItems}, }; -const u8 gMatsudaDebugMenu_UnknownByteArray[] = {0xFC, 0x02, 0x0F, 0x00, 0xFF}; -const u8 Unknown_083C922D[] = INCBIN_U8("graphics/unknown/ball.4bpp"); -const u16 Unknown_083C924E[] = INCBIN_U16("graphics/unknown/ball.gbapal"); - -const u8 gUnknown_083C926E[][2] = -{ - {2, 0}, - {17, 0}, - {2, 2}, - {17, 2}, -}; - -const u8 gMatsudaDebugMenuContestTopLeft[][2] = -{ - {0, 6}, - {15, 6}, - {0, 8}, - {15, 8}, - {0, 10}, - {15, 10}, -}; - -const u8 gUnknown_083C9282[] = -{ - // TODO: 2d array? - 7, 6, - 22, 6, - 7, 8, - 22, 8, - 7, 10, - 22, 10, -}; - -const u8 gUnknown_083C928E[][2] = -{ - {2, 14}, - {17, 14}, - {2, 16}, - {17, 16}, -}; - -const u8 gUnknown_083C9296[] = {0x08, 0x80, 0x08, 0x80, 0x10, 0x10, 0x30, 0xA8, 0x30, 0xA8, 0x30, 0xA8, 0x08, 0x80, 0x08, 0x80, 0x10, 0x88}; -const u8 gUnknown_083C92A8[] = {0x08, 0x18, 0x28, 0x38, 0x48, 0x58, 0x78, 0x88, 0x98}; - -const struct SpriteSheet gUnknown_083C92B4[] = {Unknown_083C922D, 32, 0x4B0}; -const struct SpritePalette gUnknown_083C92BC[] = {Unknown_083C924E, 0x4B0}; - -const struct OamData gOamData_83C92C4 = -{ - .y = 0, - .affineMode = 0, - .objMode = 0, - .mosaic = 0, - .bpp = 0, - .shape = 0, - .x = 0, - .matrixNum = 0, - .size = 0, - .tileNum = 0, - .priority = 0, - .paletteNum = 0, - .affineParam = 0, -}; - -const struct SpriteTemplate gSpriteTemplate_83C92CC = -{ - .tileTag = 1200, - .paletteTag = 1200, - .oam = &gOamData_83C92C4, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80AA754, -}; - -static void (* const gUnknown_083C92E4[][2])(struct Sprite *, s8) = -{ - {sub_80AA8C8, sub_80AA8D8}, - {sub_80AA8E8, sub_80AA8F8}, - {sub_80AAC5C, sub_80AAC5C}, - {sub_80AA930, sub_80AA974}, - {sub_80AA9B8, sub_80AA9FC}, - {sub_80AAA40, sub_80AAA84}, - {sub_80AAAF0, sub_80AAB30}, - {sub_80AAB70, sub_80AABB0}, - {sub_80AABF0, sub_80AAD44}, -}; - -static const u8 gMatsudaDebugMenu_StartText[] = _("{COLOR CYAN}{HIGHLIGHT RED}"); -static const u8 gMatsudaDebugMenu_StartJapText[] = _("かいし"); // because StartText is only called by StringCopy, this part appears to be unused. -static const u8 gMatsudaDebugMenu_GoBackText[] = _("もどる"); - -#ifdef GERMAN -static const u8 gMatsudaDebugMenu_BattlePointsText[] = _("{COLOR MAGENTA}BP,"); -#else -static const u8 gMatsudaDebugMenu_BattlePointsText[] = _("{COLOR MAGENTA}BP."); -#endif - -static const u8 MatsudaDebugMenuText_Cool[] = _("かっこよさ"); // cool -static const u8 MatsudaDebugMenuText_Cute[] = _("かわいさ"); // cute -static const u8 MatsudaDebugMenuText_Beauty[] = _("うつくしさ"); // beauty -static const u8 MatsudaDebugMenuText_Smart[] = _("かしこさ"); // smart -static const u8 MatsudaDebugMenuText_Tough[] = _("たくましさ"); // tough -static const u8 MatsudaDebugMenuText_Sheen[] = _("けづや"); // sheen - -static const u8 *const gMatsudaDebugMenuTextList1[] = -{ - MatsudaDebugMenuText_Cool, - MatsudaDebugMenuText_Cute, - MatsudaDebugMenuText_Beauty, - MatsudaDebugMenuText_Smart, - MatsudaDebugMenuText_Tough, - MatsudaDebugMenuText_Sheen, -}; - -static const u8 MatsudaDebugMenuText_CoolContest[] = _("かっこよさコンテスト"); -static const u8 MatsudaDebugMenuText_BeautyContest[] = _("うつくしさコンテスト"); -static const u8 MatsudaDebugMenuText_CuteContest[] = _("かわいさコンテスト "); -static const u8 MatsudaDebugMenuText_SmartContest[] = _("かしこさコンテスト "); -static const u8 MatsudaDebugMenuText_ToughContest[] = _("たくましさコンテスト"); - -static const u8 *const gMatsudaDebugMenuTextList2[] = -{ - MatsudaDebugMenuText_CoolContest, - MatsudaDebugMenuText_BeautyContest, - MatsudaDebugMenuText_CuteContest, - MatsudaDebugMenuText_SmartContest, - MatsudaDebugMenuText_ToughContest, -}; - -static const u8 MatsudaDebugMenuText_Fallarbor[] = _("ハジツゲ/ノーマル"); // Fallarbor / Normal -static const u8 MatsudaDebugMenuText_Verdanturf[] = _("シダケ/スーパー "); // Verdanturf / Super -static const u8 MatsudaDebugMenuText_Slateport[] = _("カイナ/ハイパー "); // Slateport / Hyper -static const u8 MatsudaDebugMenuText_Lilycove[] = _("ミナモ/マスター "); // Lilycove / Master - -static const u8 *const gMatsudaDebugMenuTextList3[] = -{ - MatsudaDebugMenuText_Fallarbor, - MatsudaDebugMenuText_Verdanturf, - MatsudaDebugMenuText_Slateport, - MatsudaDebugMenuText_Lilycove, -}; - -static const struct OamData gUnknown_083C9400 = -{ - .y = 0, - .affineMode = 0, - .objMode = 0, - .mosaic = 0, - .bpp = 0, - .shape = 1, - .x = 0, - .matrixNum = 0, - .size = 1, - .tileNum = 1023, - .priority = 0, - .paletteNum = 15, - .affineParam = 0, -}; - u8 unref_sub_80A9B28(void) { Menu_EraseScreen(); @@ -460,14 +300,172 @@ static void sub_80A9F50(void) static void sub_80A9FE4(void) { - u8 ptr[5]; - - memcpy(ptr, gMatsudaDebugMenu_UnknownByteArray, 5); + u8 ptr[] = _("{HIGHLIGHT WHITE2} "); DmaFill32Large(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000); sub_80034D4((void *)VRAM, ptr); LoadFontDefaultPalette(&gWindowTemplate_81E6C3C); } +//const u8 gMatsudaDebugMenu_UnknownByteArray[] = {0xFC, 0x02, 0x0F, 0x00, 0xFF}; +const u8 Unknown_083C922D[] = INCBIN_U8("graphics/unknown/ball.4bpp"); +const u16 Unknown_083C924E[] = INCBIN_U16("graphics/unknown/ball.gbapal"); + +const u8 gUnknown_083C926E[][2] = + { + {2, 0}, + {17, 0}, + {2, 2}, + {17, 2}, + }; + +const u8 gMatsudaDebugMenuContestTopLeft[][2] = + { + {0, 6}, + {15, 6}, + {0, 8}, + {15, 8}, + {0, 10}, + {15, 10}, + }; + +const u8 gUnknown_083C9282[] = + { + // TODO: 2d array? + 7, 6, + 22, 6, + 7, 8, + 22, 8, + 7, 10, + 22, 10, + }; + +const u8 gUnknown_083C928E[][2] = + { + {2, 14}, + {17, 14}, + {2, 16}, + {17, 16}, + }; + +const u8 gUnknown_083C9296[] = {0x08, 0x80, 0x08, 0x80, 0x10, 0x10, 0x30, 0xA8, 0x30, 0xA8, 0x30, 0xA8, 0x08, 0x80, 0x08, 0x80, 0x10, 0x88}; +const u8 gUnknown_083C92A8[] = {0x08, 0x18, 0x28, 0x38, 0x48, 0x58, 0x78, 0x88, 0x98}; + +const struct SpriteSheet gUnknown_083C92B4[] = {Unknown_083C922D, 32, 0x4B0}; +const struct SpritePalette gUnknown_083C92BC[] = {Unknown_083C924E, 0x4B0}; + +const struct OamData gOamData_83C92C4 = + { + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, + }; + +const struct SpriteTemplate gSpriteTemplate_83C92CC = + { + .tileTag = 1200, + .paletteTag = 1200, + .oam = &gOamData_83C92C4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80AA754, + }; + +static void (* const gUnknown_083C92E4[][2])(struct Sprite *, s8) = + { + {sub_80AA8C8, sub_80AA8D8}, + {sub_80AA8E8, sub_80AA8F8}, + {sub_80AAC5C, sub_80AAC5C}, + {sub_80AA930, sub_80AA974}, + {sub_80AA9B8, sub_80AA9FC}, + {sub_80AAA40, sub_80AAA84}, + {sub_80AAAF0, sub_80AAB30}, + {sub_80AAB70, sub_80AABB0}, + {sub_80AABF0, sub_80AAD44}, + }; + +static const u8 gMatsudaDebugMenu_StartText[] = _("{COLOR CYAN}{HIGHLIGHT RED}"); +static const u8 gMatsudaDebugMenu_StartJapText[] = _("かいし"); // because StartText is only called by StringCopy, this part appears to be unused. +static const u8 gMatsudaDebugMenu_GoBackText[] = _("もどる"); + +#ifdef GERMAN +static const u8 gMatsudaDebugMenu_BattlePointsText[] = _("{COLOR MAGENTA}BP,"); +#else +static const u8 gMatsudaDebugMenu_BattlePointsText[] = _("{COLOR MAGENTA}BP."); +#endif + +static const u8 MatsudaDebugMenuText_Cool[] = _("かっこよさ"); // cool +static const u8 MatsudaDebugMenuText_Cute[] = _("かわいさ"); // cute +static const u8 MatsudaDebugMenuText_Beauty[] = _("うつくしさ"); // beauty +static const u8 MatsudaDebugMenuText_Smart[] = _("かしこさ"); // smart +static const u8 MatsudaDebugMenuText_Tough[] = _("たくましさ"); // tough +static const u8 MatsudaDebugMenuText_Sheen[] = _("けづや"); // sheen + +static const u8 *const gMatsudaDebugMenuTextList1[] = + { + MatsudaDebugMenuText_Cool, + MatsudaDebugMenuText_Cute, + MatsudaDebugMenuText_Beauty, + MatsudaDebugMenuText_Smart, + MatsudaDebugMenuText_Tough, + MatsudaDebugMenuText_Sheen, + }; + +static const u8 MatsudaDebugMenuText_CoolContest[] = _("かっこよさコンテスト"); +static const u8 MatsudaDebugMenuText_BeautyContest[] = _("うつくしさコンテスト"); +static const u8 MatsudaDebugMenuText_CuteContest[] = _("かわいさコンテスト "); +static const u8 MatsudaDebugMenuText_SmartContest[] = _("かしこさコンテスト "); +static const u8 MatsudaDebugMenuText_ToughContest[] = _("たくましさコンテスト"); + +static const u8 *const gMatsudaDebugMenuTextList2[] = + { + MatsudaDebugMenuText_CoolContest, + MatsudaDebugMenuText_BeautyContest, + MatsudaDebugMenuText_CuteContest, + MatsudaDebugMenuText_SmartContest, + MatsudaDebugMenuText_ToughContest, + }; + +static const u8 MatsudaDebugMenuText_Fallarbor[] = _("ハジツゲ/ノーマル"); // Fallarbor / Normal +static const u8 MatsudaDebugMenuText_Verdanturf[] = _("シダケ/スーパー "); // Verdanturf / Super +static const u8 MatsudaDebugMenuText_Slateport[] = _("カイナ/ハイパー "); // Slateport / Hyper +static const u8 MatsudaDebugMenuText_Lilycove[] = _("ミナモ/マスター "); // Lilycove / Master + +static const u8 *const gMatsudaDebugMenuTextList3[] = + { + MatsudaDebugMenuText_Fallarbor, + MatsudaDebugMenuText_Verdanturf, + MatsudaDebugMenuText_Slateport, + MatsudaDebugMenuText_Lilycove, + }; + +static const struct OamData gUnknown_083C9400 = + { + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 1023, + .priority = 0, + .paletteNum = 15, + .affineParam = 0, + }; + static void sub_80AA064(void) { AnimateSprites(); @@ -963,7 +961,7 @@ void sub_80AAF30(void) gUnknown_02038670[i] = 0; gUnknown_02038680[i] = 0; gUnknown_02038678[i] = 0; - memcpy(&gContestMons[i], &gContestMons[3], sizeof(struct ContestPokemon)); + gContestMons[i] = gContestMons[3]; } gUnknown_02038670[3] = 0x12C; diff --git a/src/field/daycare.c b/src/field/daycare.c index 2f0c7281e..da0838d29 100644 --- a/src/field/daycare.c +++ b/src/field/daycare.c @@ -1574,102 +1574,23 @@ void SetDaycareCompatibilityString(void) StringCopy(gStringVar4, sCompatibilityMessages[whichString]); } -#ifdef NONMATCHING bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio) { u8 i; u8 flags[2]; - // This portion is nonmatching - flags[1] = 0; - flags[0] = 0; + flags[0] = flags[1] = 0; for (i = 0; name[i] != EOS; i++) - // End nonmatching portion - { if (name[i] == CHAR_MALE) flags[0]++; if (name[i] == CHAR_FEMALE) flags[1]++; } - if (genderRatio == MON_MALE && flags[0] && !flags[1]) return TRUE; - if (genderRatio == MON_FEMALE && flags[1] && !flags[0]) return TRUE; + if (genderRatio == MON_MALE && flags[0] && !flags[1]) + return TRUE; + if (genderRatio == MON_FEMALE && flags[1] && !flags[0]) + return TRUE; return FALSE; } -#else -__attribute__((naked)) -bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio) -{ - asm_unified("\n" - "\tpush {r4,r5,lr}\n" - "\tsub sp, 0x4\n" - "\tadds r4, r0, 0\n" - "\tlsls r1, 24\n" - "\tlsrs r5, r1, 24\n" - "\tmov r2, sp\n" - "\tmov r1, sp\n" - "\tmovs r0, 0\n" - "\tstrb r0, [r1, 0x1]\n" - "\tstrb r0, [r2]\n" - "\tmovs r3, 0\n" - "\tldrb r0, [r4]\n" - "\tcmp r0, 0xFF\n" - "\tbeq _0804258C\n" - "_08042564:\n" - "\tadds r1, r4, r3\n" - "\tldrb r0, [r1]\n" - "\tcmp r0, 0xB5\n" - "\tbne _08042572\n" - "\tldrb r0, [r2]\n" - "\tadds r0, 0x1\n" - "\tstrb r0, [r2]\n" - "_08042572:\n" - "\tldrb r0, [r1]\n" - "\tcmp r0, 0xB6\n" - "\tbne _0804257E\n" - "\tldrb r0, [r2, 0x1]\n" - "\tadds r0, 0x1\n" - "\tstrb r0, [r2, 0x1]\n" - "_0804257E:\n" - "\tadds r0, r3, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r3, r0, 24\n" - "\tadds r0, r4, r3\n" - "\tldrb r0, [r0]\n" - "\tcmp r0, 0xFF\n" - "\tbne _08042564\n" - "_0804258C:\n" - "\tcmp r5, 0\n" - "\tbne _080425A0\n" - "\tmov r0, sp\n" - "\tldrb r0, [r0]\n" - "\tcmp r0, 0\n" - "\tbeq _080425A0\n" - "\tmov r0, sp\n" - "\tldrb r0, [r0, 0x1]\n" - "\tcmp r0, 0\n" - "\tbeq _080425B4\n" - "_080425A0:\n" - "\tcmp r5, 0xFE\n" - "\tbne _080425B8\n" - "\tmov r0, sp\n" - "\tldrb r0, [r0, 0x1]\n" - "\tcmp r0, 0\n" - "\tbeq _080425B8\n" - "\tmov r0, sp\n" - "\tldrb r0, [r0]\n" - "\tcmp r0, 0\n" - "\tbne _080425B8\n" - "_080425B4:\n" - "\tmovs r0, 0x1\n" - "\tb _080425BA\n" - "_080425B8:\n" - "\tmovs r0, 0\n" - "_080425BA:\n" - "\tadd sp, 0x4\n" - "\tpop {r4,r5}\n" - "\tpop {r1}\n" - "\tbx r1"); -} -#endif static u8 *AppendGenderSymbol(u8 *name, u8 gender) { diff --git a/src/field/item.c b/src/field/item.c index 6ff7a7cbe..78f5ce12d 100644 --- a/src/field/item.c +++ b/src/field/item.c @@ -2,12 +2,14 @@ #include "constants/hold_effects.h" #include "item.h" #include "constants/items.h" +#include "item_menu.h" #include "item_use.h" #include "berry.h" #include "string_util.h" #include "strings.h" extern u8 gUnknown_02038560; +extern struct BagPocket gBagPockets[NUM_BAG_POCKETS]; // These constants are used in gItems enum @@ -151,7 +153,7 @@ bool8 CheckBagHasSpace(u16 itemId, u16 count) // This function matches if gBagPockets is declared non-const, // but it should be fixed anyway. -#ifdef NONMATCHING +//#ifdef NONMATCHING bool8 AddBagItem(u16 itemId, u16 count) { u8 i; @@ -216,158 +218,158 @@ bool8 AddBagItem(u16 itemId, u16 count) memcpy(gBagPockets[pocket].itemSlots, newItems, gBagPockets[pocket].capacity * sizeof(struct ItemSlot)); return TRUE; } -#else -__attribute__((naked)) -bool8 AddBagItem(u16 itemId, u16 count) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6,r7}\n\ - sub sp, 0x100\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ - lsls r1, 16\n\ - lsrs r4, r1, 16\n\ - bl ItemId_GetPocket\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080A9510\n\ - mov r0, r8\n\ - bl ItemId_GetPocket\n\ - subs r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - ldr r1, _080A94F8 @ =gBagPockets\n\ - lsls r0, r6, 3\n\ - adds r5, r0, r1\n\ - ldr r1, [r5]\n\ - ldrb r2, [r5, 0x4]\n\ - lsls r2, 2\n\ - mov r0, sp\n\ - bl memcpy\n\ - ldr r7, _080A94FC @ =0x000003e7\n\ - cmp r6, 0x3\n\ - beq _080A9468\n\ - movs r7, 0x63\n\ -_080A9468:\n\ - movs r1, 0\n\ - ldrb r0, [r5, 0x4]\n\ - cmp r1, r0\n\ - bcs _080A94B2\n\ - subs r0, r6, 0x2\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r12, r0\n\ -_080A9478:\n\ - lsls r0, r1, 2\n\ - mov r2, sp\n\ - adds r3, r2, r0\n\ - ldrh r0, [r3]\n\ - cmp r0, r8\n\ - bne _080A94A6\n\ - ldrh r2, [r3, 0x2]\n\ - adds r0, r2, r4\n\ - cmp r0, r7\n\ - ble _080A9500\n\ - mov r0, r12\n\ - cmp r0, 0x1\n\ - bls _080A9510\n\ - subs r0, r7, r2\n\ - subs r0, r4, r0\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - strh r7, [r3, 0x2]\n\ - ldr r2, _080A94F8 @ =gBagPockets\n\ - mov r9, r2\n\ - lsls r3, r6, 3\n\ - cmp r4, 0\n\ - beq _080A9516\n\ -_080A94A6:\n\ - adds r0, r1, 0x1\n\ - lsls r0, 24\n\ - lsrs r1, r0, 24\n\ - ldrb r0, [r5, 0x4]\n\ - cmp r1, r0\n\ - bcc _080A9478\n\ -_080A94B2:\n\ - ldr r2, _080A94F8 @ =gBagPockets\n\ - mov r9, r2\n\ - lsls r3, r6, 3\n\ - cmp r4, 0\n\ - beq _080A9516\n\ - movs r1, 0\n\ - adds r0, r3, r2\n\ - ldrb r0, [r0, 0x4]\n\ - cmp r1, r0\n\ - bcs _080A94F2\n\ - mov r6, r9\n\ - adds r5, r3, r6\n\ -_080A94CA:\n\ - lsls r0, r1, 2\n\ - mov r6, sp\n\ - adds r2, r6, r0\n\ - ldrh r0, [r2]\n\ - cmp r0, 0\n\ - bne _080A94E6\n\ - mov r0, r8\n\ - strh r0, [r2]\n\ - cmp r4, r7\n\ - bls _080A9514\n\ - subs r0, r4, r7\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - strh r7, [r2, 0x2]\n\ -_080A94E6:\n\ - adds r0, r1, 0x1\n\ - lsls r0, 24\n\ - lsrs r1, r0, 24\n\ - ldrb r2, [r5, 0x4]\n\ - cmp r1, r2\n\ - bcc _080A94CA\n\ -_080A94F2:\n\ - cmp r4, 0\n\ - beq _080A9516\n\ - b _080A9510\n\ - .align 2, 0\n\ -_080A94F8: .4byte gBagPockets\n\ -_080A94FC: .4byte 0x000003e7\n\ -_080A9500:\n\ - strh r0, [r3, 0x2]\n\ - ldr r0, _080A950C @ =gBagPockets\n\ - lsls r1, r6, 3\n\ - adds r1, r0\n\ - b _080A951A\n\ - .align 2, 0\n\ -_080A950C: .4byte gBagPockets\n\ -_080A9510:\n\ - movs r0, 0\n\ - b _080A9528\n\ -_080A9514:\n\ - strh r4, [r2, 0x2]\n\ -_080A9516:\n\ - mov r6, r9\n\ - adds r1, r3, r6\n\ -_080A951A:\n\ - ldr r0, [r1]\n\ - ldrb r2, [r1, 0x4]\n\ - lsls r2, 2\n\ - mov r1, sp\n\ - bl memcpy\n\ - movs r0, 0x1\n\ -_080A9528:\n\ - add sp, 0x100\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided\n"); -} -#endif +//#else +//__attribute__((naked)) +//bool8 AddBagItem(u16 itemId, u16 count) +//{ +// asm(".syntax unified\n\ +// push {r4-r7,lr}\n\ +// mov r7, r9\n\ +// mov r6, r8\n\ +// push {r6,r7}\n\ +// sub sp, 0x100\n\ +// lsls r0, 16\n\ +// lsrs r0, 16\n\ +// mov r8, r0\n\ +// lsls r1, 16\n\ +// lsrs r4, r1, 16\n\ +// bl ItemId_GetPocket\n\ +// lsls r0, 24\n\ +// cmp r0, 0\n\ +// beq _080A9510\n\ +// mov r0, r8\n\ +// bl ItemId_GetPocket\n\ +// subs r0, 0x1\n\ +// lsls r0, 24\n\ +// lsrs r6, r0, 24\n\ +// ldr r1, _080A94F8 @ =gBagPockets\n\ +// lsls r0, r6, 3\n\ +// adds r5, r0, r1\n\ +// ldr r1, [r5]\n\ +// ldrb r2, [r5, 0x4]\n\ +// lsls r2, 2\n\ +// mov r0, sp\n\ +// bl memcpy\n\ +// ldr r7, _080A94FC @ =0x000003e7\n\ +// cmp r6, 0x3\n\ +// beq _080A9468\n\ +// movs r7, 0x63\n\ +//_080A9468:\n\ +// movs r1, 0\n\ +// ldrb r0, [r5, 0x4]\n\ +// cmp r1, r0\n\ +// bcs _080A94B2\n\ +// subs r0, r6, 0x2\n\ +// lsls r0, 24\n\ +// lsrs r0, 24\n\ +// mov r12, r0\n\ +//_080A9478:\n\ +// lsls r0, r1, 2\n\ +// mov r2, sp\n\ +// adds r3, r2, r0\n\ +// ldrh r0, [r3]\n\ +// cmp r0, r8\n\ +// bne _080A94A6\n\ +// ldrh r2, [r3, 0x2]\n\ +// adds r0, r2, r4\n\ +// cmp r0, r7\n\ +// ble _080A9500\n\ +// mov r0, r12\n\ +// cmp r0, 0x1\n\ +// bls _080A9510\n\ +// subs r0, r7, r2\n\ +// subs r0, r4, r0\n\ +// lsls r0, 16\n\ +// lsrs r4, r0, 16\n\ +// strh r7, [r3, 0x2]\n\ +// ldr r2, _080A94F8 @ =gBagPockets\n\ +// mov r9, r2\n\ +// lsls r3, r6, 3\n\ +// cmp r4, 0\n\ +// beq _080A9516\n\ +//_080A94A6:\n\ +// adds r0, r1, 0x1\n\ +// lsls r0, 24\n\ +// lsrs r1, r0, 24\n\ +// ldrb r0, [r5, 0x4]\n\ +// cmp r1, r0\n\ +// bcc _080A9478\n\ +//_080A94B2:\n\ +// ldr r2, _080A94F8 @ =gBagPockets\n\ +// mov r9, r2\n\ +// lsls r3, r6, 3\n\ +// cmp r4, 0\n\ +// beq _080A9516\n\ +// movs r1, 0\n\ +// adds r0, r3, r2\n\ +// ldrb r0, [r0, 0x4]\n\ +// cmp r1, r0\n\ +// bcs _080A94F2\n\ +// mov r6, r9\n\ +// adds r5, r3, r6\n\ +//_080A94CA:\n\ +// lsls r0, r1, 2\n\ +// mov r6, sp\n\ +// adds r2, r6, r0\n\ +// ldrh r0, [r2]\n\ +// cmp r0, 0\n\ +// bne _080A94E6\n\ +// mov r0, r8\n\ +// strh r0, [r2]\n\ +// cmp r4, r7\n\ +// bls _080A9514\n\ +// subs r0, r4, r7\n\ +// lsls r0, 16\n\ +// lsrs r4, r0, 16\n\ +// strh r7, [r2, 0x2]\n\ +//_080A94E6:\n\ +// adds r0, r1, 0x1\n\ +// lsls r0, 24\n\ +// lsrs r1, r0, 24\n\ +// ldrb r2, [r5, 0x4]\n\ +// cmp r1, r2\n\ +// bcc _080A94CA\n\ +//_080A94F2:\n\ +// cmp r4, 0\n\ +// beq _080A9516\n\ +// b _080A9510\n\ +// .align 2, 0\n\ +//_080A94F8: .4byte gBagPockets\n\ +//_080A94FC: .4byte 0x000003e7\n\ +//_080A9500:\n\ +// strh r0, [r3, 0x2]\n\ +// ldr r0, _080A950C @ =gBagPockets\n\ +// lsls r1, r6, 3\n\ +// adds r1, r0\n\ +// b _080A951A\n\ +// .align 2, 0\n\ +//_080A950C: .4byte gBagPockets\n\ +//_080A9510:\n\ +// movs r0, 0\n\ +// b _080A9528\n\ +//_080A9514:\n\ +// strh r4, [r2, 0x2]\n\ +//_080A9516:\n\ +// mov r6, r9\n\ +// adds r1, r3, r6\n\ +//_080A951A:\n\ +// ldr r0, [r1]\n\ +// ldrb r2, [r1, 0x4]\n\ +// lsls r2, 2\n\ +// mov r1, sp\n\ +// bl memcpy\n\ +// movs r0, 0x1\n\ +//_080A9528:\n\ +// add sp, 0x100\n\ +// pop {r3,r4}\n\ +// mov r8, r3\n\ +// mov r9, r4\n\ +// pop {r4-r7}\n\ +// pop {r1}\n\ +// bx r1\n\ +// .syntax divided\n"); +//} +//#endif bool8 RemoveBagItem(u16 itemId, u16 count) { diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 4a580eb41..a60fc1078 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -1,4 +1,5 @@ #include "global.h" +#include "constants/battle_anim.h" #include "constants/species.h" #include "rom_8077ABC.h" #include "battle.h" @@ -30,7 +31,7 @@ #define gCastformElevations gUnknownCastformData_0837F5A8 #define gCastformBackSpriteYCoords gUnknown_0837F5AC #define gTransformPersonalities gTransformedPersonalities -#define gBattleMonSprites gObjectBankIDs +#define gBattleMonSprites gBankSpriteIds struct TransformStatus { @@ -850,7 +851,7 @@ bool8 IsBankSpritePresent(u8 slot) { if (gBanksBySide[slot] == 0xff) return FALSE; - if (GetBankSide(slot)) + if (GetBankSide(slot) != SIDE_PLAYER) { if (GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_HP) != 0) return TRUE; diff --git a/src/roulette.c b/src/roulette.c index 838ce94f8..9197fe6be 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -1,4 +1,5 @@ #include "global.h" +#include "random.h" #include "ewram.h" #include "field_fadetransition.h" #include "constants/game_stat.h" @@ -357,22 +358,20 @@ void sub_8115124(void) REG_BG0CNT = 0x1F08; DmaFill16(3, 0x0, (void *)(VRAM + 0xF9C0), 0x340); eRoulette->var28 = 0x0; - break; case 0x0: + break; } } -#ifdef NONMATCHING void sub_8115238(void) { u8 i; u32 temp; - struct PlttData t; - struct PlttData *unfaded; - struct PlttData *faded; struct StructgUnknown_083F8DF4 *s0; - struct PlttData arr[0x3]; // the third is never used ? - memcpy(&arr, &gUnknown_083F8EC4, 0x6); + u16 arr[0x3]; // the third is never used ? + + memcpy(arr, &gUnknown_083F8EC4, 0x6); + // u16 arr[] = {RGB(24, 4, 10), RGB(10, 19, 6), RGB(24, 4, 10)}; memset(eRoulette, 0x0, 0x17C); eRoulette->var04_0 = (gSpecialVar_0x8004 & 0x1); if (gSpecialVar_0x8004 & 0x80) @@ -380,25 +379,12 @@ void sub_8115238(void) s0 = &gUnknown_083F8DF4[0]; eRoulette->var22 = s0[eRoulette->var04_0].var03; eRoulette->var23 = s0[eRoulette->var04_0].var04; - temp = gUnknown_083F8DF0[eRoulette->var04_0 + eRoulette->var04_7 * 2]; - eRoulette->var19 = temp; + eRoulette->var19 = temp = gUnknown_083F8DF0[eRoulette->var04_0 + eRoulette->var04_7 * 2]; eRoulette->var1A_4 = 0x1; if (temp == 0x1) - { - unfaded = (struct PlttData *)&gPlttBufferUnfaded[0]; - faded = (struct PlttData *)&gPlttBufferFaded[0]; - t = arr[0]; - } + gPlttBufferUnfaded[0] = gPlttBufferUnfaded[0x51] = gPlttBufferFaded[0] = gPlttBufferFaded[0x51] = arr[0]; else - { - unfaded = (struct PlttData *)&gPlttBufferUnfaded[0]; - faded = (struct PlttData *)&gPlttBufferFaded[0]; - t = arr[1]; - } - faded[0x51] = t; - faded[0x0] = faded[0x51]; - unfaded[0x51] = t; - unfaded[0x0] = t; + gPlttBufferUnfaded[0] = gPlttBufferUnfaded[0x51] = gPlttBufferFaded[0] = gPlttBufferFaded[0x51] = arr[1]; sub_8124918((&eRoulette->varB8)); for (i = 0; i < 0xD; i++) sub_812492C((&eRoulette->varB8), i, (struct UnkStruct1 *)&gUnknown_083F8E34[i * 8]); @@ -406,178 +392,16 @@ void sub_8115238(void) { switch (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2)) { - case SPECIES_TAILLOW: - eRoulette->var02 |= 0x2; - break; case SPECIES_SHROOMISH: - eRoulette->var02 |= 0x1; - break; + eRoulette->var02 |= 0x1; + break; + case SPECIES_TAILLOW: + eRoulette->var02 |= 0x2; + break; } } RtcCalcLocalTime(); } -#else -__attribute__((naked)) -void sub_8115238(void) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - sub sp, 0x8\n\ - ldr r1, _081152C0 @ =gUnknown_083F8EC4\n\ - mov r0, sp\n\ - movs r2, 0x6\n\ - bl memcpy\n\ - ldr r5, _081152C4 @ =0x02019000\n\ - movs r2, 0xBE\n\ - lsls r2, 1\n\ - adds r0, r5, 0\n\ - movs r1, 0\n\ - bl memset\n\ - ldr r0, _081152C8 @ =gSpecialVar_0x8004\n\ - ldrh r2, [r0]\n\ - movs r0, 0x1\n\ - ands r0, r2\n\ - ldrb r1, [r5, 0x4]\n\ - movs r3, 0x4\n\ - negs r3, r3\n\ - ands r3, r1\n\ - orrs r3, r0\n\ - strb r3, [r5, 0x4]\n\ - movs r0, 0x80\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - beq _08115276\n\ - movs r0, 0x80\n\ - orrs r3, r0\n\ - strb r3, [r5, 0x4]\n\ - _08115276:\n\ - ldr r3, _081152CC @ =gUnknown_083F8DF4\n\ - ldrb r2, [r5, 0x4]\n\ - lsls r1, r2, 30\n\ - lsrs r0, r1, 25\n\ - adds r0, r3\n\ - ldrb r0, [r0, 0x3]\n\ - adds r4, r5, 0\n\ - adds r4, 0x22\n\ - strb r0, [r4]\n\ - lsrs r0, r1, 25\n\ - adds r0, r3\n\ - ldrb r0, [r0, 0x4]\n\ - adds r3, r5, 0\n\ - adds r3, 0x23\n\ - strb r0, [r3]\n\ - ldr r0, _081152D0 @ =gUnknown_083F8DF0\n\ - lsrs r1, 30\n\ - lsls r2, 24\n\ - lsrs r2, 31\n\ - lsls r2, 1\n\ - adds r1, r2\n\ - adds r1, r0\n\ - ldrb r2, [r1]\n\ - strb r2, [r5, 0x19]\n\ - ldrb r1, [r5, 0x1A]\n\ - movs r0, 0xF\n\ - ands r0, r1\n\ - movs r1, 0x10\n\ - orrs r0, r1\n\ - strb r0, [r5, 0x1A]\n\ - cmp r2, 0x1\n\ - bne _081152DC\n\ - ldr r4, _081152D4 @ =gPlttBufferUnfaded\n\ - ldr r3, _081152D8 @ =gPlttBufferFaded\n\ - mov r0, sp\n\ - ldrh r2, [r0]\n\ - b _081152E4\n\ - .align 2, 0\n\ - _081152C0: .4byte gUnknown_083F8EC4\n\ - _081152C4: .4byte 0x02019000\n\ - _081152C8: .4byte gSpecialVar_0x8004\n\ - _081152CC: .4byte gUnknown_083F8DF4\n\ - _081152D0: .4byte gUnknown_083F8DF0\n\ - _081152D4: .4byte gPlttBufferUnfaded\n\ - _081152D8: .4byte gPlttBufferFaded\n\ - _081152DC:\n\ - ldr r4, _08115348 @ =gPlttBufferUnfaded\n\ - ldr r3, _0811534C @ =gPlttBufferFaded\n\ - mov r0, sp\n\ - ldrh r2, [r0, 0x2]\n\ - _081152E4:\n\ - adds r0, r3, 0\n\ - adds r0, 0xA2\n\ - strh r2, [r0]\n\ - ldr r1, _08115350 @ =0x0000ffff\n\ - adds r0, r1, 0\n\ - ands r0, r2\n\ - strh r0, [r3]\n\ - ands r0, r1\n\ - adds r2, r4, 0\n\ - adds r2, 0xA2\n\ - strh r0, [r2]\n\ - ands r0, r1\n\ - strh r0, [r4]\n\ - ldr r0, _08115354 @ =0x020190b8\n\ - bl sub_8124918\n\ - movs r4, 0\n\ - ldr r5, _08115358 @ =gUnknown_083F8E34\n\ - _08115308:\n\ - lsls r2, r4, 3\n\ - adds r2, r5\n\ - ldr r0, _08115354 @ =0x020190b8\n\ - adds r1, r4, 0\n\ - bl sub_812492C\n\ - adds r0, r4, 0x1\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - cmp r4, 0xC\n\ - bls _08115308\n\ - movs r4, 0\n\ - ldr r5, _0811535C @ =0x02019000\n\ - _08115322:\n\ - movs r0, 0x64\n\ - muls r0, r4\n\ - ldr r1, _08115360 @ =gPlayerParty\n\ - adds r0, r1\n\ - movs r1, 0x41\n\ - bl GetMonData\n\ - adds r1, r0, 0\n\ - movs r0, 0x98\n\ - lsls r0, 1\n\ - cmp r1, r0\n\ - beq _08115364\n\ - adds r0, 0x2\n\ - cmp r1, r0\n\ - bne _0811536C\n\ - ldrb r0, [r5, 0x2]\n\ - movs r1, 0x1\n\ - b _08115368\n\ - .align 2, 0\n\ - _08115348: .4byte gPlttBufferUnfaded\n\ - _0811534C: .4byte gPlttBufferFaded\n\ - _08115350: .4byte 0x0000ffff\n\ - _08115354: .4byte 0x020190b8\n\ - _08115358: .4byte gUnknown_083F8E34\n\ - _0811535C: .4byte 0x02019000\n\ - _08115360: .4byte gPlayerParty\n\ - _08115364:\n\ - ldrb r0, [r5, 0x2]\n\ - movs r1, 0x2\n\ - _08115368:\n\ - orrs r0, r1\n\ - strb r0, [r5, 0x2]\n\ - _0811536C:\n\ - adds r0, r4, 0x1\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - cmp r4, 0x5\n\ - bls _08115322\n\ - bl RtcCalcLocalTime\n\ - add sp, 0x8\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} -#endif #if DEBUG __attribute__((naked)) @@ -1212,6 +1036,7 @@ u8 sub_8115A94(s16 *r0, u8 r1) s8 arr[0x4]; s8 t; memcpy(&arr, gUnknown_083F8ECA, 0x4); + // char arr[] = {-5, 5, -1, 1}; t = (u8)*r0; switch (r1) { @@ -1256,9 +1081,9 @@ void sub_8115B58(u8 r0) gTasks[r0].data[0x1] = z; PlaySE(SE_SELECT); sub_8124D3C((&eRoulette->varB8), 0xFFFF); - (&eRoulette->varB8)->var04[0xF].var00_7 = 0x0; - (&eRoulette->varB8)->var04[0xE].var00_7 = 0x0; - (&eRoulette->varB8)->var04[0xD].var00_7 = 0x0; + eRoulette->varB8.var04[0xF].var00_7 = 0x0; + eRoulette->varB8.var04[0xE].var00_7 = 0x0; + eRoulette->varB8.var04[0xD].var00_7 = 0x0; sub_8116EF8(gTasks[r0].data[0x4]); for (i = 0; i < 0x4; i++) { @@ -1454,24 +1279,23 @@ u8 sub_8115F58(u16 r0, u16 r1) } } -#ifdef NONMATCHING void sub_8116100(u8 taskid) { u8 randf; s8 randfinal; s8 r5; - u16 g; + u16 g = 0; u16 rand; u16 randmod; u16 angles[0x4]; // angles in 90 degree steps - u8 zero = 0x0; memcpy(angles, &gUnknown_083F8ECE, 0x8); + // u16 angles[] = {0, 180, 90, 270}; rand = Random(); randmod = rand % 0x64; eRoulette->var7C = gTasks[taskid].data[0x6]; - eRoulette->var7F = zero; - eRoulette->var7E = zero; - eRoulette->var7D = zero; + eRoulette->var7F = g; + eRoulette->var7E = g; + eRoulette->var7D = g; randf = sub_8115F58(gTasks[taskid].data[0x8], rand); randfinal = (rand % randf) - (randf / 2); if (gLocalTime.hours < 0xD) @@ -1482,263 +1306,22 @@ void sub_8116100(u8 taskid) r5 *= 2; else r5 = (1 - r5) * 2; - g = (&gUnknown_083F8DF4[eRoulette->var04_0])->var1A; - eRoulette->var80 = (g + randfinal); + eRoulette->var80 = g = gUnknown_083F8DF4[eRoulette->var04_0].var1A + randfinal; // - g = ((float)(u16)(g + randfinal)) / 5.0f; + g = S16TOPOSFLOAT(g) / 5.0f; eRoulette->var82 = g * 3; eRoulette->var84 = g; eRoulette->var86 = g; // - eRoulette->var88 = (float)(angles[(rand & 0x1) + r5]); - eRoulette->var8C = (float)((&gUnknown_083F8DF4[eRoulette->var04_0])->var18); - eRoulette->var90 = ((eRoulette->var8C * 0.5f) - eRoulette->var8C) / (float)(u16)(g * 3); + eRoulette->var88 = S16TOPOSFLOAT(angles[(rand & 0x1) + r5]); + eRoulette->var8C = S16TOPOSFLOAT(gUnknown_083F8DF4[eRoulette->var04_0].var18); + eRoulette->var90 = ((eRoulette->var8C * 0.5f) - eRoulette->var8C) / S16TOPOSFLOAT(g * 3); eRoulette->var94 = 68.0f; eRoulette->var9C = 0.0f; - eRoulette->var98 = -(8.0f / (float)(u16)(g * 3)); + eRoulette->var98 = -(8.0f / S16TOPOSFLOAT(g * 3)); eRoulette->varA0 = 36.0f; - gTasks[taskid].func = &sub_8116308; + gTasks[taskid].func = sub_8116308; } -#else -__attribute__((naked)) -void sub_8116100(u8 taskid) -{ -asm(".syntax unified\n\ -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 r9, r0\n\ -movs r4, 0\n\ -ldr r1, _08116188 @ =gUnknown_083F8ECE\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, _0811618C @ =0x02019000\n\ -ldr r1, _08116190 @ =gTasks\n\ -mov r2, r9\n\ -lsls r0, r2, 2\n\ -add r0, r9\n\ -lsls r0, 3\n\ -adds r0, r1\n\ -ldrh r2, [r0, 0x14]\n\ -adds r1, r3, 0\n\ -adds r1, 0x7C\n\ -strb r2, [r1]\n\ -adds r1, 0x3\n\ -strb r4, [r1]\n\ -subs r1, 0x1\n\ -strb r4, [r1]\n\ -subs r1, 0x1\n\ -strb r4, [r1]\n\ -ldrh r0, [r0, 0x18]\n\ -adds r1, r7, 0\n\ -bl sub_8115F58\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, _08116194 @ =gLocalTime\n\ -ldrb r0, [r0, 0x2]\n\ -lsls r0, 24\n\ -asrs r0, 24\n\ -movs r5, 0x1\n\ -cmp r0, 0xC\n\ -bgt _08116180\n\ -movs r5, 0\n\ -_08116180:\n\ -cmp r6, 0x4F\n\ -bhi _08116198\n\ -lsls r0, r5, 25\n\ -b _081161A2\n\ -.align 2, 0\n\ -_08116188: .4byte gUnknown_083F8ECE\n\ -_0811618C: .4byte 0x02019000\n\ -_08116190: .4byte gTasks\n\ -_08116194: .4byte gLocalTime\n\ -_08116198:\n\ -lsls r1, r5, 24\n\ -asrs r1, 24\n\ -movs r0, 0x1\n\ -subs r0, r1\n\ -lsls r0, 25\n\ -_081161A2:\n\ -lsrs r5, r0, 24\n\ -ldr r6, _081162D8 @ =0x02019000\n\ -ldrb r0, [r6, 0x4]\n\ -lsls r0, 30\n\ -mov r10, r0\n\ -lsrs r0, 25\n\ -ldr r1, _081162DC @ =gUnknown_083F8DF4\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 _081161D4\n\ -ldr r1, _081162E0 @ =0x47800000\n\ -bl __addsf3\n\ -_081161D4:\n\ -ldr r1, _081162E4 @ =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\ -mov r8, r0\n\ -adds r0, r6, 0\n\ -adds r0, 0x82\n\ -mov r2, r8\n\ -strh r2, [r0]\n\ -adds r0, 0x2\n\ -strh r4, [r0]\n\ -adds r0, 0x2\n\ -strh r4, [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 _0811621A\n\ -ldr r1, _081162E0 @ =0x47800000\n\ -bl __addsf3\n\ -_0811621A:\n\ -ldr r2, _081162E8 @ =0x02019088\n\ -str r0, [r2]\n\ -adds r7, r6, 0\n\ -adds r7, 0x8C\n\ -mov r1, r10\n\ -lsrs r0, r1, 25\n\ -ldr r2, _081162DC @ =gUnknown_083F8DF4\n\ -adds r0, r2\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 _08116242\n\ -ldr r1, _081162E0 @ =0x47800000\n\ -bl __addsf3\n\ -adds r5, r0, 0\n\ -_08116242:\n\ -str r5, [r7]\n\ -adds r7, r6, 0\n\ -adds r7, 0x90\n\ -ldr r1, _081162EC @ =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\ -lsls r0, r2, 16\n\ -asrs r4, r0, 16\n\ -adds r0, r4, 0\n\ -bl __floatsisf\n\ -adds r2, r0, 0\n\ -cmp r4, 0\n\ -bge _08116272\n\ -ldr r1, _081162E0 @ =0x47800000\n\ -bl __addsf3\n\ -adds r2, r0, 0\n\ -_08116272:\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, _081162F0 @ =0x42880000\n\ -str r0, [r1]\n\ -adds r1, 0x8\n\ -ldr r0, _081162F4 @ =0x00000000\n\ -str r0, [r1]\n\ -adds r5, r6, 0\n\ -adds r5, 0x98\n\ -adds r0, r4, 0\n\ -bl __floatsisf\n\ -adds r2, r0, 0\n\ -cmp r4, 0\n\ -bge _081162A2\n\ -ldr r1, _081162E0 @ =0x47800000\n\ -bl __addsf3\n\ -adds r2, r0, 0\n\ -_081162A2:\n\ -ldr r0, _081162F8 @ =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, _081162FC @ =0x42100000\n\ -str r0, [r1]\n\ -ldr r1, _08116300 @ =gTasks\n\ -mov r2, r9\n\ -lsls r0, r2, 2\n\ -add r0, r9\n\ -lsls r0, 3\n\ -adds r0, r1\n\ -ldr r1, _08116304 @ =sub_8116308\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\ -_081162D8: .4byte 0x02019000\n\ -_081162DC: .4byte gUnknown_083F8DF4\n\ -_081162E0: .4byte 0x47800000\n\ -_081162E4: .4byte 0x40a00000\n\ -_081162E8: .4byte 0x02019088\n\ -_081162EC: .4byte 0x3f000000\n\ -_081162F0: .4byte 0x42880000\n\ -_081162F4: .4byte 0x00000000\n\ -_081162F8: .4byte 0x41000000\n\ -_081162FC: .4byte 0x42100000\n\ -_08116300: .4byte gTasks\n\ -_08116304: .4byte sub_8116308\n\ -.syntax divided\n"); -} -#endif void sub_8116308(u8 taskid) { @@ -1746,7 +1329,7 @@ void sub_8116308(u8 taskid) eRoulette->var03_7 = 1; index = eRoulette->var3C[eRoulette->var7C]; eRoulette->var38 = &gSprites[index]; - (&gSprites[index])->callback = &sub_81191F4; + eRoulette->var38->callback = sub_81191F4; gTasks[taskid].data[0x6]++; gTasks[taskid].data[0x8]++; sub_81182F8(0x6 - gTasks[taskid].data[0x6]); @@ -1932,9 +1515,9 @@ void sub_811677C(u8 taskid) void sub_81167F4(u8 taskid) { sub_8124D3C((&eRoulette->varB8), 0xFFFF); - (&eRoulette->varB8)->var04[0xF].var00_7 = 0x0; - (&eRoulette->varB8)->var04[0xE].var00_7 = 0x0; - (&eRoulette->varB8)->var04[0xD].var00_7 = 0x0; + eRoulette->varB8.var04[0xF].var00_7 = 0x0; + eRoulette->varB8.var04[0xE].var00_7 = 0x0; + eRoulette->varB8.var04[0xD].var00_7 = 0x0; gSprites[eRoulette->var3C[0x7 + gUnknown_083F8C00[gTasks[taskid].data[0xC]].var00]].invisible = TRUE; gTasks[taskid].func = &sub_8116880; } @@ -2161,6 +1744,8 @@ u8 sub_8116D54(u8 taskid, u8 r1) u32 t1[0x3]; memcpy(t0, gUnknown_083F8ED8, 0x10); memcpy(t1, gUnknown_083F8EE8, 0xC); + // u32 t0[] = {67650, 135300, 270600, 541200}; + // u32 t1[] = {0x3e0, 0x7c00, 0xf8000}; if (r1 > 0xB) { return 0x0; @@ -2218,15 +1803,12 @@ u8 sub_8116E5C(u8 r0, u8 r1) return 0x0; } -#ifdef NONMATCHING // stack variable switched with a register variable void sub_8116EF8(u8 r0) { - u32 var0 = 0x0; - struct UnkStruct1 var1[0x3]; - u32 var2; + u16 var0 = 0x0; + u8 var2; u16 var3; - u32 var4; u8 i; switch(r0) { @@ -2236,386 +1818,77 @@ void sub_8116EF8(u8 r0) for (i = (r0 + 0x1); i < (r0 + 0x5); i++) if (!(eRoulette->var08 & gUnknown_083F8C00[i].var08)) var0 |= gUnknown_083F8C00[i].var10; - var0 &= 0xDFFF; - sub_8124CE8(&eRoulette->varB8, var0); + sub_8124CE8(&eRoulette->varB8, var0 &= 0xDFFF); break; default: - memcpy(var1, gUnknown_083F8E9C, 0x18); - if ((u8)(r0 - 0x1) < 0x4) - var2 = 0x3; + { + struct UnkStruct1 var1[0x3]; + memcpy(var1, gUnknown_083F8E9C, sizeof var1); + if (r0 > 0 && r0 < 5) + var2 = 3; else - var2 = 0x1; - var3 = ((r0 / 0x5) - 0x1); - switch((u8)r0 % 0x5) + var2 = 1; + var3 = r0 / 5 - 1; + switch (r0 % 5) { - case 0x1: - var3 = gSprites[eRoulette->var3C[0x7 + 0x0]].oam.paletteNum * 0x10; - break; - case 0x2: - var3 = gSprites[eRoulette->var3C[0x7 + 0x1]].oam.paletteNum * 0x10; - break; - case 0x3: - var3 = gSprites[eRoulette->var3C[0x7 + 0x2]].oam.paletteNum * 0x10; - break; - case 0x4: - var3 = gSprites[eRoulette->var3C[0x7 + 0x3]].oam.paletteNum * 0x10; - break; + case 0x1: + var3 = gSprites[eRoulette->var3C[7 + 0]].oam.paletteNum * 0x10; + break; + case 0x2: + var3 = gSprites[eRoulette->var3C[7 + 1]].oam.paletteNum * 0x10; + break; + case 0x3: + var3 = gSprites[eRoulette->var3C[7 + 2]].oam.paletteNum * 0x10; + break; + case 0x4: + var3 = gSprites[eRoulette->var3C[7 + 3]].oam.paletteNum * 0x10; + break; } - if (var2 == 0x1) + if (var2 == 1) { if (!(eRoulette->var08 & gUnknown_083F8C00[r0].var08)) { - var4 = (r0 / 0x5); - var1[var4 - 0x1].var02 += var3; - sub_812492C(&eRoulette->varB8, 0xD, &var1[var4 - 0x2]); - sub_8124CE8(&eRoulette->varB8, var0 |= gUnknown_083F8C00[r0].var10); + var1[r0 / 5 - 1].var02 += var3; + sub_812492C(&eRoulette->varB8, 13, &var1[r0 / 5 - 1]); } + else + return; } else { - for (i = 0; i < 0x3; i++) + for (i = 0; i < 3; i++) { - u8 var4 = i * 0x5 + r0 + 0x5; + u8 var4 = i * 5 + r0 + 5; if (!(eRoulette->var08 & gUnknown_083F8C00[var4].var08)) { - u8 var5 = (var4 / 0x5); - var1[var5 - 0x1].var02 += var3; - sub_812492C(&eRoulette->varB8, (u8)(0xD + i), &var1[var5 - 0x2]); - if (var2 == 0x3) + var1[var4 / 5 - 1].var02 += var3; + sub_812492C(&eRoulette->varB8, i + 13, &var1[var4 / 5 - 1]); + if (var2 == 3) var0 = gUnknown_083F8C00[var4].var10; var2--; } } - if (var2 != 0x2) - var0 = 0x0; - sub_8124CE8(&eRoulette->varB8, var0 |= gUnknown_083F8C00[r0].var10); + if (var2 != 2) + var0 = 0; } + sub_8124CE8(&eRoulette->varB8, var0 |= gUnknown_083F8C00[r0].var10); + break; + } } } -#else -__attribute__((naked)) -void sub_8116EF8(u8 r0) -{ -asm(".syntax unified\n\ -push {r4-r7,lr}\n\ -mov r7, r10\n\ -mov r6, r9\n\ -mov r5, r8\n\ -push {r5-r7}\n\ -sub sp, 0x20\n\ -lsls r0, 24\n\ -lsrs r6, r0, 24\n\ -movs r0, 0\n\ -str r0, [sp, 0x18]\n\ -cmp r6, 0xA\n\ -beq _08116F1E\n\ -cmp r6, 0xA\n\ -bgt _08116F1A\n\ -cmp r6, 0x5\n\ -beq _08116F1E\n\ -b _08116F7C\n\ -_08116F1A:\n\ -cmp r6, 0xF\n\ -bne _08116F7C\n\ -_08116F1E:\n\ -adds r0, r6, 0x1\n\ -lsls r0, 24\n\ -lsrs r4, r0, 24\n\ -adds r0, r6, 0x5\n\ -ldr r7, _08116F70 @ =0x020190b8\n\ -cmp r4, r0\n\ -bge _08116F5E\n\ -adds r1, r7, 0\n\ -subs r1, 0xB8\n\ -ldr r3, _08116F74 @ =gUnknown_083F8C00\n\ -ldr r5, [r1, 0x8]\n\ -adds r6, r3, 0\n\ -adds r6, 0x8\n\ -adds r2, r0, 0\n\ -_08116F3A:\n\ -lsls r0, r4, 2\n\ -adds r0, r4\n\ -lsls r1, r0, 2\n\ -adds r0, r1, r6\n\ -ldr r0, [r0]\n\ -ands r0, r5\n\ -cmp r0, 0\n\ -bne _08116F54\n\ -adds r0, r1, r3\n\ -ldrh r0, [r0, 0x10]\n\ -ldr r1, [sp, 0x18]\n\ -orrs r1, r0\n\ -str r1, [sp, 0x18]\n\ -_08116F54:\n\ -adds r0, r4, 0x1\n\ -lsls r0, 24\n\ -lsrs r4, r0, 24\n\ -cmp r4, r2\n\ -blt _08116F3A\n\ -_08116F5E:\n\ -ldr r0, _08116F78 @ =0x0000dfff\n\ -ldr r2, [sp, 0x18]\n\ -ands r2, r0\n\ -str r2, [sp, 0x18]\n\ -adds r0, r7, 0\n\ -adds r1, r2, 0\n\ -bl sub_8124CE8\n\ -b _0811713C\n\ -.align 2, 0\n\ -_08116F70: .4byte 0x020190b8\n\ -_08116F74: .4byte gUnknown_083F8C00\n\ -_08116F78: .4byte 0x0000dfff\n\ -_08116F7C:\n\ -mov r0, sp\n\ -ldr r1, _08116FC8 @ =gUnknown_083F8E9C\n\ -ldm r1!, {r2-r4}\n\ -stm r0!, {r2-r4}\n\ -ldm r1!, {r2-r4}\n\ -stm r0!, {r2-r4}\n\ -subs r0, r6, 0x1\n\ -lsls r0, 24\n\ -lsrs r0, 24\n\ -movs r3, 0x1\n\ -mov r10, r3\n\ -cmp r0, 0x3\n\ -bhi _08116F9A\n\ -movs r4, 0x3\n\ -mov r10, r4\n\ -_08116F9A:\n\ -adds r0, r6, 0\n\ -movs r1, 0x5\n\ -bl __udivsi3\n\ -lsls r0, 24\n\ -lsrs r0, 8\n\ -ldr r1, _08116FCC @ =0xffff0000\n\ -adds r0, r1\n\ -lsrs r7, r0, 16\n\ -adds r0, r6, 0\n\ -movs r1, 0x5\n\ -bl __umodsi3\n\ -lsls r0, 24\n\ -lsrs r0, 24\n\ -cmp r0, 0x2\n\ -beq _08116FF8\n\ -cmp r0, 0x2\n\ -bgt _08116FD4\n\ -cmp r0, 0x1\n\ -beq _08116FE4\n\ -ldr r4, _08116FD0 @ =0x02019000\n\ -b _0811703A\n\ -.align 2, 0\n\ -_08116FC8: .4byte gUnknown_083F8E9C\n\ -_08116FCC: .4byte 0xffff0000\n\ -_08116FD0: .4byte 0x02019000\n\ -_08116FD4:\n\ -cmp r0, 0x3\n\ -beq _0811700C\n\ -cmp r0, 0x4\n\ -beq _08117020\n\ -ldr r4, _08116FE0 @ =0x02019000\n\ -b _0811703A\n\ -.align 2, 0\n\ -_08116FE0: .4byte 0x02019000\n\ -_08116FE4:\n\ -ldr r3, _08116FF0 @ =gSprites\n\ -ldr r2, _08116FF4 @ =0x02019000\n\ -adds r0, r2, 0\n\ -adds r0, 0x43\n\ -b _08117028\n\ -.align 2, 0\n\ -_08116FF0: .4byte gSprites\n\ -_08116FF4: .4byte 0x02019000\n\ -_08116FF8:\n\ -ldr r3, _08117004 @ =gSprites\n\ -ldr r2, _08117008 @ =0x02019000\n\ -adds r0, r2, 0\n\ -adds r0, 0x44\n\ -b _08117028\n\ -.align 2, 0\n\ -_08117004: .4byte gSprites\n\ -_08117008: .4byte 0x02019000\n\ -_0811700C:\n\ -ldr r3, _08117018 @ =gSprites\n\ -ldr r2, _0811701C @ =0x02019000\n\ -adds r0, r2, 0\n\ -adds r0, 0x45\n\ -b _08117028\n\ -.align 2, 0\n\ -_08117018: .4byte gSprites\n\ -_0811701C: .4byte 0x02019000\n\ -_08117020:\n\ -ldr r3, _08117088 @ =gSprites\n\ -ldr r2, _0811708C @ =0x02019000\n\ -adds r0, r2, 0\n\ -adds r0, 0x46\n\ -_08117028:\n\ -ldrb r1, [r0]\n\ -lsls r0, r1, 4\n\ -adds r0, r1\n\ -lsls r0, 2\n\ -adds r0, r3\n\ -ldrb r0, [r0, 0x5]\n\ -lsrs r0, 4\n\ -lsls r7, r0, 4\n\ -adds r4, r2, 0\n\ -_0811703A:\n\ -mov r2, r10\n\ -cmp r2, 0x1\n\ -bne _08117094\n\ -ldr r1, _08117090 @ =gUnknown_083F8C00\n\ -lsls r2, r6, 2\n\ -adds r0, r2, r6\n\ -lsls r0, 2\n\ -adds r1, 0x8\n\ -adds r0, r1\n\ -ldr r1, [r4, 0x8]\n\ -ldr r0, [r0]\n\ -ands r1, r0\n\ -str r2, [sp, 0x1C]\n\ -cmp r1, 0\n\ -bne _0811713C\n\ -adds r0, r6, 0\n\ -movs r1, 0x5\n\ -bl __udivsi3\n\ -lsls r0, 24\n\ -lsrs r0, 24\n\ -subs r1, r0, 0x1\n\ -lsls r1, 3\n\ -mov r3, sp\n\ -adds r2, r3, r1\n\ -ldrh r1, [r2, 0x2]\n\ -adds r1, r7, r1\n\ -strh r1, [r2, 0x2]\n\ -adds r1, r4, 0\n\ -adds r1, 0xB8\n\ -lsls r0, 3\n\ -subs r0, 0x8\n\ -adds r2, r3, r0\n\ -adds r0, r1, 0\n\ -movs r1, 0xD\n\ -bl sub_812492C\n\ -b _08117122\n\ -.align 2, 0\n\ -_08117088: .4byte gSprites\n\ -_0811708C: .4byte 0x02019000\n\ -_08117090: .4byte gUnknown_083F8C00\n\ -_08117094:\n\ -movs r4, 0\n\ -lsls r0, r6, 2\n\ -str r0, [sp, 0x1C]\n\ -ldr r1, _0811714C @ =0x02019000\n\ -mov r8, r1\n\ -ldr r2, _08117150 @ =gUnknown_083F8C00\n\ -mov r9, r2\n\ -_081170A2:\n\ -lsls r0, r4, 2\n\ -adds r0, r4\n\ -adds r0, r6, r0\n\ -adds r0, 0x5\n\ -lsls r0, 24\n\ -lsrs r2, r0, 24\n\ -lsls r0, r2, 2\n\ -adds r0, r2\n\ -lsls r5, r0, 2\n\ -mov r0, r9\n\ -adds r0, 0x8\n\ -adds r0, r5, r0\n\ -mov r3, r8\n\ -ldr r1, [r3, 0x8]\n\ -ldr r0, [r0]\n\ -ands r1, r0\n\ -cmp r1, 0\n\ -bne _0811710E\n\ -adds r0, r2, 0\n\ -movs r1, 0x5\n\ -bl __udivsi3\n\ -lsls r0, 24\n\ -lsrs r0, 24\n\ -subs r1, r0, 0x1\n\ -lsls r1, 3\n\ -mov r3, sp\n\ -adds r2, r3, r1\n\ -ldrh r1, [r2, 0x2]\n\ -adds r1, r7, r1\n\ -strh r1, [r2, 0x2]\n\ -adds r1, r4, 0\n\ -adds r1, 0xD\n\ -lsls r1, 24\n\ -lsrs r1, 24\n\ -lsls r0, 3\n\ -subs r0, 0x8\n\ -adds r2, r3, r0\n\ -mov r0, r8\n\ -adds r0, 0xB8\n\ -bl sub_812492C\n\ -mov r0, r10\n\ -cmp r0, 0x3\n\ -bne _08117104\n\ -mov r1, r9\n\ -adds r0, r5, r1\n\ -ldrh r0, [r0, 0x10]\n\ -str r0, [sp, 0x18]\n\ -_08117104:\n\ -mov r0, r10\n\ -subs r0, 0x1\n\ -lsls r0, 24\n\ -lsrs r0, 24\n\ -mov r10, r0\n\ -_0811710E:\n\ -adds r0, r4, 0x1\n\ -lsls r0, 24\n\ -lsrs r4, r0, 24\n\ -cmp r4, 0x2\n\ -bls _081170A2\n\ -mov r2, r10\n\ -cmp r2, 0x2\n\ -beq _08117122\n\ -movs r3, 0\n\ -str r3, [sp, 0x18]\n\ -_08117122:\n\ -ldr r0, _08117154 @ =0x020190b8\n\ -ldr r2, _08117150 @ =gUnknown_083F8C00\n\ -ldr r4, [sp, 0x1C]\n\ -adds r1, r4, r6\n\ -lsls r1, 2\n\ -adds r1, r2\n\ -ldrh r1, [r1, 0x10]\n\ -ldr r2, [sp, 0x18]\n\ -orrs r2, r1\n\ -str r2, [sp, 0x18]\n\ -adds r1, r2, 0\n\ -bl sub_8124CE8\n\ -_0811713C:\n\ -add sp, 0x20\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\ -_0811714C: .4byte 0x02019000\n\ -_08117150: .4byte gUnknown_083F8C00\n\ -_08117154: .4byte 0x020190b8\n\ -.syntax divided\n"); -} -#endif - -#ifdef NONMATCHING //not enough stack usage void sub_8117158(u8 r0) { - u8 i; - u8 l; + vu8 i; + vu8 z; + vu16 var1; + vu16 var2; + vu8 var0; u8 v[0x5]; - u8 z; - u8 var0; - u8 var1; - u16 var2; + u8 l; eRoulette->var2A = 0x1; sub_8117AA8(0x0, 0x0); - sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18800, 0xE, 0x7, 0x10, 0xD); + sub_8124E2C(gBGTilemapBuffers[1], (u16 *)ewram18800, 0xE, 0x7, 0x10, 0xD); switch(r0) { case 0x0: @@ -2638,421 +1911,44 @@ void sub_8117158(u8 r0) } for (i = 0x0; i < l; i++) { - //_0811727C var0 = gUnknown_083F8C00[v[i]].var06; var1 = gUnknown_083F8C00[v[i]].var03; for (z = 0; z < 0x3; z++) { var2 = (gUnknown_083F8C00[v[i]].var04 + z) * 0x20; - gBGTilemapBuffers[2][var2 + var1 + 0x0] = ewram189a0[(var0 + z) * 0x3 + 0x0]; - gBGTilemapBuffers[2][var2 + var1 + 0x1] = ewram189a0[(var0 + z) * 0x3 + 0x1]; - gBGTilemapBuffers[2][var2 + var1 + 0x2] = ewram189a0[(var0 + z) * 0x3 + 0x2]; + gBGTilemapBuffers[1][var1 + var2 + 0x0] = ewram189a0[(var0 + z) * 0x3 + 0x0]; + gBGTilemapBuffers[1][var1 + var2 + 0x1] = ewram189a0[(var0 + z) * 0x3 + 0x1]; + gBGTilemapBuffers[1][var1 + var2 + 0x2] = ewram189a0[(var0 + z) * 0x3 + 0x2]; } - //_08117350 } } -#else -__attribute__((naked)) -void sub_8117158(u8 r0) -{ -asm(".syntax unified\n\ -push {r4-r7,lr}\n\ -mov r7, r10\n\ -mov r6, r9\n\ -mov r5, r8\n\ -push {r5-r7}\n\ -sub sp, 0x24\n\ -lsls r0, 24\n\ -lsrs r5, r0, 24\n\ -ldr r4, _0811719C @ =0x02019000\n\ -movs r0, 0x1\n\ -strh r0, [r4, 0x2A]\n\ -movs r0, 0\n\ -movs r1, 0\n\ -bl sub_8117AA8\n\ -ldr r0, _081171A0 @ =gBGTilemapBuffers + 0x800\n\ -ldr r1, _081171A4 @ =0xfffff800\n\ -adds r4, r1\n\ -movs r1, 0x10\n\ -str r1, [sp]\n\ -movs r1, 0xD\n\ -str r1, [sp, 0x4]\n\ -adds r1, r4, 0\n\ -movs r2, 0xE\n\ -movs r3, 0x7\n\ -bl sub_8124E2C\n\ -cmp r5, 0xF\n\ -bhi _08117250\n\ -lsls r0, r5, 2\n\ -ldr r1, _081171A8 @ =_081171AC\n\ -adds r0, r1\n\ -ldr r0, [r0]\n\ -mov pc, r0\n\ -.align 2, 0\n\ -_0811719C: .4byte 0x02019000\n\ -_081171A0: .4byte gBGTilemapBuffers + 0x800\n\ -_081171A4: .4byte 0xfffff800\n\ -_081171A8: .4byte _081171AC\n\ -.align 2, 0\n\ -_081171AC:\n\ -.4byte _08117360\n\ -.4byte _081171EC\n\ -.4byte _081171EC\n\ -.4byte _081171EC\n\ -.4byte _081171EC\n\ -.4byte _08117220\n\ -.4byte _08117250\n\ -.4byte _08117250\n\ -.4byte _08117250\n\ -.4byte _08117250\n\ -.4byte _08117220\n\ -.4byte _08117250\n\ -.4byte _08117250\n\ -.4byte _08117250\n\ -.4byte _08117250\n\ -.4byte _08117220\n\ -_081171EC:\n\ -movs r0, 0x4\n\ -str r0, [sp, 0x18]\n\ -add r1, sp, 0x8\n\ -movs r0, 0\n\ -strb r0, [r1]\n\ -adds r0, r1, 0\n\ -ldrb r0, [r0]\n\ -cmp r0, 0x3\n\ -bhi _08117258\n\ -add r4, sp, 0x10\n\ -adds r3, r1, 0\n\ -_08117202:\n\ -ldrb r2, [r3]\n\ -adds r2, r4\n\ -ldrb r1, [r3]\n\ -lsls r0, r1, 2\n\ -adds r0, r1\n\ -adds r0, r5, r0\n\ -strb r0, [r2]\n\ -ldrb r0, [r3]\n\ -adds r0, 0x1\n\ -strb r0, [r3]\n\ -ldrb r0, [r3]\n\ -ldr r1, [sp, 0x18]\n\ -cmp r0, r1\n\ -bcc _08117202\n\ -b _08117258\n\ -_08117220:\n\ -movs r0, 0x5\n\ -str r0, [sp, 0x18]\n\ -add r1, sp, 0x8\n\ -movs r0, 0\n\ -strb r0, [r1]\n\ -adds r0, r1, 0\n\ -ldrb r0, [r0]\n\ -cmp r0, 0x4\n\ -bhi _08117258\n\ -add r3, sp, 0x10\n\ -adds r2, r1, 0\n\ -_08117236:\n\ -ldrb r1, [r2]\n\ -adds r1, r3\n\ -ldrb r0, [r2]\n\ -adds r0, r5, r0\n\ -strb r0, [r1]\n\ -ldrb r0, [r2]\n\ -adds r0, 0x1\n\ -strb r0, [r2]\n\ -ldrb r0, [r2]\n\ -ldr r1, [sp, 0x18]\n\ -cmp r0, r1\n\ -bcc _08117236\n\ -b _08117258\n\ -_08117250:\n\ -movs r0, 0x1\n\ -str r0, [sp, 0x18]\n\ -add r0, sp, 0x10\n\ -strb r5, [r0]\n\ -_08117258:\n\ -add r1, sp, 0x8\n\ -movs r0, 0\n\ -strb r0, [r1]\n\ -adds r0, r1, 0\n\ -ldrb r0, [r0]\n\ -ldr r1, [sp, 0x18]\n\ -cmp r0, r1\n\ -bcs _08117360\n\ -mov r0, sp\n\ -adds r0, 0xE\n\ -str r0, [sp, 0x1C]\n\ -add r1, sp, 0x10\n\ -mov r9, r1\n\ -add r0, sp, 0x8\n\ -mov r12, r0\n\ -mov r1, sp\n\ -adds r1, 0xA\n\ -str r1, [sp, 0x20]\n\ -_0811727C:\n\ -mov r1, r12\n\ -ldrb r0, [r1]\n\ -add r0, r9\n\ -ldrb r1, [r0]\n\ -lsls r0, r1, 2\n\ -adds r0, r1\n\ -lsls r0, 2\n\ -ldr r1, _08117370 @ =gUnknown_083F8C00\n\ -adds r0, r1\n\ -ldrb r0, [r0, 0x6]\n\ -ldr r1, [sp, 0x1C]\n\ -strb r0, [r1]\n\ -mov r1, r12\n\ -ldrb r0, [r1]\n\ -add r0, r9\n\ -ldrb r1, [r0]\n\ -lsls r0, r1, 2\n\ -adds r0, r1\n\ -lsls r0, 2\n\ -ldr r1, _08117370 @ =gUnknown_083F8C00\n\ -adds r0, r1\n\ -ldrb r0, [r0, 0x3]\n\ -ldr r1, [sp, 0x20]\n\ -strh r0, [r1]\n\ -mov r4, sp\n\ -adds r4, 0x9\n\ -movs r0, 0\n\ -strb r0, [r4]\n\ -ldrb r0, [r4]\n\ -cmp r0, 0x2\n\ -bhi _08117350\n\ -add r5, sp, 0xC\n\ -ldr r7, [sp, 0x20]\n\ -ldr r0, _08117374 @ =gBGTilemapBuffers + 0x800\n\ -mov r8, r0\n\ -ldr r6, [sp, 0x1C]\n\ -ldr r1, _08117378 @ =0x020189a0\n\ -mov r10, r1\n\ -_081172C8:\n\ -mov r1, r12\n\ -ldrb r0, [r1]\n\ -add r0, r9\n\ -ldrb r0, [r0]\n\ -lsls r1, r0, 2\n\ -adds r1, r0\n\ -lsls r1, 2\n\ -ldr r0, _08117370 @ =gUnknown_083F8C00\n\ -adds r1, r0\n\ -adds r3, r4, 0\n\ -ldrb r0, [r4]\n\ -ldrb r1, [r1, 0x4]\n\ -adds r0, r1\n\ -lsls r0, 5\n\ -strh r0, [r5]\n\ -ldrh r0, [r7]\n\ -ldrh r2, [r5]\n\ -adds r2, r0\n\ -lsls r2, 1\n\ -add r2, r8\n\ -ldrb r0, [r6]\n\ -ldrb r1, [r4]\n\ -adds r1, r0\n\ -lsls r0, r1, 1\n\ -adds r0, r1\n\ -lsls r0, 1\n\ -add r0, r10\n\ -ldrh r0, [r0]\n\ -strh r0, [r2]\n\ -ldrh r0, [r7]\n\ -ldrh r2, [r5]\n\ -adds r2, r0\n\ -adds r2, 0x1\n\ -lsls r2, 1\n\ -add r2, r8\n\ -ldrb r0, [r6]\n\ -ldrb r1, [r4]\n\ -adds r1, r0\n\ -lsls r0, r1, 1\n\ -adds r0, r1\n\ -lsls r0, 1\n\ -mov r1, r10\n\ -adds r1, 0x2\n\ -adds r0, r1\n\ -ldrh r0, [r0]\n\ -strh r0, [r2]\n\ -ldrh r0, [r7]\n\ -ldrh r2, [r5]\n\ -adds r2, r0\n\ -adds r2, 0x2\n\ -lsls r2, 1\n\ -add r2, r8\n\ -ldrb r0, [r6]\n\ -ldrb r1, [r4]\n\ -adds r1, r0\n\ -lsls r0, r1, 1\n\ -adds r0, r1\n\ -lsls r0, 1\n\ -ldr r1, _0811737C @ =0x020189a4\n\ -adds r0, r1\n\ -ldrh r0, [r0]\n\ -strh r0, [r2]\n\ -ldrb r0, [r4]\n\ -adds r0, 0x1\n\ -strb r0, [r4]\n\ -ldrb r0, [r3]\n\ -cmp r0, 0x2\n\ -bls _081172C8\n\ -_08117350:\n\ -mov r1, r12\n\ -ldrb r0, [r1]\n\ -adds r0, 0x1\n\ -strb r0, [r1]\n\ -ldrb r0, [r1]\n\ -ldr r1, [sp, 0x18]\n\ -cmp r0, r1\n\ -bcc _0811727C\n\ -_08117360:\n\ -add sp, 0x24\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\ -_08117370: .4byte gUnknown_083F8C00\n\ -_08117374: .4byte gBGTilemapBuffers + 0x800\n\ -_08117378: .4byte 0x020189a0\n\ -_0811737C: .4byte 0x020189a4\n\ -.syntax divided\n"); -} -#endif -#ifdef NONMATCHING u8 sub_8117380(u8 r0) { - u8 var0[0x5]; - u8 t; - u8 z; - memcpy(var0, gUnknown_083F8EF4, 0x5); - if (r0 > 0x13) - r0 = 0x0; + u8 var0[5]; + memcpy(var0, gUnknown_083F8EF4, 5); + // u8 var0[] = {0, 3, 4, 6, 12}; + if (r0 > 19) + r0 = 0; switch (gUnknown_083F8C00[r0].var01_0) { - case 0x3: - z = r0 / 0x5 - 0x1; - if (eRoulette->var16[z] > 0x3) + case 3: + r0 = r0 / 5 - 1; + if (eRoulette->var16[r0] > 3) return 0x0; - return var0[eRoulette->var16[z] + 0x1]; - case 0x4: - t = r0 - 0x1; - if (eRoulette->var12[t] > 0x2) - return 0x0; - return var0[eRoulette->var12[t] + 0x2]; - case 0xC: + return var0[eRoulette->var16[r0] + 1]; + case 4: + r0--; + if (eRoulette->var12[r0] > 2) + return 0; + return var0[eRoulette->var12[r0] + 2]; + case 12: if (eRoulette->var08 & gUnknown_083F8C00[r0].var08) - return 0x0; - return var0[0x4]; - default: + return 0; + return var0[4]; } - return 0x0; + return 0; } -#else -__attribute__((naked)) -u8 sub_8117380(u8 r0) -{ -asm(".syntax unified\n\ -push {r4,lr}\n\ -sub sp, 0x8\n\ -lsls r0, 24\n\ -lsrs r4, r0, 24\n\ -ldr r1, _081173B8 @ =gUnknown_083F8EF4\n\ -mov r0, sp\n\ -movs r2, 0x5\n\ -bl memcpy\n\ -cmp r4, 0x13\n\ -bls _08117398\n\ -movs r4, 0\n\ -_08117398:\n\ -ldr r3, _081173BC @ =gUnknown_083F8C00\n\ -lsls r0, r4, 2\n\ -adds r0, r4\n\ -lsls r2, r0, 2\n\ -adds r0, r2, r3\n\ -ldrb r0, [r0, 0x1]\n\ -lsls r0, 28\n\ -lsrs r0, 28\n\ -cmp r0, 0x4\n\ -beq _081173EC\n\ -cmp r0, 0x4\n\ -bgt _081173C0\n\ -cmp r0, 0x3\n\ -beq _081173C6\n\ -b _08117428\n\ -.align 2, 0\n\ -_081173B8: .4byte gUnknown_083F8EF4\n\ -_081173BC: .4byte gUnknown_083F8C00\n\ -_081173C0:\n\ -cmp r0, 0xC\n\ -beq _0811740C\n\ -b _08117428\n\ -_081173C6:\n\ -adds r0, r4, 0\n\ -movs r1, 0x5\n\ -bl __udivsi3\n\ -subs r0, 0x1\n\ -lsls r0, 24\n\ -lsrs r4, r0, 24\n\ -ldr r0, _081173E8 @ =0x02019000\n\ -adds r0, 0x16\n\ -adds r1, r4, r0\n\ -ldrb r0, [r1]\n\ -cmp r0, 0x3\n\ -bhi _08117428\n\ -ldrb r0, [r1]\n\ -adds r0, 0x1\n\ -b _08117402\n\ -.align 2, 0\n\ -_081173E8: .4byte 0x02019000\n\ -_081173EC:\n\ -subs r0, r4, 0x1\n\ -lsls r0, 24\n\ -lsrs r4, r0, 24\n\ -ldr r0, _08117408 @ =0x02019000\n\ -adds r0, 0x12\n\ -adds r1, r4, r0\n\ -ldrb r0, [r1]\n\ -cmp r0, 0x2\n\ -bhi _08117428\n\ -ldrb r0, [r1]\n\ -adds r0, 0x2\n\ -_08117402:\n\ -add r0, sp\n\ -ldrb r0, [r0]\n\ -b _0811742A\n\ -.align 2, 0\n\ -_08117408: .4byte 0x02019000\n\ -_0811740C:\n\ -ldr r1, _08117424 @ =0x02019000\n\ -adds r0, r3, 0\n\ -adds r0, 0x8\n\ -adds r0, r2, r0\n\ -ldr r1, [r1, 0x8]\n\ -ldr r0, [r0]\n\ -ands r1, r0\n\ -cmp r1, 0\n\ -bne _08117428\n\ -mov r0, sp\n\ -ldrb r0, [r0, 0x4]\n\ -b _0811742A\n\ -.align 2, 0\n\ -_08117424: .4byte 0x02019000\n\ -_08117428:\n\ -movs r0, 0\n\ -_0811742A:\n\ -add sp, 0x8\n\ -pop {r4}\n\ -pop {r1}\n\ -bx r1\n\ -.syntax divided\n"); -} -#endif void sub_8117434(void) { @@ -3752,111 +2648,25 @@ void sub_8117DF4(void) } } -#ifdef NONMATCHING void sub_8117E98(struct Sprite *sprite) { - struct OamMatrix *m; - u8 p; - u16 angle; - s16 cos, sin, z; - u32 cos32; - angle = eRoulette->var24 + sprite->data[0x0]; - z = angle; - if (z > 359) - angle = z - 360; + s16 cos; + s16 sin; + u32 matrixNum; + s16 angle = eRoulette->var24 + sprite->data[0]; + if (angle >= 360) + angle -= 360; sin = Sin2(angle); cos = Cos2(angle); - sprite->pos2.x = sin * sprite->data[0x1] >> 0xC; - sprite->pos2.y = -cos * sprite->data[0x1] >> 0xC; - p = sprite->oam.matrixNum; - sin = sin / 0x10; - m = &gOamMatrices[p]; - cos32 = cos / 0x10; - - m->d = cos32; - m->a = cos32; - m->b = sin; - m->c = -sin; -} -#else -__attribute__((naked)) -void sub_8117E98(struct Sprite *r0) -{ -asm(".syntax unified\n\ -push {r4-r6,lr}\n\ -adds r6, r0, 0\n\ -ldr r0, _08117F1C @ =0x02019000\n\ -ldrh r1, [r6, 0x2E]\n\ -ldrh r0, [r0, 0x24]\n\ -adds r1, r0\n\ -lsls r1, 16\n\ -lsrs r4, r1, 16\n\ -asrs r1, 16\n\ -ldr r0, _08117F20 @ =0x00000167\n\ -cmp r1, r0\n\ -ble _08117EB8\n\ -ldr r2, _08117F24 @ =0xfffffe98\n\ -adds r0, r1, r2\n\ -lsls r0, 16\n\ -lsrs r4, r0, 16\n\ -_08117EB8:\n\ -adds r0, r4, 0\n\ -bl Sin2\n\ -lsls r0, 16\n\ -lsrs r5, r0, 16\n\ -adds r0, r4, 0\n\ -bl Cos2\n\ -lsls r2, r5, 16\n\ -asrs r2, 16\n\ -movs r3, 0x30\n\ -ldrsh r1, [r6, r3]\n\ -muls r1, r2\n\ -asrs r1, 12\n\ -strh r1, [r6, 0x24]\n\ -lsls r0, 16\n\ -asrs r4, r0, 16\n\ -negs r1, r4\n\ -movs r3, 0x30\n\ -ldrsh r0, [r6, r3]\n\ -muls r0, r1\n\ -asrs r0, 12\n\ -strh r0, [r6, 0x26]\n\ -ldrb r0, [r6, 0x3]\n\ -lsls r0, 26\n\ -lsrs r3, r0, 27\n\ -cmp r2, 0\n\ -bge _08117EF2\n\ -adds r2, 0xF\n\ -_08117EF2:\n\ -lsls r0, r2, 12\n\ -lsrs r5, r0, 16\n\ -ldr r1, _08117F28 @ =gOamMatrices\n\ -lsls r0, r3, 3\n\ -adds r1, r0, r1\n\ -adds r0, r4, 0\n\ -cmp r0, 0\n\ -bge _08117F04\n\ -adds r0, 0xF\n\ -_08117F04:\n\ -asrs r0, 4\n\ -strh r0, [r1, 0x6]\n\ -strh r0, [r1]\n\ -strh r5, [r1, 0x2]\n\ -lsls r0, r5, 16\n\ -asrs r0, 16\n\ -negs r0, r0\n\ -strh r0, [r1, 0x4]\n\ -pop {r4-r6}\n\ -pop {r0}\n\ -bx r0\n\ -.align 2, 0\n\ -_08117F1C: .4byte 0x02019000\n\ -_08117F20: .4byte 0x00000167\n\ -_08117F24: .4byte 0xfffffe98\n\ -_08117F28: .4byte gOamMatrices\n\ -.syntax divided\n"); + sprite->pos2.x = sin * sprite->data[1] >> 0xC; + sprite->pos2.y = -cos * sprite->data[1] >> 0xC; + matrixNum = sprite->oam.matrixNum; + sin /= 16; + gOamMatrices[matrixNum].d = cos /= 16; + gOamMatrices[matrixNum].a = cos; + gOamMatrices[matrixNum].b = sin; + gOamMatrices[matrixNum].c = -sin; } -#endif void sub_8117F2C(void) { @@ -3914,132 +2724,32 @@ void sub_81180F4(u16 r0) } } -#ifdef NONMATCHING u8 sub_81181E8(u8 r0) { - u8 t[0x5]; - memcpy(&t, &gUnknown_083FA608, 0x5); - if (r0 > 0x13) - r0 = 0x0; + u8 t[5]; + memcpy(t, gUnknown_083FA608, sizeof t); + // u8 t = {0, 1, 2, 3, 4}; + if (r0 >= 20) + r0 = 0; switch(gUnknown_083F8C00[r0].var01_0) { case 0x3: - r0 = r0 / 0x5 - 0x1; - if ((u32)eRoulette->var16[r0] < 0x4) - return t[0x1 + eRoulette->var16[r0]]; // couldn't recreate redundant loads + r0 = r0 / 5 - 1; + if (eRoulette->var16[r0] < 4) + return t[((vu8 *)eRoulette->var16)[r0] + 1]; // couldn't recreate redundant loads break; case 0x4: - r0 = r0 - 0x1; - if (eRoulette->var12[r0] < 0x3) - return t[0x2 + eRoulette->var12[r0]]; + r0--; + if (eRoulette->var12[r0] < 3) + return t[((vu8 *)eRoulette->var12)[r0] + 2]; break; case 0xC: if (!(eRoulette->var08 & gUnknown_083F8C00[r0].var08)) - return t[0x4]; + return t[4]; break; } - return 0x0; + return 0; } -#else -__attribute__((naked)) -u8 sub_81181E8(u8 r0) -{ -asm(".syntax unified\n\ -push {r4,lr}\n\ -sub sp, 0x8\n\ -lsls r0, 24\n\ -lsrs r4, r0, 24\n\ -ldr r1, _08118220 @ =gUnknown_083FA608\n\ -mov r0, sp\n\ -movs r2, 0x5\n\ -bl memcpy\n\ -cmp r4, 0x13\n\ -bls _08118200\n\ -movs r4, 0\n\ -_08118200:\n\ -ldr r3, _08118224 @ =gUnknown_083F8C00\n\ -lsls r0, r4, 2\n\ -adds r0, r4\n\ -lsls r2, r0, 2\n\ -adds r0, r2, r3\n\ -ldrb r0, [r0, 0x1]\n\ -lsls r0, 28\n\ -lsrs r0, 28\n\ -cmp r0, 0x4\n\ -beq _08118254\n\ -cmp r0, 0x4\n\ -bgt _08118228\n\ -cmp r0, 0x3\n\ -beq _0811822E\n\ -b _08118290\n\ -.align 2, 0\n\ -_08118220: .4byte gUnknown_083FA608\n\ -_08118224: .4byte gUnknown_083F8C00\n\ -_08118228:\n\ -cmp r0, 0xC\n\ -beq _08118274\n\ -b _08118290\n\ -_0811822E:\n\ -adds r0, r4, 0\n\ -movs r1, 0x5\n\ -bl __udivsi3\n\ -subs r0, 0x1\n\ -lsls r0, 24\n\ -lsrs r4, r0, 24\n\ -ldr r0, _08118250 @ =0x02019000\n\ -adds r0, 0x16\n\ -adds r1, r4, r0\n\ -ldrb r0, [r1]\n\ -cmp r0, 0x3\n\ -bhi _08118290\n\ -ldrb r0, [r1]\n\ -adds r0, 0x1\n\ -b _0811826A\n\ -.align 2, 0\n\ -_08118250: .4byte 0x02019000\n\ -_08118254:\n\ -subs r0, r4, 0x1\n\ -lsls r0, 24\n\ -lsrs r4, r0, 24\n\ -ldr r0, _08118270 @ =0x02019000\n\ -adds r0, 0x12\n\ -adds r1, r4, r0\n\ -ldrb r0, [r1]\n\ -cmp r0, 0x2\n\ -bhi _08118290\n\ -ldrb r0, [r1]\n\ -adds r0, 0x2\n\ -_0811826A:\n\ -add r0, sp\n\ -ldrb r0, [r0]\n\ -b _08118292\n\ -.align 2, 0\n\ -_08118270: .4byte 0x02019000\n\ -_08118274:\n\ -ldr r1, _0811828C @ =0x02019000\n\ -adds r0, r3, 0\n\ -adds r0, 0x8\n\ -adds r0, r2, r0\n\ -ldr r1, [r1, 0x8]\n\ -ldr r0, [r0]\n\ -ands r1, r0\n\ -cmp r1, 0\n\ -bne _08118290\n\ -mov r0, sp\n\ -ldrb r0, [r0, 0x4]\n\ -b _08118292\n\ -.align 2, 0\n\ -_0811828C: .4byte 0x02019000\n\ -_08118290:\n\ -movs r0, 0\n\ -_08118292:\n\ -add sp, 0x8\n\ -pop {r4}\n\ -pop {r1}\n\ -bx r1\n\ -.syntax divided\n"); -} -#endif void sub_811829C(u8 r0) { @@ -4553,7 +3263,6 @@ void debug_sub_812E698() } #endif -#ifdef NONMATCHING void sub_8118DE4(struct Sprite *sprite) { sub_8118724(sprite); @@ -4569,13 +3278,13 @@ void sub_8118DE4(struct Sprite *sprite) sub_811866C(sprite); sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 15; sprite->callback = &sub_8118834; - m4aSongNumStartOrChange(0x47); + m4aSongNumStartOrChange(SE_HASHI); } else { u8 t; u32 z; - m4aSongNumStart(0x38); + m4aSongNumStart(SE_KON); if ((z = (Random() & 0x1))) { u32 o; @@ -4593,21 +3302,21 @@ void sub_8118DE4(struct Sprite *sprite) if (gUnknown_083F8D90[t].var04 & eRoulette->var08) { sprite->data[0x0] = 0x1; - sprite->data[0x2] = (&gUnknown_083F8DF4[eRoulette->var04_0])->var02; + sprite->data[0x2] = gUnknown_083F8DF4[eRoulette->var04_0].var02; } else { sprite->data[0x0] = gUnknown_083F8D90[t].var04 & eRoulette->var08; if (eRoulette->var04_0) { - sprite->data[0x2] = (&gUnknown_083F8DF4[eRoulette->var04_0])->var01; + sprite->data[0x2] = gUnknown_083F8DF4[eRoulette->var04_0].var01; } else { - sprite->data[0x2] = (&gUnknown_083F8DF4[eRoulette->var04_0])->var02; + sprite->data[0x2] = gUnknown_083F8DF4[eRoulette->var04_0].var02; if (z) { - eRoulette->var8C = 1.5f; + eRoulette->var8C = 0.5f; } else { @@ -4616,364 +3325,31 @@ void sub_8118DE4(struct Sprite *sprite) } } eRoulette->var98 = 0.085f; - sprite->callback = &sub_8118D2C; + sprite->callback = sub_8118D2C; sprite->data[0x1] = 0x5; } } -#else -__attribute__((naked)) -void sub_8118DE4(struct Sprite *sprite) -{ -asm(".syntax unified\n\ -push {r4-r7,lr}\n\ -mov r7, r9\n\ -mov r6, r8\n\ -push {r6,r7}\n\ -adds r7, r0, 0\n\ -bl sub_8118724\n\ -movs r0, 0\n\ -strh r0, [r7, 0x32]\n\ -adds r0, r7, 0\n\ -bl sub_81186B8\n\ -ldr r1, _08118E70 @ =gUnknown_083F8D90\n\ -ldr r6, _08118E74 @ =gSharedMem + 0x19000\n\ -movs r0, 0x7E\n\ -adds r0, r6\n\ -mov r8, r0\n\ -ldrb r0, [r0]\n\ -lsls r0, 3\n\ -adds r1, 0x4\n\ -adds r0, r1\n\ -ldr r0, [r0]\n\ -ldr r1, [r6, 0x8]\n\ -ands r0, r1\n\ -cmp r0, 0\n\ -bne _08118E7C\n\ -adds r1, r6, 0\n\ -adds r1, 0x7D\n\ -movs r0, 0xFF\n\ -strb r0, [r1]\n\ -ldrb r1, [r6, 0x3]\n\ -movs r0, 0x7F\n\ -ands r0, r1\n\ -strb r0, [r6, 0x3]\n\ -adds r0, r7, 0\n\ -adds r0, 0x2B\n\ -ldrb r1, [r0]\n\ -adds r1, 0x3\n\ -lsls r1, 24\n\ -lsrs r1, 24\n\ -adds r0, r7, 0\n\ -bl StartSpriteAnim\n\ -adds r0, r7, 0\n\ -bl sub_81186B8\n\ -movs r0, 0x1E\n\ -strh r0, [r7, 0x36]\n\ -adds r0, r7, 0\n\ -bl sub_811866C\n\ -movs r1, 0x3A\n\ -ldrsh r0, [r7, r1]\n\ -movs r1, 0x1E\n\ -bl __divsi3\n\ -lsls r0, 16\n\ -asrs r0, 16\n\ -lsls r1, r0, 4\n\ -subs r1, r0\n\ -lsls r1, 1\n\ -adds r1, 0xF\n\ -strh r1, [r7, 0x3A]\n\ -ldr r0, _08118E78 @ =sub_8118834\n\ -str r0, [r7, 0x1C]\n\ -movs r0, 0x47\n\ -bl m4aSongNumStartOrChange\n\ -b _08118F74\n\ -.align 2, 0\n\ -_08118E70: .4byte gUnknown_083F8D90\n\ -_08118E74: .4byte gSharedMem + 0x19000\n\ -_08118E78: .4byte sub_8118834\n\ -_08118E7C:\n\ -movs r0, 0x38\n\ -bl m4aSongNumStart\n\ -bl Random\n\ -movs r2, 0x1\n\ -mov r9, r2\n\ -mov r1, r9\n\ -ands r1, r0\n\ -mov r9, r1\n\ -cmp r1, 0\n\ -beq _08118EC0\n\ -adds r1, r6, 0\n\ -adds r1, 0x8C\n\ -ldr r0, _08118EB8 @ =0x00000000\n\ -str r0, [r1]\n\ -mov r2, r8\n\ -ldrb r0, [r2]\n\ -adds r0, 0x1\n\ -movs r1, 0xC\n\ -bl __modsi3\n\ -lsls r1, r0, 24\n\ -lsrs r2, r1, 24\n\ -adds r1, r6, 0\n\ -adds r1, 0x7F\n\ -strb r0, [r1]\n\ -ldr r5, _08118EBC @ =gUnknown_083F8DF4\n\ -b _08118EF4\n\ -.align 2, 0\n\ -_08118EB8: .4byte 0x00000000\n\ -_08118EBC: .4byte gUnknown_083F8DF4\n\ -_08118EC0:\n\ -adds r4, r6, 0\n\ -adds r4, 0x8C\n\ -ldr r5, _08118F1C @ =gUnknown_083F8DF4\n\ -ldrb r0, [r6, 0x4]\n\ -lsls r0, 30\n\ -lsrs r0, 25\n\ -adds r1, r5, 0\n\ -adds r1, 0x1C\n\ -adds r0, r1\n\ -ldr r1, [r0]\n\ -adds r0, r1, 0\n\ -bl __addsf3\n\ -str r0, [r4]\n\ -mov r0, r8\n\ -ldrb r4, [r0]\n\ -adds r0, r4, 0\n\ -adds r0, 0xB\n\ -movs r1, 0xC\n\ -bl __modsi3\n\ -lsls r0, 24\n\ -lsrs r2, r0, 24\n\ -adds r0, r6, 0\n\ -adds r0, 0x7F\n\ -strb r4, [r0]\n\ -_08118EF4:\n\ -ldr r0, _08118F20 @ =gUnknown_083F8D90\n\ -lsls r1, r2, 3\n\ -adds r0, 0x4\n\ -adds r1, r0\n\ -ldr r2, _08118F24 @ =gSharedMem + 0x19000\n\ -ldr r1, [r1]\n\ -ldr r0, [r2, 0x8]\n\ -ands r1, r0\n\ -cmp r1, 0\n\ -beq _08118F28\n\ -movs r0, 0x1\n\ -strh r0, [r7, 0x2E]\n\ -ldrb r0, [r2, 0x4]\n\ -lsls r0, 30\n\ -lsrs r0, 25\n\ -adds r0, r5\n\ -ldrb r0, [r0, 0x2]\n\ -strh r0, [r7, 0x32]\n\ -b _08118F64\n\ -.align 2, 0\n\ -_08118F1C: .4byte gUnknown_083F8DF4\n\ -_08118F20: .4byte gUnknown_083F8D90\n\ -_08118F24: .4byte gSharedMem + 0x19000\n\ -_08118F28:\n\ -strh r1, [r7, 0x2E]\n\ -ldrb r1, [r2, 0x4]\n\ -movs r0, 0x3\n\ -ands r0, r1\n\ -cmp r0, 0\n\ -beq _08118F40\n\ -lsls r0, r1, 30\n\ -lsrs r0, 25\n\ -adds r0, r5\n\ -ldrb r0, [r0, 0x1]\n\ -strh r0, [r7, 0x32]\n\ -b _08118F64\n\ -_08118F40:\n\ -lsls r0, r1, 30\n\ -lsrs r0, 25\n\ -adds r0, r5\n\ -ldrb r0, [r0, 0x2]\n\ -strh r0, [r7, 0x32]\n\ -mov r1, r9\n\ -cmp r1, 0\n\ -beq _08118F5C\n\ -adds r1, r2, 0\n\ -adds r1, 0x8C\n\ -ldr r0, _08118F58 @ =0x3f000000\n\ -b _08118F62\n\ -.align 2, 0\n\ -_08118F58: .4byte 0x3f000000\n\ -_08118F5C:\n\ -adds r1, r2, 0\n\ -adds r1, 0x8C\n\ -ldr r0, _08118F80 @ =0xbfc00000\n\ -_08118F62:\n\ -str r0, [r1]\n\ -_08118F64:\n\ -adds r1, r2, 0\n\ -adds r1, 0x98\n\ -ldr r0, _08118F84 @ =0x3dae147b\n\ -str r0, [r1]\n\ -ldr r0, _08118F88 @ =sub_8118D2C\n\ -str r0, [r7, 0x1C]\n\ -movs r0, 0x5\n\ -strh r0, [r7, 0x30]\n\ -_08118F74:\n\ -pop {r3,r4}\n\ -mov r8, r3\n\ -mov r9, r4\n\ -pop {r4-r7}\n\ -pop {r0}\n\ -bx r0\n\ -.align 2, 0\n\ -_08118F80: .4byte 0xbfc00000\n\ -_08118F84: .4byte 0x3dae147b\n\ -_08118F88: .4byte sub_8118D2C\n\ -.syntax divided\n"); -} -#endif -#if DEBUG -__attribute__((naked)) -void sub_8118F8C(struct Sprite *sprite) -{ - asm("\ - push {r4, r5, r6, r7, lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6, r7}\n\ - add r6, r0, #0\n\ - bl sub_8118724\n\ - ldr r5, ._868 @ 0x2019000\n\ - mov r0, #0x8c\n\ - add r0, r0, r5\n\ - mov r8, r0\n\ - ldr r0, [r0]\n\ - ldr r1, ._868 + 4 @ 0x3f000000\n\ - bl __gtsf2\n\ - cmp r0, #0\n\ - bgt ._874 @cond_branch\n\ - add r0, r6, #0\n\ - bl sub_81186B8\n\ - add r0, r6, #0\n\ - bl sub_81186E8\n\ - lsl r0, r0, #0x10\n\ - cmp r0, #0\n\ - bne ._864 @cond_branch\n\ - add r1, r5, #0\n\ - add r1, r1, #0x90\n\ - ldr r0, ._868 + 8 @ 0x0\n\ - str r0, [r1]\n\ - ldr r1, ._868 + 12 @ gUnknown_083F8DF4\n\ - mov r9, r1\n\ - ldrb r0, [r5, #0x4]\n\ - lsl r7, r0, #0x1e\n\ - lsr r0, r7, #0x19\n\ - add r0, r0, r9\n\ - mov r4, #0x3\n\ - ldsb r4, [r0, r4]\n\ - add r0, r4, #0\n\ - bl __floatsisf\n\ - add r5, r0, #0\n\ - cmp r4, #0\n\ - bge ._865 @cond_branch\n\ - ldr r1, ._868 + 16 @ 0x43800000\n\ - bl __addsf3\n\ - add r5, r0, #0\n\ -._865:\n\ - lsr r0, r7, #0x19\n\ - add r0, r0, r9\n\ - ldrb r0, [r0, #0x4]\n\ - add r0, r0, #0x1\n\ - bl __floatsisf\n\ - add r1, r0, #0\n\ - add r0, r5, #0\n\ - bl __divsf3\n\ - add r1, r0, #0\n\ - mov r2, r8\n\ - ldr r0, [r2]\n\ - bl __subsf3\n\ - mov r1, r8\n\ - str r0, [r1]\n\ - mov r0, #0x4\n\ - strh r0, [r6, #0x30]\n\ - ldr r0, ._868 + 20 @ unk_2039560\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._866 @cond_branch\n\ - ldr r0, ._868 + 24 @ debug_sub_812E698\n\ - str r0, [r6, #0x1c]\n\ - b ._874\n\ -._869:\n\ - .align 2, 0\n\ -._868:\n\ - .word 0x2019000\n\ - .word 0x3f000000\n\ - .word 0x0\n\ - .word gUnknown_083F8DF4\n\ - .word 0x43800000\n\ - .word unk_2039560\n\ - .word debug_sub_812E698+1\n\ -._866:\n\ - ldr r0, ._871 @ sub_8118DE4\n\ - str r0, [r6, #0x1c]\n\ - b ._874\n\ -._872:\n\ - .align 2, 0\n\ -._871:\n\ - .word sub_8118DE4+1\n\ -._864:\n\ - add r6, r5, #0\n\ - add r6, r6, #0x90\n\ - ldr r0, [r6]\n\ - ldr r4, ._875 @ 0x0\n\ - add r1, r4, #0\n\ - bl __nesf2\n\ - cmp r0, #0\n\ - beq ._874 @cond_branch\n\ - mov r2, r8\n\ - ldr r0, [r2]\n\ - add r1, r4, #0\n\ - bl __ltsf2\n\ - cmp r0, #0\n\ - bge ._874 @cond_branch\n\ - str r4, [r6]\n\ - mov r0, r8\n\ - str r4, [r0]\n\ - add r4, r5, #0\n\ - add r4, r4, #0x98\n\ - ldr r0, [r4]\n\ - bl __extendsfdf2\n\ - ldr r2, ._875 + 4 @ 0x3ff33333\n\ - ldr r3, ._875 + 8 @ 0x33333333\n\ - bl __divdf3\n\ - bl __truncdfsf2\n\ - str r0, [r4]\n\ -._874:\n\ - pop {r3, r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4, r5, r6, r7}\n\ - pop {r0}\n\ - bx r0\n\ -._876:\n\ - .align 2, 0\n\ -._875:\n\ - .word 0x0\n\ - .word 0x3ff33333\n\ - .word 0x33333333"); -} -#else void sub_8118F8C(struct Sprite *sprite) { sub_8118724(sprite); if (!(eRoulette->var8C > 0.5f)) { sub_81186B8(sprite); - if (sub_81186E8(sprite) == 0x0) + if (!sub_81186E8(sprite)) { struct StructgUnknown_083F8DF4 *p; eRoulette->var90 = 0.0f; p = &gUnknown_083F8DF4[0]; eRoulette->var8C -= ((float)p[eRoulette->var04_0].var03) - / ((float)(s16)((&p[eRoulette->var04_0])->var04 + 0x1)); + / ((float)(s16)(p[eRoulette->var04_0].var04 + 0x1)); sprite->data[0x1] = 0x4; - sprite->callback = &sub_8118DE4; +#if DEBUG + if (unk_2039560[0]) + sprite->callback = debug_sub_812E698; + else +#endif + sprite->callback = sub_8118DE4; } else { @@ -4989,7 +3365,6 @@ void sub_8118F8C(struct Sprite *sprite) } } } -#endif void sub_8119088(struct Sprite *sprite) { @@ -5054,8 +3429,8 @@ void sub_8119224(struct Sprite *sprite) gSprites[eRoulette->var3C[0x37 + i]].data[0x5] = eRoulette->var3C[0x38]; gSprites[eRoulette->var3C[0x37 + i]].data[0x6] = eRoulette->var3C[0x39]; gSprites[eRoulette->var3C[0x37 + i]].data[0x2] = t; - gSprites[eRoulette->var3C[0x37 + i]].data[0x3] = (sprite->data[0x7] * (&gUnknown_083F8DF4[eRoulette->var04_0])->var01) + - ((&gUnknown_083F8DF4[eRoulette->var04_0])->var02 + 0xFFFF); + gSprites[eRoulette->var3C[0x37 + i]].data[0x3] = (sprite->data[0x7] * gUnknown_083F8DF4[eRoulette->var04_0].var01) + + (gUnknown_083F8DF4[eRoulette->var04_0].var02 + 0xFFFF); } gSprites[eRoulette->var3C[0x38]].coordOffsetEnabled = TRUE; eRoulette->var38 = sprite; @@ -5089,57 +3464,58 @@ void sub_81193D4(struct Sprite *sprite) #ifdef NONMATCHING void sub_811952C(struct Sprite *sprite) { + u8 i; u8 z; - register u8 h asm("r10") = 0x0; - u8 j = 0x5; - u32 p = 0x0; u16 o; - u8 i; - u8 s[0xA] = (u8[]){0,0,0,0,0,0,0,0,0,0}; - u16 t = Random(); - eRoulette->var7D = 0x1; + u8 h = 0; // r10 (sp+0xc) + u8 j = 5; // r9 (r9) + u8 p = 0; // sp+0xc (sp+0x10) + u8 s[10] = {}; // sp+0 (sp+0) + u16 t = Random(); // sp+0x10 (r10) + + eRoulette->var7D = 1; eRoulette->var03_5 = TRUE; eRoulette->var03_6 = FALSE; eRoulette->var7E = 0xFF; - eRoulette->var88 = sprite->data[0x3]; + eRoulette->var88 = sprite->data[3]; eRoulette->var98 = 0.0f; - eRoulette->var8C = (&gUnknown_083F8DF4[eRoulette->var04_0])->var1C; //couldn't replicate load, same as sub_8118DE4 + eRoulette->var8C = gUnknown_083F8DF4[eRoulette->var04_0].var1C; o = (eRoulette->var04_0 * 30 + 33) + (0x1 - eRoulette->var03_0) * 15; - for (i = 0x0; i < 0x4; i++) + for (i = 0; i < 4; i++) { - if (o < sprite->data[0x3] && !(sprite->data[0x3] > o + 90)) + if (o < sprite->data[3] && sprite->data[3] <= o + 90) { - sprite->data[0x0] = i * 0x2; - eRoulette->var03_0 = 0x1 & i; + sprite->data[0] = i << 1; + eRoulette->var03_0 = i & 1; break; } - if (i == 0x3) + if (i == 3) { - sprite->data[0x0] = 0x1; - eRoulette->var03_0 = 0x1; + sprite->data[0] = 1; + eRoulette->var03_0 = 1; break; } o += 90; } if (eRoulette->var03_0) { - if (sprite->data[0x0]) + if (sprite->data[0]) { - PlayCry1(0x130, -0x3F); + PlayCry1(SPECIES_TAILLOW, -0x3F); } else { - PlayCry1(0x130, 0x3F); + PlayCry1(SPECIES_TAILLOW, 0x3F); } } else { - PlayCry1(0x132, -0x3F); + PlayCry1(SPECIES_SHROOMISH, -0x3F); } - i = 0x2; - z = (eRoulette->var7F + 0x2) % 0xC; - if (eRoulette->var03_0 == 0x1 && eRoulette->var04_0 == 0x1) - j += 0x6; + i = 2; + z = (eRoulette->var7F + 2) % 12; + if (eRoulette->var03_0 == 1 && eRoulette->var04_0 == 1) + j += 6; else j += i; for (; i < j; i++) @@ -5152,333 +3528,331 @@ void sub_811952C(struct Sprite *sprite) p = i; } } - z = (z + 0x1) % 0xC; + z = (z + 1) % 0xC; } - if ((eRoulette->var03_0 + 0x1) & eRoulette->var02) + if ((eRoulette->var03_0 + 1) & eRoulette->var02) { - if (p && (t & 0xFF) <= 0xBF) + if (p && (t & 0xFF) < 0xc0) { - sprite->data[0x7] = p; + sprite->data[7] = p; } else { - sprite->data[0x7] = s[t % h]; + sprite->data[7] = s[t % h]; } } else { - sprite->data[0x7] = s[t % h]; + sprite->data[7] = s[t % h]; } - sprite->callback = &sub_8118CEC; + sprite->callback = sub_8118CEC; } #else __attribute__((naked)) void sub_811952C(struct Sprite *sprite) { -asm(".syntax unified\n\ -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\ -mov r8, r0\n\ -movs r0, 0\n\ -mov r10, r0\n\ -movs r1, 0x5\n\ -mov r9, r1\n\ -movs r2, 0\n\ -str r2, [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 r7, _08119610 @ =gSharedMem + 0x19000\n\ -adds r0, r7, 0\n\ -adds r0, 0x7D\n\ -movs r6, 0x1\n\ -strb r6, [r0]\n\ -ldrb r4, [r7, 0x3]\n\ -movs r0, 0x20\n\ -orrs r4, r0\n\ -movs r0, 0x41\n\ -negs r0, r0\n\ -ands r4, r0\n\ -strb r4, [r7, 0x3]\n\ -adds r1, r7, 0\n\ -adds r1, 0x7E\n\ -movs r0, 0xFF\n\ -strb r0, [r1]\n\ -adds r5, r7, 0\n\ -adds r5, 0x88\n\ -mov r3, r8\n\ -movs r1, 0x34\n\ -ldrsh r0, [r3, r1]\n\ -bl __floatsisf\n\ -str r0, [r5]\n\ -adds r1, r7, 0\n\ -adds r1, 0x98\n\ -ldr r0, _08119614 @ =0x00000000\n\ -str r0, [r1]\n\ -adds r3, r7, 0\n\ -adds r3, 0x8C\n\ -ldr r2, _08119618 @ =gUnknown_083F8DF4\n\ -ldrb r0, [r7, 0x4]\n\ -lsls r0, 30\n\ -lsrs r1, r0, 25\n\ -adds r2, 0x1C\n\ -adds r1, r2\n\ -ldr r1, [r1]\n\ -str r1, [r3]\n\ -lsrs r0, 30\n\ -lsls r1, r0, 4\n\ -subs r1, r0\n\ -lsls r1, 1\n\ -adds r1, 0x21\n\ -lsls r4, 27\n\ -lsrs r4, 27\n\ -subs r6, r4\n\ -lsls r0, r6, 4\n\ -subs r0, r6\n\ -adds r1, r0\n\ -lsls r1, 16\n\ -lsrs r1, 16\n\ -mov r5, r10\n\ -mov r3, r8\n\ -movs r0, 0x34\n\ -ldrsh r2, [r3, r0]\n\ -_081195C8:\n\ -cmp r1, r2\n\ -bge _081195D4\n\ -adds r0, r1, 0\n\ -adds r0, 0x5A\n\ -cmp r2, r0\n\ -ble _08119638\n\ -_081195D4:\n\ -cmp r5, 0x3\n\ -beq _0811961C\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 _081195C8\n\ -_081195EA:\n\ -ldr r0, _08119610 @ =gSharedMem + 0x19000\n\ -ldrb r1, [r0, 0x3]\n\ -movs r0, 0x1F\n\ -ands r0, r1\n\ -cmp r0, 0\n\ -beq _08119664\n\ -mov r1, r8\n\ -movs r2, 0x2E\n\ -ldrsh r0, [r1, r2]\n\ -cmp r0, 0\n\ -beq _08119658\n\ -movs r0, 0x98\n\ -lsls r0, 1\n\ -movs r1, 0x3F\n\ -negs r1, r1\n\ -bl PlayCry1\n\ -b _08119670\n\ -.align 2, 0\n\ -_08119610: .4byte gSharedMem + 0x19000\n\ -_08119614: .4byte 0x00000000\n\ -_08119618: .4byte gUnknown_083F8DF4\n\ -_0811961C:\n\ -movs r0, 0x1\n\ -mov r3, r8\n\ -strh r0, [r3, 0x2E]\n\ -ldr r2, _08119634 @ =gSharedMem + 0x19000\n\ -ldrb r1, [r2, 0x3]\n\ -subs r0, 0x21\n\ -ands r0, r1\n\ -movs r1, 0x1\n\ -orrs r0, r1\n\ -strb r0, [r2, 0x3]\n\ -b _081195EA\n\ -.align 2, 0\n\ -_08119634: .4byte gSharedMem + 0x19000\n\ -_08119638:\n\ -lsrs r0, r5, 1\n\ -mov r1, r8\n\ -strh r0, [r1, 0x2E]\n\ -ldr r3, _08119654 @ =gSharedMem + 0x19000\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 _081195EA\n\ -.align 2, 0\n\ -_08119654: .4byte gSharedMem + 0x19000\n\ -_08119658:\n\ -movs r0, 0x98\n\ -lsls r0, 1\n\ -movs r1, 0x3F\n\ -bl PlayCry1\n\ -b _08119670\n\ -_08119664:\n\ -movs r0, 0x99\n\ -lsls r0, 1\n\ -movs r1, 0x3F\n\ -negs r1, r1\n\ -bl PlayCry1\n\ -_08119670:\n\ -movs r5, 0x2\n\ -ldr r4, _081196A0 @ =gSharedMem + 0x19000\n\ -adds r0, r4, 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 r3, r0, 24\n\ -ldrb r1, [r4, 0x3]\n\ -movs r0, 0x1F\n\ -ands r0, r1\n\ -cmp r0, 0x1\n\ -bne _081196A4\n\ -ldrb r1, [r4, 0x4]\n\ -movs r0, 0x3\n\ -ands r0, r1\n\ -cmp r0, 0x1\n\ -bne _081196A4\n\ -mov r0, r9\n\ -adds r0, 0x6\n\ -b _081196A8\n\ -.align 2, 0\n\ -_081196A0: .4byte gSharedMem + 0x19000\n\ -_081196A4:\n\ -mov r2, r9\n\ -adds r0, r2, r5\n\ -_081196A8:\n\ -lsls r0, 24\n\ -lsrs r0, 24\n\ -mov r9, r0\n\ -cmp r5, r9\n\ -bcs _0811970E\n\ -ldr r6, _08119734 @ =gSharedMem + 0x19000\n\ -ldr r7, _08119738 @ =gUnknown_083F8C00 + 0xC\n\ -_081196B6:\n\ -lsls r0, r3, 3\n\ -ldr r1, _0811973C @ =gUnknown_083F8D90 + 0x4\n\ -adds r0, r1\n\ -ldr r1, [r6, 0x8]\n\ -ldr r2, [r0]\n\ -ands r1, r2\n\ -cmp r1, 0\n\ -bne _081196F8\n\ -mov r0, r10\n\ -adds r1, r0, 0x1\n\ -lsls r1, 24\n\ -lsrs r1, 24\n\ -mov r10, r1\n\ -add r0, sp\n\ -strb r5, [r0]\n\ -ldr r0, [sp, 0xC]\n\ -cmp r0, 0\n\ -bne _081196F8\n\ -ldrb r0, [r6, 0x1A]\n\ -lsls r0, 28\n\ -lsrs r0, 28\n\ -ldr r1, _08119740 @ =gSharedMem + 0x1901B\n\ -adds r0, r1\n\ -ldrb r1, [r0]\n\ -lsls r0, r1, 2\n\ -adds r0, r1\n\ -lsls r0, 2\n\ -adds r0, r7\n\ -ldr r0, [r0]\n\ -ands r2, r0\n\ -cmp r2, 0\n\ -beq _081196F8\n\ -str r5, [sp, 0xC]\n\ -_081196F8:\n\ -adds r0, r3, 0x1\n\ -movs r1, 0xC\n\ -bl __modsi3\n\ -lsls r0, 24\n\ -lsrs r3, r0, 24\n\ -adds r0, r5, 0x1\n\ -lsls r0, 24\n\ -lsrs r5, r0, 24\n\ -cmp r5, r9\n\ -bcc _081196B6\n\ -_0811970E:\n\ -ldrb r0, [r4, 0x3]\n\ -lsls r0, 27\n\ -lsrs r0, 27\n\ -adds r0, 0x1\n\ -ldrb r1, [r4, 0x2]\n\ -ands r0, r1\n\ -cmp r0, 0\n\ -beq _08119756\n\ -ldr r2, [sp, 0xC]\n\ -cmp r2, 0\n\ -beq _08119744\n\ -movs r0, 0xFF\n\ -ldr r3, [sp, 0x10]\n\ -ands r0, r3\n\ -cmp r0, 0xBF\n\ -bhi _08119744\n\ -mov r0, r8\n\ -strh r2, [r0, 0x3C]\n\ -b _08119766\n\ -.align 2, 0\n\ -_08119734: .4byte gSharedMem + 0x19000\n\ -_08119738: .4byte gUnknown_083F8C00 + 0xC\n\ -_0811973C: .4byte gUnknown_083F8D90 + 0x4\n\ -_08119740: .4byte gSharedMem + 0x1901B\n\ -_08119744:\n\ -ldr r0, [sp, 0x10]\n\ -mov r1, r10\n\ -bl __modsi3\n\ -add r0, sp\n\ -ldrb r0, [r0]\n\ -mov r1, r8\n\ -strh r0, [r1, 0x3C]\n\ -b _08119766\n\ -_08119756:\n\ -ldr r0, [sp, 0x10]\n\ -mov r1, r10\n\ -bl __modsi3\n\ -add r0, sp\n\ -ldrb r0, [r0]\n\ -mov r2, r8\n\ -strh r0, [r2, 0x3C]\n\ -_08119766:\n\ -ldr r3, _0811977C @ =sub_8118CEC\n\ -mov r0, r8\n\ -str r3, [r0, 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\ -.align 2, 0\n\ -_0811977C: .4byte sub_8118CEC\n\ -.syntax divided\n"); + asm_unified("push {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x14\n" + "\tmov r8, r0\n" + "\tmovs r0, 0\n" + "\tmov r10, r0\n" + "\tmovs r1, 0x5\n" + "\tmov r9, r1\n" + "\tmovs r2, 0\n" + "\tstr r2, [sp, 0xC]\n" + "\tmov r0, sp\n" + "\tmovs r1, 0\n" + "\tmovs r2, 0xA\n" + "\tbl memset\n" + "\tbl Random\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tstr r0, [sp, 0x10]\n" + "\tldr r7, _08119610 @ =gSharedMem + 0x19000\n" + "\tadds r0, r7, 0\n" + "\tadds r0, 0x7D\n" + "\tmovs r6, 0x1\n" + "\tstrb r6, [r0]\n" + "\tldrb r4, [r7, 0x3]\n" + "\tmovs r0, 0x20\n" + "\torrs r4, r0\n" + "\tmovs r0, 0x41\n" + "\tnegs r0, r0\n" + "\tands r4, r0\n" + "\tstrb r4, [r7, 0x3]\n" + "\tadds r1, r7, 0\n" + "\tadds r1, 0x7E\n" + "\tmovs r0, 0xFF\n" + "\tstrb r0, [r1]\n" + "\tadds r5, r7, 0\n" + "\tadds r5, 0x88\n" + "\tmov r3, r8\n" + "\tmovs r1, 0x34\n" + "\tldrsh r0, [r3, r1]\n" + "\tbl __floatsisf\n" + "\tstr r0, [r5]\n" + "\tadds r1, r7, 0\n" + "\tadds r1, 0x98\n" + "\tldr r0, _08119614 @ =0x00000000\n" + "\tstr r0, [r1]\n" + "\tadds r3, r7, 0\n" + "\tadds r3, 0x8C\n" + "\tldr r2, _08119618 @ =gUnknown_083F8DF4\n" + "\tldrb r0, [r7, 0x4]\n" + "\tlsls r0, 30\n" + "\tlsrs r1, r0, 25\n" + "\tadds r2, 0x1C\n" + "\tadds r1, r2\n" + "\tldr r1, [r1]\n" + "\tstr r1, [r3]\n" + "\tlsrs r0, 30\n" + "\tlsls r1, r0, 4\n" + "\tsubs r1, r0\n" + "\tlsls r1, 1\n" + "\tadds r1, 0x21\n" + "\tlsls r4, 27\n" + "\tlsrs r4, 27\n" + "\tsubs r6, r4\n" + "\tlsls r0, r6, 4\n" + "\tsubs r0, r6\n" + "\tadds r1, r0\n" + "\tlsls r1, 16\n" + "\tlsrs r1, 16\n" + "\tmov r5, r10\n" + "\tmov r3, r8\n" + "\tmovs r0, 0x34\n" + "\tldrsh r2, [r3, r0]\n" + "_081195C8:\n" + "\tcmp r1, r2\n" + "\tbge _081195D4\n" + "\tadds r0, r1, 0\n" + "\tadds r0, 0x5A\n" + "\tcmp r2, r0\n" + "\tble _08119638\n" + "_081195D4:\n" + "\tcmp r5, 0x3\n" + "\tbeq _0811961C\n" + "\tadds r0, r1, 0\n" + "\tadds r0, 0x5A\n" + "\tlsls r0, 16\n" + "\tlsrs r1, r0, 16\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r5, r0, 24\n" + "\tcmp r5, 0x3\n" + "\tbls _081195C8\n" + "_081195EA:\n" + "\tldr r0, _08119610 @ =gSharedMem + 0x19000\n" + "\tldrb r1, [r0, 0x3]\n" + "\tmovs r0, 0x1F\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _08119664\n" + "\tmov r1, r8\n" + "\tmovs r2, 0x2E\n" + "\tldrsh r0, [r1, r2]\n" + "\tcmp r0, 0\n" + "\tbeq _08119658\n" + "\tmovs r0, 0x98\n" + "\tlsls r0, 1\n" + "\tmovs r1, 0x3F\n" + "\tnegs r1, r1\n" + "\tbl PlayCry1\n" + "\tb _08119670\n" + "\t.align 2, 0\n" + "_08119610: .4byte gSharedMem + 0x19000\n" + "_08119614: .4byte 0x00000000\n" + "_08119618: .4byte gUnknown_083F8DF4\n" + "_0811961C:\n" + "\tmovs r0, 0x1\n" + "\tmov r3, r8\n" + "\tstrh r0, [r3, 0x2E]\n" + "\tldr r2, _08119634 @ =gSharedMem + 0x19000\n" + "\tldrb r1, [r2, 0x3]\n" + "\tsubs r0, 0x21\n" + "\tands r0, r1\n" + "\tmovs r1, 0x1\n" + "\torrs r0, r1\n" + "\tstrb r0, [r2, 0x3]\n" + "\tb _081195EA\n" + "\t.align 2, 0\n" + "_08119634: .4byte gSharedMem + 0x19000\n" + "_08119638:\n" + "\tlsrs r0, r5, 1\n" + "\tmov r1, r8\n" + "\tstrh r0, [r1, 0x2E]\n" + "\tldr r3, _08119654 @ =gSharedMem + 0x19000\n" + "\tmovs r1, 0x1\n" + "\tands r1, r5\n" + "\tldrb r2, [r3, 0x3]\n" + "\tmovs r0, 0x20\n" + "\tnegs r0, r0\n" + "\tands r0, r2\n" + "\torrs r0, r1\n" + "\tstrb r0, [r3, 0x3]\n" + "\tb _081195EA\n" + "\t.align 2, 0\n" + "_08119654: .4byte gSharedMem + 0x19000\n" + "_08119658:\n" + "\tmovs r0, 0x98\n" + "\tlsls r0, 1\n" + "\tmovs r1, 0x3F\n" + "\tbl PlayCry1\n" + "\tb _08119670\n" + "_08119664:\n" + "\tmovs r0, 0x99\n" + "\tlsls r0, 1\n" + "\tmovs r1, 0x3F\n" + "\tnegs r1, r1\n" + "\tbl PlayCry1\n" + "_08119670:\n" + "\tmovs r5, 0x2\n" + "\tldr r4, _081196A0 @ =gSharedMem + 0x19000\n" + "\tadds r0, r4, 0\n" + "\tadds r0, 0x7F\n" + "\tldrb r0, [r0]\n" + "\tadds r0, 0x2\n" + "\tmovs r1, 0xC\n" + "\tbl __modsi3\n" + "\tlsls r0, 24\n" + "\tlsrs r3, r0, 24\n" + "\tldrb r1, [r4, 0x3]\n" + "\tmovs r0, 0x1F\n" + "\tands r0, r1\n" + "\tcmp r0, 0x1\n" + "\tbne _081196A4\n" + "\tldrb r1, [r4, 0x4]\n" + "\tmovs r0, 0x3\n" + "\tands r0, r1\n" + "\tcmp r0, 0x1\n" + "\tbne _081196A4\n" + "\tmov r0, r9\n" + "\tadds r0, 0x6\n" + "\tb _081196A8\n" + "\t.align 2, 0\n" + "_081196A0: .4byte gSharedMem + 0x19000\n" + "_081196A4:\n" + "\tmov r2, r9\n" + "\tadds r0, r2, r5\n" + "_081196A8:\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmov r9, r0\n" + "\tcmp r5, r9\n" + "\tbcs _0811970E\n" + "\tldr r6, _08119734 @ =gSharedMem + 0x19000\n" + "\tldr r7, _08119738 @ =gUnknown_083F8C00 + 0xC\n" + "_081196B6:\n" + "\tlsls r0, r3, 3\n" + "\tldr r1, _0811973C @ =gUnknown_083F8D90 + 0x4\n" + "\tadds r0, r1\n" + "\tldr r1, [r6, 0x8]\n" + "\tldr r2, [r0]\n" + "\tands r1, r2\n" + "\tcmp r1, 0\n" + "\tbne _081196F8\n" + "\tmov r0, r10\n" + "\tadds r1, r0, 0x1\n" + "\tlsls r1, 24\n" + "\tlsrs r1, 24\n" + "\tmov r10, r1\n" + "\tadd r0, sp\n" + "\tstrb r5, [r0]\n" + "\tldr r0, [sp, 0xC]\n" + "\tcmp r0, 0\n" + "\tbne _081196F8\n" + "\tldrb r0, [r6, 0x1A]\n" + "\tlsls r0, 28\n" + "\tlsrs r0, 28\n" + "\tldr r1, _08119740 @ =gSharedMem + 0x1901B\n" + "\tadds r0, r1\n" + "\tldrb r1, [r0]\n" + "\tlsls r0, r1, 2\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r7\n" + "\tldr r0, [r0]\n" + "\tands r2, r0\n" + "\tcmp r2, 0\n" + "\tbeq _081196F8\n" + "\tstr r5, [sp, 0xC]\n" + "_081196F8:\n" + "\tadds r0, r3, 0x1\n" + "\tmovs r1, 0xC\n" + "\tbl __modsi3\n" + "\tlsls r0, 24\n" + "\tlsrs r3, r0, 24\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r5, r0, 24\n" + "\tcmp r5, r9\n" + "\tbcc _081196B6\n" + "_0811970E:\n" + "\tldrb r0, [r4, 0x3]\n" + "\tlsls r0, 27\n" + "\tlsrs r0, 27\n" + "\tadds r0, 0x1\n" + "\tldrb r1, [r4, 0x2]\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _08119756\n" + "\tldr r2, [sp, 0xC]\n" + "\tcmp r2, 0\n" + "\tbeq _08119744\n" + "\tmovs r0, 0xFF\n" + "\tldr r3, [sp, 0x10]\n" + "\tands r0, r3\n" + "\tcmp r0, 0xBF\n" + "\tbhi _08119744\n" + "\tmov r0, r8\n" + "\tstrh r2, [r0, 0x3C]\n" + "\tb _08119766\n" + "\t.align 2, 0\n" + "_08119734: .4byte gSharedMem + 0x19000\n" + "_08119738: .4byte gUnknown_083F8C00 + 0xC\n" + "_0811973C: .4byte gUnknown_083F8D90 + 0x4\n" + "_08119740: .4byte gSharedMem + 0x1901B\n" + "_08119744:\n" + "\tldr r0, [sp, 0x10]\n" + "\tmov r1, r10\n" + "\tbl __modsi3\n" + "\tadd r0, sp\n" + "\tldrb r0, [r0]\n" + "\tmov r1, r8\n" + "\tstrh r0, [r1, 0x3C]\n" + "\tb _08119766\n" + "_08119756:\n" + "\tldr r0, [sp, 0x10]\n" + "\tmov r1, r10\n" + "\tbl __modsi3\n" + "\tadd r0, sp\n" + "\tldrb r0, [r0]\n" + "\tmov r2, r8\n" + "\tstrh r0, [r2, 0x3C]\n" + "_08119766:\n" + "\tldr r3, _0811977C @ =sub_8118CEC\n" + "\tmov r0, r8\n" + "\tstr r3, [r0, 0x1C]\n" + "\tadd sp, 0x14\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0811977C: .4byte sub_8118CEC"); } #endif void sub_8119780(struct Sprite *sprite) { - if (!(sprite->data[0x1]++ < sprite->data[0x3])) + if (sprite->data[0x1]++ >= sprite->data[0x3]) { if ((sprite->pos1.x -= 0x2) < -0x10) { @@ -5617,7 +3991,7 @@ void sub_8119AAC(struct Sprite *sprite) void sub_8119B24(struct Sprite *sprite) { - if (!(sprite->data[0x1] < 0x0)) + if (sprite->data[0x1] >= 0x0) { sprite->data[0x1]--; sprite->pos1.y--; @@ -5626,7 +4000,7 @@ void sub_8119B24(struct Sprite *sprite) } else { - if (!(sprite->data[0x3] < 0x0)) + if (sprite->data[0x3] >= 0x0) { sprite->data[0x3]--; if (sprite->animDelayCounter == 0x0) @@ -5665,7 +4039,7 @@ void sub_8119BCC(struct Sprite *sprite) } else { - if (!(sprite->data[0x1] < 0x0)) + if (sprite->data[0x1] >= 0x0) { sprite->pos1.x += t[eRoulette->var38->data[0x0]] * z[0x7 - sprite->data[0x1]][0x0]; sprite->pos1.y += z[0x7 - sprite->data[0x1]][0x1]; @@ -5674,9 +4048,9 @@ void sub_8119BCC(struct Sprite *sprite) { m4aSongNumStartOrChange(0x5E); if(eRoulette->var38->data[0x0] == 0x0) - PlayCry1(0x130, 0x3F); + PlayCry1(SPECIES_TAILLOW, 0x3F); else - PlayCry1(0x130, -0x3F); + PlayCry1(SPECIES_TAILLOW, -0x3F); StartSpriteAnim(sprite, eRoulette->var38->data[0x0] + 0x2); sprite->data[0x1] = 45; sprite->callback = &sub_8119B24; @@ -5688,7 +4062,7 @@ void sub_8119D08(struct Sprite *sprite) { s8 t[0x2]; //sign memcpy(t, &gUnknown_083FA64A, 0x2); - if (!(sprite->data[0x1]-- < 0x0)) + if (sprite->data[0x1]-- >= 0x0) { sprite->pos1.x += t[eRoulette->var38->data[0x0]] * 0x2; gSprites[sprite->data[0x6]].invisible ^= 0x1; diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index 24cbcb9c0..6eccca047 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -2015,36 +2015,32 @@ s16 unref_sub_8050514(void) return gUnknown_0300052E; } -#ifdef NONMATCHING - static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 playersNo, u8* flavours, u16 maxRPM) { s32 i; s32 j; - s32 savedEntry; s32 var3; s32 var4; - u32 var6; - s32 var11; - u16 rand; + s32 var6; + u8 r10; for (i = 0; i < 6; i++) gUnknown_03000510[i] = 0; for (i = 0; i < playersNo; i++) { - for (j = 0; j < 5; j++) + for (j = 0; j < 6; j++) gUnknown_03000510[j] += berries[i].flavours[j]; } - savedEntry = gUnknown_03000510[0]; + var6 = gUnknown_03000510[0]; gUnknown_03000510[0] -= gUnknown_03000510[1]; gUnknown_03000510[1] -= gUnknown_03000510[2]; gUnknown_03000510[2] -= gUnknown_03000510[3]; gUnknown_03000510[3] -= gUnknown_03000510[4]; - gUnknown_03000510[4] -= savedEntry; + gUnknown_03000510[4] -= var6; var6 = 0; - for (i = 0; i < 6; i++) + for (i = 0; i < 5; i++) { if (gUnknown_03000510[i] < 0) { @@ -2052,6 +2048,7 @@ static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Poke var6++; } } + r10 = var6; for (i = 0; i < 5; i++) { if (gUnknown_03000510[i] > 0) @@ -2067,13 +2064,13 @@ static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Poke gUnknown_03000530[i] = gUnknown_03000510[i]; } - var11 = maxRPM / 333 + 100; - gUnknown_0300055C = ((var11)); + var6 = maxRPM / 333 + 100; + gUnknown_0300055C = var6; for (i = 0; i < 5; i++) { var3 = gUnknown_03000510[i]; - var3 = ((var11) * var3) / 10; + var3 = (var3 * var6) / 10; var4 = var3 % 10; var3 /= 10; if (var4 > 4) @@ -2084,16 +2081,16 @@ static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Poke { gUnknown_03000548[i] = gUnknown_03000510[i]; } - pokeblock->color = Blender_GetPokeblockColor(berries, &gUnknown_03000510[0], playersNo, var6); + pokeblock->color = Blender_GetPokeblockColor(berries, &gUnknown_03000510[0], playersNo, r10); gUnknown_03000510[5] = (gUnknown_03000510[5] / playersNo) - playersNo; if (gUnknown_03000510[5] < 0) gUnknown_03000510[5] = 0; if (pokeblock->color == 12) { - rand = Random() % 10; - for (i = 0; i < 6; i++) + var6 = Random() % 10; + for (i = 0; i < 5; i++) { - if ((gUnknown_082165DF[rand] >> i) & 1) + if ((gUnknown_082165DF[var6] >> i) & 1) gUnknown_03000510[i] = 2; else gUnknown_03000510[i] = 0; @@ -2116,296 +2113,6 @@ static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Poke } } -#else -__attribute__((naked)) -static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 a2, u8* flavours, u16 a4) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x10\n\ - str r0, [sp]\n\ - mov r8, r1\n\ - str r3, [sp, 0x4]\n\ - ldr r0, [sp, 0x30]\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - mov r9, r2\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x8]\n\ - ldr r7, _080505DC @ =gUnknown_03000510\n\ - adds r2, r7, 0\n\ - movs r1, 0\n\ - adds r0, r7, 0\n\ - adds r0, 0xA\n\ -_0805054A:\n\ - strh r1, [r0]\n\ - subs r0, 0x2\n\ - cmp r0, r2\n\ - bge _0805054A\n\ - movs r6, 0\n\ - cmp r6, r9\n\ - bge _08050580\n\ - ldr r0, _080505DC @ =gUnknown_03000510\n\ - mov r12, r0\n\ - ldr r5, [sp]\n\ - adds r5, 0x9\n\ -_08050560:\n\ - movs r3, 0\n\ - adds r4, r5, 0\n\ - mov r2, r12\n\ -_08050566:\n\ - adds r1, r4, r3\n\ - ldrh r0, [r2]\n\ - ldrb r1, [r1]\n\ - adds r0, r1\n\ - strh r0, [r2]\n\ - adds r2, 0x2\n\ - adds r3, 0x1\n\ - cmp r3, 0x5\n\ - ble _08050566\n\ - adds r5, 0x10\n\ - adds r6, 0x1\n\ - cmp r6, r9\n\ - blt _08050560\n\ -_08050580:\n\ - movs r1, 0\n\ - ldrsh r3, [r7, r1]\n\ - ldrh r0, [r7]\n\ - ldrh r1, [r7, 0x2]\n\ - subs r0, r1\n\ - strh r0, [r7]\n\ - ldrh r0, [r7, 0x4]\n\ - subs r1, r0\n\ - strh r1, [r7, 0x2]\n\ - ldrh r1, [r7, 0x6]\n\ - subs r0, r1\n\ - strh r0, [r7, 0x4]\n\ - ldrh r0, [r7, 0x8]\n\ - subs r1, r0\n\ - strh r1, [r7, 0x6]\n\ - subs r0, r3\n\ - strh r0, [r7, 0x8]\n\ - movs r3, 0\n\ - movs r2, 0\n\ - adds r1, r7, 0\n\ - movs r6, 0x4\n\ -_080505AA:\n\ - movs r4, 0\n\ - ldrsh r0, [r1, r4]\n\ - cmp r0, 0\n\ - bge _080505B6\n\ - strh r2, [r1]\n\ - adds r3, 0x1\n\ -_080505B6:\n\ - adds r1, 0x2\n\ - subs r6, 0x1\n\ - cmp r6, 0\n\ - bge _080505AA\n\ - lsls r0, r3, 24\n\ - lsrs r0, 24\n\ - mov r10, r0\n\ - movs r4, 0\n\ - ldr r1, _080505DC @ =gUnknown_03000510\n\ - movs r6, 0x4\n\ -_080505CA:\n\ - ldrh r2, [r1]\n\ - movs r5, 0\n\ - ldrsh r0, [r1, r5]\n\ - cmp r0, 0\n\ - ble _080505E4\n\ - cmp r0, r3\n\ - bge _080505E0\n\ - strh r4, [r1]\n\ - b _080505E4\n\ - .align 2, 0\n\ -_080505DC: .4byte gUnknown_03000510\n\ -_080505E0:\n\ - subs r0, r2, r3\n\ - strh r0, [r1]\n\ -_080505E4:\n\ - adds r1, 0x2\n\ - subs r6, 0x1\n\ - cmp r6, 0\n\ - bge _080505CA\n\ - ldr r1, _080506C4 @ =gUnknown_03000510\n\ - ldr r2, _080506C8 @ =gUnknown_03000530\n\ - movs r6, 0x4\n\ -_080505F2:\n\ - movs r3, 0\n\ - ldrsh r0, [r1, r3]\n\ - stm r2!, {r0}\n\ - adds r1, 0x2\n\ - subs r6, 0x1\n\ - cmp r6, 0\n\ - bge _080505F2\n\ - ldr r1, _080506CC @ =0x0000014d\n\ - ldr r0, [sp, 0x8]\n\ - bl __udivsi3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - adds r3, r0, 0\n\ - adds r3, 0x64\n\ - ldr r4, _080506D0 @ =gUnknown_0300055C\n\ - str r3, [r4]\n\ - movs r6, 0x4\n\ -_08050616:\n\ - movs r0, 0\n\ - ldrsh r5, [r7, r0]\n\ - adds r0, r5, 0\n\ - muls r0, r3\n\ - movs r1, 0xA\n\ - str r3, [sp, 0xC]\n\ - bl __divsi3\n\ - adds r5, r0, 0\n\ - movs r1, 0xA\n\ - bl __modsi3\n\ - adds r4, r0, 0\n\ - adds r0, r5, 0\n\ - movs r1, 0xA\n\ - bl __divsi3\n\ - adds r5, r0, 0\n\ - ldr r3, [sp, 0xC]\n\ - cmp r4, 0x4\n\ - ble _08050642\n\ - adds r5, 0x1\n\ -_08050642:\n\ - strh r5, [r7]\n\ - adds r7, 0x2\n\ - subs r6, 0x1\n\ - cmp r6, 0\n\ - bge _08050616\n\ - ldr r1, _080506C4 @ =gUnknown_03000510\n\ - ldr r2, _080506D4 @ =gUnknown_03000548\n\ - movs r6, 0x4\n\ -_08050652:\n\ - movs r3, 0\n\ - ldrsh r0, [r1, r3]\n\ - stm r2!, {r0}\n\ - adds r1, 0x2\n\ - subs r6, 0x1\n\ - cmp r6, 0\n\ - bge _08050652\n\ - ldr r4, _080506C4 @ =gUnknown_03000510\n\ - ldr r0, [sp]\n\ - adds r1, r4, 0\n\ - mov r2, r9\n\ - mov r3, r10\n\ - bl Blender_GetPokeblockColor\n\ - mov r5, r8\n\ - strb r0, [r5]\n\ - movs r1, 0xA\n\ - ldrsh r0, [r4, r1]\n\ - mov r1, r9\n\ - bl __divsi3\n\ - mov r3, r9\n\ - subs r0, r3\n\ - strh r0, [r4, 0xA]\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - bge _0805068C\n\ - movs r0, 0\n\ - strh r0, [r4, 0xA]\n\ -_0805068C:\n\ - mov r5, r8\n\ - ldrb r0, [r5]\n\ - cmp r0, 0xC\n\ - bne _080506E6\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0xA\n\ - bl __umodsi3\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - movs r6, 0\n\ - ldr r0, _080506D8 @ =gUnknown_082165DF\n\ - adds r0, r3, r0\n\ - ldrb r0, [r0]\n\ - adds r1, r4, 0\n\ - movs r4, 0x1\n\ - movs r3, 0x2\n\ -_080506B4:\n\ - adds r2, r0, 0\n\ - asrs r2, r6\n\ - ands r2, r4\n\ - cmp r2, 0\n\ - beq _080506DC\n\ - strh r3, [r1]\n\ - b _080506DE\n\ - .align 2, 0\n\ -_080506C4: .4byte gUnknown_03000510\n\ -_080506C8: .4byte gUnknown_03000530\n\ -_080506CC: .4byte 0x0000014d\n\ -_080506D0: .4byte gUnknown_0300055C\n\ -_080506D4: .4byte gUnknown_03000548\n\ -_080506D8: .4byte gUnknown_082165DF\n\ -_080506DC:\n\ - strh r2, [r1]\n\ -_080506DE:\n\ - adds r1, 0x2\n\ - adds r6, 0x1\n\ - cmp r6, 0x4\n\ - ble _080506B4\n\ -_080506E6:\n\ - ldr r7, _08050740 @ =gUnknown_03000510\n\ - movs r2, 0xFF\n\ - adds r1, r7, 0\n\ - movs r6, 0x5\n\ -_080506EE:\n\ - movs r3, 0\n\ - ldrsh r0, [r1, r3]\n\ - cmp r0, 0xFF\n\ - ble _080506F8\n\ - strh r2, [r1]\n\ -_080506F8:\n\ - adds r1, 0x2\n\ - subs r6, 0x1\n\ - cmp r6, 0\n\ - bge _080506EE\n\ - ldrh r0, [r7]\n\ - mov r4, r8\n\ - strb r0, [r4, 0x1]\n\ - ldrh r0, [r7, 0x2]\n\ - strb r0, [r4, 0x2]\n\ - ldrh r0, [r7, 0x4]\n\ - strb r0, [r4, 0x3]\n\ - ldrh r0, [r7, 0x6]\n\ - strb r0, [r4, 0x4]\n\ - ldrh r0, [r7, 0x8]\n\ - strb r0, [r4, 0x5]\n\ - ldrh r0, [r7, 0xA]\n\ - strb r0, [r4, 0x6]\n\ - movs r6, 0\n\ - adds r2, r7, 0\n\ -_0805071E:\n\ - ldr r5, [sp, 0x4]\n\ - adds r1, r5, r6\n\ - ldrh r0, [r2]\n\ - strb r0, [r1]\n\ - adds r2, 0x2\n\ - adds r6, 0x1\n\ - cmp r6, 0x5\n\ - ble _0805071E\n\ - add sp, 0x10\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\ -_08050740: .4byte gUnknown_03000510\n\ - .syntax divided"); -} - -#endif // NONMATCHING - static void BlenderDebug_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 playersNo, u8* flavours, u16 a4) { Blender_CalculatePokeblock(berries, pokeblock, playersNo, flavours, a4); diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 521879a09..f52f4524d 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -23,15 +23,6 @@ // Static type declarations -// Credits to Made (dolphin emoji) -#define S16TOPOSFLOAT(val) \ -({ \ - s16 v = (val); \ - float f = (float)v; \ - if(v < 0) f += 65536.0f; \ - f; \ -}) - struct CableCarEwramStruct1 { u8 unk_0000; u8 unk_0001; diff --git a/src/scene/intro.c b/src/scene/intro.c index 4da341744..3e4bd5bf4 100644 --- a/src/scene/intro.c +++ b/src/scene/intro.c @@ -1501,7 +1501,6 @@ static void intro_reset_and_hide_bgs(void) REG_BLDY = 0; } -#ifdef NONMATCHING static void sub_813CCE8(u8 taskId) { switch (gTasks[taskId].data[0]) @@ -1513,18 +1512,15 @@ static void sub_813CCE8(u8 taskId) REG_BLDY = 0; gTasks[taskId].data[1] = 0x40; gTasks[taskId].data[0] = 1; - return; + break; case 1: if (gTasks[taskId].data[1] != 0) { - u32 foo; - u32 bar asm("r2"); + u8 foo; gTasks[taskId].data[1]--; - //tail merge at _0813CDC2 - foo = gTasks[taskId].data[1] + (gTasks[taskId].data[1] < 0); - bar = 0x1FE; - REG_BLDALPHA = gUnknown_08393E64[(foo & bar) / 2]; + foo = gTasks[taskId].data[1] / 2; + REG_BLDALPHA = gUnknown_08393E64[foo]; } else { @@ -1532,7 +1528,7 @@ static void sub_813CCE8(u8 taskId) gTasks[taskId].data[1] = 0x80; gTasks[taskId].data[0]++; } - return; + break; case 2: if (gTasks[taskId].data[1] != 0) { @@ -1544,18 +1540,15 @@ static void sub_813CCE8(u8 taskId) gTasks[taskId].data[1] = 0; //redundant? gTasks[taskId].data[0]++; } - return; + break; case 3: if (gTasks[taskId].data[1] <= 0x3D) { - u32 foo; - u32 bar asm("r2"); + u8 foo; gTasks[taskId].data[1]++; - //_0813CDC2 - foo = gTasks[taskId].data[1] + (gTasks[taskId].data[1] < 0); - bar = 0x1FE; - REG_BLDALPHA = gUnknown_08393E64[(foo & bar) / 2]; + foo = gTasks[taskId].data[1] / 2; + REG_BLDALPHA = gUnknown_08393E64[foo]; } else { @@ -1564,7 +1557,7 @@ static void sub_813CCE8(u8 taskId) gTasks[taskId].data[1] = 0x10; gTasks[taskId].data[0]++; } - return; + break; case 4: if (gTasks[taskId].data[1] != 0) { @@ -1577,186 +1570,9 @@ static void sub_813CCE8(u8 taskId) REG_BLDY = 0; DestroyTask(taskId); } - return; + break; } } -#else -__attribute__((naked)) -static void sub_813CCE8(u8 taskId) -{ - asm("\n\ - .equ REG_BLDCNT, 0x4000050\n\ - .equ REG_BLDALPHA, 0x4000052\n\ - .syntax unified\n\ - push {r4,lr}\n\ - lsls r0, 24\n\ - lsrs r3, r0, 24\n\ - ldr r1, _0813CD0C @ =gTasks\n\ - lsls r0, r3, 2\n\ - adds r0, r3\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r2, 0x8\n\ - ldrsh r0, [r0, r2]\n\ - adds r2, r1, 0\n\ - cmp r0, 0x4\n\ - bhi _0813CD28\n\ - lsls r0, 2\n\ - ldr r1, _0813CD10 @ =_0813CD14\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_0813CD0C: .4byte gTasks\n\ -_0813CD10: .4byte _0813CD14\n\ - .align 2, 0\n\ -_0813CD14:\n\ - .4byte _0813CD28\n\ - .4byte _0813CD5C\n\ - .4byte _0813CD8C\n\ - .4byte _0813CDA8\n\ - .4byte _0813CDFC\n\ -_0813CD28:\n\ - ldr r1, _0813CD54 @ =REG_BLDCNT\n\ - ldr r4, _0813CD58 @ =0x00003f50\n\ - adds r0, r4, 0\n\ - strh r0, [r1]\n\ - adds r1, 0x2\n\ - movs r4, 0x80\n\ - lsls r4, 5\n\ - adds r0, r4, 0\n\ - strh r0, [r1]\n\ - adds r1, 0x2\n\ - movs r0, 0\n\ - strh r0, [r1]\n\ - lsls r0, r3, 2\n\ - adds r0, r3\n\ - lsls r0, 3\n\ - adds r0, r2\n\ - movs r1, 0x40\n\ - strh r1, [r0, 0xA]\n\ - movs r1, 0x1\n\ - strh r1, [r0, 0x8]\n\ - b _0813CE26\n\ - .align 2, 0\n\ -_0813CD54: .4byte REG_BLDCNT\n\ -_0813CD58: .4byte 0x00003f50\n\ -_0813CD5C:\n\ - lsls r0, r3, 2\n\ - adds r0, r3\n\ - lsls r0, 3\n\ - adds r2, r0, r2\n\ - ldrh r1, [r2, 0xA]\n\ - movs r3, 0xA\n\ - ldrsh r0, [r2, r3]\n\ - cmp r0, 0\n\ - beq _0813CD78\n\ - subs r0, r1, 0x1\n\ - strh r0, [r2, 0xA]\n\ - movs r4, 0xA\n\ - ldrsh r0, [r2, r4]\n\ - b _0813CDC2\n\ -_0813CD78:\n\ - ldr r1, _0813CD84 @ =REG_BLDALPHA\n\ - ldr r0, _0813CD88 @ =gUnknown_08393E64\n\ - ldrh r0, [r0]\n\ - strh r0, [r1]\n\ - movs r0, 0x80\n\ - b _0813CDEA\n\ - .align 2, 0\n\ -_0813CD84: .4byte REG_BLDALPHA\n\ -_0813CD88: .4byte gUnknown_08393E64\n\ -_0813CD8C:\n\ - lsls r0, r3, 2\n\ - adds r0, r3\n\ - lsls r0, 3\n\ - adds r1, r0, r2\n\ - ldrh r0, [r1, 0xA]\n\ - movs r3, 0xA\n\ - ldrsh r2, [r1, r3]\n\ - cmp r2, 0\n\ - bne _0813CE0E\n\ - strh r2, [r1, 0xA]\n\ - ldrh r0, [r1, 0x8]\n\ - adds r0, 0x1\n\ - strh r0, [r1, 0x8]\n\ - b _0813CE26\n\ -_0813CDA8:\n\ - lsls r0, r3, 2\n\ - adds r0, r3\n\ - lsls r0, 3\n\ - adds r2, r0, r2\n\ - ldrh r1, [r2, 0xA]\n\ - movs r4, 0xA\n\ - ldrsh r0, [r2, r4]\n\ - cmp r0, 0x3D\n\ - bgt _0813CDE0\n\ - adds r0, r1, 0x1\n\ - strh r0, [r2, 0xA]\n\ - movs r1, 0xA\n\ - ldrsh r0, [r2, r1]\n\ -_0813CDC2:\n\ - lsrs r1, r0, 31\n\ - adds r0, r1\n\ - movs r2, 0xFF\n\ - lsls r2, 1\n\ - ldr r3, _0813CDD8 @ =REG_BLDALPHA\n\ - ldr r1, _0813CDDC @ =gUnknown_08393E64\n\ - ands r0, r2\n\ - adds r0, r1\n\ - ldrh r0, [r0]\n\ - strh r0, [r3]\n\ - b _0813CE26\n\ - .align 2, 0\n\ -_0813CDD8: .4byte REG_BLDALPHA\n\ -_0813CDDC: .4byte gUnknown_08393E64\n\ -_0813CDE0:\n\ - ldr r1, _0813CDF4 @ =REG_BLDALPHA\n\ - ldr r0, _0813CDF8 @ =gUnknown_08393E64\n\ - ldrh r0, [r0, 0x3E]\n\ - strh r0, [r1]\n\ - movs r0, 0x10\n\ -_0813CDEA:\n\ - strh r0, [r2, 0xA]\n\ - ldrh r0, [r2, 0x8]\n\ - adds r0, 0x1\n\ - strh r0, [r2, 0x8]\n\ - b _0813CE26\n\ - .align 2, 0\n\ -_0813CDF4: .4byte REG_BLDALPHA\n\ -_0813CDF8: .4byte gUnknown_08393E64\n\ -_0813CDFC:\n\ - lsls r0, r3, 2\n\ - adds r0, r3\n\ - lsls r0, 3\n\ - adds r1, r0, r2\n\ - ldrh r0, [r1, 0xA]\n\ - movs r4, 0xA\n\ - ldrsh r2, [r1, r4]\n\ - cmp r2, 0\n\ - beq _0813CE14\n\ -_0813CE0E:\n\ - subs r0, 0x1\n\ - strh r0, [r1, 0xA]\n\ - b _0813CE26\n\ -_0813CE14:\n\ - ldr r0, _0813CE2C @ =REG_BLDCNT\n\ - strh r2, [r0]\n\ - adds r0, 0x2\n\ - strh r2, [r0]\n\ - adds r0, 0x2\n\ - strh r2, [r0]\n\ - adds r0, r3, 0\n\ - bl DestroyTask\n\ -_0813CE26:\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0813CE2C: .4byte REG_BLDCNT\n\ - .syntax divided\n"); -} -#endif void sub_813CE30(u16 scrX, u16 scrY, u16 zoom, u16 alpha) { diff --git a/src/scene/intro_credits_graphics.c b/src/scene/intro_credits_graphics.c index 7f6765ef6..6aadafc58 100644 --- a/src/scene/intro_credits_graphics.c +++ b/src/scene/intro_credits_graphics.c @@ -436,161 +436,47 @@ u8 sub_8148EC0(u8 a, u16 b, u16 c, u16 d) return taskId; } -#ifdef NONMATCHING void sub_8148F3C(u8 taskId) { - register u32 r4 asm("r4"); + s16 r4; s32 r2; - r4 = (u16)gTasks[taskId].data[1] << 16; + r4 = gTasks[taskId].data[1]; if (r4 != 0) { - r2 = (gTasks[taskId].data[2] << 16) + (u16)gTasks[taskId].data[3] - (r4 >> 12); + r2 = (gTasks[taskId].data[2] << 16) + (u16)gTasks[taskId].data[3]; + r2 -= 16 * (u16)r4; gTasks[taskId].data[2] = r2 >> 16; gTasks[taskId].data[3] = r2; REG_BG1HOFS = gTasks[taskId].data[2]; - REG_BG1VOFS = gUnknown_0203935A + gUnknown_02039358; + REG_BG1VOFS = gUnknown_02039358 + gUnknown_0203935A; } - r4 = (u16)gTasks[taskId].data[4] << 16; + r4 = gTasks[taskId].data[4]; if (r4 != 0) { - r2 = (gTasks[taskId].data[5] << 16) + (u16)gTasks[taskId].data[6] - (r4 >> 12); + r2 = (gTasks[taskId].data[5] << 16) + (u16)gTasks[taskId].data[6]; + r2 -= 16 * (u16)r4; gTasks[taskId].data[5] = r2 >> 16; - gTasks[taskId].data[3] = r2; + gTasks[taskId].data[6] = r2; REG_BG2HOFS = gTasks[taskId].data[5]; if (gTasks[taskId].data[0] != 0) - REG_BG2VOFS = gUnknown_0203935A + gUnknown_02039358; + REG_BG2VOFS = gUnknown_02039358 + gUnknown_0203935A; else REG_BG2VOFS = gUnknown_02039358; } - r4 = (u16)gTasks[taskId].data[7] << 16; + r4 = gTasks[taskId].data[7]; if (r4 != 0) { - r2 = (gTasks[taskId].data[8] << 16) + (u16)gTasks[taskId].data[9] - (r4 >> 12);; + r2 = (gTasks[taskId].data[8] << 16) + (u16)gTasks[taskId].data[9]; + r2 -= 16 * (u16)r4; gTasks[taskId].data[8] = r2 >> 16; gTasks[taskId].data[9] = r2; REG_BG3HOFS = gTasks[taskId].data[8]; REG_BG3VOFS = gUnknown_02039358; } } -#else -__attribute__((naked)) -void sub_8148F3C(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - ldr r1, _08148FB4 @ =gTasks\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r3, r0, r1\n\ - ldrh r0, [r3, 0xA]\n\ - lsls r4, r0, 16\n\ - adds r6, r1, 0\n\ - cmp r4, 0\n\ - beq _08148F7C\n\ - movs r1, 0xC\n\ - ldrsh r0, [r3, r1]\n\ - lsls r0, 16\n\ - ldrh r1, [r3, 0xE]\n\ - adds r2, r0, r1\n\ - lsrs r0, r4, 12\n\ - subs r2, r0\n\ - asrs r1, r2, 16\n\ - strh r1, [r3, 0xC]\n\ - strh r2, [r3, 0xE]\n\ - ldr r0, _08148FB8 @ =REG_BG1HOFS\n\ - strh r1, [r0]\n\ - ldr r2, _08148FBC @ =REG_BG1VOFS\n\ - ldr r1, _08148FC0 @ =gUnknown_02039358\n\ - ldr r0, _08148FC4 @ =gUnknown_0203935A\n\ - ldrh r0, [r0]\n\ - ldrh r1, [r1]\n\ - adds r0, r1\n\ - strh r0, [r2]\n\ -_08148F7C:\n\ - ldrh r0, [r3, 0x10]\n\ - lsls r4, r0, 16\n\ - cmp r4, 0\n\ - beq _08148FD8\n\ - movs r1, 0x12\n\ - ldrsh r0, [r3, r1]\n\ - lsls r0, 16\n\ - ldrh r1, [r3, 0x14]\n\ - adds r2, r0, r1\n\ - lsrs r0, r4, 12\n\ - subs r2, r0\n\ - asrs r1, r2, 16\n\ - strh r1, [r3, 0x12]\n\ - strh r2, [r3, 0x14]\n\ - ldr r0, _08148FC8 @ =REG_BG2HOFS\n\ - strh r1, [r0]\n\ - movs r1, 0x8\n\ - ldrsh r0, [r3, r1]\n\ - cmp r0, 0\n\ - beq _08148FD0\n\ - ldr r2, _08148FCC @ =REG_BG2VOFS\n\ - ldr r1, _08148FC0 @ =gUnknown_02039358\n\ - ldr r0, _08148FC4 @ =gUnknown_0203935A\n\ - ldrh r0, [r0]\n\ - ldrh r1, [r1]\n\ - adds r0, r1\n\ - strh r0, [r2]\n\ - b _08148FD8\n\ - .align 2, 0\n\ -_08148FB4: .4byte gTasks\n\ -_08148FB8: .4byte REG_BG1HOFS\n\ -_08148FBC: .4byte REG_BG1VOFS\n\ -_08148FC0: .4byte gUnknown_02039358\n\ -_08148FC4: .4byte gUnknown_0203935A\n\ -_08148FC8: .4byte REG_BG2HOFS\n\ -_08148FCC: .4byte REG_BG2VOFS\n\ -_08148FD0:\n\ - ldr r0, _08149010 @ =REG_BG2VOFS\n\ - ldr r1, _08149014 @ =gUnknown_02039358\n\ - ldrh r1, [r1]\n\ - strh r1, [r0]\n\ -_08148FD8:\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r3, r0, r6\n\ - ldrh r0, [r3, 0x16]\n\ - lsls r4, r0, 16\n\ - cmp r4, 0\n\ - beq _08149008\n\ - movs r1, 0x18\n\ - ldrsh r0, [r3, r1]\n\ - lsls r0, 16\n\ - ldrh r1, [r3, 0x1A]\n\ - adds r2, r0, r1\n\ - lsrs r0, r4, 12\n\ - subs r2, r0\n\ - asrs r1, r2, 16\n\ - strh r1, [r3, 0x18]\n\ - strh r2, [r3, 0x1A]\n\ - ldr r0, _08149018 @ =REG_BG3HOFS\n\ - strh r1, [r0]\n\ - ldr r1, _0814901C @ =REG_BG3VOFS\n\ - ldr r0, _08149014 @ =gUnknown_02039358\n\ - ldrh r0, [r0]\n\ - strh r0, [r1]\n\ -_08149008:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08149010: .4byte REG_BG2VOFS\n\ -_08149014: .4byte gUnknown_02039358\n\ -_08149018: .4byte REG_BG3HOFS\n\ -_0814901C: .4byte REG_BG3VOFS\n\ - .syntax divided\n"); -} -#endif void sub_8149020(u8 mode) { |