Merge pull request #397 from huderlem/script_pokemon_util
Script pokemon util
This commit is contained in:
+9
-9
@@ -1219,7 +1219,7 @@ sub_81B0A9C: @ 81B0A9C
|
|||||||
muls r0, r5
|
muls r0, r5
|
||||||
ldr r1, =gPlayerParty
|
ldr r1, =gPlayerParty
|
||||||
adds r0, r1
|
adds r0, r1
|
||||||
ldr r6, =gUnknown_0203CEF8
|
ldr r6, =gSelectedOrderFromParty
|
||||||
bl sub_81B85AC
|
bl sub_81B85AC
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
@@ -9304,7 +9304,7 @@ sub_81B4E8C: @ 81B4E8C
|
|||||||
adds r0, r1
|
adds r0, r1
|
||||||
mov r8, r0
|
mov r8, r0
|
||||||
_081B4EC6:
|
_081B4EC6:
|
||||||
ldr r0, =gUnknown_0203CEF8
|
ldr r0, =gSelectedOrderFromParty
|
||||||
adds r4, r5, r0
|
adds r4, r5, r0
|
||||||
ldrb r0, [r4]
|
ldrb r0, [r4]
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
@@ -9418,7 +9418,7 @@ sub_81B4FA8: @ 81B4FA8
|
|||||||
movs r4, 0
|
movs r4, 0
|
||||||
cmp r4, r5
|
cmp r4, r5
|
||||||
bcs _081B502A
|
bcs _081B502A
|
||||||
ldr r6, =gUnknown_0203CEF8
|
ldr r6, =gSelectedOrderFromParty
|
||||||
subs r2, r5, 0x1
|
subs r2, r5, 0x1
|
||||||
adds r7, r6, 0
|
adds r7, r6, 0
|
||||||
ldr r3, =gUnknown_0203CEC8
|
ldr r3, =gUnknown_0203CEC8
|
||||||
@@ -9476,7 +9476,7 @@ _081B502A:
|
|||||||
cmp r4, r5
|
cmp r4, r5
|
||||||
bge _081B5078
|
bge _081B5078
|
||||||
_081B504E:
|
_081B504E:
|
||||||
ldr r0, =gUnknown_0203CEF8
|
ldr r0, =gSelectedOrderFromParty
|
||||||
adds r1, r4, r0
|
adds r1, r4, r0
|
||||||
ldrb r0, [r1]
|
ldrb r0, [r1]
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
@@ -15518,7 +15518,7 @@ sub_81B8518: @ 81B8518
|
|||||||
thumb_func_start sub_81B8558
|
thumb_func_start sub_81B8558
|
||||||
sub_81B8558: @ 81B8558
|
sub_81B8558: @ 81B8558
|
||||||
push {lr}
|
push {lr}
|
||||||
ldr r0, =gUnknown_0203CEF8
|
ldr r0, =gSelectedOrderFromParty
|
||||||
movs r1, 0
|
movs r1, 0
|
||||||
movs r2, 0x4
|
movs r2, 0x4
|
||||||
bl memset
|
bl memset
|
||||||
@@ -15655,7 +15655,7 @@ sub_81B865C: @ 81B865C
|
|||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
lsrs r2, r0, 24
|
lsrs r2, r0, 24
|
||||||
adds r1, r2, 0
|
adds r1, r2, 0
|
||||||
ldr r3, =gUnknown_0203CEF8
|
ldr r3, =gSelectedOrderFromParty
|
||||||
adds r0, r2, r3
|
adds r0, r2, r3
|
||||||
subs r0, 0x1
|
subs r0, 0x1
|
||||||
ldrb r0, [r0]
|
ldrb r0, [r0]
|
||||||
@@ -15700,7 +15700,7 @@ _081B86C0:
|
|||||||
movs r5, 0
|
movs r5, 0
|
||||||
b _081B8750
|
b _081B8750
|
||||||
_081B86CE:
|
_081B86CE:
|
||||||
ldr r3, =gUnknown_0203CEF8
|
ldr r3, =gSelectedOrderFromParty
|
||||||
adds r4, r3, r5
|
adds r4, r3, r5
|
||||||
ldrb r0, [r4]
|
ldrb r0, [r4]
|
||||||
movs r1, 0x64
|
movs r1, 0x64
|
||||||
@@ -15731,7 +15731,7 @@ _081B86CE:
|
|||||||
bcs _081B8748
|
bcs _081B8748
|
||||||
movs r7, 0x64
|
movs r7, 0x64
|
||||||
_081B870E:
|
_081B870E:
|
||||||
ldr r0, =gUnknown_0203CEF8
|
ldr r0, =gSelectedOrderFromParty
|
||||||
adds r5, r0, r4
|
adds r5, r0, r4
|
||||||
ldrb r0, [r5]
|
ldrb r0, [r5]
|
||||||
muls r0, r7
|
muls r0, r7
|
||||||
@@ -15787,7 +15787,7 @@ sub_81B8770: @ 81B8770
|
|||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
lsrs r2, r0, 24
|
lsrs r2, r0, 24
|
||||||
movs r1, 0
|
movs r1, 0
|
||||||
ldr r3, =gUnknown_0203CEF8
|
ldr r3, =gSelectedOrderFromParty
|
||||||
_081B877A:
|
_081B877A:
|
||||||
adds r0, r1, r3
|
adds r0, r1, r3
|
||||||
ldrb r0, [r0]
|
ldrb r0, [r0]
|
||||||
|
|||||||
+2
-2
@@ -10149,7 +10149,7 @@ sub_801AAD4: @ 801AAD4
|
|||||||
ldr r6, =gPlayerParty
|
ldr r6, =gPlayerParty
|
||||||
ldr r5, =gEnemyParty
|
ldr r5, =gEnemyParty
|
||||||
_0801AAE4:
|
_0801AAE4:
|
||||||
ldr r0, =gUnknown_0203CEF8
|
ldr r0, =gSelectedOrderFromParty
|
||||||
adds r0, r4, r0
|
adds r0, r4, r0
|
||||||
ldrb r0, [r0]
|
ldrb r0, [r0]
|
||||||
subs r0, 0x1
|
subs r0, 0x1
|
||||||
@@ -10504,7 +10504,7 @@ _0801AE54:
|
|||||||
movs r1, 0
|
movs r1, 0
|
||||||
movs r2, 0x20
|
movs r2, 0x20
|
||||||
bl memset
|
bl memset
|
||||||
ldr r0, =gUnknown_0203CEF8
|
ldr r0, =gSelectedOrderFromParty
|
||||||
ldrb r1, [r0]
|
ldrb r1, [r0]
|
||||||
ldrb r0, [r0, 0x1]
|
ldrb r0, [r0, 0x1]
|
||||||
cmn r1, r0
|
cmn r1, r0
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -57,7 +57,7 @@ LilycoveCity_ContestLobby_EventScript_21A2AA:: @ 821A2AA
|
|||||||
closemessage
|
closemessage
|
||||||
special sub_80F88DC
|
special sub_80F88DC
|
||||||
setvar VAR_0x4099, 0
|
setvar VAR_0x4099, 0
|
||||||
specialvar VAR_RESULT, sub_80F8C7C
|
specialvar VAR_RESULT, GiveMonArtistRibbon
|
||||||
compare VAR_RESULT, 1
|
compare VAR_RESULT, 1
|
||||||
call_if 1, LilycoveCity_ContestLobby_EventScript_21A314
|
call_if 1, LilycoveCity_ContestLobby_EventScript_21A314
|
||||||
applymovement 4, LilycoveCity_ContestLobby_Movement_21A40F
|
applymovement 4, LilycoveCity_ContestLobby_Movement_21A40F
|
||||||
@@ -230,7 +230,7 @@ LilycoveCity_ContestLobby_EventScript_21A47A:: @ 821A47A
|
|||||||
closemessage
|
closemessage
|
||||||
special sub_80F88DC
|
special sub_80F88DC
|
||||||
setvar VAR_0x4099, 0
|
setvar VAR_0x4099, 0
|
||||||
specialvar VAR_RESULT, sub_80F8C7C
|
specialvar VAR_RESULT, GiveMonArtistRibbon
|
||||||
compare VAR_RESULT, 1
|
compare VAR_RESULT, 1
|
||||||
call_if 1, LilycoveCity_ContestLobby_EventScript_21A4E4
|
call_if 1, LilycoveCity_ContestLobby_EventScript_21A4E4
|
||||||
applymovement 11, LilycoveCity_ContestLobby_Movement_21A53C
|
applymovement 11, LilycoveCity_ContestLobby_Movement_21A53C
|
||||||
@@ -324,7 +324,7 @@ LilycoveCity_ContestLobby_EventScript_21A554:: @ 821A554
|
|||||||
goto_eq LilycoveCity_ContestLobby_EventScript_21A5CF
|
goto_eq LilycoveCity_ContestLobby_EventScript_21A5CF
|
||||||
call LilycoveCity_ContestLobby_EventScript_279CC5
|
call LilycoveCity_ContestLobby_EventScript_279CC5
|
||||||
call LilycoveCity_ContestLobby_EventScript_21A670
|
call LilycoveCity_ContestLobby_EventScript_21A670
|
||||||
special sub_80F87D8
|
special SetContestTrainerGfxIds
|
||||||
call LilycoveCity_ContestLobby_EventScript_23BEB6
|
call LilycoveCity_ContestLobby_EventScript_23BEB6
|
||||||
call LilycoveCity_ContestLobby_EventScript_21A585
|
call LilycoveCity_ContestLobby_EventScript_21A585
|
||||||
call LilycoveCity_ContestLobby_EventScript_21A5EF
|
call LilycoveCity_ContestLobby_EventScript_21A5EF
|
||||||
|
|||||||
@@ -260,7 +260,7 @@ MossdeepCity_SpaceCenter_2F_EventScript_22400C:: @ 822400C
|
|||||||
goto MossdeepCity_SpaceCenter_2F_EventScript_223FDA
|
goto MossdeepCity_SpaceCenter_2F_EventScript_223FDA
|
||||||
|
|
||||||
MossdeepCity_SpaceCenter_2F_EventScript_224032:: @ 8224032
|
MossdeepCity_SpaceCenter_2F_EventScript_224032:: @ 8224032
|
||||||
special ReducePlayerPartyToThree
|
special ReducePlayerPartyToSelectedMons
|
||||||
setvar VAR_0x8004, 2
|
setvar VAR_0x8004, 2
|
||||||
setvar VAR_0x8005, 4
|
setvar VAR_0x8005, 4
|
||||||
special CallFrontierUtilFunc
|
special CallFrontierUtilFunc
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ SootopolisCity_MysteryEventsHouse_1F_EventScript_227A58:: @ 8227A58
|
|||||||
compare VAR_RESULT, 0
|
compare VAR_RESULT, 0
|
||||||
goto_eq SootopolisCity_MysteryEventsHouse_1F_EventScript_227AE2
|
goto_eq SootopolisCity_MysteryEventsHouse_1F_EventScript_227AE2
|
||||||
special SavePlayerParty
|
special SavePlayerParty
|
||||||
special ReducePlayerPartyToThree
|
special ReducePlayerPartyToSelectedMons
|
||||||
msgbox SootopolisCity_MysteryEventsHouse_1F_Text_227D21, 4
|
msgbox SootopolisCity_MysteryEventsHouse_1F_Text_227D21, 4
|
||||||
closemessage
|
closemessage
|
||||||
compare VAR_FACING, 2
|
compare VAR_FACING, 2
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ LinkContestRoom1_MapScript1_23B79F: @ 823B79F
|
|||||||
|
|
||||||
LinkContestRoom1_EventScript_23B7AF:: @ 823B7AF
|
LinkContestRoom1_EventScript_23B7AF:: @ 823B7AF
|
||||||
call LinkContestRoom1_EventScript_27A133
|
call LinkContestRoom1_EventScript_27A133
|
||||||
special sub_80F8FA0
|
special ScriptGetMultiplayerId
|
||||||
compare VAR_RESULT, 0
|
compare VAR_RESULT, 0
|
||||||
call_if 1, LinkContestRoom1_EventScript_23B7EF
|
call_if 1, LinkContestRoom1_EventScript_23B7EF
|
||||||
compare VAR_RESULT, 1
|
compare VAR_RESULT, 1
|
||||||
@@ -134,7 +134,7 @@ LinkContestRoom1_EventScript_23B8ED:: @ 823B8ED
|
|||||||
|
|
||||||
LinkContestRoom1_EventScript_23B8F8:: @ 823B8F8
|
LinkContestRoom1_EventScript_23B8F8:: @ 823B8F8
|
||||||
setvar VAR_RESULT, 32
|
setvar VAR_RESULT, 32
|
||||||
special sub_80F8FE8
|
special ScriptRandom
|
||||||
addvar VAR_RESULT, 1
|
addvar VAR_RESULT, 1
|
||||||
switch VAR_RESULT
|
switch VAR_RESULT
|
||||||
case 1, LinkContestRoom1_EventScript_23BA6B
|
case 1, LinkContestRoom1_EventScript_23BA6B
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
.include "asm/macros.inc"
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.section .rodata
|
|
||||||
.align 2, 0
|
|
||||||
gUnknown_0858D8EC:: @ 858D8EC
|
|
||||||
.byte 3, 4, 5, 14
|
|
||||||
@@ -388,7 +388,7 @@ LinkContestRoom1_EventScript_27A1D2:: @ 827A1D2
|
|||||||
releaseall
|
releaseall
|
||||||
addvar VAR_0x8006, 65535
|
addvar VAR_0x8006, 65535
|
||||||
playse SE_BOWA2
|
playse SE_BOWA2
|
||||||
special sub_80F8D28
|
special ShowContestEntryMonPic
|
||||||
call LinkContestRoom1_EventScript_27A217
|
call LinkContestRoom1_EventScript_27A217
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -517,7 +517,7 @@ LinkContestRoom1_EventScript_27A34F:: @ 827A34F
|
|||||||
|
|
||||||
LinkContestRoom1_EventScript_27A3E5:: @ 827A3E5
|
LinkContestRoom1_EventScript_27A3E5:: @ 827A3E5
|
||||||
setvar VAR_RESULT, 8
|
setvar VAR_RESULT, 8
|
||||||
special sub_80F8FE8
|
special ScriptRandom
|
||||||
compare VAR_RESULT, 0
|
compare VAR_RESULT, 0
|
||||||
call_if 1, LinkContestRoom1_EventScript_27A65A
|
call_if 1, LinkContestRoom1_EventScript_27A65A
|
||||||
compare VAR_RESULT, 1
|
compare VAR_RESULT, 1
|
||||||
|
|||||||
+6
-6
@@ -94,7 +94,7 @@ gSpecials:: @ 81DBA64
|
|||||||
def_special sub_80F8390
|
def_special sub_80F8390
|
||||||
def_special sub_80F8850
|
def_special sub_80F8850
|
||||||
def_special sub_80F82B4
|
def_special sub_80F82B4
|
||||||
def_special sub_80F87D8
|
def_special SetContestTrainerGfxIds
|
||||||
def_special sub_80F7F30
|
def_special sub_80F7F30
|
||||||
def_special sub_80F8970
|
def_special sub_80F8970
|
||||||
def_special sub_80F8AFC
|
def_special sub_80F8AFC
|
||||||
@@ -102,7 +102,7 @@ gSpecials:: @ 81DBA64
|
|||||||
def_special sub_80F7F7C
|
def_special sub_80F7F7C
|
||||||
def_special sub_80F7FFC
|
def_special sub_80F7FFC
|
||||||
def_special sub_80F8D24
|
def_special sub_80F8D24
|
||||||
def_special sub_80F8C7C
|
def_special GiveMonArtistRibbon
|
||||||
def_special sub_80B3000
|
def_special sub_80B3000
|
||||||
def_special SaveGame
|
def_special SaveGame
|
||||||
def_special sub_80FAFF8
|
def_special sub_80FAFF8
|
||||||
@@ -259,7 +259,7 @@ gSpecials:: @ 81DBA64
|
|||||||
def_special sub_80F9490
|
def_special sub_80F9490
|
||||||
def_special ValidateEReaderTrainer
|
def_special ValidateEReaderTrainer
|
||||||
def_special GetBestBattleTowerStreak
|
def_special GetBestBattleTowerStreak
|
||||||
def_special ReducePlayerPartyToThree
|
def_special ReducePlayerPartyToSelectedMons
|
||||||
def_special BedroomPC
|
def_special BedroomPC
|
||||||
def_special PlayerPC
|
def_special PlayerPC
|
||||||
def_special FieldShowRegionMap
|
def_special FieldShowRegionMap
|
||||||
@@ -330,13 +330,13 @@ gSpecials:: @ 81DBA64
|
|||||||
def_special sub_80AC81C
|
def_special sub_80AC81C
|
||||||
def_special sp13E_warp_to_last_warp
|
def_special sp13E_warp_to_last_warp
|
||||||
def_special sp13F_fall_to_last_warp
|
def_special sp13F_fall_to_last_warp
|
||||||
def_special sub_80F8D28
|
def_special ShowContestEntryMonPic
|
||||||
def_special sub_80F8EB8
|
def_special sub_80F8EB8
|
||||||
def_special SetEReaderTrainerGfxId
|
def_special SetEReaderTrainerGfxId
|
||||||
def_special BattleSetup_StartLatiBattle
|
def_special BattleSetup_StartLatiBattle
|
||||||
def_special SetRoute119Weather
|
def_special SetRoute119Weather
|
||||||
def_special SetRoute123Weather
|
def_special SetRoute123Weather
|
||||||
def_special sub_80F8FA0
|
def_special ScriptGetMultiplayerId
|
||||||
def_special ScriptGetPartyMonSpecies
|
def_special ScriptGetPartyMonSpecies
|
||||||
def_special sub_81B98DC
|
def_special sub_81B98DC
|
||||||
def_special nullsub_54
|
def_special nullsub_54
|
||||||
@@ -350,7 +350,7 @@ gSpecials:: @ 81DBA64
|
|||||||
def_special BufferLottoTicketNumber
|
def_special BufferLottoTicketNumber
|
||||||
def_special sub_81653CC
|
def_special sub_81653CC
|
||||||
def_special sub_80F9370
|
def_special sub_80F9370
|
||||||
def_special sub_80F8FE8
|
def_special ScriptRandom
|
||||||
def_special sub_81AFDD0
|
def_special sub_81AFDD0
|
||||||
def_special sub_80EDCE8
|
def_special sub_80EDCE8
|
||||||
def_special sub_80EE2CC
|
def_special sub_80EE2CC
|
||||||
|
|||||||
@@ -226,6 +226,11 @@ extern u8 gUnknown_02039F24;
|
|||||||
extern u16 gSpecialVar_ContestCategory;
|
extern u16 gSpecialVar_ContestCategory;
|
||||||
extern u16 gSpecialVar_ContestRank;
|
extern u16 gSpecialVar_ContestRank;
|
||||||
extern u8 gUnknown_02039F30;
|
extern u8 gUnknown_02039F30;
|
||||||
|
extern u8 gContestFinalStandings[4];
|
||||||
|
extern u8 gContestPlayerMonIndex;
|
||||||
|
extern s16 gUnknown_02039F08[4];
|
||||||
|
extern s16 gContestMonConditions[4];
|
||||||
|
extern u8 gIsLinkContest;
|
||||||
|
|
||||||
struct Shared18000
|
struct Shared18000
|
||||||
{
|
{
|
||||||
@@ -427,5 +432,6 @@ bool8 Contest_IsMonsTurnDisabled(u8 a);
|
|||||||
bool8 sub_80DE1E8(u8 a);
|
bool8 sub_80DE1E8(u8 a);
|
||||||
void SetStartledString(u8 a, u8 b);
|
void SetStartledString(u8 a, u8 b);
|
||||||
s8 Contest_GetMoveExcitement(u16);
|
s8 Contest_GetMoveExcitement(u16);
|
||||||
|
void sub_80DEDA8(u8);
|
||||||
|
|
||||||
#endif //GUARD_CONTEST_H
|
#endif //GUARD_CONTEST_H
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
#ifndef GUARD_CONTEST_LINK_80F57C4_H
|
#ifndef GUARD_CONTEST_LINK_80F57C4_H
|
||||||
#define GUARD_CONTEST_LINK_80F57C4_H
|
#define GUARD_CONTEST_LINK_80F57C4_H
|
||||||
|
|
||||||
|
void sub_80F8264(void);
|
||||||
|
void sub_80F8290(void);
|
||||||
void sub_80F840C(void);
|
void sub_80F840C(void);
|
||||||
|
void sub_80F8438(void);
|
||||||
void sub_80F8484(void);
|
void sub_80F8484(void);
|
||||||
void sub_80F84C4(u8);
|
void sub_80F84C4(u8);
|
||||||
void sub_80FC998(u8 taskId);
|
void sub_80FC998(u8 taskId);
|
||||||
|
|||||||
@@ -2,5 +2,6 @@
|
|||||||
#define GUARD_CONTESTPAINTING_H
|
#define GUARD_CONTESTPAINTING_H
|
||||||
|
|
||||||
void sub_812FDA8(u32);
|
void sub_812FDA8(u32);
|
||||||
|
void sub_812FDEC(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ s32 sub_81DB3D8(const struct MenuAction *str, const u8* arg1, s32 arg2);
|
|||||||
// sub_81DB494
|
// sub_81DB494
|
||||||
void PadNameString(u8 *dst, u8 padWith);
|
void PadNameString(u8 *dst, u8 padWith);
|
||||||
void sub_81DB554(u8 *, u8);
|
void sub_81DB554(u8 *, u8);
|
||||||
// sub_81DB5AC
|
void sub_81DB5AC(u8 *);
|
||||||
u32 sub_81DB604(const u8 *);
|
u32 sub_81DB604(const u8 *);
|
||||||
// sub_81DB620
|
// sub_81DB620
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
|
|
||||||
#ifndef GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H
|
#ifndef GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H
|
||||||
#define GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H
|
#define GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H
|
||||||
|
|
||||||
u16 sub_80F903C(void);
|
u16 sub_80F903C(void);
|
||||||
void ReducePlayerPartyToThree(void);
|
void ReducePlayerPartyToSelectedMons(void);
|
||||||
void HealPlayerParty(void);
|
void HealPlayerParty(void);
|
||||||
|
|
||||||
#endif // GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H
|
#endif // GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H
|
||||||
|
|||||||
+2
-2
@@ -147,7 +147,7 @@ SECTIONS {
|
|||||||
src/secret_base.o(.text);
|
src/secret_base.o(.text);
|
||||||
src/tv.o(.text);
|
src/tv.o(.text);
|
||||||
asm/contest_link_80F57C4.o(.text);
|
asm/contest_link_80F57C4.o(.text);
|
||||||
asm/script_pokemon_util_80F87D8.o(.text);
|
src/script_pokemon_util_80F87D8.o(.text);
|
||||||
src/field_poison.o(.text);
|
src/field_poison.o(.text);
|
||||||
src/pokemon_size_record.o(.text);
|
src/pokemon_size_record.o(.text);
|
||||||
asm/fldeff_80F9BCC.o(.text);
|
asm/fldeff_80F9BCC.o(.text);
|
||||||
@@ -474,7 +474,7 @@ SECTIONS {
|
|||||||
src/secret_base.o(.rodata);
|
src/secret_base.o(.rodata);
|
||||||
src/tv.o(.rodata);
|
src/tv.o(.rodata);
|
||||||
data/contest_link_80F57C4.o(.rodata);
|
data/contest_link_80F57C4.o(.rodata);
|
||||||
data/script_pokemon_util_80F87D8.o(.rodata);
|
src/script_pokemon_util_80F87D8.o(.rodata);
|
||||||
src/pokemon_size_record.o(.rodata)
|
src/pokemon_size_record.o(.rodata)
|
||||||
data/field_effect_misc.o(.rodata);
|
data/field_effect_misc.o(.rodata);
|
||||||
src/field_special_scene.o(.rodata);
|
src/field_special_scene.o(.rodata);
|
||||||
|
|||||||
+8
-8
@@ -63,9 +63,9 @@ extern u8 GetFrontierBrainMonNature(u8);
|
|||||||
extern void sub_81A4C30(void);
|
extern void sub_81A4C30(void);
|
||||||
extern u8 sub_81A3610(void);
|
extern u8 sub_81A3610(void);
|
||||||
extern u16 GetFrontierBrainMonSpecies(u8);
|
extern u16 GetFrontierBrainMonSpecies(u8);
|
||||||
extern void ReducePlayerPartyToThree(void);
|
extern void ReducePlayerPartyToSelectedMons(void);
|
||||||
|
|
||||||
extern u8 gUnknown_0203CEF8[];
|
extern u8 gSelectedOrderFromParty[];
|
||||||
|
|
||||||
extern const u16 gBattleFrontierHeldItems[];
|
extern const u16 gBattleFrontierHeldItems[];
|
||||||
extern const struct FacilityMon gBattleFrontierMons[];
|
extern const struct FacilityMon gBattleFrontierMons[];
|
||||||
@@ -2465,8 +2465,8 @@ static void sub_818EA84(void)
|
|||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
sub_81B8558();
|
sub_81B8558();
|
||||||
gUnknown_0203CEF8[0] = gSaveBlock2Ptr->frontier.field_CB0;
|
gSelectedOrderFromParty[0] = gSaveBlock2Ptr->frontier.field_CB0;
|
||||||
gUnknown_0203CEF8[1] = gSaveBlock2Ptr->frontier.field_CB0 >> 8;
|
gSelectedOrderFromParty[1] = gSaveBlock2Ptr->frontier.field_CB0 >> 8;
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
gSpecialVar_Result = (gSaveBlock2Ptr->frontier.field_D0A * 2) - 3 + gSaveBlock2Ptr->frontier.field_D0B;
|
gSpecialVar_Result = (gSaveBlock2Ptr->frontier.field_D0A * 2) - 3 + gSaveBlock2Ptr->frontier.field_D0B;
|
||||||
@@ -2535,7 +2535,7 @@ static void sub_818ED28(void)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
gSaveBlock2Ptr->frontier.field_CB0 = T1_READ_16(gUnknown_0203CEF8);
|
gSaveBlock2Ptr->frontier.field_CB0 = T1_READ_16(gSelectedOrderFromParty);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6070,7 +6070,7 @@ static void sub_8194D68(void)
|
|||||||
|
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
s32 playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gUnknown_0203CEF8[i] - 1] - 1;
|
s32 playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gSelectedOrderFromParty[i] - 1] - 1;
|
||||||
s32 count;
|
s32 count;
|
||||||
|
|
||||||
for (moveSlot = 0; moveSlot < 4; moveSlot++)
|
for (moveSlot = 0; moveSlot < 4; moveSlot++)
|
||||||
@@ -6096,7 +6096,7 @@ static void sub_8194E44(void)
|
|||||||
|
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
s32 playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gUnknown_0203CEF8[i] - 1] - 1;
|
s32 playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gSelectedOrderFromParty[i] - 1] - 1;
|
||||||
u16 item = GetMonData(&gSaveBlock1Ptr->playerParty[playerMonId], MON_DATA_HELD_ITEM, NULL);
|
u16 item = GetMonData(&gSaveBlock1Ptr->playerParty[playerMonId], MON_DATA_HELD_ITEM, NULL);
|
||||||
SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &item);
|
SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &item);
|
||||||
}
|
}
|
||||||
@@ -6104,7 +6104,7 @@ static void sub_8194E44(void)
|
|||||||
|
|
||||||
static void sub_8194EB4(void)
|
static void sub_8194EB4(void)
|
||||||
{
|
{
|
||||||
ReducePlayerPartyToThree();
|
ReducePlayerPartyToSelectedMons();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8194EC0(void)
|
static void sub_8194EC0(void)
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
#include "constants/maps.h"
|
#include "constants/maps.h"
|
||||||
#include "constants/moves.h"
|
#include "constants/moves.h"
|
||||||
|
|
||||||
extern u8 gUnknown_0203CEF8[3];
|
extern u8 gSelectedOrderFromParty[3];
|
||||||
extern void door_upload_tiles(void);
|
extern void door_upload_tiles(void);
|
||||||
|
|
||||||
extern const struct MapLayout *const gMapLayouts[];
|
extern const struct MapLayout *const gMapLayouts[];
|
||||||
@@ -550,14 +550,14 @@ static void sub_81A9834(void)
|
|||||||
SetMonMoveSlot(&gPlayerParty[j], MOVE_SKETCH, k);
|
SetMonMoveSlot(&gPlayerParty[j], MOVE_SKETCH, k);
|
||||||
}
|
}
|
||||||
gSaveBlock1Ptr->playerParty[id] = gPlayerParty[j];
|
gSaveBlock1Ptr->playerParty[id] = gPlayerParty[j];
|
||||||
gUnknown_0203CEF8[j] = id + 1;
|
gSelectedOrderFromParty[j] = id + 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < 3; i++)
|
for (i = 0; i < 3; i++)
|
||||||
gSaveBlock2Ptr->frontier.selectedPartyMons[i] = gUnknown_0203CEF8[i];
|
gSaveBlock2Ptr->frontier.selectedPartyMons[i] = gSelectedOrderFromParty[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8 sub_81A9998(s32 *arg0, u8 arg1, u8 arg2)
|
static u8 sub_81A9998(s32 *arg0, u8 arg1, u8 arg2)
|
||||||
|
|||||||
+6
-6
@@ -31,7 +31,7 @@
|
|||||||
#include "constants/songs.h"
|
#include "constants/songs.h"
|
||||||
|
|
||||||
extern u8 gUnknown_02032298[2];
|
extern u8 gUnknown_02032298[2];
|
||||||
extern u8 gUnknown_0203CEF8[];
|
extern u8 gSelectedOrderFromParty[];
|
||||||
|
|
||||||
static const struct WindowTemplate gUnknown_08550594 = {
|
static const struct WindowTemplate gUnknown_08550594 = {
|
||||||
.bg = 0,
|
.bg = 0,
|
||||||
@@ -358,8 +358,8 @@ static void sub_80B2918(u8 taskId)
|
|||||||
sub_800AA04(gFieldLinkPlayerCount);
|
sub_800AA04(gFieldLinkPlayerCount);
|
||||||
card = (struct TrainerCard *)gBlockSendBuffer;
|
card = (struct TrainerCard *)gBlockSendBuffer;
|
||||||
TrainerCard_GenerateCardForPlayer(card);
|
TrainerCard_GenerateCardForPlayer(card);
|
||||||
card->monSpecies[0] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[0] - 1], MON_DATA_SPECIES, NULL);
|
card->monSpecies[0] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[0] - 1], MON_DATA_SPECIES, NULL);
|
||||||
card->monSpecies[1] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[1] - 1], MON_DATA_SPECIES, NULL);
|
card->monSpecies[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL);
|
||||||
gTasks[taskId].func = sub_80B2C30;
|
gTasks[taskId].func = sub_80B2C30;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -405,8 +405,8 @@ static void sub_80B2A08(u8 taskId)
|
|||||||
sub_800AA04(gFieldLinkPlayerCount);
|
sub_800AA04(gFieldLinkPlayerCount);
|
||||||
card = (struct TrainerCard *)gBlockSendBuffer;
|
card = (struct TrainerCard *)gBlockSendBuffer;
|
||||||
TrainerCard_GenerateCardForPlayer(card);
|
TrainerCard_GenerateCardForPlayer(card);
|
||||||
card->monSpecies[0] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[0] - 1], MON_DATA_SPECIES, NULL);
|
card->monSpecies[0] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[0] - 1], MON_DATA_SPECIES, NULL);
|
||||||
card->monSpecies[1] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[1] - 1], MON_DATA_SPECIES, NULL);
|
card->monSpecies[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL);
|
||||||
gTasks[taskId].func = sub_80B2C30;
|
gTasks[taskId].func = sub_80B2C30;
|
||||||
sub_800A4D8(2);
|
sub_800A4D8(2);
|
||||||
}
|
}
|
||||||
@@ -800,7 +800,7 @@ static void sub_80B3260(int a0)
|
|||||||
gBattleTypeFlags = BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER;
|
gBattleTypeFlags = BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER;
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
ReducePlayerPartyToThree();
|
ReducePlayerPartyToSelectedMons();
|
||||||
gBattleTypeFlags = BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER | BATTLE_TYPE_MULTI;
|
gBattleTypeFlags = BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER | BATTLE_TYPE_MULTI;
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
|
|||||||
@@ -4,8 +4,6 @@
|
|||||||
#include "contest_ai.h"
|
#include "contest_ai.h"
|
||||||
#include "contest_effect.h"
|
#include "contest_effect.h"
|
||||||
|
|
||||||
extern u16 gContestMonConditions[];
|
|
||||||
|
|
||||||
extern const u8 *gAIScriptPtr;
|
extern const u8 *gAIScriptPtr;
|
||||||
extern const u8 *gContestAIs[];
|
extern const u8 *gContestAIs[];
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -36,7 +36,7 @@
|
|||||||
#include "constants/items.h"
|
#include "constants/items.h"
|
||||||
#include "constants/event_objects.h"
|
#include "constants/event_objects.h"
|
||||||
|
|
||||||
extern u8 gUnknown_0203CEF8[];
|
extern u8 gSelectedOrderFromParty[];
|
||||||
|
|
||||||
struct FrontierBrainMon
|
struct FrontierBrainMon
|
||||||
{
|
{
|
||||||
@@ -779,7 +779,7 @@ static void sub_81A1968(void)
|
|||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
gSaveBlock2Ptr->frontier.selectedPartyMons[i] = gUnknown_0203CEF8[i];
|
gSaveBlock2Ptr->frontier.selectedPartyMons[i] = gSelectedOrderFromParty[i];
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
gSaveBlock2Ptr->frontier.field_CA9_b = gSpecialVar_0x8006;
|
gSaveBlock2Ptr->frontier.field_CA9_b = gSpecialVar_0x8006;
|
||||||
@@ -796,8 +796,8 @@ static void sub_81A1AD4(void)
|
|||||||
|
|
||||||
sub_81B8558();
|
sub_81B8558();
|
||||||
for (i = 0; i < gSpecialVar_0x8005; i++)
|
for (i = 0; i < gSpecialVar_0x8005; i++)
|
||||||
gUnknown_0203CEF8[i] = gSaveBlock2Ptr->frontier.selectedPartyMons[i];
|
gSelectedOrderFromParty[i] = gSaveBlock2Ptr->frontier.selectedPartyMons[i];
|
||||||
ReducePlayerPartyToThree();
|
ReducePlayerPartyToSelectedMons();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void DoSoftReset_(void)
|
static void DoSoftReset_(void)
|
||||||
|
|||||||
+3
-3
@@ -1784,7 +1784,7 @@ void sub_801440C(u8 taskId)
|
|||||||
ScriptContext2_Disable();
|
ScriptContext2_Disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
extern u8 gUnknown_0203CEF8[];
|
extern u8 gSelectedOrderFromParty[];
|
||||||
|
|
||||||
void sub_8014790(u8 taskId)
|
void sub_8014790(u8 taskId)
|
||||||
{
|
{
|
||||||
@@ -1802,8 +1802,8 @@ void sub_8014790(u8 taskId)
|
|||||||
gLinkPlayers[0].linkType = 0x2211;
|
gLinkPlayers[0].linkType = 0x2211;
|
||||||
gLinkPlayers[0].id = 0;
|
gLinkPlayers[0].id = 0;
|
||||||
gLinkPlayers[1].id = 2;
|
gLinkPlayers[1].id = 2;
|
||||||
sendBuff[0] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[0] - 1], MON_DATA_SPECIES);
|
sendBuff[0] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[0] - 1], MON_DATA_SPECIES);
|
||||||
sendBuff[1] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[1] - 1], MON_DATA_SPECIES, NULL);
|
sendBuff[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL);
|
||||||
gMain.savedCallback = NULL;
|
gMain.savedCallback = NULL;
|
||||||
data[0] = 4;
|
data[0] = 4;
|
||||||
sub_800E3A8();
|
sub_800E3A8();
|
||||||
|
|||||||
Executable
+887
@@ -0,0 +1,887 @@
|
|||||||
|
#include "global.h"
|
||||||
|
#include "battle.h"
|
||||||
|
#include "battle_gfx_sfx_util.h"
|
||||||
|
#include "berry.h"
|
||||||
|
#include "contest.h"
|
||||||
|
#include "contest_link_80F57C4.h"
|
||||||
|
#include "contest_painting.h"
|
||||||
|
#include "daycare.h"
|
||||||
|
#include "decompress.h"
|
||||||
|
#include "event_data.h"
|
||||||
|
#include "event_object_movement.h"
|
||||||
|
#include "international_string_util.h"
|
||||||
|
#include "link.h"
|
||||||
|
#include "link_rfu.h"
|
||||||
|
#include "main.h"
|
||||||
|
#include "menu.h"
|
||||||
|
#include "overworld.h"
|
||||||
|
#include "palette.h"
|
||||||
|
#include "party_menu.h"
|
||||||
|
#include "pokedex.h"
|
||||||
|
#include "pokemon.h"
|
||||||
|
#include "random.h"
|
||||||
|
#include "script.h"
|
||||||
|
#include "script_menu.h"
|
||||||
|
#include "sprite.h"
|
||||||
|
#include "string_util.h"
|
||||||
|
#include "tv.h"
|
||||||
|
#include "constants/event_objects.h"
|
||||||
|
#include "constants/items.h"
|
||||||
|
#include "constants/species.h"
|
||||||
|
#include "constants/vars.h"
|
||||||
|
|
||||||
|
extern const u16 gEventObjectPalette8[];
|
||||||
|
extern const u16 gEventObjectPalette17[];
|
||||||
|
extern const u16 gEventObjectPalette33[];
|
||||||
|
extern const u16 gEventObjectPalette34[];
|
||||||
|
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
|
||||||
|
|
||||||
|
extern u8 gSelectedOrderFromParty[];
|
||||||
|
|
||||||
|
const u8 gUnknown_0858D8EC[] = { 3, 4, 5, 14 };
|
||||||
|
|
||||||
|
static void sub_80F8EE8(u8 taskId);
|
||||||
|
static void sub_80F9088(u8 taskId);
|
||||||
|
static void sub_80F9460(void);
|
||||||
|
static void sub_80F94B8(void);
|
||||||
|
|
||||||
|
void SetContestTrainerGfxIds(void)
|
||||||
|
{
|
||||||
|
gSaveBlock1Ptr->vars[VAR_OBJ_GFX_ID_0 - VARS_START] = gContestMons[0].trainerGfxId;
|
||||||
|
gSaveBlock1Ptr->vars[VAR_OBJ_GFX_ID_1 - VARS_START] = gContestMons[1].trainerGfxId;
|
||||||
|
gSaveBlock1Ptr->vars[VAR_OBJ_GFX_ID_2 - VARS_START] = gContestMons[2].trainerGfxId;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80F8814(void)
|
||||||
|
{
|
||||||
|
u16 var1;
|
||||||
|
u8 var0 = gSpecialVar_0x8005;
|
||||||
|
switch (var0)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
var1 = 3;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
var1 = 4;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
var1 = 5;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
var1 = 100;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
gSpecialVar_0x8004 = var1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80F8850(void)
|
||||||
|
{
|
||||||
|
sub_80F8264();
|
||||||
|
sub_80F8290();
|
||||||
|
sub_80F8438();
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80F8864(void)
|
||||||
|
{
|
||||||
|
int contestWinner;
|
||||||
|
switch (gSpecialVar_ContestCategory)
|
||||||
|
{
|
||||||
|
case CONTEST_CATEGORY_COOL:
|
||||||
|
contestWinner = 8;
|
||||||
|
break;
|
||||||
|
case CONTEST_CATEGORY_BEAUTY:
|
||||||
|
contestWinner = 9;
|
||||||
|
break;
|
||||||
|
case CONTEST_CATEGORY_CUTE:
|
||||||
|
contestWinner = 10;
|
||||||
|
break;
|
||||||
|
case CONTEST_CATEGORY_SMART:
|
||||||
|
contestWinner = 11;
|
||||||
|
break;
|
||||||
|
case CONTEST_CATEGORY_TOUGH:
|
||||||
|
default:
|
||||||
|
contestWinner = 12;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!gSaveBlock1Ptr->contestWinners[contestWinner].species)
|
||||||
|
gSpecialVar_0x8004 = 0;
|
||||||
|
else
|
||||||
|
gSpecialVar_0x8004 = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80F88DC(void)
|
||||||
|
{
|
||||||
|
sub_80DEDA8(0xFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80F88E8(void)
|
||||||
|
{
|
||||||
|
if (gContestFinalStandings[gContestPlayerMonIndex] == 0
|
||||||
|
&& gSpecialVar_ContestRank == 3
|
||||||
|
&& gUnknown_02039F08[gContestPlayerMonIndex] >= 800)
|
||||||
|
{
|
||||||
|
gSpecialVar_0x8004 = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gSpecialVar_0x8004 = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 sub_80F8940(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
u8 var0 = 0;
|
||||||
|
|
||||||
|
for (i = 0; i < 5; i++)
|
||||||
|
{
|
||||||
|
if (gSaveBlock1Ptr->contestWinners[8 + i].species)
|
||||||
|
var0++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return var0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef NONMATCHING
|
||||||
|
void sub_80F8970(void)
|
||||||
|
{
|
||||||
|
s16 sp[4];
|
||||||
|
int i, j;
|
||||||
|
s16 condition;
|
||||||
|
u8 var2;
|
||||||
|
u8 var1;
|
||||||
|
s8 var0;
|
||||||
|
u8 r7;
|
||||||
|
|
||||||
|
for (i = 0; i < 4; i++)
|
||||||
|
sp[i] = gContestMonConditions[i];
|
||||||
|
|
||||||
|
|
||||||
|
for (i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
for (j = 3; j > i; j--)
|
||||||
|
{
|
||||||
|
if (sp[j - 1] < sp[j])
|
||||||
|
{
|
||||||
|
int temp = sp[j];
|
||||||
|
sp[j] = sp[j - 1];
|
||||||
|
sp[j - 1] = temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
condition = sp[gSpecialVar_0x8006];
|
||||||
|
var0 = 0;
|
||||||
|
var1 = 0;
|
||||||
|
for (i = 0; i < 4; i++)
|
||||||
|
{
|
||||||
|
if (sp[i] == condition)
|
||||||
|
{
|
||||||
|
var0++;
|
||||||
|
if (i == gSpecialVar_0x8006)
|
||||||
|
var1 = var0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < 4; i++)
|
||||||
|
{
|
||||||
|
if (sp[i] == condition)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
r7 = i;
|
||||||
|
var2 = var1;
|
||||||
|
for (i = 0; i < 4; i++)
|
||||||
|
{
|
||||||
|
if (condition == gContestMonConditions[i])
|
||||||
|
{
|
||||||
|
if (var2 == 1)
|
||||||
|
break;
|
||||||
|
var2--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
StringCopy(gStringVar1, gContestMons[i].nickname);
|
||||||
|
StringCopy(gStringVar2, gContestMons[i].trainerName);
|
||||||
|
sub_81DB5AC(gStringVar2);
|
||||||
|
|
||||||
|
if (var0 == 1 || var1 == var0)
|
||||||
|
gSpecialVar_0x8006 = r7;
|
||||||
|
else
|
||||||
|
gSpecialVar_0x8006 = r7 + 4;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
NAKED
|
||||||
|
void sub_80F8970(void)
|
||||||
|
{
|
||||||
|
asm_unified("\n\
|
||||||
|
push {r4-r7,lr}\n\
|
||||||
|
mov r7, r10\n\
|
||||||
|
mov r6, r9\n\
|
||||||
|
mov r5, r8\n\
|
||||||
|
push {r5-r7}\n\
|
||||||
|
sub sp, 0x8\n\
|
||||||
|
ldr r0, =gContestMonConditions\n\
|
||||||
|
mov r12, r0\n\
|
||||||
|
ldr r1, =gSpecialVar_0x8006\n\
|
||||||
|
mov r9, r1\n\
|
||||||
|
ldr r2, =gContestMons + 2\n\
|
||||||
|
mov r10, r2\n\
|
||||||
|
mov r2, r12\n\
|
||||||
|
mov r1, sp\n\
|
||||||
|
movs r6, 0x3\n\
|
||||||
|
_080F898E:\n\
|
||||||
|
ldrh r0, [r2]\n\
|
||||||
|
strh r0, [r1]\n\
|
||||||
|
adds r2, 0x2\n\
|
||||||
|
adds r1, 0x2\n\
|
||||||
|
subs r6, 0x1\n\
|
||||||
|
cmp r6, 0\n\
|
||||||
|
bge _080F898E\n\
|
||||||
|
movs r6, 0\n\
|
||||||
|
_080F899E:\n\
|
||||||
|
movs r1, 0x3\n\
|
||||||
|
cmp r1, r6\n\
|
||||||
|
ble _080F89C8\n\
|
||||||
|
_080F89A4:\n\
|
||||||
|
subs r5, r1, 0x1\n\
|
||||||
|
lsls r0, r5, 1\n\
|
||||||
|
mov r4, sp\n\
|
||||||
|
adds r3, r4, r0\n\
|
||||||
|
lsls r0, r1, 1\n\
|
||||||
|
adds r2, r4, r0\n\
|
||||||
|
ldrh r4, [r3]\n\
|
||||||
|
movs r7, 0\n\
|
||||||
|
ldrsh r1, [r3, r7]\n\
|
||||||
|
movs r7, 0\n\
|
||||||
|
ldrsh r0, [r2, r7]\n\
|
||||||
|
cmp r1, r0\n\
|
||||||
|
bge _080F89C2\n\
|
||||||
|
strh r4, [r2]\n\
|
||||||
|
strh r0, [r3]\n\
|
||||||
|
_080F89C2:\n\
|
||||||
|
adds r1, r5, 0\n\
|
||||||
|
cmp r1, r6\n\
|
||||||
|
bgt _080F89A4\n\
|
||||||
|
_080F89C8:\n\
|
||||||
|
adds r6, 0x1\n\
|
||||||
|
cmp r6, 0x2\n\
|
||||||
|
ble _080F899E\n\
|
||||||
|
mov r2, r9\n\
|
||||||
|
ldrh r0, [r2]\n\
|
||||||
|
lsls r0, 1\n\
|
||||||
|
add r0, sp\n\
|
||||||
|
ldrh r0, [r0]\n\
|
||||||
|
movs r2, 0\n\
|
||||||
|
mov r8, r2\n\
|
||||||
|
movs r6, 0\n\
|
||||||
|
lsls r0, 16\n\
|
||||||
|
asrs r4, r0, 16\n\
|
||||||
|
adds r3, r0, 0\n\
|
||||||
|
mov r1, sp\n\
|
||||||
|
mov r5, r9\n\
|
||||||
|
_080F89E8:\n\
|
||||||
|
movs r7, 0\n\
|
||||||
|
ldrsh r0, [r1, r7]\n\
|
||||||
|
cmp r0, r4\n\
|
||||||
|
bne _080F8A02\n\
|
||||||
|
lsls r0, r2, 24\n\
|
||||||
|
movs r2, 0x80\n\
|
||||||
|
lsls r2, 17\n\
|
||||||
|
adds r0, r2\n\
|
||||||
|
lsrs r2, r0, 24\n\
|
||||||
|
ldrh r7, [r5]\n\
|
||||||
|
cmp r6, r7\n\
|
||||||
|
bne _080F8A02\n\
|
||||||
|
mov r8, r2\n\
|
||||||
|
_080F8A02:\n\
|
||||||
|
adds r1, 0x2\n\
|
||||||
|
adds r6, 0x1\n\
|
||||||
|
cmp r6, 0x3\n\
|
||||||
|
ble _080F89E8\n\
|
||||||
|
movs r6, 0\n\
|
||||||
|
mov r0, sp\n\
|
||||||
|
movs r1, 0\n\
|
||||||
|
ldrsh r0, [r0, r1]\n\
|
||||||
|
asrs r1, r3, 16\n\
|
||||||
|
lsls r2, 24\n\
|
||||||
|
mov r9, r2\n\
|
||||||
|
cmp r0, r1\n\
|
||||||
|
beq _080F8A30\n\
|
||||||
|
adds r2, r1, 0\n\
|
||||||
|
mov r1, sp\n\
|
||||||
|
_080F8A20:\n\
|
||||||
|
adds r1, 0x2\n\
|
||||||
|
adds r6, 0x1\n\
|
||||||
|
cmp r6, 0x3\n\
|
||||||
|
bgt _080F8A30\n\
|
||||||
|
movs r4, 0\n\
|
||||||
|
ldrsh r0, [r1, r4]\n\
|
||||||
|
cmp r0, r2\n\
|
||||||
|
bne _080F8A20\n\
|
||||||
|
_080F8A30:\n\
|
||||||
|
lsls r0, r6, 24\n\
|
||||||
|
lsrs r7, r0, 24\n\
|
||||||
|
mov r2, r8\n\
|
||||||
|
movs r6, 0\n\
|
||||||
|
asrs r1, r3, 16\n\
|
||||||
|
mov r5, r12\n\
|
||||||
|
movs r4, 0\n\
|
||||||
|
ldrsh r0, [r5, r4]\n\
|
||||||
|
b _080F8A66\n\
|
||||||
|
.pool\n\
|
||||||
|
_080F8A50:\n\
|
||||||
|
subs r0, r2, 0x1\n\
|
||||||
|
lsls r0, 24\n\
|
||||||
|
lsrs r2, r0, 24\n\
|
||||||
|
_080F8A56:\n\
|
||||||
|
adds r6, 0x1\n\
|
||||||
|
cmp r6, 0x3\n\
|
||||||
|
bgt _080F8A6E\n\
|
||||||
|
lsls r0, r6, 1\n\
|
||||||
|
add r0, r12\n\
|
||||||
|
asrs r1, r3, 16\n\
|
||||||
|
movs r5, 0\n\
|
||||||
|
ldrsh r0, [r0, r5]\n\
|
||||||
|
_080F8A66:\n\
|
||||||
|
cmp r1, r0\n\
|
||||||
|
bne _080F8A56\n\
|
||||||
|
cmp r2, 0x1\n\
|
||||||
|
bne _080F8A50\n\
|
||||||
|
_080F8A6E:\n\
|
||||||
|
lsls r4, r6, 6\n\
|
||||||
|
mov r0, r10\n\
|
||||||
|
adds r1, r4, r0\n\
|
||||||
|
ldr r0, =gStringVar1\n\
|
||||||
|
bl StringCopy\n\
|
||||||
|
ldr r5, =gStringVar2\n\
|
||||||
|
mov r0, r10\n\
|
||||||
|
adds r0, 0xB\n\
|
||||||
|
adds r4, r0\n\
|
||||||
|
adds r0, r5, 0\n\
|
||||||
|
adds r1, r4, 0\n\
|
||||||
|
bl StringCopy\n\
|
||||||
|
adds r0, r5, 0\n\
|
||||||
|
bl sub_81DB5AC\n\
|
||||||
|
mov r1, r9\n\
|
||||||
|
asrs r0, r1, 24\n\
|
||||||
|
cmp r0, 0x1\n\
|
||||||
|
beq _080F8A9C\n\
|
||||||
|
cmp r8, r0\n\
|
||||||
|
bne _080F8AB0\n\
|
||||||
|
_080F8A9C:\n\
|
||||||
|
ldr r0, =gSpecialVar_0x8006\n\
|
||||||
|
strh r7, [r0]\n\
|
||||||
|
b _080F8AB6\n\
|
||||||
|
.pool\n\
|
||||||
|
_080F8AB0:\n\
|
||||||
|
ldr r1, =gSpecialVar_0x8006\n\
|
||||||
|
adds r0, r7, 0x4\n\
|
||||||
|
strh r0, [r1]\n\
|
||||||
|
_080F8AB6:\n\
|
||||||
|
add sp, 0x8\n\
|
||||||
|
pop {r3-r5}\n\
|
||||||
|
mov r8, r3\n\
|
||||||
|
mov r9, r4\n\
|
||||||
|
mov r10, r5\n\
|
||||||
|
pop {r4-r7}\n\
|
||||||
|
pop {r0}\n\
|
||||||
|
bx r0\n\
|
||||||
|
.pool");
|
||||||
|
}
|
||||||
|
#endif // NONMATCHING
|
||||||
|
|
||||||
|
static void ShowContestWinnerCleanup(void)
|
||||||
|
{
|
||||||
|
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowContestWinner(void)
|
||||||
|
{
|
||||||
|
SetMainCallback2(sub_812FDEC);
|
||||||
|
gMain.savedCallback = ShowContestWinnerCleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80F8AFC(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (gIsLinkContest & 1)
|
||||||
|
{
|
||||||
|
for (i = 0; i < gUnknown_02039F30; i++)
|
||||||
|
{
|
||||||
|
int version = (u8)gLinkPlayers[i].version;
|
||||||
|
if (version == VERSION_RUBY || version == VERSION_SAPPHIRE)
|
||||||
|
{
|
||||||
|
if (gLinkPlayers[i].gender == MALE)
|
||||||
|
gContestMons[i].trainerGfxId = EVENT_OBJ_GFX_LINK_RS_BRENDAN;
|
||||||
|
else
|
||||||
|
gContestMons[i].trainerGfxId = EVENT_OBJ_GFX_LINK_RS_MAY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
VarSet(VAR_OBJ_GFX_ID_0, gContestMons[0].trainerGfxId);
|
||||||
|
VarSet(VAR_OBJ_GFX_ID_1, gContestMons[1].trainerGfxId);
|
||||||
|
VarSet(VAR_OBJ_GFX_ID_2, gContestMons[2].trainerGfxId);
|
||||||
|
VarSet(VAR_OBJ_GFX_ID_3, gContestMons[3].trainerGfxId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80F8B94(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
u8 eventObjectId;
|
||||||
|
int version;
|
||||||
|
struct Sprite *sprite;
|
||||||
|
|
||||||
|
gReservedSpritePaletteCount = 12;
|
||||||
|
if (gIsLinkContest & 1)
|
||||||
|
{
|
||||||
|
for (i = 0; i < gUnknown_02039F30; i++)
|
||||||
|
{
|
||||||
|
eventObjectId = GetEventObjectIdByLocalIdAndMap(gUnknown_0858D8EC[i], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
|
||||||
|
sprite = &gSprites[gEventObjects[eventObjectId].spriteId];
|
||||||
|
sprite->oam.paletteNum = 6 + i;
|
||||||
|
version = (u8)gLinkPlayers[i].version;
|
||||||
|
if (version == VERSION_RUBY || version == VERSION_SAPPHIRE)
|
||||||
|
{
|
||||||
|
if (gLinkPlayers[i].gender == MALE)
|
||||||
|
LoadPalette(gEventObjectPalette33, 0x160 + i * 0x10, 0x20);
|
||||||
|
else
|
||||||
|
LoadPalette(gEventObjectPalette34, 0x160 + i * 0x10, 0x20);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (gLinkPlayers[i].gender == MALE)
|
||||||
|
LoadPalette(gEventObjectPalette8, 0x160 + i * 0x10, 0x20);
|
||||||
|
else
|
||||||
|
LoadPalette(gEventObjectPalette17, 0x160 + i * 0x10, 0x20);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 GiveMonArtistRibbon(void)
|
||||||
|
{
|
||||||
|
u8 hasArtistRibbon;
|
||||||
|
|
||||||
|
hasArtistRibbon = GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_ARTIST_RIBBON);
|
||||||
|
if (!hasArtistRibbon && gContestFinalStandings[gContestPlayerMonIndex] == 0 && gSpecialVar_ContestRank == 3
|
||||||
|
&& gUnknown_02039F08[gContestPlayerMonIndex] >= 800)
|
||||||
|
{
|
||||||
|
hasArtistRibbon = 1;
|
||||||
|
SetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_ARTIST_RIBBON, &hasArtistRibbon);
|
||||||
|
if (GetRibbonCount(&gPlayerParty[gUnknown_02039F24]) > 4)
|
||||||
|
sub_80EE4DC(&gPlayerParty[gUnknown_02039F24], MON_DATA_ARTIST_RIBBON);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 sub_80F8D24(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowContestEntryMonPic(void)
|
||||||
|
{
|
||||||
|
const struct CompressedSpritePalette *palette;
|
||||||
|
u32 personality, otId;
|
||||||
|
u16 species;
|
||||||
|
u8 spriteId;
|
||||||
|
u8 taskId;
|
||||||
|
u8 left, top;
|
||||||
|
|
||||||
|
if (FindTaskIdByFunc(sub_80F8EE8) == 0xFF)
|
||||||
|
{
|
||||||
|
AllocateMonSpritesGfx();
|
||||||
|
left = 10;
|
||||||
|
top = 3;
|
||||||
|
species = gContestMons[gSpecialVar_0x8006].species;
|
||||||
|
personality = gContestMons[gSpecialVar_0x8006].personality;
|
||||||
|
otId = gContestMons[gSpecialVar_0x8006].otId;
|
||||||
|
taskId = CreateTask(sub_80F8EE8, 0x50);
|
||||||
|
gTasks[taskId].data[0] = 0;
|
||||||
|
gTasks[taskId].data[1] = species;
|
||||||
|
if (gSpecialVar_0x8006 == gContestPlayerMonIndex)
|
||||||
|
HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality);
|
||||||
|
else
|
||||||
|
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality);
|
||||||
|
|
||||||
|
palette = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality);
|
||||||
|
LoadCompressedObjectPalette(palette);
|
||||||
|
SetMultiuseSpriteTemplateToPokemon(species, 1);
|
||||||
|
gMultiuseSpriteTemplate.paletteTag = palette->tag;
|
||||||
|
spriteId = CreateSprite(&gMultiuseSpriteTemplate, (left + 1) * 8 + 32, (top * 8) + 40, 0);
|
||||||
|
|
||||||
|
if (gIsLinkContest & 1)
|
||||||
|
{
|
||||||
|
if (!(gIsLinkContest & 4))
|
||||||
|
DoMonFrontSpriteAnimation(&gSprites[spriteId], species, FALSE, 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DoMonFrontSpriteAnimation(&gSprites[spriteId], species, FALSE, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
gTasks[taskId].data[2] = spriteId;
|
||||||
|
gTasks[taskId].data[3] = left;
|
||||||
|
gTasks[taskId].data[4] = top;
|
||||||
|
gSprites[spriteId].callback = SpriteCallbackDummy;
|
||||||
|
gSprites[spriteId].oam.priority = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80F8EB8(void)
|
||||||
|
{
|
||||||
|
u8 taskId = FindTaskIdByFunc(sub_80F8EE8);
|
||||||
|
if (taskId != 0xFF)
|
||||||
|
{
|
||||||
|
gTasks[taskId].data[0]++;
|
||||||
|
FreeMonSpritesGfx();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80F8EE8(u8 taskId)
|
||||||
|
{
|
||||||
|
struct Task *task = &gTasks[taskId];
|
||||||
|
struct Sprite *sprite;
|
||||||
|
|
||||||
|
switch(task->data[0])
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
task->data[0]++;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
task->data[5] = CreateWindowFromRect(10, 3, 8, 8);
|
||||||
|
SetStandardWindowBorderStyle(task->data[5], 1);
|
||||||
|
task->data[0]++;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
sprite = &gSprites[task->data[2]];
|
||||||
|
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum));
|
||||||
|
|
||||||
|
if(sprite->oam.affineMode)
|
||||||
|
FreeOamMatrix(sprite->oam.matrixNum);
|
||||||
|
|
||||||
|
DestroySprite(sprite);
|
||||||
|
task->data[0]++;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
sub_80E2A78(gTasks[taskId].data[5]);
|
||||||
|
DestroyTask(taskId);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScriptGetMultiplayerId(void)
|
||||||
|
{
|
||||||
|
if ((gIsLinkContest & 1) && gUnknown_02039F30 == 4 && !(gIsLinkContest & 2))
|
||||||
|
gSpecialVar_Result = GetMultiplayerId();
|
||||||
|
else
|
||||||
|
gSpecialVar_Result = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScriptRandom(void)
|
||||||
|
{
|
||||||
|
u16 random;
|
||||||
|
u16 *scriptPtr;
|
||||||
|
|
||||||
|
if (gIsLinkContest & 1)
|
||||||
|
{
|
||||||
|
gContestRngValue = 1103515245 * gContestRngValue + 24691;
|
||||||
|
random = gContestRngValue >> 16;
|
||||||
|
scriptPtr = &gSpecialVar_Result;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
scriptPtr = &gSpecialVar_Result;
|
||||||
|
random = Random();
|
||||||
|
}
|
||||||
|
*scriptPtr = random % *scriptPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
u16 sub_80F903C(void)
|
||||||
|
{
|
||||||
|
gContestRngValue = 1103515245 * gContestRngValue + 24691;
|
||||||
|
return gContestRngValue >> 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 sub_80F905C(void)
|
||||||
|
{
|
||||||
|
if (gIsLinkContest & 2)
|
||||||
|
{
|
||||||
|
CreateTask(sub_80F9088, 5);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80F9088(u8 taskId)
|
||||||
|
{
|
||||||
|
switch (gTasks[taskId].data[0])
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
if (sub_800A520())
|
||||||
|
{
|
||||||
|
sub_800ADF8();
|
||||||
|
gTasks[taskId].data[0]++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
gTasks[taskId].data[0]++;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (sub_800A520() == 1)
|
||||||
|
{
|
||||||
|
EnableBothScriptContexts();
|
||||||
|
DestroyTask(taskId);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80F90DC(void)
|
||||||
|
{
|
||||||
|
if (gIsLinkContest & 2)
|
||||||
|
{
|
||||||
|
if (gReceivedRemoteLinkPlayers)
|
||||||
|
{
|
||||||
|
sub_800E0E8();
|
||||||
|
CreateWirelessStatusIndicatorSprite(8, 8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80F910C(void)
|
||||||
|
{
|
||||||
|
if (gIsLinkContest & 2)
|
||||||
|
{
|
||||||
|
if (gReceivedRemoteLinkPlayers)
|
||||||
|
sub_800E084();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 sub_80F9134(void)
|
||||||
|
{
|
||||||
|
if (gIsLinkContest & 4)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80F9154(void)
|
||||||
|
{
|
||||||
|
gIsLinkContest = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 sub_80F9160(void)
|
||||||
|
{
|
||||||
|
if (gIsLinkContest & 2)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HealPlayerParty(void)
|
||||||
|
{
|
||||||
|
u8 i, j;
|
||||||
|
u8 ppBonuses;
|
||||||
|
u8 arg[4];
|
||||||
|
|
||||||
|
// restore HP.
|
||||||
|
for(i = 0; i < gPlayerPartyCount; i++)
|
||||||
|
{
|
||||||
|
u16 maxHP = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP);
|
||||||
|
arg[0] = maxHP;
|
||||||
|
arg[1] = maxHP >> 8;
|
||||||
|
SetMonData(&gPlayerParty[i], MON_DATA_HP, arg);
|
||||||
|
ppBonuses = GetMonData(&gPlayerParty[i], MON_DATA_PP_BONUSES);
|
||||||
|
|
||||||
|
// restore PP.
|
||||||
|
for(j = 0; j < 4; j++)
|
||||||
|
{
|
||||||
|
arg[0] = CalculatePPWithBonus(GetMonData(&gPlayerParty[i], MON_DATA_MOVE1 + j), ppBonuses, j);
|
||||||
|
SetMonData(&gPlayerParty[i], MON_DATA_PP1 + j, arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
// since status is u32, the four 0 assignments here are probably for safety to prevent undefined data from reaching SetMonData.
|
||||||
|
arg[0] = 0;
|
||||||
|
arg[1] = 0;
|
||||||
|
arg[2] = 0;
|
||||||
|
arg[3] = 0;
|
||||||
|
SetMonData(&gPlayerParty[i], MON_DATA_STATUS, arg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 unused3)
|
||||||
|
{
|
||||||
|
u16 nationalDexNum;
|
||||||
|
int sentToPc;
|
||||||
|
u8 heldItem[2];
|
||||||
|
struct Pokemon mon;
|
||||||
|
|
||||||
|
CreateMon(&mon, species, level, 32, 0, 0, 0, 0);
|
||||||
|
heldItem[0] = item;
|
||||||
|
heldItem[1] = item >> 8;
|
||||||
|
SetMonData(&mon, MON_DATA_HELD_ITEM, heldItem);
|
||||||
|
sentToPc = GiveMonToPlayer(&mon);
|
||||||
|
nationalDexNum = SpeciesToNationalPokedexNum(species);
|
||||||
|
|
||||||
|
switch(sentToPc)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
case 1:
|
||||||
|
GetSetPokedexFlag(nationalDexNum, 2);
|
||||||
|
GetSetPokedexFlag(nationalDexNum, 3);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return sentToPc;
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 ScriptGiveEgg(u16 species)
|
||||||
|
{
|
||||||
|
struct Pokemon mon;
|
||||||
|
u8 isEgg;
|
||||||
|
|
||||||
|
CreateEgg(&mon, species, TRUE);
|
||||||
|
isEgg = TRUE;
|
||||||
|
SetMonData(&mon, MON_DATA_IS_EGG, &isEgg);
|
||||||
|
|
||||||
|
return GiveMonToPlayer(&mon);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HasEnoughMonsForDoubleBattle(void)
|
||||||
|
{
|
||||||
|
switch (GetMonsStateToDoubles())
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
gSpecialVar_Result = 0;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
gSpecialVar_Result = 1;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
gSpecialVar_Result = 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool8 CheckPartyMonHasHeldItem(u16 item)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for(i = 0; i < PARTY_SIZE; i++)
|
||||||
|
{
|
||||||
|
u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
|
||||||
|
if (species != SPECIES_NONE && species != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) == item)
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 sub_80F9370(void)
|
||||||
|
{
|
||||||
|
bool8 hasItem = CheckPartyMonHasHeldItem(ITEM_ENIGMA_BERRY);
|
||||||
|
if (hasItem == TRUE)
|
||||||
|
GetBerryNameByBerryType(ItemIdToBerryType(ITEM_ENIGMA_BERRY), gStringVar1);
|
||||||
|
|
||||||
|
return hasItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CreateScriptedWildMon(u16 species, u8 level, u16 item)
|
||||||
|
{
|
||||||
|
u8 heldItem[2];
|
||||||
|
|
||||||
|
ZeroEnemyPartyMons();
|
||||||
|
CreateMon(&gEnemyParty[0], species, level, 0x20, 0, 0, 0, 0);
|
||||||
|
if (item)
|
||||||
|
{
|
||||||
|
heldItem[0] = item;
|
||||||
|
heldItem[1] = item >> 8;
|
||||||
|
SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, heldItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScriptSetMonMoveSlot(u8 monIndex, u16 move, u8 slot)
|
||||||
|
{
|
||||||
|
if (monIndex > PARTY_SIZE)
|
||||||
|
monIndex = gPlayerPartyCount - 1;
|
||||||
|
|
||||||
|
SetMonMoveSlot(&gPlayerParty[monIndex], move, slot);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80F9438(void)
|
||||||
|
{
|
||||||
|
gMain.savedCallback = sub_80F9460;
|
||||||
|
VarSet(VAR_FRONTIER_FACILITY, 9); // this isn't a valid frontier facility id (??)
|
||||||
|
sub_81B8518(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80F9460(void)
|
||||||
|
{
|
||||||
|
switch (gSelectedOrderFromParty[0])
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
gSpecialVar_Result = 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
gSpecialVar_Result = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80F9490(void)
|
||||||
|
{
|
||||||
|
gMain.savedCallback = sub_80F94B8;
|
||||||
|
sub_81B8518(gSpecialVar_0x8004 + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_80F94B8(void)
|
||||||
|
{
|
||||||
|
switch (gSelectedOrderFromParty[0])
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
gSpecialVar_Result = 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
gSpecialVar_Result = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReducePlayerPartyToSelectedMons(void)
|
||||||
|
{
|
||||||
|
struct Pokemon party[4];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
CpuFill32(0, party, sizeof party);
|
||||||
|
|
||||||
|
// copy the selected pokemon according to the order.
|
||||||
|
for (i = 0; i < 4; i++)
|
||||||
|
if (gSelectedOrderFromParty[i]) // as long as the order keeps going (did the player select 1 mon? 2? 3?), do not stop
|
||||||
|
party[i] = gPlayerParty[gSelectedOrderFromParty[i] - 1]; // index is 0 based, not literal
|
||||||
|
|
||||||
|
CpuFill32(0, gPlayerParty, sizeof gPlayerParty);
|
||||||
|
|
||||||
|
// overwrite the first 4 with the order copied to.
|
||||||
|
for (i = 0; i < 4; i++)
|
||||||
|
gPlayerParty[i] = party[i];
|
||||||
|
|
||||||
|
CalculatePlayerPartyCount();
|
||||||
|
}
|
||||||
+1
-1
@@ -472,7 +472,7 @@ gUnknown_0203CEF0: @ 203CEF0
|
|||||||
gUnknown_0203CEF4: @ 203CEF4
|
gUnknown_0203CEF4: @ 203CEF4
|
||||||
.space 0x4
|
.space 0x4
|
||||||
|
|
||||||
gUnknown_0203CEF8: @ 203CEF8
|
gSelectedOrderFromParty: @ 203CEF8
|
||||||
.space 0x4
|
.space 0x4
|
||||||
|
|
||||||
gUnknown_0203CEFC: @ 203CEFC
|
gUnknown_0203CEFC: @ 203CEFC
|
||||||
|
|||||||
Reference in New Issue
Block a user