Merge pull request #158 from jiangzhengwenjz/nonmatching
real match OakSpeechNidoranFSetup
This commit is contained in:
+6
-350
@@ -6094,7 +6094,6 @@ static void OakSpeechNidoranFSetupTemplateDummy(struct OakSpeechNidoranFStruct *
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NONMATCHING
|
|
||||||
struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8 enable)
|
struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8 enable)
|
||||||
{
|
{
|
||||||
s32 size;
|
s32 size;
|
||||||
@@ -6134,8 +6133,7 @@ struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8
|
|||||||
battlePosition = 1;
|
battlePosition = 1;
|
||||||
if (battlePosition > 8)
|
if (battlePosition > 8)
|
||||||
battlePosition = 8;
|
battlePosition = 8;
|
||||||
// The following two statements refused to cooperate.
|
sOakSpeechNidoranResources->spriteCount = (battlePosition << 16) >> 16;
|
||||||
sOakSpeechNidoranResources->spriteCount = battlePosition;
|
|
||||||
sOakSpeechNidoranResources->battlePosition = battlePosition;
|
sOakSpeechNidoranResources->battlePosition = battlePosition;
|
||||||
sOakSpeechNidoranResources->frameCount = 4;
|
sOakSpeechNidoranResources->frameCount = 4;
|
||||||
sOakSpeechNidoranResources->enable2 = FALSE;
|
sOakSpeechNidoranResources->enable2 = FALSE;
|
||||||
@@ -6151,8 +6149,11 @@ struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (i = 0; i < (s8)sOakSpeechNidoranResources->spriteCount; ++i)
|
do
|
||||||
sOakSpeechNidoranResources->bufferPtrs[i] = &sOakSpeechNidoranResources->dataBuffer[sOakSpeechNidoranResources->sizePerSprite * i];
|
{
|
||||||
|
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->templates = AllocZeroed(sizeof(struct SpriteTemplate) * sOakSpeechNidoranResources->spriteCount);
|
||||||
sOakSpeechNidoranResources->frameImages = AllocZeroed(sOakSpeechNidoranResources->spriteCount * sizeof(struct SpriteFrameImage) * sOakSpeechNidoranResources->frameCount);
|
sOakSpeechNidoranResources->frameImages = AllocZeroed(sOakSpeechNidoranResources->spriteCount * sizeof(struct SpriteFrameImage) * sOakSpeechNidoranResources->frameCount);
|
||||||
@@ -6200,351 +6201,6 @@ struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8
|
|||||||
}
|
}
|
||||||
return sOakSpeechNidoranResources;
|
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)
|
void OakSpeechNidoranFFreeResources(void)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user