summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/pokemon.c356
1 files changed, 6 insertions, 350 deletions
diff --git a/src/pokemon.c b/src/pokemon.c
index 57633dbad..7989045c2 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -6094,7 +6094,6 @@ static void OakSpeechNidoranFSetupTemplateDummy(struct OakSpeechNidoranFStruct *
}
}
-#ifdef NONMATCHING
struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8 enable)
{
s32 size;
@@ -6134,8 +6133,7 @@ struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8
battlePosition = 1;
if (battlePosition > 8)
battlePosition = 8;
- // The following two statements refused to cooperate.
- sOakSpeechNidoranResources->spriteCount = battlePosition;
+ sOakSpeechNidoranResources->spriteCount = (battlePosition << 16) >> 16;
sOakSpeechNidoranResources->battlePosition = battlePosition;
sOakSpeechNidoranResources->frameCount = 4;
sOakSpeechNidoranResources->enable2 = FALSE;
@@ -6151,8 +6149,11 @@ struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8
}
else
{
- for (i = 0; i < (s8)sOakSpeechNidoranResources->spriteCount; ++i)
- sOakSpeechNidoranResources->bufferPtrs[i] = &sOakSpeechNidoranResources->dataBuffer[sOakSpeechNidoranResources->sizePerSprite * i];
+ do
+ {
+ for (i = 0; i < (s8)sOakSpeechNidoranResources->spriteCount; ++i)
+ sOakSpeechNidoranResources->bufferPtrs[i] = &sOakSpeechNidoranResources->dataBuffer[sOakSpeechNidoranResources->sizePerSprite * i];
+ } while (0);
}
sOakSpeechNidoranResources->templates = AllocZeroed(sizeof(struct SpriteTemplate) * sOakSpeechNidoranResources->spriteCount);
sOakSpeechNidoranResources->frameImages = AllocZeroed(sOakSpeechNidoranResources->spriteCount * sizeof(struct SpriteFrameImage) * sOakSpeechNidoranResources->frameCount);
@@ -6200,351 +6201,6 @@ struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8
}
return sOakSpeechNidoranResources;
}
-#else
-NAKED
-struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8 enable)
-{
- asm_unified("\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- lsls r1, 24\n\
- lsrs r5, r1, 24\n\
- movs r0, 0\n\
- mov r8, r0\n\
- ldr r4, _08044B34 @ =sOakSpeechNidoranResources\n\
- ldr r1, [r4]\n\
- cmp r1, 0\n\
- beq _08044B1E\n\
- ldrb r0, [r1, 0x2]\n\
- cmp r0, 0xA3\n\
- beq _08044B2E\n\
- adds r0, r1, 0\n\
- movs r1, 0\n\
- movs r2, 0x18\n\
- bl memset\n\
- mov r1, r8\n\
- str r1, [r4]\n\
- _08044B1E:\n\
- ldr r4, _08044B34 @ =sOakSpeechNidoranResources\n\
- movs r0, 0x18\n\
- bl AllocZeroed\n\
- adds r2, r0, 0\n\
- str r2, [r4]\n\
- cmp r2, 0\n\
- bne _08044B38\n\
- _08044B2E:\n\
- movs r0, 0\n\
- b _08044D70\n\
- .align 2, 0\n\
- _08044B34: .4byte sOakSpeechNidoranResources\n\
- _08044B38:\n\
- cmp r5, 0\n\
- beq _08044B94\n\
- cmp r5, 0x1\n\
- bne _08044B94\n\
- cmp r6, 0x4\n\
- bne _08044B5E\n\
- ldrb r1, [r2]\n\
- movs r0, 0x10\n\
- negs r0, r0\n\
- ands r0, r1\n\
- movs r1, 0x4\n\
- orrs r0, r1\n\
- strb r0, [r2]\n\
- ldr r2, [r4]\n\
- ldrb r1, [r2]\n\
- movs r0, 0xF\n\
- ands r0, r1\n\
- movs r1, 0x40\n\
- b _08044B7C\n\
- _08044B5E:\n\
- cmp r6, 0x4\n\
- bls _08044B64\n\
- movs r6, 0\n\
- _08044B64:\n\
- ldrb r1, [r2]\n\
- movs r0, 0x10\n\
- negs r0, r0\n\
- ands r0, r1\n\
- movs r1, 0x1\n\
- orrs r0, r1\n\
- strb r0, [r2]\n\
- ldr r2, [r4]\n\
- ldrb r1, [r2]\n\
- movs r0, 0xF\n\
- ands r0, r1\n\
- movs r1, 0x10\n\
- _08044B7C:\n\
- orrs r0, r1\n\
- strb r0, [r2]\n\
- ldr r2, _08044B90 @ =sOakSpeechNidoranResources\n\
- ldr r1, [r2]\n\
- movs r0, 0x4\n\
- strb r0, [r1, 0x1]\n\
- ldr r1, [r2]\n\
- movs r0, 0x1\n\
- strb r0, [r1, 0x3]\n\
- b _08044BD0\n\
- .align 2, 0\n\
- _08044B90: .4byte sOakSpeechNidoranResources\n\
- _08044B94:\n\
- cmp r6, 0\n\
- bne _08044B9A\n\
- movs r6, 0x1\n\
- _08044B9A:\n\
- cmp r6, 0x8\n\
- bls _08044BA0\n\
- movs r6, 0x8\n\
- _08044BA0:\n\
- ldr r4, _08044C10 @ =sOakSpeechNidoranResources\n\
- ldr r3, [r4]\n\
- movs r0, 0xF\n\
- adds r1, r6, 0\n\
- ands r1, r0\n\
- ldrb r2, [r3]\n\
- movs r0, 0x10\n\
- negs r0, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r3]\n\
- ldr r2, [r4]\n\
- lsls r3, r6, 4\n\
- ldrb r1, [r2]\n\
- movs r0, 0xF\n\
- ands r0, r1\n\
- orrs r0, r3\n\
- strb r0, [r2]\n\
- ldr r1, [r4]\n\
- movs r2, 0\n\
- movs r0, 0x4\n\
- strb r0, [r1, 0x1]\n\
- ldr r0, [r4]\n\
- strb r2, [r0, 0x3]\n\
- _08044BD0:\n\
- ldr r5, _08044C10 @ =sOakSpeechNidoranResources\n\
- ldr r0, [r5]\n\
- ldrb r1, [r0, 0x1]\n\
- lsls r1, 11\n\
- str r1, [r0, 0x4]\n\
- ldrb r0, [r0]\n\
- lsls r0, 28\n\
- lsrs r0, 28\n\
- muls r0, r1\n\
- bl AllocZeroed\n\
- ldr r1, [r5]\n\
- str r0, [r1, 0x8]\n\
- ldrb r0, [r1]\n\
- lsls r0, 28\n\
- lsrs r0, 23\n\
- bl AllocZeroed\n\
- adds r2, r0, 0\n\
- ldr r1, [r5]\n\
- str r2, [r1, 0xC]\n\
- ldr r0, [r1, 0x8]\n\
- cmp r0, 0\n\
- beq _08044C04\n\
- cmp r2, 0\n\
- bne _08044C14\n\
- _08044C04:\n\
- movs r0, 0x1\n\
- mov r1, r8\n\
- orrs r1, r0\n\
- mov r8, r1\n\
- b _08044C44\n\
- .align 2, 0\n\
- _08044C10: .4byte sOakSpeechNidoranResources\n\
- _08044C14:\n\
- ldrb r0, [r1]\n\
- lsls r0, 28\n\
- movs r4, 0\n\
- adds r3, r5, 0\n\
- cmp r0, 0\n\
- beq _08044C44\n\
- _08044C20:\n\
- ldr r3, [r5]\n\
- ldr r0, [r3, 0xC]\n\
- lsls r1, r4, 2\n\
- adds r1, r0\n\
- ldr r0, [r3, 0x4]\n\
- adds r2, r0, 0\n\
- muls r2, r4\n\
- ldr r0, [r3, 0x8]\n\
- adds r0, r2\n\
- str r0, [r1]\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- ldrb r0, [r3]\n\
- lsls r0, 28\n\
- lsrs r0, 28\n\
- cmp r4, r0\n\
- blt _08044C20\n\
- _08044C44:\n\
- ldr r5, _08044C8C @ =sOakSpeechNidoranResources\n\
- ldr r0, [r5]\n\
- ldrb r1, [r0]\n\
- lsls r1, 28\n\
- lsrs r1, 28\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 3\n\
- bl AllocZeroed\n\
- ldr r2, [r5]\n\
- str r0, [r2, 0x10]\n\
- ldrb r1, [r2]\n\
- lsls r1, 28\n\
- lsrs r1, 28\n\
- ldrb r0, [r2, 0x1]\n\
- lsls r0, 3\n\
- muls r0, r1\n\
- bl AllocZeroed\n\
- adds r2, r0, 0\n\
- ldr r1, [r5]\n\
- str r2, [r1, 0x14]\n\
- ldr r0, [r1, 0x10]\n\
- cmp r0, 0\n\
- beq _08044C7C\n\
- cmp r2, 0\n\
- bne _08044C90\n\
- _08044C7C:\n\
- movs r0, 0x2\n\
- mov r1, r8\n\
- orrs r1, r0\n\
- lsls r0, r1, 24\n\
- lsrs r0, 24\n\
- mov r8, r0\n\
- b _08044CE2\n\
- .align 2, 0\n\
- _08044C8C: .4byte sOakSpeechNidoranResources\n\
- _08044C90:\n\
- movs r4, 0\n\
- ldrb r0, [r1, 0x1]\n\
- ldrb r1, [r1]\n\
- lsls r1, 28\n\
- lsrs r1, 28\n\
- muls r0, r1\n\
- adds r3, r5, 0\n\
- cmp r4, r0\n\
- bge _08044CC6\n\
- adds r7, r3, 0\n\
- movs r5, 0x80\n\
- lsls r5, 4\n\
- _08044CA8:\n\
- ldr r2, [r7]\n\
- ldr r1, [r2, 0x14]\n\
- lsls r0, r4, 3\n\
- adds r0, r1\n\
- strh r5, [r0, 0x4]\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- ldrb r1, [r2, 0x1]\n\
- ldrb r0, [r2]\n\
- lsls r0, 28\n\
- lsrs r0, 28\n\
- muls r0, r1\n\
- cmp r4, r0\n\
- blt _08044CA8\n\
- _08044CC6:\n\
- ldr r0, [r3]\n\
- ldrb r4, [r0, 0x3]\n\
- cmp r4, 0\n\
- beq _08044CDA\n\
- cmp r4, 0x1\n\
- bne _08044CDA\n\
- adds r1, r6, 0\n\
- bl OakSpeechNidoranFSetupTemplate\n\
- b _08044CE2\n\
- _08044CDA:\n\
- ldr r0, _08044D60 @ =sOakSpeechNidoranResources\n\
- ldr r0, [r0]\n\
- bl OakSpeechNidoranFSetupTemplateDummy\n\
- _08044CE2:\n\
- movs r0, 0x2\n\
- mov r1, r8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08044D12\n\
- ldr r4, _08044D60 @ =sOakSpeechNidoranResources\n\
- ldr r0, [r4]\n\
- ldr r0, [r0, 0x14]\n\
- cmp r0, 0\n\
- beq _08044D00\n\
- bl Free\n\
- ldr r1, [r4]\n\
- movs r0, 0\n\
- str r0, [r1, 0x14]\n\
- _08044D00:\n\
- ldr r0, [r4]\n\
- ldr r0, [r0, 0x10]\n\
- cmp r0, 0\n\
- beq _08044D12\n\
- bl Free\n\
- ldr r1, [r4]\n\
- movs r0, 0\n\
- str r0, [r1, 0x10]\n\
- _08044D12:\n\
- movs r0, 0x1\n\
- mov r1, r8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08044D42\n\
- ldr r4, _08044D60 @ =sOakSpeechNidoranResources\n\
- ldr r0, [r4]\n\
- ldr r0, [r0, 0xC]\n\
- cmp r0, 0\n\
- beq _08044D30\n\
- bl Free\n\
- ldr r1, [r4]\n\
- movs r0, 0\n\
- str r0, [r1, 0xC]\n\
- _08044D30:\n\
- ldr r0, [r4]\n\
- ldr r0, [r0, 0x8]\n\
- cmp r0, 0\n\
- beq _08044D42\n\
- bl Free\n\
- ldr r1, [r4]\n\
- movs r0, 0\n\
- str r0, [r1, 0x8]\n\
- _08044D42:\n\
- mov r0, r8\n\
- cmp r0, 0\n\
- beq _08044D64\n\
- ldr r4, _08044D60 @ =sOakSpeechNidoranResources\n\
- ldr r0, [r4]\n\
- movs r1, 0\n\
- movs r2, 0x18\n\
- bl memset\n\
- ldr r0, [r4]\n\
- bl Free\n\
- movs r0, 0\n\
- str r0, [r4]\n\
- b _08044D6C\n\
- .align 2, 0\n\
- _08044D60: .4byte sOakSpeechNidoranResources\n\
- _08044D64:\n\
- ldr r0, _08044D7C @ =sOakSpeechNidoranResources\n\
- ldr r1, [r0]\n\
- movs r0, 0xA3\n\
- strb r0, [r1, 0x2]\n\
- _08044D6C:\n\
- ldr r0, _08044D7C @ =sOakSpeechNidoranResources\n\
- ldr r0, [r0]\n\
- _08044D70:\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
- _08044D7C: .4byte sOakSpeechNidoranResources\n\
- ");
-}
-#endif
void OakSpeechNidoranFFreeResources(void)
{