diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_interface.c | 788 |
1 files changed, 788 insertions, 0 deletions
diff --git a/src/battle_interface.c b/src/battle_interface.c index e8a1f5a02..77ac1db80 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -885,6 +885,794 @@ void SwapHpBarsWithHpText(void) } } +#define tBattler data[0] +#define tSummaryBarSpriteId data[1] +#define tBallIconSpriteId(n) data[3 + n] +#define tIsBattleStart data[10] +#define tData15 data[15] + +#ifdef NONMATCHING +u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart) +{ + bool8 isOpponent; + s8 sp14; + s16 bar_X, bar_Y, bar_pos2_X, bar_data0; + s32 i; + u8 summaryBarSpriteId; + u8 ballIconSpritesIds[PARTY_SIZE]; + u8 taskId; + + if (!arg2 || GetBattlerPosition(battlerId) != B_POSITION_OPPONENT_RIGHT) + { + if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) + { + isOpponent = FALSE; + bar_X = 136, bar_Y = 96; + bar_pos2_X = 100; + bar_data0 = -5; + } + else + { + isOpponent = TRUE; + + if (!arg2 || !IsDoubleBattle()) + bar_X = 104, bar_Y = 40; + else + bar_X = 104, bar_Y = 16; + + bar_pos2_X = -100; + bar_data0 = 5; + } + } + else + { + isOpponent = TRUE; + bar_X = 104, bar_Y = 40; + bar_pos2_X = -100; + bar_data0 = 5; + } + + for (i = 0, sp14 = 0; i < PARTY_SIZE; i++) + { + if (partyInfo[i].hp != 0xFFFF) + sp14++; + } + + LoadCompressedSpriteSheetUsingHeap(&sStatusSummaryBarSpriteSheets[isOpponent]); + LoadSpriteSheet(&sStatusSummaryBallsSpriteSheets[isOpponent]); + LoadSpritePalette(&sStatusSummaryBarSpritePals[isOpponent]); + LoadSpritePalette(&sStatusSummaryBallsSpritePals[isOpponent]); + + summaryBarSpriteId = CreateSprite(&sStatusSummaryBarSpriteTemplates[isOpponent], bar_X, bar_Y, 10); + SetSubspriteTables(&gSprites[summaryBarSpriteId], sStatusSummaryBar_SubspriteTable); + gSprites[summaryBarSpriteId].pos2.x = bar_pos2_X; + gSprites[summaryBarSpriteId].data[0] = bar_data0; + + if (isOpponent) + { + gSprites[summaryBarSpriteId].pos1.x -= 96; + gSprites[summaryBarSpriteId].oam.matrixNum = ST_OAM_HFLIP; + } + else + { + gSprites[summaryBarSpriteId].pos1.x += 96; + } + + for (i = 0; i < PARTY_SIZE; i++) + { + ballIconSpritesIds[i] = CreateSpriteAtEnd(&sStatusSummaryBallsSpriteTemplates[isOpponent], bar_X, bar_Y - 4, 9); + + if (!isBattleStart) + gSprites[ballIconSpritesIds[i]].callback = SpriteCB_StatusSummaryBallsOnSwitchout; + + if (!isOpponent) + { + gSprites[ballIconSpritesIds[i]].pos2.x = 0; + gSprites[ballIconSpritesIds[i]].pos2.y = 0; + } + + gSprites[ballIconSpritesIds[i]].data[0] = summaryBarSpriteId; + + if (!isOpponent) + { + gSprites[ballIconSpritesIds[i]].pos1.x += 10 * i + 24; + gSprites[ballIconSpritesIds[i]].data[1] = i * 7 + 10; + gSprites[ballIconSpritesIds[i]].pos2.x = 120; + } + else + { + gSprites[ballIconSpritesIds[i]].pos1.x -= 10 * (5 - i) + 24; + gSprites[ballIconSpritesIds[i]].data[1] = (6 - i) * 7 + 10; + gSprites[ballIconSpritesIds[i]].pos2.x = -120; + } + + gSprites[ballIconSpritesIds[i]].data[2] = isOpponent; + } + + if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) + { + for (i = 0; i < PARTY_SIZE; i++) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (partyInfo[i].hp == 0xFFFF) // empty slot or an egg + { + gSprites[ballIconSpritesIds[i]].oam.tileNum += 1; + gSprites[ballIconSpritesIds[i]].data[7] = 1; + } + else if (partyInfo[i].hp == 0) // fainted mon + { + gSprites[ballIconSpritesIds[i]].oam.tileNum += 3; + } + else if (partyInfo[i].status != 0) // mon with major status + { + gSprites[ballIconSpritesIds[i]].oam.tileNum += 2; + } + } + else + { + if (i >= sp14) // empty slot or an egg + { + gSprites[ballIconSpritesIds[i]].oam.tileNum += 1; + gSprites[ballIconSpritesIds[i]].data[7] = 1; + } + else if (partyInfo[i].hp == 0) // fainted mon + { + gSprites[ballIconSpritesIds[i]].oam.tileNum += 3; + } + else if (partyInfo[i].status != 0) // mon with major status + { + gSprites[ballIconSpritesIds[i]].oam.tileNum += 2; + } + } + } + } + else + { + /* + * FIXME: r4 and r5 are loaded correctly but in the wrong + * order. + */ + for (i = 0; i < PARTY_SIZE; i++) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (partyInfo[i].hp == 0xFFFF) // empty slot or an egg + { + gSprites[ballIconSpritesIds[5 - i]].oam.tileNum += 1; + gSprites[ballIconSpritesIds[5 - i]].data[7] = 1; + } + else if (partyInfo[i].hp == 0) // fainted mon + { + gSprites[ballIconSpritesIds[5 - i]].oam.tileNum += 3; + } + else if (partyInfo[i].status != 0) // mon with major status + { + gSprites[ballIconSpritesIds[5 - i]].oam.tileNum += 2; + } + } + else + { + if (i >= sp14) // empty slot or an egg + { + gSprites[ballIconSpritesIds[5 - i]].oam.tileNum += 1; + gSprites[ballIconSpritesIds[5 - i]].data[7] = 1; + } + else if (partyInfo[i].hp == 0) // fainted mon + { + gSprites[ballIconSpritesIds[5 - i]].oam.tileNum += 3; + } + else if (partyInfo[i].status != 0) // mon with major status + { + gSprites[ballIconSpritesIds[5 - i]].oam.tileNum += 2; + } + } + } + } + + taskId = CreateTask(TaskDummy, 5); + gTasks[taskId].tBattler = battlerId; + gTasks[taskId].tSummaryBarSpriteId = summaryBarSpriteId; + + for (i = 0; i < PARTY_SIZE; i++) + gTasks[taskId].tBallIconSpriteId(i) = ballIconSpritesIds[i]; + + gTasks[taskId].tIsBattleStart = isBattleStart; + PlaySE12WithPanning(SE_TB_START, 0); + return taskId; +} +#else +NAKED +u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x28\n" + "\tstr r1, [sp, 0xC]\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tstr r0, [sp, 0x8]\n" + "\tlsls r2, 24\n" + "\tlsrs r2, 24\n" + "\tadds r4, r2, 0\n" + "\tlsls r3, 24\n" + "\tlsrs r3, 24\n" + "\tstr r3, [sp, 0x10]\n" + "\tcmp r4, 0\n" + "\tbeq _08048D44\n" + "\tbl GetBattlerPosition\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x3\n" + "\tbeq _08048D88\n" + "_08048D44:\n" + "\tldr r0, [sp, 0x8]\n" + "\tbl GetBattlerSide\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _08048D64\n" + "\tmovs r7, 0\n" + "\tmovs r1, 0x88\n" + "\tmovs r2, 0x60\n" + "\tmovs r0, 0x64\n" + "\tmov r8, r0\n" + "\tldr r5, _08048D60 @ =0x0000fffb\n" + "\tb _08048D94\n" + "\t.align 2, 0\n" + "_08048D60: .4byte 0x0000fffb\n" + "_08048D64:\n" + "\tmovs r7, 0x1\n" + "\tcmp r4, 0\n" + "\tbeq _08048D74\n" + "\tbl IsDoubleBattle\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _08048D7A\n" + "_08048D74:\n" + "\tmovs r1, 0x68\n" + "\tmovs r2, 0x28\n" + "\tb _08048D7E\n" + "_08048D7A:\n" + "\tmovs r1, 0x68\n" + "\tmovs r2, 0x10\n" + "_08048D7E:\n" + "\tldr r3, _08048D84 @ =0x0000ff9c\n" + "\tmov r8, r3\n" + "\tb _08048D92\n" + "\t.align 2, 0\n" + "_08048D84: .4byte 0x0000ff9c\n" + "_08048D88:\n" + "\tmovs r7, 0x1\n" + "\tmovs r1, 0x68\n" + "\tmovs r2, 0x28\n" + "\tldr r5, _08048E40 @ =0x0000ff9c\n" + "\tmov r8, r5\n" + "_08048D92:\n" + "\tmovs r5, 0x5\n" + "_08048D94:\n" + "\tmovs r6, 0\n" + "\tstr r6, [sp, 0x14]\n" + "\tlsls r4, r7, 3\n" + "\tldr r0, _08048E44 @ =sStatusSummaryBarSpriteSheets\n" + "\tmov r10, r0\n" + "\tlsls r3, r7, 1\n" + "\tmov r9, r3\n" + "\tlsls r1, 16\n" + "\tstr r1, [sp, 0x20]\n" + "\tlsls r2, 16\n" + "\tstr r2, [sp, 0x24]\n" + "\tldr r2, _08048E48 @ =0x0000ffff\n" + "\tldr r1, [sp, 0xC]\n" + "\tmovs r6, 0x5\n" + "_08048DB0:\n" + "\tldrh r0, [r1]\n" + "\tcmp r0, r2\n" + "\tbeq _08048DC4\n" + "\tldr r3, [sp, 0x14]\n" + "\tlsls r0, r3, 24\n" + "\tmovs r3, 0x80\n" + "\tlsls r3, 17\n" + "\tadds r0, r3\n" + "\tlsrs r0, 24\n" + "\tstr r0, [sp, 0x14]\n" + "_08048DC4:\n" + "\tadds r1, 0x8\n" + "\tsubs r6, 0x1\n" + "\tcmp r6, 0\n" + "\tbge _08048DB0\n" + "\tmov r6, r10\n" + "\tadds r0, r4, r6\n" + "\tbl LoadCompressedSpriteSheetUsingHeap\n" + "\tldr r0, _08048E4C @ =sStatusSummaryBallsSpriteSheets\n" + "\tadds r0, r4, r0\n" + "\tbl LoadSpriteSheet\n" + "\tldr r0, _08048E50 @ =sStatusSummaryBarSpritePals\n" + "\tadds r0, r4, r0\n" + "\tbl LoadSpritePalette\n" + "\tldr r0, _08048E54 @ =sStatusSummaryBallsSpritePals\n" + "\tadds r0, r4, r0\n" + "\tbl LoadSpritePalette\n" + "\tmov r1, r9\n" + "\tadds r0, r1, r7\n" + "\tlsls r0, 3\n" + "\tldr r1, _08048E58 @ =sStatusSummaryBarSpriteTemplates\n" + "\tadds r0, r1\n" + "\tldr r2, [sp, 0x20]\n" + "\tasrs r1, r2, 16\n" + "\tldr r3, [sp, 0x24]\n" + "\tasrs r2, r3, 16\n" + "\tmovs r3, 0xA\n" + "\tbl CreateSprite\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tstr r0, [sp, 0x18]\n" + "\tlsls r0, 4\n" + "\tldr r6, [sp, 0x18]\n" + "\tadds r0, r6\n" + "\tlsls r0, 2\n" + "\tldr r1, _08048E5C @ =gSprites\n" + "\tadds r4, r0, r1\n" + "\tldr r1, _08048E60 @ =sStatusSummaryBar_SubspriteTable\n" + "\tadds r0, r4, 0\n" + "\tbl SetSubspriteTables\n" + "\tmov r0, r8\n" + "\tstrh r0, [r4, 0x24]\n" + "\tstrh r5, [r4, 0x2E]\n" + "\tcmp r7, 0\n" + "\tbeq _08048E64\n" + "\tldrh r0, [r4, 0x20]\n" + "\tsubs r0, 0x60\n" + "\tstrh r0, [r4, 0x20]\n" + "\tldrb r1, [r4, 0x3]\n" + "\tmovs r0, 0x3F\n" + "\tnegs r0, r0\n" + "\tands r0, r1\n" + "\tmovs r1, 0x10\n" + "\torrs r0, r1\n" + "\tstrb r0, [r4, 0x3]\n" + "\tb _08048E6A\n" + "\t.align 2, 0\n" + "_08048E40: .4byte 0x0000ff9c\n" + "_08048E44: .4byte sStatusSummaryBarSpriteSheets\n" + "_08048E48: .4byte 0x0000ffff\n" + "_08048E4C: .4byte sStatusSummaryBallsSpriteSheets\n" + "_08048E50: .4byte sStatusSummaryBarSpritePals\n" + "_08048E54: .4byte sStatusSummaryBallsSpritePals\n" + "_08048E58: .4byte sStatusSummaryBarSpriteTemplates\n" + "_08048E5C: .4byte gSprites\n" + "_08048E60: .4byte sStatusSummaryBar_SubspriteTable\n" + "_08048E64:\n" + "\tldrh r0, [r4, 0x20]\n" + "\tadds r0, 0x60\n" + "\tstrh r0, [r4, 0x20]\n" + "_08048E6A:\n" + "\tmovs r6, 0\n" + "\tldr r1, _08048F14 @ =gSprites\n" + "\tmov r10, r1\n" + "\tmov r4, sp\n" + "\tmov r2, r9\n" + "\tadds r0, r2, r7\n" + "\tlsls r0, 3\n" + "\tstr r0, [sp, 0x1C]\n" + "\tmovs r3, 0xA\n" + "\tmov r9, r3\n" + "\tmov r8, r6\n" + "_08048E80:\n" + "\tldr r0, _08048F18 @ =sStatusSummaryBallsSpriteTemplates\n" + "\tldr r5, [sp, 0x24]\n" + "\tldr r1, _08048F1C @ =0xfffc0000\n" + "\tadds r2, r5, r1\n" + "\tldr r3, [sp, 0x1C]\n" + "\tadds r0, r3, r0\n" + "\tldr r5, [sp, 0x20]\n" + "\tasrs r1, r5, 16\n" + "\tasrs r2, 16\n" + "\tmovs r3, 0x9\n" + "\tbl CreateSpriteAtEnd\n" + "\tstrb r0, [r4]\n" + "\tldr r0, [sp, 0x10]\n" + "\tcmp r0, 0\n" + "\tbne _08048EB0\n" + "\tldrb r0, [r4]\n" + "\tlsls r1, r0, 4\n" + "\tadds r1, r0\n" + "\tlsls r1, 2\n" + "\tldr r2, _08048F20 @ =gSprites + 0x1C\n" + "\tadds r1, r2\n" + "\tldr r0, _08048F24 @ =SpriteCB_StatusSummaryBallsOnSwitchout\n" + "\tstr r0, [r1]\n" + "_08048EB0:\n" + "\tldr r5, _08048F14 @ =gSprites\n" + "\tcmp r7, 0\n" + "\tbne _08048ECE\n" + "\tldrb r1, [r4]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadd r0, r10\n" + "\tstrh r7, [r0, 0x24]\n" + "\tldrb r1, [r4]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadd r0, r10\n" + "\tstrh r7, [r0, 0x26]\n" + "_08048ECE:\n" + "\tldrb r1, [r4]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r5\n" + "\tmovs r1, 0\n" + "\tmov r3, sp\n" + "\tldrh r3, [r3, 0x18]\n" + "\tstrh r3, [r0, 0x2E]\n" + "\tcmp r7, 0\n" + "\tbne _08048F28\n" + "\tldrb r0, [r4]\n" + "\tlsls r1, r0, 4\n" + "\tadds r1, r0\n" + "\tlsls r1, 2\n" + "\tadds r1, r5\n" + "\tldrh r0, [r1, 0x20]\n" + "\tadds r0, 0x18\n" + "\tadd r0, r8\n" + "\tstrh r0, [r1, 0x20]\n" + "\tldrb r1, [r4]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r5\n" + "\tmov r1, r9\n" + "\tstrh r1, [r0, 0x30]\n" + "\tldrb r1, [r4]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r5\n" + "\tmovs r1, 0x78\n" + "\tb _08048F66\n" + "\t.align 2, 0\n" + "_08048F14: .4byte gSprites\n" + "_08048F18: .4byte sStatusSummaryBallsSpriteTemplates\n" + "_08048F1C: .4byte 0xfffc0000\n" + "_08048F20: .4byte gSprites + 0x1C\n" + "_08048F24: .4byte SpriteCB_StatusSummaryBallsOnSwitchout\n" + "_08048F28:\n" + "\tldrb r0, [r4]\n" + "\tlsls r2, r0, 4\n" + "\tadds r2, r0\n" + "\tlsls r2, 2\n" + "\tadds r2, r5\n" + "\tldrh r3, [r2, 0x20]\n" + "\tsubs r3, 0x18\n" + "\tmovs r1, 0x5\n" + "\tsubs r1, r6\n" + "\tlsls r0, r1, 2\n" + "\tadds r0, r1\n" + "\tlsls r0, 1\n" + "\tsubs r3, r0\n" + "\tstrh r3, [r2, 0x20]\n" + "\tldrb r0, [r4]\n" + "\tlsls r2, r0, 4\n" + "\tadds r2, r0\n" + "\tlsls r2, 2\n" + "\tadds r2, r5\n" + "\tmovs r1, 0x6\n" + "\tsubs r1, r6\n" + "\tlsls r0, r1, 3\n" + "\tsubs r0, r1\n" + "\tadds r0, 0xA\n" + "\tstrh r0, [r2, 0x30]\n" + "\tldrb r1, [r4]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r5\n" + "\tldr r1, _08048FD4 @ =0x0000ff88\n" + "_08048F66:\n" + "\tstrh r1, [r0, 0x24]\n" + "\tldrb r1, [r4]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r5\n" + "\tstrh r7, [r0, 0x32]\n" + "\tadds r4, 0x1\n" + "\tmovs r2, 0x7\n" + "\tadd r9, r2\n" + "\tmovs r3, 0xA\n" + "\tadd r8, r3\n" + "\tadds r6, 0x1\n" + "\tcmp r6, 0x5\n" + "\tbgt _08048F86\n" + "\tb _08048E80\n" + "_08048F86:\n" + "\tldr r0, [sp, 0x8]\n" + "\tbl GetBattlerSide\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _0804906E\n" + "\tmovs r6, 0\n" + "\tldr r5, _08048FD8 @ =gBattleTypeFlags\n" + "\tmov r10, r5\n" + "\tldr r0, _08048FDC @ =0x0000ffff\n" + "\tmov r9, r0\n" + "\tldr r7, _08048FE0 @ =gSprites\n" + "\tldr r1, _08048FE4 @ =0x000003ff\n" + "\tmov r12, r1\n" + "\tldr r2, _08048FE8 @ =0xfffffc00\n" + "\tmov r8, r2\n" + "\tmov r4, sp\n" + "\tldr r5, [sp, 0xC]\n" + "_08048FAA:\n" + "\tmov r3, r10\n" + "\tldr r0, [r3]\n" + "\tmovs r1, 0x40\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _08048FEC\n" + "\tldrh r0, [r5]\n" + "\tcmp r0, r9\n" + "\tbeq _08048FF6\n" + "\tcmp r0, 0\n" + "\tbne _0804903E\n" + "\tldrb r0, [r4]\n" + "\tlsls r2, r0, 4\n" + "\tadds r2, r0\n" + "\tlsls r2, 2\n" + "\tadds r2, r7\n" + "\tldrh r3, [r2, 0x4]\n" + "\tlsls r1, r3, 22\n" + "\tlsrs r1, 22\n" + "\tadds r1, 0x3\n" + "\tb _08049056\n" + "\t.align 2, 0\n" + "_08048FD4: .4byte 0x0000ff88\n" + "_08048FD8: .4byte gBattleTypeFlags\n" + "_08048FDC: .4byte 0x0000ffff\n" + "_08048FE0: .4byte gSprites\n" + "_08048FE4: .4byte 0x000003ff\n" + "_08048FE8: .4byte 0xfffffc00\n" + "_08048FEC:\n" + "\tldr r1, [sp, 0x14]\n" + "\tlsls r0, r1, 24\n" + "\tasrs r0, 24\n" + "\tcmp r6, r0\n" + "\tblt _08049024\n" + "_08048FF6:\n" + "\tldrb r0, [r4]\n" + "\tlsls r2, r0, 4\n" + "\tadds r2, r0\n" + "\tlsls r2, 2\n" + "\tadds r2, r7\n" + "\tldrh r3, [r2, 0x4]\n" + "\tlsls r1, r3, 22\n" + "\tlsrs r1, 22\n" + "\tadds r1, 0x1\n" + "\tmov r0, r12\n" + "\tands r1, r0\n" + "\tmov r0, r8\n" + "\tands r0, r3\n" + "\torrs r0, r1\n" + "\tstrh r0, [r2, 0x4]\n" + "\tldrb r1, [r4]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r7\n" + "\tmovs r1, 0x1\n" + "\tstrh r1, [r0, 0x3C]\n" + "\tb _08049062\n" + "_08049024:\n" + "\tldrh r0, [r5]\n" + "\tcmp r0, 0\n" + "\tbne _0804903E\n" + "\tldrb r0, [r4]\n" + "\tlsls r2, r0, 4\n" + "\tadds r2, r0\n" + "\tlsls r2, 2\n" + "\tadds r2, r7\n" + "\tldrh r3, [r2, 0x4]\n" + "\tlsls r1, r3, 22\n" + "\tlsrs r1, 22\n" + "\tadds r1, 0x3\n" + "\tb _08049056\n" + "_0804903E:\n" + "\tldr r0, [r5, 0x4]\n" + "\tcmp r0, 0\n" + "\tbeq _08049062\n" + "\tldrb r0, [r4]\n" + "\tlsls r2, r0, 4\n" + "\tadds r2, r0\n" + "\tlsls r2, 2\n" + "\tadds r2, r7\n" + "\tldrh r3, [r2, 0x4]\n" + "\tlsls r1, r3, 22\n" + "\tlsrs r1, 22\n" + "\tadds r1, 0x2\n" + "_08049056:\n" + "\tmov r0, r12\n" + "\tands r1, r0\n" + "\tmov r0, r8\n" + "\tands r0, r3\n" + "\torrs r0, r1\n" + "\tstrh r0, [r2, 0x4]\n" + "_08049062:\n" + "\tadds r4, 0x1\n" + "\tadds r5, 0x8\n" + "\tadds r6, 0x1\n" + "\tcmp r6, 0x5\n" + "\tble _08048FAA\n" + "\tb _08049148\n" + "_0804906E:\n" + "\tmovs r6, 0\n" + "\tldr r1, _080490B4 @ =gBattleTypeFlags\n" + "\tmov r10, r1\n" + "\tldr r2, _080490B8 @ =0x0000ffff\n" + "\tmov r9, r2\n" + "\tldr r7, _080490BC @ =gSprites\n" + "\tldr r3, _080490C0 @ =0x000003ff\n" + "\tmov r12, r3\n" + "\tldr r5, _080490C4 @ =0xfffffc00\n" + "\tmov r8, r5\n" + "\tldr r5, [sp, 0xC]\n" + "\tmov r4, sp\n" + "\tadds r4, 0x5\n" + "_08049088:\n" + "\tmov r1, r10\n" + "\tldr r0, [r1]\n" + "\tmovs r1, 0x40\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _080490C8\n" + "\tldrh r0, [r5]\n" + "\tcmp r0, r9\n" + "\tbeq _080490D2\n" + "\tcmp r0, 0\n" + "\tbne _0804911A\n" + "\tldrb r0, [r4]\n" + "\tlsls r2, r0, 4\n" + "\tadds r2, r0\n" + "\tlsls r2, 2\n" + "\tadds r2, r7\n" + "\tldrh r3, [r2, 0x4]\n" + "\tlsls r1, r3, 22\n" + "\tlsrs r1, 22\n" + "\tadds r1, 0x3\n" + "\tb _08049132\n" + "\t.align 2, 0\n" + "_080490B4: .4byte gBattleTypeFlags\n" + "_080490B8: .4byte 0x0000ffff\n" + "_080490BC: .4byte gSprites\n" + "_080490C0: .4byte 0x000003ff\n" + "_080490C4: .4byte 0xfffffc00\n" + "_080490C8:\n" + "\tldr r1, [sp, 0x14]\n" + "\tlsls r0, r1, 24\n" + "\tasrs r0, 24\n" + "\tcmp r6, r0\n" + "\tblt _08049100\n" + "_080490D2:\n" + "\tldrb r0, [r4]\n" + "\tlsls r2, r0, 4\n" + "\tadds r2, r0\n" + "\tlsls r2, 2\n" + "\tadds r2, r7\n" + "\tldrh r3, [r2, 0x4]\n" + "\tlsls r1, r3, 22\n" + "\tlsrs r1, 22\n" + "\tadds r1, 0x1\n" + "\tmov r0, r12\n" + "\tands r1, r0\n" + "\tmov r0, r8\n" + "\tands r0, r3\n" + "\torrs r0, r1\n" + "\tstrh r0, [r2, 0x4]\n" + "\tldrb r1, [r4]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r7\n" + "\tmovs r1, 0x1\n" + "\tstrh r1, [r0, 0x3C]\n" + "\tb _0804913E\n" + "_08049100:\n" + "\tldrh r0, [r5]\n" + "\tcmp r0, 0\n" + "\tbne _0804911A\n" + "\tldrb r0, [r4]\n" + "\tlsls r2, r0, 4\n" + "\tadds r2, r0\n" + "\tlsls r2, 2\n" + "\tadds r2, r7\n" + "\tldrh r3, [r2, 0x4]\n" + "\tlsls r1, r3, 22\n" + "\tlsrs r1, 22\n" + "\tadds r1, 0x3\n" + "\tb _08049132\n" + "_0804911A:\n" + "\tldr r0, [r5, 0x4]\n" + "\tcmp r0, 0\n" + "\tbeq _0804913E\n" + "\tldrb r0, [r4]\n" + "\tlsls r2, r0, 4\n" + "\tadds r2, r0\n" + "\tlsls r2, 2\n" + "\tadds r2, r7\n" + "\tldrh r3, [r2, 0x4]\n" + "\tlsls r1, r3, 22\n" + "\tlsrs r1, 22\n" + "\tadds r1, 0x2\n" + "_08049132:\n" + "\tmov r0, r12\n" + "\tands r1, r0\n" + "\tmov r0, r8\n" + "\tands r0, r3\n" + "\torrs r0, r1\n" + "\tstrh r0, [r2, 0x4]\n" + "_0804913E:\n" + "\tsubs r4, 0x1\n" + "\tadds r5, 0x8\n" + "\tadds r6, 0x1\n" + "\tcmp r6, 0x5\n" + "\tble _08049088\n" + "_08049148:\n" + "\tldr r0, _080491A8 @ =TaskDummy\n" + "\tmovs r1, 0x5\n" + "\tbl CreateTask\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tldr r2, _080491AC @ =gTasks\n" + "\tlsls r3, r4, 2\n" + "\tadds r1, r3, r4\n" + "\tlsls r1, 3\n" + "\tadds r0, r1, r2\n" + "\tmov r5, sp\n" + "\tldrh r5, [r5, 0x8]\n" + "\tstrh r5, [r0, 0x8]\n" + "\tmov r6, sp\n" + "\tldrh r6, [r6, 0x18]\n" + "\tstrh r6, [r0, 0xA]\n" + "\tmovs r6, 0\n" + "\tadds r0, r2, 0\n" + "\tadds r0, 0xE\n" + "\tadds r1, r0\n" + "_08049172:\n" + "\tmov r5, sp\n" + "\tadds r0, r5, r6\n" + "\tldrb r0, [r0]\n" + "\tstrh r0, [r1]\n" + "\tadds r1, 0x2\n" + "\tadds r6, 0x1\n" + "\tcmp r6, 0x5\n" + "\tble _08049172\n" + "\tadds r0, r3, r4\n" + "\tlsls r0, 3\n" + "\tadds r0, r2\n" + "\tldrh r6, [r5, 0x10]\n" + "\tstrh r6, [r0, 0x1C]\n" + "\tmovs r0, 0x6B\n" + "\tmovs r1, 0\n" + "\tbl PlaySE12WithPanning\n" + "\tadds r0, r4, 0\n" + "\tadd sp, 0x28\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r1}\n" + "\tbx r1\n" + "\t.align 2, 0\n" + "_080491A8: .4byte TaskDummy\n" + "_080491AC: .4byte gTasks"); +} +#endif //NONMATCHING + const u8 gUnknown_8260556[] = _("{HIGHLIGHT 02}"); const u16 gUnknown_826055A[] = { |