diff options
author | PikalaxALT <PikalaxALT@users.noreply.github.com> | 2019-11-19 14:05:42 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-19 14:05:42 -0500 |
commit | 1849ad778d5a94edc076ce5ecf7aec97aa8db4fa (patch) | |
tree | d3de79357dd8079f4f922acc50f002ecefd0c467 /src | |
parent | 43efafa12c2243354ccee4ddd76cd41aed3ecf18 (diff) | |
parent | 42185e5c3addd2d3041294d72996e230d6c42808 (diff) |
Merge pull request #158 from jiangzhengwenjz/nonmatching
real match OakSpeechNidoranFSetup
Diffstat (limited to 'src')
-rw-r--r-- | src/pokemon.c | 356 |
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) { |