sovereignx/src/fldeff_softboiled.c

118 lines
2.6 KiB
C
Raw Normal View History

2018-02-15 09:59:26 +00:00
#include "global.h"
#include "fldeff_softboiled.h"
#include "menu.h"
#include "party_menu.h"
#include "pokemon.h"
//#include "pokemon_menu.h"
#include "constants/songs.h"
#include "sound.h"
#include "sprite.h"
#include "strings.h"
#include "task.h"
void sub_816166C(u8 taskId);
void sub_81617B8(u8 taskId);
2018-02-15 10:35:27 +00:00
void sub_81616C0(u8 taskId);
2018-02-15 09:59:26 +00:00
void sub_81B1F18(u8 taskId, u8 pokemonIdx, s8 a, s16 hp, TaskFunc func);
bool8 SetUpFieldMove_SoftBoiled(void)
{
u16 maxHp;
u16 hp;
u16 minHp;
maxHp = GetMonData(&gPlayerParty[GetCursorSelectionMonId()], MON_DATA_MAX_HP);
hp = GetMonData(&gPlayerParty[GetCursorSelectionMonId()], MON_DATA_HP);
minHp = (maxHp / 5);
if (hp > minHp)
{
return TRUE;
}
return FALSE;
}
void sub_8161560(u8 taskId)
{
gUnknown_0203CEC8.unkB = 0xA;
gUnknown_0203CEC8.unkA = gUnknown_0203CEC8.unk9;
sub_81B0FCC(GetCursorSelectionMonId(), 0x1);
display_pokemon_menu_message(0x5);
gTasks[taskId].func = sub_81B1370;
}
void sub_81615A8(u8 taskId)
{
u16 hp;
u8 unk9 = gUnknown_0203CEC8.unk9;
u8 pokemonIndex = gUnknown_0203CEC8.unkA;
if(pokemonIndex > 6)
{
gUnknown_0203CEC8.unkB = 0;
display_pokemon_menu_message(0x0);
gTasks[taskId].func = sub_81B1370;
return;
}
hp = GetMonData(&gPlayerParty[pokemonIndex], MON_DATA_HP);
if(hp == 0 || unk9 == pokemonIndex || GetMonData(&gPlayerParty[pokemonIndex], MON_DATA_MAX_HP) == hp)
{
sub_81617B8(taskId);
return;
}
PlaySE(SE_KAIFUKU);
sub_81B1F18(taskId, unk9, -1, GetMonData(&gPlayerParty[unk9], MON_DATA_MAX_HP)/5, sub_816166C);
}
2018-02-15 10:35:27 +00:00
#ifdef NONMATCHING
void sub_816166C(u8 taskId)
{
2018-02-15 09:59:26 +00:00
PlaySE(SE_KAIFUKU);
2018-02-15 10:35:27 +00:00
sub_81B1F18(taskId, gUnknown_0203CEC8.unkA, 1, GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_MAX_HP)/5, sub_81616C0);
2018-02-15 09:59:26 +00:00
}
2018-02-15 10:35:27 +00:00
#else
__attribute__((naked))
void sub_816166C(u8 taskId)
{
asm(".syntax unified\n\
push {r4,r5,lr}\n\
sub sp, 0x4\n\
adds r4, r0, 0\n\
lsls r4, 24\n\
lsrs r4, 24\n\
movs r0, 0x1\n\
bl PlaySE\n\
ldr r5, =gUnknown_0203CEC8\n\
movs r1, 0x9\n\
ldrsb r1, [r5, r1]\n\
movs r0, 0x64\n\
muls r0, r1\n\
ldr r1, =gPlayerParty\n\
adds r0, r1\n\
movs r1, 0x3A\n\
bl GetMonData\n\
movs r1, 0x5\n\
bl __udivsi3\n\
adds r3, r0, 0\n\
lsls r3, 16\n\
asrs r3, 16\n\
ldrb r1, [r5, 0xA]\n\
ldr r0, =sub_81616C0\n\
str r0, [sp]\n\
adds r0, r4, 0\n\
movs r2, 0x1\n\
bl sub_81B1F18\n\
add sp, 0x4\n\
pop {r4,r5}\n\
pop {r0}\n\
bx r0\n\
.pool\n\
.syntax divided\n");
2018-02-15 09:59:26 +00:00
}
2018-02-15 10:35:27 +00:00
#endif
2018-02-15 09:59:26 +00:00