Merge branch 'master' into movement-action

This commit is contained in:
cbt6
2022-08-15 12:54:47 +08:00
committed by GitHub
286 changed files with 8970 additions and 9432 deletions
+10 -4
View File
@@ -2378,7 +2378,13 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = {
{PIXEL_FILL(0x1), 4, 0x00, 1, 0, 1, 1, 0x2, 0x1, 0x3}
};
const u8 gUnknown_83FEC90[] = {0x04, 0x05, 0x02, 0x02};
static const u8 sNpcTextColorToFont[] =
{
[NPC_TEXT_COLOR_MALE] = FONT_4,
[NPC_TEXT_COLOR_FEMALE] = FONT_5,
[NPC_TEXT_COLOR_MON] = FONT_2,
[NPC_TEXT_COLOR_NEUTRAL] = FONT_2,
};
// windowId: Upper 2 bits are text flags
// x40: Use NPC context-defined font
@@ -2388,15 +2394,15 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId) {
struct TextPrinterTemplate printerTemplate;
u8 speed;
int x;
u8 context;
u8 color;
u8 textFlags = windowId & 0xC0;
windowId &= 0x3F;
if (!(textFlags & 0x80))
FillWindowPixelBuffer(windowId, sTextOnWindowsInfo_Normal[windowId].fillValue);
if (textFlags & 0x40) {
context = ContextNpcGetTextColor();
printerTemplate.fontId = gUnknown_83FEC90[context];
color = ContextNpcGetTextColor();
printerTemplate.fontId = sNpcTextColorToFont[color];
}
else {
printerTemplate.fontId = sTextOnWindowsInfo_Normal[windowId].fontId;
-247
View File
@@ -1,247 +0,0 @@
#ifndef GUARD_DATA_DODRIO_BERRY_PICKING_H
#define GUARD_DATA_DODRIO_BERRY_PICKING_H
static const struct BgTemplate sUnknown_847565C[] =
{
{
.bg = 0,
.charBaseIndex = 0,
.mapBaseIndex = 30,
.screenSize = 0,
.paletteMode = 0,
.priority = 0,
.baseTile = 0
},
{
.bg = 1,
.charBaseIndex = 2,
.mapBaseIndex = 12,
.screenSize = 1,
.paletteMode = 0,
.priority = 1,
.baseTile = 0
},
{
.bg = 2,
.charBaseIndex = 2,
.mapBaseIndex = 14,
.screenSize = 1,
.paletteMode = 0,
.priority = 1,
.baseTile = 0
},
{
.bg = 3,
.charBaseIndex = 3,
.mapBaseIndex = 31,
.screenSize = 0,
.paletteMode = 0,
.priority = 2,
.baseTile = 0
},
};
// Unknown unreferenced data, feel free to remove.
static const u32 sUnused[] = {255, 0};
static const struct WindowTemplate sUnknown_8475674[] =
{
{
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 1,
.width = 28,
.height = 3,
.paletteNum = 13,
.baseBlock = 0x13,
},
{
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 6,
.width = 28,
.height = 13,
.paletteNum = 13,
.baseBlock = 0x67,
}
};
static const struct WindowTemplate sUnknown_8475684 =
{
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 6,
.width = 28,
.height = 7,
.paletteNum = 13,
.baseBlock = 0x67,
};
static const struct WindowTemplate sUnknown_847568C[] =
{
{
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 8,
.width = 19,
.height = 3,
.paletteNum = 13,
.baseBlock = 0x13,
},
{
.bg = 0,
.tilemapLeft = 22,
.tilemapTop = 7,
.width = 6,
.height = 4,
.paletteNum = 13,
.baseBlock = 0x4C,
}
};
static const struct WindowTemplate sUnknown_847569C =
{
.bg = 0,
.tilemapLeft = 4,
.tilemapTop = 6,
.width = 22,
.height = 5,
.paletteNum = 13,
.baseBlock = 0x13,
};
static const struct WindowTemplate sUnknown_84756A4 =
{
.bg = 0,
.tilemapLeft = 5,
.tilemapTop = 8,
.width = 19,
.height = 3,
.paletteNum = 13,
.baseBlock = 0x13,
};
static const u8 sUnknown_8471F50[5][5][11] =
{
{
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
},
{
{0, 1, 2, 3, 4, 5, 6, 3, 8, 9, 0},
{0, 1, 2, 5, 6, 3, 4, 5, 8, 9, 0},
},
{
{0, 1, 2, 3, 4, 5, 6, 7, 2, 9, 0},
{0, 1, 4, 5, 6, 7, 2, 3, 4, 9, 0},
{0, 1, 6, 7, 2, 3, 4, 5, 6, 9, 0},
},
{
{0, 1, 2, 3, 4, 5, 6, 7, 8, 1, 0},
{0, 3, 4, 5, 6, 7, 8, 1, 2, 3, 0},
{0, 5, 6, 7, 8, 1, 2, 3, 4, 5, 0},
{0, 7, 8, 1, 2, 3, 4, 5, 6, 7, 0},
},
{
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
{2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2},
{4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4},
{6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6},
{8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8},
},
};
static const u8 sUnknown_8472063[5][5][3] =
{
{
{4, 5, 6},
},
{
{3, 4, 5},
{5, 6, 3},
},
{
{4, 5, 6},
{6, 7, 2},
{2, 3, 4},
},
{
{3, 4, 5},
{5, 6, 7},
{7, 8, 1},
{1, 2, 3},
},
{
{4, 5, 6},
{6, 7, 8},
{8, 9, 0},
{0, 1, 2},
{2, 3, 4},
},
};
static const u8 sUnknown_84720AE[5][5][3] =
{
{
{1, 0, 1},
},
{
{1, 0, 1},
{0, 1, 0},
},
{
{2, 0, 1},
{0, 1, 2},
{1, 2, 0},
},
{
{3, 0, 1},
{0, 1, 2},
{1, 2, 3},
{2, 3, 0},
},
{
{4, 0, 1},
{0, 1, 2},
{1, 2, 3},
{2, 3, 4},
{3, 4, 0},
},
};
ALIGNED(4)
static const u8 sUnknown_84720FC[5][11] =
{
{9, 9, 9, 9, 1, 1, 1, 9, 9, 9, 9},
{9, 9, 9, 0, 0, 1, 1, 0, 9, 9, 9},
{9, 9, 2, 2, 0, 0, 1, 1, 1, 9, 9},
{9, 3, 3, 0, 0, 1, 1, 2, 2, 3, 9},
{3, 3, 4, 4, 0, 0, 1, 1, 2, 2, 3},
};
static const u8 sUnknown_8472133[5][5] =
{
{5},
{4, 6},
{3, 5, 7},
{2, 4, 6, 8},
{1, 3, 5, 6, 9},
};
static const u16 sDodrioBerryBgPal1[] = INCBIN_U16("graphics/link_games/dodrioberry_bg1.gbapal",
"graphics/link_games/dodrioberry_bg2.gbapal");
static const u16 sDodrioBerryPkmnPal[] = INCBIN_U16("graphics/link_games/dodrioberry_pkmn.gbapal");
static const u16 sDodrioBerryShinyPal[] = INCBIN_U16("graphics/link_games/dodrioberry_shiny.gbapal");
static const u16 sDodrioBerryStatusPal[] = INCBIN_U16("graphics/link_games/dodrioberry_status.gbapal");
static const u16 sDodrioBerrySpritesPal[] = INCBIN_U16("graphics/link_games/dodrioberry_berrysprites.gbapal");
static const u32 sDodrioBerrySpritesGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_berrysprites.4bpp.lz");
static const u16 sDodrioBerryPlatformPal[] = INCBIN_U16("graphics/link_games/dodrioberry_platform.gbapal");
static const u32 sDodrioBerryBgGfx1[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.4bpp.lz");
static const u32 sDodrioBerryBgGfx2[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2.4bpp.lz");
static const u32 sDodrioBerryStatusGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_status.4bpp.lz");
static const u32 sDodrioBerryPlatformGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_platform.4bpp.lz");
static const u32 sDodrioBerryPkmnGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_pkmn.4bpp.lz");
static const u32 sDodrioBerryBgTilemap1[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.bin.lz");
static const u32 sDodrioBerryBgTilemap2Right[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2right.bin.lz");
static const u32 sDodrioBerryBgTilemap2Left[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2left.bin.lz");
#endif //GUARD_DATA_DODRIO_BERRY_PICKING_H
+1 -1
View File
@@ -1969,7 +1969,7 @@ static void CB2_EggHatch_1(void)
species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES);
gender = GetMonGender(&gPlayerParty[sEggHatchData->eggPartyID]);
personality = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0);
DoNamingScreen(NAMING_SCREEN_NAME_RATER, gStringVar3, species, gender, personality, EggHatchSetMonNickname);
DoNamingScreen(NAMING_SCREEN_NICKNAME, gStringVar3, species, gender, personality, EggHatchSetMonNickname);
break;
case 1:
case -1:
+3747 -1228
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-241
View File
@@ -1,241 +0,0 @@
#include "global.h"
#include "dodrio_berry_picking.h"
#include "link.h"
#include "link_rfu.h"
void sub_815A5BC(s32 a0)
{
struct Padded_U8 data[2];
data[0].value = 1;
data[1].value = a0;
Rfu_SendPacket(data);
}
u8 sub_815A5E8(s32 a0)
{
u8 * r1;
if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00)
return 0;
r1 = (u8 *)&gRecvCmds[a0][1];
if (r1[0] == 1)
return r1[4];
return 0;
}
struct UnkPacket2
{
u8 id;
u8 unk1_0:4;
u8 unk1_1:4;
u16 unk2_0:4;
u16 unk2_1:4;
u16 unk3_0:4;
u16 unk3_1:4;
u16 unk4_0:4;
u16 unk4_1:4;
u16 unk5_0:4;
u16 unk5_1:4;
u16 unk6_0:2;
u16 unk6_1:2;
u16 unk6_2:2;
u16 unk6_3:2;
u16 unk7_0:2;
u16 unk7_1:2;
u16 unk7_2:2;
u16 unk7_3:2;
u8 unk8_0:2;
u8 unk8_1:2;
u8 unk8_2:2;
u8 unk8_3:2;
u8 unk9_0:2;
u8 unk9_1:2;
u8 unk9_2:2;
u8 unk9_3:1;
u8 unk9_4:1;
u8 unkA_0:1;
u8 unkA_1:1;
u8 unkA_2:1;
u8 unkA_3:5;
u8 unkB_0:1;
u8 unkB_1:1;
u8 unkB_2:1;
u8 unkB_3:1;
u8 unkB_4:1;
u8 unkB_5:1;
u8 unkB_6:1;
};
void sub_815A61C(struct DodrioSubstruct_31A0 * arg0, struct DodrioSubstruct_31A0_2C * arg1, struct DodrioSubstruct_31A0_2C * arg2, struct DodrioSubstruct_31A0_2C * arg3, struct DodrioSubstruct_31A0_2C * arg4, struct DodrioSubstruct_31A0_2C * arg5, u8 arg6, u32 arg7, u32 arg8)
{
struct UnkPacket2 packet;
struct DodrioSubstruct_31A0_14 * ptr = &arg0->unk14;
packet.id = 2;
packet.unk1_0 = ptr->unkB[0];
packet.unk1_1 = ptr->unkB[1];
packet.unk2_0 = ptr->unkB[2];
packet.unk2_1 = ptr->unkB[3];
packet.unk3_0 = ptr->unkB[4];
packet.unk3_1 = ptr->unkB[5];
packet.unk4_0 = ptr->unkB[6];
packet.unk4_1 = ptr->unkB[7];
packet.unk5_0 = ptr->unkB[8];
packet.unk5_1 = ptr->unkB[9];
packet.unk6_0 = ptr->unk0[0];
packet.unk6_1 = ptr->unk0[1];
packet.unk6_2 = ptr->unk0[2];
packet.unk6_3 = ptr->unk0[3];
packet.unk7_0 = ptr->unk0[4];
packet.unk7_1 = ptr->unk0[5];
packet.unk7_2 = ptr->unk0[6];
packet.unk7_3 = ptr->unk0[7];
packet.unk8_0 = ptr->unk0[8];
packet.unk8_1 = ptr->unk0[9];
packet.unk8_2 = arg1->unk0;
packet.unk8_3 = arg2->unk0;
packet.unk9_0 = arg3->unk0;
packet.unk9_1 = arg4->unk0;
packet.unk9_2 = arg5->unk0;
packet.unk9_3 = arg1->unk4;
packet.unk9_4 = arg2->unk4;
packet.unkA_0 = arg3->unk4;
packet.unkA_1 = arg4->unk4;
packet.unkA_2 = arg5->unk4;
packet.unkB_2 = arg1->unk8;
packet.unkB_3 = arg2->unk8;
packet.unkB_4 = arg3->unk8;
packet.unkB_5 = arg4->unk8;
packet.unkB_6 = arg5->unk8;
packet.unkA_3 = arg6;
packet.unkB_1 = arg7;
packet.unkB_0 = arg8;
Rfu_SendPacket(&packet);
}
u32 sub_815A950(u32 unused, struct DodrioSubstruct_31A0 * arg0, struct DodrioSubstruct_31A0_2C * arg1, struct DodrioSubstruct_31A0_2C * arg2, struct DodrioSubstruct_31A0_2C * arg3, struct DodrioSubstruct_31A0_2C * arg4, struct DodrioSubstruct_31A0_2C * arg5, u8 *arg6, u32 *arg7, u32 *arg8)
{
struct UnkPacket2 * packet;
struct DodrioSubstruct_31A0_14 * ptr = &arg0->unk14;
if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00)
return 0;
packet = (void *)&gRecvCmds[0][1];
if (packet->id == 2)
{
ptr->unkB[0] = packet->unk1_0;
ptr->unkB[1] = packet->unk1_1;
ptr->unkB[2] = packet->unk2_0;
ptr->unkB[3] = packet->unk2_1;
ptr->unkB[4] = packet->unk3_0;
ptr->unkB[5] = packet->unk3_1;
ptr->unkB[6] = packet->unk4_0;
ptr->unkB[7] = packet->unk4_1;
ptr->unkB[8] = packet->unk5_0;
ptr->unkB[9] = packet->unk5_1;
ptr->unkB[10] = packet->unk1_0;
ptr->unk0[0] = packet->unk6_0;
ptr->unk0[1] = packet->unk6_1;
ptr->unk0[2] = packet->unk6_2;
ptr->unk0[3] = packet->unk6_3;
ptr->unk0[4] = packet->unk7_0;
ptr->unk0[5] = packet->unk7_1;
ptr->unk0[6] = packet->unk7_2;
ptr->unk0[7] = packet->unk7_3;
ptr->unk0[8] = packet->unk8_0;
ptr->unk0[9] = packet->unk8_1;
ptr->unk0[10] = packet->unk6_0;
arg1->unk0 = packet->unk8_2;
arg1->unk4 = packet->unk9_3;
arg1->unk8 = packet->unkB_2;
arg2->unk0 = packet->unk8_3;
arg2->unk4 = packet->unk9_4;
arg2->unk8 = packet->unkB_3;
arg3->unk0 = packet->unk9_0;
arg3->unk4 = packet->unkA_0;
arg3->unk8 = packet->unkB_4;
arg4->unk0 = packet->unk9_1;
arg4->unk4 = packet->unkA_1;
arg4->unk8 = packet->unkB_5;
arg5->unk0 = packet->unk9_2;
arg5->unk4 = packet->unkA_2;
arg5->unk8 = packet->unkB_6;
*arg6 = packet->unkA_3;
*arg7 = packet->unkB_1;
*arg8 = packet->unkB_0;
return 1;
}
return 0;
}
struct UnkPacket3
{
u8 id;
u8 ALIGNED(4) unk4;
};
void sub_815AAD8(u8 arg0)
{
struct UnkPacket3 packet;
packet.id = 3;
packet.unk4 = arg0;
Rfu_SendPacket(&packet);
}
u32 sub_815AB04(u32 arg0, u8 *arg1)
{
struct UnkPacket3 * packet;
if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00)
return 0;
packet = (void *)&gRecvCmds[arg0][1];
if (packet->id == 3)
{
*arg1 = packet->unk4;
return 1;
}
return 0;
}
struct UnkPacket4
{
u8 id;
u32 unk4;
};
void sub_815AB3C(u32 arg0)
{
struct UnkPacket4 packet;
packet.id = 4;
packet.unk4 = arg0;
Rfu_SendPacket(&packet);
}
u32 sub_815AB60(u32 arg0)
{
struct UnkPacket4 * packet;
if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00)
return 0;
packet = (void *)&gRecvCmds[arg0][1];
if (packet->id == 4)
return packet->unk4;
return 0;
}
+274
View File
@@ -0,0 +1,274 @@
#include "global.h"
#include "dodrio_berry_picking.h"
#include "link.h"
#include "link_rfu.h"
enum {
PACKET_READY_START = 1,
PACKET_GAME_STATE,
PACKET_PICK_STATE,
PACKET_READY_END,
};
struct ReadyToStartPacket
{
u8 id;
bool8 ALIGNED(4) ready;
};
struct GameStatePacket
{
u8 id;
u8 fallDist_Col0:4;
u8 fallDist_Col1:4;
u16 fallDist_Col2:4;
u16 fallDist_Col3:4;
u16 fallDist_Col4:4;
u16 fallDist_Col5:4;
u16 fallDist_Col6:4;
u16 fallDist_Col7:4;
u16 fallDist_Col8:4;
u16 fallDist_Col9:4;
u16 berryId_Col0:2;
u16 berryId_Col1:2;
u16 berryId_Col2:2;
u16 berryId_Col3:2;
u16 berryId_Col4:2;
u16 berryId_Col5:2;
u16 berryId_Col6:2;
u16 berryId_Col7:2;
u8 berryId_Col8:2;
u8 berryId_Col9:2;
u8 pickState_Player1:2;
u8 pickState_Player2:2;
u8 pickState_Player3:2;
u8 pickState_Player4:2;
u8 pickState_Player5:2;
bool8 ateBerry_Player1:1;
bool8 ateBerry_Player2:1;
bool8 ateBerry_Player3:1;
bool8 ateBerry_Player4:1;
bool8 ateBerry_Player5:1;
u8 numGraySquares:5;
bool8 allReadyToEnd:1;
bool8 berriesFalling:1;
bool8 missedBerry_Player1:1;
bool8 missedBerry_Player2:1;
bool8 missedBerry_Player3:1;
bool8 missedBerry_Player4:1;
bool8 missedBerry_Player5:1;
};
struct PickStatePacket
{
u8 id;
u8 ALIGNED(4) pickState;
};
struct ReadyToEndPacket
{
u8 id;
bool32 ready;
};
void SendPacket_ReadyToStart(bool32 ready)
{
struct ReadyToStartPacket packet;
packet.id = PACKET_READY_START;
packet.ready = ready;
Rfu_SendPacket(&packet);
}
bool8 RecvPacket_ReadyToStart(s32 playerId)
{
struct ReadyToStartPacket *packet;
if ((gRecvCmds[0][0] & RFUCMD_MASK) != RFUCMD_SEND_PACKET)
return FALSE;
packet = (void *)&gRecvCmds[playerId][1];
if (packet->id == PACKET_READY_START)
return packet->ready;
return FALSE;
}
void SendPacket_GameState(struct DodrioGame_Player *player,
struct DodrioGame_PlayerCommData *player1,
struct DodrioGame_PlayerCommData *player2,
struct DodrioGame_PlayerCommData *player3,
struct DodrioGame_PlayerCommData *player4,
struct DodrioGame_PlayerCommData *player5,
u8 numGraySquares,
bool32 berriesFalling,
bool32 allReadyToEnd)
{
struct GameStatePacket packet;
struct DodrioGame_Berries *berries = &player->berries;
packet.id = PACKET_GAME_STATE;
packet.fallDist_Col0 = berries->fallDist[0];
packet.fallDist_Col1 = berries->fallDist[1];
packet.fallDist_Col2 = berries->fallDist[2];
packet.fallDist_Col3 = berries->fallDist[3];
packet.fallDist_Col4 = berries->fallDist[4];
packet.fallDist_Col5 = berries->fallDist[5];
packet.fallDist_Col6 = berries->fallDist[6];
packet.fallDist_Col7 = berries->fallDist[7];
packet.fallDist_Col8 = berries->fallDist[8];
packet.fallDist_Col9 = berries->fallDist[9];
packet.berryId_Col0 = berries->ids[0];
packet.berryId_Col1 = berries->ids[1];
packet.berryId_Col2 = berries->ids[2];
packet.berryId_Col3 = berries->ids[3];
packet.berryId_Col4 = berries->ids[4];
packet.berryId_Col5 = berries->ids[5];
packet.berryId_Col6 = berries->ids[6];
packet.berryId_Col7 = berries->ids[7];
packet.berryId_Col8 = berries->ids[8];
packet.berryId_Col9 = berries->ids[9];
packet.pickState_Player1 = player1->pickState;
packet.pickState_Player2 = player2->pickState;
packet.pickState_Player3 = player3->pickState;
packet.pickState_Player4 = player4->pickState;
packet.pickState_Player5 = player5->pickState;
packet.ateBerry_Player1 = player1->ateBerry;
packet.ateBerry_Player2 = player2->ateBerry;
packet.ateBerry_Player3 = player3->ateBerry;
packet.ateBerry_Player4 = player4->ateBerry;
packet.ateBerry_Player5 = player5->ateBerry;
packet.missedBerry_Player1 = player1->missedBerry;
packet.missedBerry_Player2 = player2->missedBerry;
packet.missedBerry_Player3 = player3->missedBerry;
packet.missedBerry_Player4 = player4->missedBerry;
packet.missedBerry_Player5 = player5->missedBerry;
packet.numGraySquares = numGraySquares;
packet.berriesFalling = berriesFalling;
packet.allReadyToEnd = allReadyToEnd;
Rfu_SendPacket(&packet);
}
bool32 RecvPacket_GameState(u32 playerId,
struct DodrioGame_Player *player,
struct DodrioGame_PlayerCommData *player1,
struct DodrioGame_PlayerCommData *player2,
struct DodrioGame_PlayerCommData *player3,
struct DodrioGame_PlayerCommData *player4,
struct DodrioGame_PlayerCommData *player5,
u8 *numGraySquares,
bool32 *berriesFalling,
bool32 *allReadyToEnd)
{
struct GameStatePacket *packet;
struct DodrioGame_Berries *berries = &player->berries;
if ((gRecvCmds[0][0] & RFUCMD_MASK) != RFUCMD_SEND_PACKET)
return FALSE;
packet = (void *)&gRecvCmds[0][1];
if (packet->id == PACKET_GAME_STATE)
{
berries->fallDist[0] = packet->fallDist_Col0;
berries->fallDist[1] = packet->fallDist_Col1;
berries->fallDist[2] = packet->fallDist_Col2;
berries->fallDist[3] = packet->fallDist_Col3;
berries->fallDist[4] = packet->fallDist_Col4;
berries->fallDist[5] = packet->fallDist_Col5;
berries->fallDist[6] = packet->fallDist_Col6;
berries->fallDist[7] = packet->fallDist_Col7;
berries->fallDist[8] = packet->fallDist_Col8;
berries->fallDist[9] = packet->fallDist_Col9;
berries->fallDist[10] = packet->fallDist_Col0;
berries->ids[0] = packet->berryId_Col0;
berries->ids[1] = packet->berryId_Col1;
berries->ids[2] = packet->berryId_Col2;
berries->ids[3] = packet->berryId_Col3;
berries->ids[4] = packet->berryId_Col4;
berries->ids[5] = packet->berryId_Col5;
berries->ids[6] = packet->berryId_Col6;
berries->ids[7] = packet->berryId_Col7;
berries->ids[8] = packet->berryId_Col8;
berries->ids[9] = packet->berryId_Col9;
berries->ids[10] = packet->berryId_Col0;
player1->pickState = packet->pickState_Player1;
player1->ateBerry = packet->ateBerry_Player1;
player1->missedBerry = packet->missedBerry_Player1;
player2->pickState = packet->pickState_Player2;
player2->ateBerry = packet->ateBerry_Player2;
player2->missedBerry = packet->missedBerry_Player2;
player3->pickState = packet->pickState_Player3;
player3->ateBerry = packet->ateBerry_Player3;
player3->missedBerry = packet->missedBerry_Player3;
player4->pickState = packet->pickState_Player4;
player4->ateBerry = packet->ateBerry_Player4;
player4->missedBerry = packet->missedBerry_Player4;
player5->pickState = packet->pickState_Player5;
player5->ateBerry = packet->ateBerry_Player5;
player5->missedBerry = packet->missedBerry_Player5;
*numGraySquares = packet->numGraySquares;
*berriesFalling = packet->berriesFalling;
*allReadyToEnd = packet->allReadyToEnd;
return TRUE;
}
return FALSE;
}
void SendPacket_PickState(u8 pickState)
{
struct PickStatePacket packet;
packet.id = PACKET_PICK_STATE;
packet.pickState = pickState;
Rfu_SendPacket(&packet);
}
bool32 RecvPacket_PickState(u32 playerId, u8 *pickState)
{
struct PickStatePacket * packet;
if ((gRecvCmds[0][0] & RFUCMD_MASK) != RFUCMD_SEND_PACKET)
return FALSE;
packet = (void *)&gRecvCmds[playerId][1];
if (packet->id == PACKET_PICK_STATE)
{
*pickState = packet->pickState;
return TRUE;
}
return FALSE;
}
void SendPacket_ReadyToEnd(bool32 ready)
{
struct ReadyToEndPacket packet;
packet.id = PACKET_READY_END;
packet.ready = ready;
Rfu_SendPacket(&packet);
}
bool32 RecvPacket_ReadyToEnd(u32 playerId)
{
struct ReadyToEndPacket * packet;
if ((gRecvCmds[0][0] & RFUCMD_MASK) != RFUCMD_SEND_PACKET)
return FALSE;
packet = (void *)&gRecvCmds[playerId][1];
if (packet->id == PACKET_READY_END)
return packet->ready;
return FALSE;
}
+78 -76
View File
@@ -4,85 +4,87 @@
static EWRAM_DATA const u8 *sStringPointers[8] = {0};
#define COLORS(a, b)((a) | (b << 4))
static const u8 sTextColorTable[] =
{
// [LOW_NYBBLE / 2] = 0xXY, // HIGH_NYBBLE
[OBJ_EVENT_GFX_RED_NORMAL / 2] = 0x00, // OBJ_EVENT_GFX_RED_BIKE
[OBJ_EVENT_GFX_RED_SURF / 2] = 0x00, // OBJ_EVENT_GFX_RED_FIELD_MOVE
[OBJ_EVENT_GFX_RED_FISH / 2] = 0x00, // OBJ_EVENT_GFX_RED_VS_SEEKER
[OBJ_EVENT_GFX_RED_VS_SEEKER_BIKE / 2] = 0x10, // OBJ_EVENT_GFX_GREEN_NORMAL
[OBJ_EVENT_GFX_GREEN_BIKE / 2] = 0x11, // OBJ_EVENT_GFX_GREEN_SURF
[OBJ_EVENT_GFX_GREEN_FIELD_MOVE / 2] = 0x11, // OBJ_EVENT_GFX_GREEN_FISH
[OBJ_EVENT_GFX_GREEN_VS_SEEKER / 2] = 0x11, // OBJ_EVENT_GFX_GREEN_VS_SEEKER_BIKE
[OBJ_EVENT_GFX_RS_BRENDAN / 2] = 0x10, // OBJ_EVENT_GFX_RS_MAY
[OBJ_EVENT_GFX_LITTLE_BOY / 2] = 0x10, // OBJ_EVENT_GFX_LITTLE_GIRL
[OBJ_EVENT_GFX_YOUNGSTER / 2] = 0x00, // OBJ_EVENT_GFX_BOY
[OBJ_EVENT_GFX_BUG_CATCHER / 2] = 0x00, // OBJ_EVENT_GFX_SITTING_BOY
[OBJ_EVENT_GFX_LASS / 2] = 0x11, // OBJ_EVENT_GFX_WOMAN_1
[OBJ_EVENT_GFX_BATTLE_GIRL / 2] = 0x01, // OBJ_EVENT_GFX_MAN
[OBJ_EVENT_GFX_ROCKER / 2] = 0x00, // OBJ_EVENT_GFX_FAT_MAN
[OBJ_EVENT_GFX_WOMAN_2 / 2] = 0x11, // OBJ_EVENT_GFX_BEAUTY
[OBJ_EVENT_GFX_BALDING_MAN / 2] = 0x10, // OBJ_EVENT_GFX_WOMAN_3
[OBJ_EVENT_GFX_OLD_MAN_1 / 2] = 0x00, // OBJ_EVENT_GFX_OLD_MAN_2
[OBJ_EVENT_GFX_OLD_MAN_LYING_DOWN / 2] = 0x10, // OBJ_EVENT_GFX_OLD_WOMAN
[OBJ_EVENT_GFX_TUBER_M_WATER / 2] = 0x10, // OBJ_EVENT_GFX_TUBER_F
[OBJ_EVENT_GFX_TUBER_M_LAND / 2] = 0x00, // OBJ_EVENT_GFX_CAMPER
[OBJ_EVENT_GFX_PICNICKER / 2] = 0x01, // OBJ_EVENT_GFX_COOLTRAINER_M
[OBJ_EVENT_GFX_COOLTRAINER_F / 2] = 0x01, // OBJ_EVENT_GFX_SWIMMER_M_WATER
[OBJ_EVENT_GFX_SWIMMER_F_WATER / 2] = 0x01, // OBJ_EVENT_GFX_SWIMMER_M_LAND
[OBJ_EVENT_GFX_SWIMMER_F_LAND / 2] = 0x01, // OBJ_EVENT_GFX_WORKER_M
[OBJ_EVENT_GFX_WORKER_F / 2] = 0x01, // OBJ_EVENT_GFX_ROCKET_M
[OBJ_EVENT_GFX_ROCKET_F / 2] = 0x01, // OBJ_EVENT_GFX_GBA_KID
[OBJ_EVENT_GFX_SUPER_NERD / 2] = 0x00, // OBJ_EVENT_GFX_BIKER
[OBJ_EVENT_GFX_BLACKBELT / 2] = 0x00, // OBJ_EVENT_GFX_SCIENTIST
[OBJ_EVENT_GFX_HIKER / 2] = 0x00, // OBJ_EVENT_GFX_FISHER
[OBJ_EVENT_GFX_CHANNELER / 2] = 0x01, // OBJ_EVENT_GFX_CHEF
[OBJ_EVENT_GFX_POLICEMAN / 2] = 0x00, // OBJ_EVENT_GFX_GENTLEMAN
[OBJ_EVENT_GFX_SAILOR / 2] = 0x00, // OBJ_EVENT_GFX_CAPTAIN
[OBJ_EVENT_GFX_NURSE / 2] = 0x11, // OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST
[OBJ_EVENT_GFX_UNION_ROOM_RECEPTIONIST / 2] = 0x01, // OBJ_EVENT_GFX_UNUSED_MALE_RECEPTIONIST
[OBJ_EVENT_GFX_CLERK / 2] = 0x00, // OBJ_EVENT_GFX_MG_DELIVERYMAN
[OBJ_EVENT_GFX_TRAINER_TOWER_DUDE / 2] = 0x00, // OBJ_EVENT_GFX_PROF_OAK
[OBJ_EVENT_GFX_BLUE / 2] = 0x00, // OBJ_EVENT_GFX_BILL
[OBJ_EVENT_GFX_LANCE / 2] = 0x10, // OBJ_EVENT_GFX_AGATHA
[OBJ_EVENT_GFX_DAISY / 2] = 0x11, // OBJ_EVENT_GFX_LORELEI
[OBJ_EVENT_GFX_MR_FUJI / 2] = 0x00, // OBJ_EVENT_GFX_BRUNO
[OBJ_EVENT_GFX_BROCK / 2] = 0x10, // OBJ_EVENT_GFX_MISTY
[OBJ_EVENT_GFX_LT_SURGE / 2] = 0x10, // OBJ_EVENT_GFX_ERIKA
[OBJ_EVENT_GFX_KOGA / 2] = 0x10, // OBJ_EVENT_GFX_SABRINA
[OBJ_EVENT_GFX_BLAINE / 2] = 0x00, // OBJ_EVENT_GFX_GIOVANNI
[OBJ_EVENT_GFX_MOM / 2] = 0x01, // OBJ_EVENT_GFX_CELIO
[OBJ_EVENT_GFX_TEACHY_TV_HOST / 2] = 0x00, // OBJ_EVENT_GFX_GYM_GUY
[OBJ_EVENT_GFX_ITEM_BALL / 2] = 0x33, // OBJ_EVENT_GFX_TOWN_MAP
[OBJ_EVENT_GFX_POKEDEX / 2] = 0x33, // OBJ_EVENT_GFX_CUT_TREE
[OBJ_EVENT_GFX_ROCK_SMASH_ROCK / 2] = 0x33, // OBJ_EVENT_GFX_PUSHABLE_BOULDER
[OBJ_EVENT_GFX_FOSSIL / 2] = 0x33, // OBJ_EVENT_GFX_RUBY
[OBJ_EVENT_GFX_SAPPHIRE / 2] = 0x33, // OBJ_EVENT_GFX_OLD_AMBER
[OBJ_EVENT_GFX_GYM_SIGN / 2] = 0x33, // OBJ_EVENT_GFX_SIGN
[OBJ_EVENT_GFX_TRAINER_TIPS / 2] = 0x33, // OBJ_EVENT_GFX_CLIPBOARD
[OBJ_EVENT_GFX_METEORITE / 2] = 0x33, // OBJ_EVENT_GFX_LAPRAS_DOLL
[OBJ_EVENT_GFX_SEAGALLOP / 2] = 0x23, // OBJ_EVENT_GFX_SNORLAX
[OBJ_EVENT_GFX_SPEAROW / 2] = 0x22, // OBJ_EVENT_GFX_CUBONE
[OBJ_EVENT_GFX_POLIWRATH / 2] = 0x22, // OBJ_EVENT_GFX_CLEFAIRY
[OBJ_EVENT_GFX_PIDGEOT / 2] = 0x22, // OBJ_EVENT_GFX_JIGGLYPUFF
[OBJ_EVENT_GFX_PIDGEY / 2] = 0x22, // OBJ_EVENT_GFX_CHANSEY
[OBJ_EVENT_GFX_OMANYTE / 2] = 0x22, // OBJ_EVENT_GFX_KANGASKHAN
[OBJ_EVENT_GFX_PIKACHU / 2] = 0x22, // OBJ_EVENT_GFX_PSYDUCK
[OBJ_EVENT_GFX_NIDORAN_F / 2] = 0x22, // OBJ_EVENT_GFX_NIDORAN_M
[OBJ_EVENT_GFX_NIDORINO / 2] = 0x22, // OBJ_EVENT_GFX_MEOWTH
[OBJ_EVENT_GFX_SEEL / 2] = 0x22, // OBJ_EVENT_GFX_VOLTORB
[OBJ_EVENT_GFX_SLOWPOKE / 2] = 0x22, // OBJ_EVENT_GFX_SLOWBRO
[OBJ_EVENT_GFX_MACHOP / 2] = 0x22, // OBJ_EVENT_GFX_WIGGLYTUFF
[OBJ_EVENT_GFX_DODUO / 2] = 0x22, // OBJ_EVENT_GFX_FEAROW
[OBJ_EVENT_GFX_MACHOKE / 2] = 0x22, // OBJ_EVENT_GFX_LAPRAS
[OBJ_EVENT_GFX_ZAPDOS / 2] = 0x22, // OBJ_EVENT_GFX_MOLTRES
[OBJ_EVENT_GFX_ARTICUNO / 2] = 0x22, // OBJ_EVENT_GFX_MEWTWO
[OBJ_EVENT_GFX_MEW / 2] = 0x22, // OBJ_EVENT_GFX_ENTEI
[OBJ_EVENT_GFX_SUICUNE / 2] = 0x22, // OBJ_EVENT_GFX_RAIKOU
[OBJ_EVENT_GFX_LUGIA / 2] = 0x22, // OBJ_EVENT_GFX_HO_OH
[OBJ_EVENT_GFX_CELEBI / 2] = 0x22, // OBJ_EVENT_GFX_KABUTO
[OBJ_EVENT_GFX_DEOXYS_D / 2] = 0x22, // OBJ_EVENT_GFX_DEOXYS_A
[OBJ_EVENT_GFX_DEOXYS_N / 2] = 0x32, // OBJ_EVENT_GFX_SS_ANNE
[OBJ_EVENT_GFX_RED_NORMAL / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_RED_BIKE
[OBJ_EVENT_GFX_RED_SURF / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_RED_FIELD_MOVE
[OBJ_EVENT_GFX_RED_FISH / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_RED_VS_SEEKER
[OBJ_EVENT_GFX_RED_VS_SEEKER_BIKE / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_FEMALE), // OBJ_EVENT_GFX_GREEN_NORMAL
[OBJ_EVENT_GFX_GREEN_BIKE / 2] = COLORS(NPC_TEXT_COLOR_FEMALE, NPC_TEXT_COLOR_FEMALE), // OBJ_EVENT_GFX_GREEN_SURF
[OBJ_EVENT_GFX_GREEN_FIELD_MOVE / 2] = COLORS(NPC_TEXT_COLOR_FEMALE, NPC_TEXT_COLOR_FEMALE), // OBJ_EVENT_GFX_GREEN_FISH
[OBJ_EVENT_GFX_GREEN_VS_SEEKER / 2] = COLORS(NPC_TEXT_COLOR_FEMALE, NPC_TEXT_COLOR_FEMALE), // OBJ_EVENT_GFX_GREEN_VS_SEEKER_BIKE
[OBJ_EVENT_GFX_RS_BRENDAN / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_FEMALE), // OBJ_EVENT_GFX_RS_MAY
[OBJ_EVENT_GFX_LITTLE_BOY / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_FEMALE), // OBJ_EVENT_GFX_LITTLE_GIRL
[OBJ_EVENT_GFX_YOUNGSTER / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_BOY
[OBJ_EVENT_GFX_BUG_CATCHER / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_SITTING_BOY
[OBJ_EVENT_GFX_LASS / 2] = COLORS(NPC_TEXT_COLOR_FEMALE, NPC_TEXT_COLOR_FEMALE), // OBJ_EVENT_GFX_WOMAN_1
[OBJ_EVENT_GFX_BATTLE_GIRL / 2] = COLORS(NPC_TEXT_COLOR_FEMALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_MAN
[OBJ_EVENT_GFX_ROCKER / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_FAT_MAN
[OBJ_EVENT_GFX_WOMAN_2 / 2] = COLORS(NPC_TEXT_COLOR_FEMALE, NPC_TEXT_COLOR_FEMALE), // OBJ_EVENT_GFX_BEAUTY
[OBJ_EVENT_GFX_BALDING_MAN / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_FEMALE), // OBJ_EVENT_GFX_WOMAN_3
[OBJ_EVENT_GFX_OLD_MAN_1 / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_OLD_MAN_2
[OBJ_EVENT_GFX_OLD_MAN_LYING_DOWN / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_FEMALE), // OBJ_EVENT_GFX_OLD_WOMAN
[OBJ_EVENT_GFX_TUBER_M_WATER / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_FEMALE), // OBJ_EVENT_GFX_TUBER_F
[OBJ_EVENT_GFX_TUBER_M_LAND / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_CAMPER
[OBJ_EVENT_GFX_PICNICKER / 2] = COLORS(NPC_TEXT_COLOR_FEMALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_COOLTRAINER_M
[OBJ_EVENT_GFX_COOLTRAINER_F / 2] = COLORS(NPC_TEXT_COLOR_FEMALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_SWIMMER_M_WATER
[OBJ_EVENT_GFX_SWIMMER_F_WATER / 2] = COLORS(NPC_TEXT_COLOR_FEMALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_SWIMMER_M_LAND
[OBJ_EVENT_GFX_SWIMMER_F_LAND / 2] = COLORS(NPC_TEXT_COLOR_FEMALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_WORKER_M
[OBJ_EVENT_GFX_WORKER_F / 2] = COLORS(NPC_TEXT_COLOR_FEMALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_ROCKET_M
[OBJ_EVENT_GFX_ROCKET_F / 2] = COLORS(NPC_TEXT_COLOR_FEMALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_GBA_KID
[OBJ_EVENT_GFX_SUPER_NERD / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_BIKER
[OBJ_EVENT_GFX_BLACKBELT / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_SCIENTIST
[OBJ_EVENT_GFX_HIKER / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_FISHER
[OBJ_EVENT_GFX_CHANNELER / 2] = COLORS(NPC_TEXT_COLOR_FEMALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_CHEF
[OBJ_EVENT_GFX_POLICEMAN / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_GENTLEMAN
[OBJ_EVENT_GFX_SAILOR / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_CAPTAIN
[OBJ_EVENT_GFX_NURSE / 2] = COLORS(NPC_TEXT_COLOR_FEMALE, NPC_TEXT_COLOR_FEMALE), // OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST
[OBJ_EVENT_GFX_UNION_ROOM_RECEPTIONIST / 2] = COLORS(NPC_TEXT_COLOR_FEMALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_UNUSED_MALE_RECEPTIONIST
[OBJ_EVENT_GFX_CLERK / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_MG_DELIVERYMAN
[OBJ_EVENT_GFX_TRAINER_TOWER_DUDE / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_PROF_OAK
[OBJ_EVENT_GFX_BLUE / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_BILL
[OBJ_EVENT_GFX_LANCE / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_FEMALE), // OBJ_EVENT_GFX_AGATHA
[OBJ_EVENT_GFX_DAISY / 2] = COLORS(NPC_TEXT_COLOR_FEMALE, NPC_TEXT_COLOR_FEMALE), // OBJ_EVENT_GFX_LORELEI
[OBJ_EVENT_GFX_MR_FUJI / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_BRUNO
[OBJ_EVENT_GFX_BROCK / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_FEMALE), // OBJ_EVENT_GFX_MISTY
[OBJ_EVENT_GFX_LT_SURGE / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_FEMALE), // OBJ_EVENT_GFX_ERIKA
[OBJ_EVENT_GFX_KOGA / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_FEMALE), // OBJ_EVENT_GFX_SABRINA
[OBJ_EVENT_GFX_BLAINE / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_GIOVANNI
[OBJ_EVENT_GFX_MOM / 2] = COLORS(NPC_TEXT_COLOR_FEMALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_CELIO
[OBJ_EVENT_GFX_TEACHY_TV_HOST / 2] = COLORS(NPC_TEXT_COLOR_MALE, NPC_TEXT_COLOR_MALE), // OBJ_EVENT_GFX_GYM_GUY
[OBJ_EVENT_GFX_ITEM_BALL / 2] = COLORS(NPC_TEXT_COLOR_NEUTRAL, NPC_TEXT_COLOR_NEUTRAL), // OBJ_EVENT_GFX_TOWN_MAP
[OBJ_EVENT_GFX_POKEDEX / 2] = COLORS(NPC_TEXT_COLOR_NEUTRAL, NPC_TEXT_COLOR_NEUTRAL), // OBJ_EVENT_GFX_CUT_TREE
[OBJ_EVENT_GFX_ROCK_SMASH_ROCK / 2] = COLORS(NPC_TEXT_COLOR_NEUTRAL, NPC_TEXT_COLOR_NEUTRAL), // OBJ_EVENT_GFX_PUSHABLE_BOULDER
[OBJ_EVENT_GFX_FOSSIL / 2] = COLORS(NPC_TEXT_COLOR_NEUTRAL, NPC_TEXT_COLOR_NEUTRAL), // OBJ_EVENT_GFX_RUBY
[OBJ_EVENT_GFX_SAPPHIRE / 2] = COLORS(NPC_TEXT_COLOR_NEUTRAL, NPC_TEXT_COLOR_NEUTRAL), // OBJ_EVENT_GFX_OLD_AMBER
[OBJ_EVENT_GFX_GYM_SIGN / 2] = COLORS(NPC_TEXT_COLOR_NEUTRAL, NPC_TEXT_COLOR_NEUTRAL), // OBJ_EVENT_GFX_SIGN
[OBJ_EVENT_GFX_TRAINER_TIPS / 2] = COLORS(NPC_TEXT_COLOR_NEUTRAL, NPC_TEXT_COLOR_NEUTRAL), // OBJ_EVENT_GFX_CLIPBOARD
[OBJ_EVENT_GFX_METEORITE / 2] = COLORS(NPC_TEXT_COLOR_NEUTRAL, NPC_TEXT_COLOR_NEUTRAL), // OBJ_EVENT_GFX_LAPRAS_DOLL
[OBJ_EVENT_GFX_SEAGALLOP / 2] = COLORS(NPC_TEXT_COLOR_NEUTRAL, NPC_TEXT_COLOR_MON), // OBJ_EVENT_GFX_SNORLAX
[OBJ_EVENT_GFX_SPEAROW / 2] = COLORS(NPC_TEXT_COLOR_MON, NPC_TEXT_COLOR_MON), // OBJ_EVENT_GFX_CUBONE
[OBJ_EVENT_GFX_POLIWRATH / 2] = COLORS(NPC_TEXT_COLOR_MON, NPC_TEXT_COLOR_MON), // OBJ_EVENT_GFX_CLEFAIRY
[OBJ_EVENT_GFX_PIDGEOT / 2] = COLORS(NPC_TEXT_COLOR_MON, NPC_TEXT_COLOR_MON), // OBJ_EVENT_GFX_JIGGLYPUFF
[OBJ_EVENT_GFX_PIDGEY / 2] = COLORS(NPC_TEXT_COLOR_MON, NPC_TEXT_COLOR_MON), // OBJ_EVENT_GFX_CHANSEY
[OBJ_EVENT_GFX_OMANYTE / 2] = COLORS(NPC_TEXT_COLOR_MON, NPC_TEXT_COLOR_MON), // OBJ_EVENT_GFX_KANGASKHAN
[OBJ_EVENT_GFX_PIKACHU / 2] = COLORS(NPC_TEXT_COLOR_MON, NPC_TEXT_COLOR_MON), // OBJ_EVENT_GFX_PSYDUCK
[OBJ_EVENT_GFX_NIDORAN_F / 2] = COLORS(NPC_TEXT_COLOR_MON, NPC_TEXT_COLOR_MON), // OBJ_EVENT_GFX_NIDORAN_M
[OBJ_EVENT_GFX_NIDORINO / 2] = COLORS(NPC_TEXT_COLOR_MON, NPC_TEXT_COLOR_MON), // OBJ_EVENT_GFX_MEOWTH
[OBJ_EVENT_GFX_SEEL / 2] = COLORS(NPC_TEXT_COLOR_MON, NPC_TEXT_COLOR_MON), // OBJ_EVENT_GFX_VOLTORB
[OBJ_EVENT_GFX_SLOWPOKE / 2] = COLORS(NPC_TEXT_COLOR_MON, NPC_TEXT_COLOR_MON), // OBJ_EVENT_GFX_SLOWBRO
[OBJ_EVENT_GFX_MACHOP / 2] = COLORS(NPC_TEXT_COLOR_MON, NPC_TEXT_COLOR_MON), // OBJ_EVENT_GFX_WIGGLYTUFF
[OBJ_EVENT_GFX_DODUO / 2] = COLORS(NPC_TEXT_COLOR_MON, NPC_TEXT_COLOR_MON), // OBJ_EVENT_GFX_FEAROW
[OBJ_EVENT_GFX_MACHOKE / 2] = COLORS(NPC_TEXT_COLOR_MON, NPC_TEXT_COLOR_MON), // OBJ_EVENT_GFX_LAPRAS
[OBJ_EVENT_GFX_ZAPDOS / 2] = COLORS(NPC_TEXT_COLOR_MON, NPC_TEXT_COLOR_MON), // OBJ_EVENT_GFX_MOLTRES
[OBJ_EVENT_GFX_ARTICUNO / 2] = COLORS(NPC_TEXT_COLOR_MON, NPC_TEXT_COLOR_MON), // OBJ_EVENT_GFX_MEWTWO
[OBJ_EVENT_GFX_MEW / 2] = COLORS(NPC_TEXT_COLOR_MON, NPC_TEXT_COLOR_MON), // OBJ_EVENT_GFX_ENTEI
[OBJ_EVENT_GFX_SUICUNE / 2] = COLORS(NPC_TEXT_COLOR_MON, NPC_TEXT_COLOR_MON), // OBJ_EVENT_GFX_RAIKOU
[OBJ_EVENT_GFX_LUGIA / 2] = COLORS(NPC_TEXT_COLOR_MON, NPC_TEXT_COLOR_MON), // OBJ_EVENT_GFX_HO_OH
[OBJ_EVENT_GFX_CELEBI / 2] = COLORS(NPC_TEXT_COLOR_MON, NPC_TEXT_COLOR_MON), // OBJ_EVENT_GFX_KABUTO
[OBJ_EVENT_GFX_DEOXYS_D / 2] = COLORS(NPC_TEXT_COLOR_MON, NPC_TEXT_COLOR_MON), // OBJ_EVENT_GFX_DEOXYS_A
[OBJ_EVENT_GFX_DEOXYS_N / 2] = COLORS(NPC_TEXT_COLOR_MON, NPC_TEXT_COLOR_NEUTRAL), // OBJ_EVENT_GFX_SS_ANNE
};
void DynamicPlaceholderTextUtil_Reset(void)
+4 -4
View File
@@ -23,7 +23,7 @@ void Task_WaitPlayerStopMoving(u8 taskId)
}
}
bool8 NativeScript_WaitPlayerStopMoving(void)
bool8 IsFreezePlayerFinished(void)
{
if (FuncIsActiveTask(Task_WaitPlayerStopMoving))
return FALSE;
@@ -34,7 +34,7 @@ bool8 NativeScript_WaitPlayerStopMoving(void)
}
}
void ScriptFreezeObjectEvents(void)
void FreezeObjects_WaitForPlayer(void)
{
FreezeObjectEvents();
CreateTask(Task_WaitPlayerStopMoving, 80);
@@ -60,7 +60,7 @@ void Task_WaitPlayerAndTargetNPCStopMoving(u8 taskId)
DestroyTask(taskId);
}
bool8 NativeScript_WaitPlayerAndTargetNPCStopMoving(void)
bool8 IsFreezeSelectedObjectAndPlayerFinished(void)
{
if (FuncIsActiveTask(Task_WaitPlayerAndTargetNPCStopMoving))
return FALSE;
@@ -71,7 +71,7 @@ bool8 NativeScript_WaitPlayerAndTargetNPCStopMoving(void)
}
}
void LockSelectedObjectEvent(void)
void FreezeObjects_WaitForPlayerAndSelected(void)
{
u8 taskId;
+5 -5
View File
@@ -1729,7 +1729,7 @@ u8 AddPseudoObjectEvent(u16 graphicsId, SpriteCallback callback, s16 x, s16 y, u
return spriteId;
}
u8 sprite_new(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction)
u8 CreateVirtualObject(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction)
{
u8 spriteId;
struct Sprite *sprite;
@@ -2083,7 +2083,7 @@ static void SetObjectEventDynamicGraphicsId(struct ObjectEvent *objectEvent)
}
}
void ShowOrHideObjectByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 state)
void SetObjectInvisibility(u8 localId, u8 mapNum, u8 mapGroup, u8 state)
{
u8 objectEventId;
@@ -2113,7 +2113,7 @@ void EnableObjectGroundEffectsByXY(s16 x, s16 y)
}
}
void SetObjectPriorityByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 subpriority)
void SetObjectSubpriority(u8 localId, u8 mapNum, u8 mapGroup, u8 subpriority)
{
u8 objectEventId;
struct ObjectEvent *objectEvent;
@@ -2128,7 +2128,7 @@ void SetObjectPriorityByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 sub
}
}
void UnfixObjectPriorityByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
void ResetObjectSubpriority(u8 localId, u8 mapNum, u8 mapGroup)
{
u8 objectEventId;
struct ObjectEvent *objectEvent;
@@ -9285,7 +9285,7 @@ static int GetObjectEventSpriteId(u8 objectEventId)
return MAX_SPRITES;
}
void TurnObjectEvent(u8 objectEventId, u8 direction)
void TurnVirtualObject(u8 objectEventId, u8 direction)
{
u8 animNum;
u8 spriteId = GetObjectEventSpriteId(objectEventId);
+14 -6
View File
@@ -1542,18 +1542,26 @@ void SetSeenMon(void)
void ResetContextNpcTextColor(void)
{
gSelectedObjectEvent = 0;
gSpecialVar_TextColor = 0xFF;
gSpecialVar_TextColor = NPC_TEXT_COLOR_DEFAULT;
}
u8 ContextNpcGetTextColor(void)
{
u8 gfxId;
if (gSpecialVar_TextColor != 0xFF)
if (gSpecialVar_TextColor != NPC_TEXT_COLOR_DEFAULT)
{
// A text color has been specified, use that
return gSpecialVar_TextColor;
}
else if (gSelectedObjectEvent == 0)
return 3;
{
// No text color specified and no object selected, use neutral
return NPC_TEXT_COLOR_NEUTRAL;
}
else
{
// An object is selected and no color has been specified.
// Use the text color normally associated with this object's sprite.
gfxId = gObjectEvents[gSelectedObjectEvent].graphicsId;
if (gfxId >= OBJ_EVENT_GFX_VAR_0)
gfxId = VarGetObjectEventGraphicsId(gfxId - OBJ_EVENT_GFX_VAR_0);
@@ -1631,7 +1639,7 @@ void ChangeBoxPokemonNickname(void)
species = GetBoxMonData(pokemon, MON_DATA_SPECIES, NULL);
gender = GetBoxMonGender(pokemon);
personality = GetBoxMonData(pokemon, MON_DATA_PERSONALITY, NULL);
DoNamingScreen(NAMING_SCREEN_NAME_RATER, gStringVar2, species, gender, personality, ChangeBoxPokemonNickname_CB);
DoNamingScreen(NAMING_SCREEN_NICKNAME, gStringVar2, species, gender, personality, ChangeBoxPokemonNickname_CB);
}
static void ChangeBoxPokemonNickname_CB(void)
@@ -1651,7 +1659,7 @@ void ChangePokemonNickname(void)
species = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES, NULL);
gender = GetMonGender(&gPlayerParty[gSpecialVar_0x8004]);
personality = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_PERSONALITY, NULL);
DoNamingScreen(NAMING_SCREEN_NAME_RATER, gStringVar2, species, gender, personality, ChangePokemonNickname_CB);
DoNamingScreen(NAMING_SCREEN_NICKNAME, gStringVar2, species, gender, personality, ChangePokemonNickname_CB);
}
static void ChangePokemonNickname_CB(void)
@@ -2419,7 +2427,7 @@ static void MoveDeoxysObject(u8 num)
else
gFieldEffectArguments[5] = 5;
FieldEffectStart(FLDEFF_MOVE_DEOXYS_ROCK);
Overworld_SetMapObjTemplateCoords(1, sDeoxysCoords[num][0], sDeoxysCoords[num][1]);
SetObjEventTemplateCoords(1, sDeoxysCoords[num][0], sDeoxysCoords[num][1]);
}
static void Task_WaitDeoxysFieldEffect(u8 taskId)
+4 -4
View File
@@ -6,7 +6,7 @@
static u8 TranslateWeatherNum(u8 weather);
static void UpdateRainCounter(u8 newWeather, u8 oldWeather);
void SetSav1Weather(u32 weather)
void SetSavedWeather(u32 weather)
{
u8 oldWeather = gSaveBlock1Ptr->weather;
gSaveBlock1Ptr->weather = TranslateWeatherNum(weather);
@@ -18,7 +18,7 @@ u8 GetSav1Weather(void)
return gSaveBlock1Ptr->weather;
}
void SetSav1WeatherFromCurrMapHeader(void)
void SetSavedWeatherFromCurrMapHeader(void)
{
u8 oldWeather = gSaveBlock1Ptr->weather;
gSaveBlock1Ptr->weather = TranslateWeatherNum(gMapHeader.weather);
@@ -27,13 +27,13 @@ void SetSav1WeatherFromCurrMapHeader(void)
void SetWeather(u32 weather)
{
SetSav1Weather(weather);
SetSavedWeather(weather);
SetNextWeather(GetSav1Weather());
}
void SetWeather_Unused(u32 weather)
{
SetSav1Weather(weather);
SetSavedWeather(weather);
SetCurrentAndNextWeather(GetSav1Weather());
}
+28 -25
View File
@@ -1181,33 +1181,36 @@ const u16 gUnknown_8E97DDC[] = INCBIN_U16("graphics/interface/learn_move.gbapal"
const u32 gUnknown_8E97DFC[] = INCBIN_U32("graphics/interface/learn_move.4bpp.lz");
const u32 gUnknown_8E97EC4[] = INCBIN_U32("graphics/interface/learn_move.bin.lz");
const u16 gUnknown_8E97FE4[] = INCBIN_U16("graphics/interface/naming_screen_8E97FE4.gbapal");
const u16 gUnknown_8E98004[] = INCBIN_U16("graphics/interface/naming_screen_8E98004.gbapal");
const u16 gNamingScreenMenu_Pal[] = INCBIN_U16("graphics/interface/naming_screen_8E98024.gbapal");
const u16 gUnknown_8E98044[] = INCBIN_U16("graphics/interface/naming_screen_8E98044.gbapal");
const u16 gUnknown_8E98064[] = INCBIN_U16("graphics/interface/naming_screen_8E98064.gbapal");
const u16 gUnknown_8E98084[] = INCBIN_U16("graphics/interface/naming_screen_8E98084.gbapal");
const u16 gUnknown_8E980A4[] = INCBIN_U16("graphics/interface/naming_screen_8E980A4.gbapal");
const u16 gUnknown_8E980C4[] = INCBIN_U16("graphics/interface/naming_screen_8E980C4.gbapal");
const u16 gNamingScreenKeyboard_Pal[] = INCBIN_U16("graphics/naming_screen/keyboard.gbapal");
const u16 gNamingScreenRival_Pal[] = INCBIN_U16("graphics/naming_screen/rival.gbapal");
const u16 gNamingScreenMenu_Pal[6][16] =
{
INCBIN_U16("graphics/naming_screen/menu.gbapal"),
INCBIN_U16("graphics/naming_screen/page_swap_upper.gbapal"),
INCBIN_U16("graphics/naming_screen/page_swap_lower.gbapal"),
INCBIN_U16("graphics/naming_screen/page_swap_others.gbapal"),
INCBIN_U16("graphics/naming_screen/buttons.gbapal"),
INCBIN_U16("graphics/naming_screen/cursor.gbapal"),
};
const u32 gNamingScreenMenu_Gfx[] = INCBIN_U32("graphics/interface/naming_screen_menu.4bpp.lz");
const u32 gUnknown_8E982BC[] = INCBIN_U32("graphics/interface/naming_screen_menu.bin.lz");
const u32 gUnknown_8E98398[] = INCBIN_U32("graphics/interface/naming_screen_E98398.bin.lz");
const u32 gUnknown_8E98458[] = INCBIN_U32("graphics/interface/naming_screen_E98458.bin.lz");
const u32 gUnknown_8E98518[] = INCBIN_U32("graphics/interface/naming_screen_E98518.bin.lz");
const u32 gNamingScreenMenu_Gfx[] = INCBIN_U32("graphics/naming_screen/menu.4bpp.lz");
const u32 gNamingScreenBackground_Tilemap[] = INCBIN_U32("graphics/naming_screen/background.bin.lz");
const u32 gNamingScreenKeyboardUpper_Tilemap[] = INCBIN_U32("graphics/naming_screen/keyboard_upper.bin.lz");
const u32 gNamingScreenKeyboardLower_Tilemap[] = INCBIN_U32("graphics/naming_screen/keyboard_lower.bin.lz");
const u32 gNamingScreenKeyboardSymbols_Tilemap[] = INCBIN_U32("graphics/naming_screen/keyboard_symbols.bin.lz");
const u32 gUnknown_8E985D8[] = INCBIN_U32("graphics/interface/naming_screen_8E985D8.4bpp");
const u32 gUnknown_8E98858[] = INCBIN_U32("graphics/interface/naming_screen_8E98858.4bpp");
const u32 gUnknown_8E98A38[] = INCBIN_U32("graphics/interface/naming_screen_8E98A38.4bpp");
const u32 gUnknown_8E98C18[] = INCBIN_U32("graphics/interface/naming_screen_8E98C18.4bpp");
const u32 gUnknown_8E98CB8[] = INCBIN_U32("graphics/interface/naming_screen_8E98CB8.4bpp");
const u32 gUnknown_8E98D58[] = INCBIN_U32("graphics/interface/naming_screen_8E98D58.4bpp");
const u32 gUnknown_8E98DF8[] = INCBIN_U32("graphics/interface/naming_screen_8E98DF8.4bpp");
const u32 gUnknown_8E98E98[] = INCBIN_U32("graphics/interface/naming_screen_8E98E98.4bpp");
const u32 gUnknown_8E98F38[] = INCBIN_U32("graphics/interface/naming_screen_8E98F38.4bpp");
const u32 gUnknown_8E98FD8[] = INCBIN_U32("graphics/interface/naming_screen_8E98FD8.4bpp");
const u32 gUnknown_8E990D8[] = INCBIN_U32("graphics/interface/naming_screen_8E990D8.4bpp");
const u32 gUnknown_8E990F8[] = INCBIN_U32("graphics/interface/naming_screen_8E990F8.4bpp");
const u32 gNamingScreenPageSwapFrame_Gfx[] = INCBIN_U32("graphics/naming_screen/page_swap_frame.4bpp");
const u32 gNamingScreenBackButton_Gfx[] = INCBIN_U32("graphics/naming_screen/back_button.4bpp");
const u32 gNamingScreenOKButton_Gfx[] = INCBIN_U32("graphics/naming_screen/ok_button.4bpp");
const u32 gNamingScreenPageSwapUpper_Gfx[] = INCBIN_U32("graphics/naming_screen/page_swap_upper.4bpp");
const u32 gNamingScreenPageSwapLower_Gfx[] = INCBIN_U32("graphics/naming_screen/page_swap_lower.4bpp");
const u32 gNamingScreenPageSwapOthers_Gfx[] = INCBIN_U32("graphics/naming_screen/page_swap_others.4bpp");
const u32 gNamingScreenCursor_Gfx[] = INCBIN_U32("graphics/naming_screen/cursor.4bpp");
const u32 gNamingScreenCursorSquished_Gfx[] = INCBIN_U32("graphics/naming_screen/cursor_squished.4bpp");
const u32 gNamingScreenCursorFilled_Gfx[] = INCBIN_U32("graphics/naming_screen/cursor_filled.4bpp");
const u32 gNamingScreenPageSwapButton_Gfx[] = INCBIN_U32("graphics/naming_screen/page_swap_button.4bpp");
const u32 gNamingScreenInputArrow_Gfx[] = INCBIN_U32("graphics/naming_screen/input_arrow.4bpp");
const u32 gNamingScreenUnderscore_Gfx[] = INCBIN_U32("graphics/naming_screen/underscore.4bpp");
const u8 gUnknown_8E99118[] = INCBIN_U8("graphics/tm_case/unk_8E99118.4bpp");
+1 -1
View File
@@ -241,7 +241,7 @@ bool8 AdjustQuantityAccordingToDPadInput(s16 *quantity_p, u16 qmax)
u8 GetDialogBoxFontId(void)
{
if (!ContextNpcGetTextColor())
if (ContextNpcGetTextColor() == NPC_TEXT_COLOR_MALE)
return FONT_4;
else
return FONT_5;
+1 -1
View File
@@ -251,7 +251,7 @@ static u32 common_mainseq_4(struct mevent_srv_common * svr)
break;
case 28:
AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, ABSPATH("mevent_server.c"), 517);
svr->sendBuffer1 = sub_8069E48();
svr->sendBuffer1 = GetSavedRamScriptIfValid();
break;
case 29:
mevent_srv_common_init_send(svr, 0x1b, cmd->parameter, cmd->flag);
+985 -885
View File
File diff suppressed because it is too large Load Diff
+5 -5
View File
@@ -425,16 +425,16 @@ u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed
void AddTextPrinterDiffStyle(bool8 allowSkippingDelayWithButtonPress)
{
u8 result;
u8 color;
void *nptr = NULL;
gTextFlags.canABSpeedUpPrint = allowSkippingDelayWithButtonPress;
result = ContextNpcGetTextColor();
if (result == 0)
color = ContextNpcGetTextColor();
if (color == NPC_TEXT_COLOR_MALE)
AddTextPrinterParameterized2(0, FONT_4, gStringVar4, GetTextSpeedSetting(), nptr, TEXT_COLOR_BLUE, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY);
else if (result == 1)
else if (color == NPC_TEXT_COLOR_FEMALE)
AddTextPrinterParameterized2(0, FONT_5, gStringVar4, GetTextSpeedSetting(), nptr, TEXT_COLOR_RED, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY);
else
else // NPC_TEXT_COLOR_MON / NPC_TEXT_COLOR_NEUTRAL
AddTextPrinterParameterized2(0, FONT_2, gStringVar4, GetTextSpeedSetting(), nptr, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY);
}
+6 -6
View File
@@ -438,7 +438,7 @@ static void LoadSaveblockObjEventScripts(void)
}
}
void Overworld_SetMapObjTemplateCoords(u8 localId, s16 x, s16 y)
void SetObjEventTemplateCoords(u8 localId, s16 x, s16 y)
{
int i;
struct ObjectEventTemplate * savObjTemplates = gSaveBlock1Ptr->objectEventTemplates;
@@ -453,7 +453,7 @@ void Overworld_SetMapObjTemplateCoords(u8 localId, s16 x, s16 y)
}
}
void Overworld_SetObjEventTemplateMovementType(u8 localId, u8 movementType)
void SetObjEventTemplateMovementType(u8 localId, u8 movementType)
{
s32 i;
@@ -756,7 +756,7 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum)
ResetCyclingRoadChallengeData();
RestartWildEncounterImmunitySteps();
MapResetTrainerRematches(mapGroup, mapNum);
SetSav1WeatherFromCurrMapHeader();
SetSavedWeatherFromCurrMapHeader();
ChooseAmbientCrySpecies();
SetDefaultFlashLevel();
Overworld_ClearSavedMusic();
@@ -791,7 +791,7 @@ static void LoadMapFromWarp(bool32 unused)
ResetCyclingRoadChallengeData();
RestartWildEncounterImmunitySteps();
MapResetTrainerRematches(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum);
SetSav1WeatherFromCurrMapHeader();
SetSavedWeatherFromCurrMapHeader();
ChooseAmbientCrySpecies();
if (isOutdoors)
FlagClear(FLAG_SYS_FLASH_ACTIVE);
@@ -813,7 +813,7 @@ static void sub_80559A8(void)
LoadObjEventTemplatesFromHeader();
isOutdoors = IsMapTypeOutdoors(gMapHeader.mapType);
TrySetMapSaveWarpStatus();
SetSav1WeatherFromCurrMapHeader();
SetSavedWeatherFromCurrMapHeader();
ChooseAmbientCrySpecies();
SetDefaultFlashLevel();
sub_8110920();
@@ -956,7 +956,7 @@ static void SetDefaultFlashLevel(void)
gSaveBlock1Ptr->flashLevel = gMaxFlashLevel;
}
void Overworld_SetFlashLevel(s32 flashLevel)
void SetFlashLevel(s32 flashLevel)
{
if (flashLevel < 0 || flashLevel > gMaxFlashLevel)
flashLevel = 0;
+2 -2
View File
@@ -439,7 +439,7 @@ void CreateGroupMemberObjectsInvisible(u8 * sprite_ids, s32 group)
for (i = 0; i < 5; i++)
{
s32 obj_id = 5 * group + i;
sprite_ids[obj_id] = sprite_new(OBJ_EVENT_GFX_MAN, obj_id - 0x38, sUnionPartnerCoords[group][0] + sFacingDirectionOffsets[i][0], sUnionPartnerCoords[group][1] + sFacingDirectionOffsets[i][1], 3, 1);
sprite_ids[obj_id] = CreateVirtualObject(OBJ_EVENT_GFX_MAN, obj_id - 0x38, sUnionPartnerCoords[group][0] + sFacingDirectionOffsets[i][0], sUnionPartnerCoords[group][1] + sFacingDirectionOffsets[i][1], 3, 1);
RfuUnionObjectToggleInvisibility(obj_id - 0x38, TRUE);
}
}
@@ -653,7 +653,7 @@ bool32 RfuUnionTool_GetGroupAndMemberInFrontOfPlayer(struct UnkStruct_Main0 *mai
static void UnionPartnerObjectSetFacing(s32 member, s32 group, u8 direction)
{
TurnObjectEvent(5 * group - 0x38 + member, direction);
TurnVirtualObject(5 * group - 0x38 + member, direction);
}
void UpdateUnionGroupMemberFacing(u32 member, u32 group, struct UnkStruct_Main0 *main0_p)
+156 -165
View File
@@ -9,6 +9,7 @@
#include "field_screen_effect.h"
#include "quest_log.h"
#include "map_preview_screen.h"
#include "fieldmap.h"
#include "field_weather.h"
#include "field_tasks.h"
#include "field_fadetransition.h"
@@ -34,6 +35,7 @@
#include "fieldmap.h"
#include "field_door.h"
#include "constants/event_objects.h"
#include "constants/maps.h"
#include "constants/sound.h"
extern u16 (*const gSpecials[])(void);
@@ -44,12 +46,12 @@ extern const u8 *const gStdScriptsEnd[];
static bool8 ScriptContext_NextCommandEndsScript(struct ScriptContext * ctx);
static u8 ScriptContext_GetQuestLogInput(struct ScriptContext * ctx);
static EWRAM_DATA ptrdiff_t gVScriptOffset = 0;
static EWRAM_DATA ptrdiff_t sAddressOffset = 0; // For relative addressing in vgoto etc., used by saved scripts (e.g. Mystery Event)
static EWRAM_DATA u8 sQuestLogWaitButtonPressTimer = 0;
static EWRAM_DATA u16 sPauseCounter = 0;
static EWRAM_DATA u16 sMovingNpcId = 0;
static EWRAM_DATA u16 sMovingNpcMapBank = 0;
static EWRAM_DATA u16 sMovingNpcMapId = 0;
static EWRAM_DATA u16 sMovingNpcMapGroup = 0;
static EWRAM_DATA u16 sMovingNpcMapNum = 0;
static EWRAM_DATA u16 sFieldEffectScriptId = 0;
struct ScriptContext * sQuestLogScriptContextPtr;
@@ -95,7 +97,7 @@ bool8 ScrCmd_gotonative(struct ScriptContext * ctx)
bool8 ScrCmd_special(struct ScriptContext * ctx)
{
u16 (*const *specialPtr)(void) = gSpecials + ScriptReadHalfword(ctx);
u16 (*const *specialPtr)(void) = &gSpecials[ScriptReadHalfword(ctx)];
if (specialPtr < gSpecialsEnd)
(*specialPtr)();
else
@@ -106,7 +108,7 @@ bool8 ScrCmd_special(struct ScriptContext * ctx)
bool8 ScrCmd_specialvar(struct ScriptContext * ctx)
{
u16 * varPtr = GetVarPointer(ScriptReadHalfword(ctx));
u16 (*const *specialPtr)(void) = gSpecials + ScriptReadHalfword(ctx);
u16 (*const *specialPtr)(void) = &gSpecials[ScriptReadHalfword(ctx)];
if (specialPtr < gSpecialsEnd)
*varPtr = (*specialPtr)();
else
@@ -170,28 +172,28 @@ bool8 ScrCmd_setvaddress(struct ScriptContext * ctx)
u32 addr1 = (u32)ctx->scriptPtr - 1;
u32 addr2 = ScriptReadWord(ctx);
gVScriptOffset = addr2 - addr1;
sAddressOffset = addr2 - addr1;
return FALSE;
}
bool8 ScrCmd_vgoto(struct ScriptContext * ctx)
{
const u8 * scrptr = (const u8 *)ScriptReadWord(ctx);
ScriptJump(ctx, scrptr - gVScriptOffset);
ScriptJump(ctx, scrptr - sAddressOffset);
return FALSE;
}
bool8 ScrCmd_vcall(struct ScriptContext * ctx)
{
const u8 * scrptr = (const u8 *)ScriptReadWord(ctx);
ScriptCall(ctx, scrptr - gVScriptOffset);
ScriptCall(ctx, scrptr - sAddressOffset);
return FALSE;
}
bool8 ScrCmd_vgoto_if(struct ScriptContext * ctx)
{
u8 condition = ScriptReadByte(ctx);
const u8 * scrptr = (const u8 *)ScriptReadWord(ctx) - gVScriptOffset;
const u8 * scrptr = (const u8 *)ScriptReadWord(ctx) - sAddressOffset;
if (sScriptConditionTable[condition][ctx->comparisonResult] == 1)
ScriptJump(ctx, scrptr);
return FALSE;
@@ -200,7 +202,7 @@ bool8 ScrCmd_vgoto_if(struct ScriptContext * ctx)
bool8 ScrCmd_vcall_if(struct ScriptContext * ctx)
{
u8 condition = ScriptReadByte(ctx);
const u8 * scrptr = (const u8 *)ScriptReadWord(ctx) - gVScriptOffset;
const u8 * scrptr = (const u8 *)ScriptReadWord(ctx) - sAddressOffset;
if (sScriptConditionTable[condition][ctx->comparisonResult] == 1)
ScriptCall(ctx, scrptr);
return FALSE;
@@ -209,7 +211,7 @@ bool8 ScrCmd_vcall_if(struct ScriptContext * ctx)
bool8 ScrCmd_gotostd(struct ScriptContext * ctx)
{
u8 stdIdx = ScriptReadByte(ctx);
const u8 *const * script = gStdScripts + stdIdx;
const u8 *const * script = &gStdScripts[stdIdx];
if (script < gStdScriptsEnd)
ScriptJump(ctx, *script);
return FALSE;
@@ -218,7 +220,7 @@ bool8 ScrCmd_gotostd(struct ScriptContext * ctx)
bool8 ScrCmd_callstd(struct ScriptContext * ctx)
{
u8 stdIdx = ScriptReadByte(ctx);
const u8 *const * script = gStdScripts + stdIdx;
const u8 *const * script = &gStdScripts[stdIdx];
if (script < gStdScriptsEnd)
ScriptCall(ctx, *script);
return FALSE;
@@ -250,13 +252,13 @@ bool8 ScrCmd_callstd_if(struct ScriptContext * ctx)
return FALSE;
}
bool8 ScrCmd_gotoram(struct ScriptContext * ctx)
bool8 ScrCmd_returnram(struct ScriptContext * ctx)
{
ScriptJump(ctx, gRAMScriptPtr);
return FALSE;
}
bool8 ScrCmd_killscript(struct ScriptContext * ctx)
bool8 ScrCmd_endram(struct ScriptContext * ctx)
{
ClearRamScript();
StopScript(ctx);
@@ -269,9 +271,9 @@ bool8 ScrCmd_setmysteryeventstatus(struct ScriptContext * ctx)
return FALSE;
}
bool8 ScrCmd_execram(struct ScriptContext * ctx)
bool8 ScrCmd_trywondercardscript(struct ScriptContext * ctx)
{
const u8 * script = sub_8069E48();
const u8 * script = GetSavedRamScriptIfValid();
if (script != NULL)
{
gRAMScriptPtr = ctx->scriptPtr;
@@ -282,19 +284,19 @@ bool8 ScrCmd_execram(struct ScriptContext * ctx)
bool8 ScrCmd_loadword(struct ScriptContext * ctx)
{
u8 which = ScriptReadByte(ctx);
ctx->data[which] = ScriptReadWord(ctx);
u8 index = ScriptReadByte(ctx);
ctx->data[index] = ScriptReadWord(ctx);
return FALSE;
}
bool8 ScrCmd_loadbytefromaddr(struct ScriptContext * ctx)
bool8 ScrCmd_loadbytefromptr(struct ScriptContext * ctx)
{
u8 which = ScriptReadByte(ctx);
ctx->data[which] = *(const u8 *)ScriptReadWord(ctx);
u8 index = ScriptReadByte(ctx);
ctx->data[index] = *(const u8 *)ScriptReadWord(ctx);
return FALSE;
}
bool8 ScrCmd_writebytetoaddr(struct ScriptContext * ctx)
bool8 ScrCmd_setptr(struct ScriptContext * ctx)
{
u8 value = ScriptReadByte(ctx);
*(u8 *)ScriptReadWord(ctx) = value;
@@ -303,23 +305,23 @@ bool8 ScrCmd_writebytetoaddr(struct ScriptContext * ctx)
bool8 ScrCmd_loadbyte(struct ScriptContext * ctx)
{
u8 which = ScriptReadByte(ctx);
ctx->data[which] = ScriptReadByte(ctx);
u8 index = ScriptReadByte(ctx);
ctx->data[index] = ScriptReadByte(ctx);
return FALSE;
}
bool8 ScrCmd_setptrbyte(struct ScriptContext * ctx)
{
u8 which = ScriptReadByte(ctx);
*(u8 *)ScriptReadWord(ctx) = ctx->data[which];
u8 index = ScriptReadByte(ctx);
*(u8 *)ScriptReadWord(ctx) = ctx->data[index];
return FALSE;
}
bool8 ScrCmd_copylocal(struct ScriptContext * ctx)
{
u8 whichDst = ScriptReadByte(ctx);
u8 whichSrc = ScriptReadByte(ctx);
ctx->data[whichDst] = ctx->data[whichSrc];
u8 destIndex = ScriptReadByte(ctx);
u8 srcIndex = ScriptReadByte(ctx);
ctx->data[destIndex] = ctx->data[srcIndex];
return FALSE;
}
@@ -352,69 +354,67 @@ bool8 ScrCmd_setorcopyvar(struct ScriptContext * ctx)
return FALSE;
}
u8 compare_012(u16 left, u16 right)
static u8 Compare(u16 a, u16 b)
{
if (left < right)
if (a < b)
return 0;
else if (left == right)
else if (a == b)
return 1;
else
return 2;
}
// comparelocaltolocal
bool8 ScrCmd_compare_local_to_local(struct ScriptContext * ctx)
{
const u8 value1 = ctx->data[ScriptReadByte(ctx)];
const u8 value2 = ctx->data[ScriptReadByte(ctx)];
ctx->comparisonResult = compare_012(value1, value2);
ctx->comparisonResult = Compare(value1, value2);
return FALSE;
}
// comparelocaltoimm
bool8 ScrCmd_compare_local_to_value(struct ScriptContext * ctx)
{
const u8 value1 = ctx->data[ScriptReadByte(ctx)];
const u8 value2 = ScriptReadByte(ctx);
ctx->comparisonResult = compare_012(value1, value2);
ctx->comparisonResult = Compare(value1, value2);
return FALSE;
}
bool8 ScrCmd_compare_local_to_addr(struct ScriptContext * ctx)
bool8 ScrCmd_compare_local_to_ptr(struct ScriptContext * ctx)
{
const u8 value1 = ctx->data[ScriptReadByte(ctx)];
const u8 value2 = *(const u8 *)ScriptReadWord(ctx);
ctx->comparisonResult = compare_012(value1, value2);
ctx->comparisonResult = Compare(value1, value2);
return FALSE;
}
bool8 ScrCmd_compare_addr_to_local(struct ScriptContext * ctx)
bool8 ScrCmd_compare_ptr_to_local(struct ScriptContext * ctx)
{
const u8 value1 = *(const u8 *)ScriptReadWord(ctx);
const u8 value2 = ctx->data[ScriptReadByte(ctx)];
ctx->comparisonResult = compare_012(value1, value2);
ctx->comparisonResult = Compare(value1, value2);
return FALSE;
}
bool8 ScrCmd_compare_addr_to_value(struct ScriptContext * ctx)
bool8 ScrCmd_compare_ptr_to_value(struct ScriptContext * ctx)
{
const u8 value1 = *(const u8 *)ScriptReadWord(ctx);
const u8 value2 = ScriptReadByte(ctx);
ctx->comparisonResult = compare_012(value1, value2);
ctx->comparisonResult = Compare(value1, value2);
return FALSE;
}
bool8 ScrCmd_compare_addr_to_addr(struct ScriptContext * ctx)
bool8 ScrCmd_compare_ptr_to_ptr(struct ScriptContext * ctx)
{
const u8 value1 = *(const u8 *)ScriptReadWord(ctx);
const u8 value2 = *(const u8 *)ScriptReadWord(ctx);
ctx->comparisonResult = compare_012(value1, value2);
ctx->comparisonResult = Compare(value1, value2);
return FALSE;
}
@@ -423,7 +423,7 @@ bool8 ScrCmd_compare_var_to_value(struct ScriptContext * ctx)
const u16 value1 = *GetVarPointer(ScriptReadHalfword(ctx));
const u16 value2 = ScriptReadHalfword(ctx);
ctx->comparisonResult = compare_012(value1, value2);
ctx->comparisonResult = Compare(value1, value2);
return FALSE;
}
@@ -432,10 +432,11 @@ bool8 ScrCmd_compare_var_to_var(struct ScriptContext * ctx)
const u16 *ptr1 = GetVarPointer(ScriptReadHalfword(ctx));
const u16 *ptr2 = GetVarPointer(ScriptReadHalfword(ctx));
ctx->comparisonResult = compare_012(*ptr1, *ptr2);
ctx->comparisonResult = Compare(*ptr1, *ptr2);
return FALSE;
}
// Note: addvar doesn't support adding from a variable in vanilla.
bool8 ScrCmd_addvar(struct ScriptContext * ctx)
{
u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx));
@@ -521,7 +522,7 @@ bool8 ScrCmd_checkpcitem(struct ScriptContext * ctx)
return FALSE;
}
bool8 ScrCmd_givedecoration(struct ScriptContext * ctx)
bool8 ScrCmd_adddecoration(struct ScriptContext * ctx)
{
u32 decorId = VarGet(ScriptReadHalfword(ctx));
@@ -529,7 +530,7 @@ bool8 ScrCmd_givedecoration(struct ScriptContext * ctx)
return FALSE;
}
bool8 ScrCmd_takedecoration(struct ScriptContext * ctx)
bool8 ScrCmd_removedecoration(struct ScriptContext * ctx)
{
u32 decorId = VarGet(ScriptReadHalfword(ctx));
@@ -577,7 +578,7 @@ bool8 ScrCmd_incrementgamestat(struct ScriptContext * ctx)
return FALSE;
}
bool8 ScrCmd_comparestattoword(struct ScriptContext * ctx)
bool8 ScrCmd_comparestat(struct ScriptContext * ctx)
{
u8 statIdx = ScriptReadByte(ctx);
u32 value = ScriptReadWord(ctx);
@@ -607,11 +608,9 @@ bool8 ScrCmd_animateflash(struct ScriptContext * ctx)
return TRUE;
}
bool8 ScrCmd_setflashradius(struct ScriptContext * ctx)
bool8 ScrCmd_setflashlevel(struct ScriptContext * ctx)
{
u16 flashLevel = VarGet(ScriptReadHalfword(ctx));
Overworld_SetFlashLevel(flashLevel);
SetFlashLevel(VarGet(ScriptReadHalfword(ctx)));
return FALSE;
}
@@ -642,9 +641,7 @@ bool8 ScrCmd_fadescreenspeed(struct ScriptContext * ctx)
static bool8 RunPauseTimer(void)
{
sPauseCounter--;
if (sPauseCounter == 0)
if (--sPauseCounter == 0)
return TRUE;
else
return FALSE;
@@ -666,7 +663,7 @@ bool8 ScrCmd_initclock(struct ScriptContext * ctx)
return FALSE;
}
bool8 ScrCmd_dodailyevents(struct ScriptContext * ctx)
bool8 ScrCmd_dotimebasedevents(struct ScriptContext * ctx)
{
// DoTimeBasedEvents();
return FALSE;
@@ -688,13 +685,13 @@ bool8 ScrCmd_setweather(struct ScriptContext * ctx)
{
u16 weather = VarGet(ScriptReadHalfword(ctx));
SetSav1Weather(weather);
SetSavedWeather(weather);
return FALSE;
}
bool8 ScrCmd_resetweather(struct ScriptContext * ctx)
{
SetSav1WeatherFromCurrMapHeader();
SetSavedWeatherFromCurrMapHeader();
return FALSE;
}
@@ -768,10 +765,10 @@ bool8 ScrCmd_warphole(struct ScriptContext * ctx)
u16 y;
PlayerGetDestCoords(&x, &y);
if (mapGroup == 0xFF && mapNum == 0xFF)
SetWarpDestinationToFixedHoleWarp(x - 7, y - 7);
if (mapGroup == MAP_GROUP(UNDEFINED) && mapNum == MAP_NUM(UNDEFINED))
SetWarpDestinationToFixedHoleWarp(x - MAP_OFFSET, y - MAP_OFFSET);
else
SetWarpDestination(mapGroup, mapNum, -1, x - 7, y - 7);
SetWarpDestination(mapGroup, mapNum, WARP_ID_NONE, x - MAP_OFFSET, y - MAP_OFFSET);
DoFallWarp();
ResetInitialPlayerAvatarState();
return TRUE;
@@ -791,7 +788,7 @@ bool8 ScrCmd_warpteleport(struct ScriptContext * ctx)
return TRUE;
}
bool8 ScrCmd_warpteleport2(struct ScriptContext * ctx)
bool8 ScrCmd_warpspinenter(struct ScriptContext * ctx)
{
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
@@ -922,11 +919,11 @@ bool8 ScrCmd_waitfanfare(struct ScriptContext * ctx)
bool8 ScrCmd_playbgm(struct ScriptContext * ctx)
{
u16 songId = ScriptReadHalfword(ctx);
bool8 val = ScriptReadByte(ctx);
bool8 save = ScriptReadByte(ctx);
if (QL_IS_PLAYBACK_STATE)
return FALSE;
if (val == TRUE)
if (save == TRUE)
Overworld_SetSavedMusic(songId);
PlayNewMapMusic(songId);
return FALSE;
@@ -992,7 +989,7 @@ bool8 ScrCmd_applymovement(struct ScriptContext * ctx)
return FALSE;
}
bool8 ScrCmd_applymovement_at(struct ScriptContext * ctx)
bool8 ScrCmd_applymovementat(struct ScriptContext * ctx)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
const void *movementScript = (const void *)ScriptReadWord(ctx);
@@ -1006,7 +1003,7 @@ bool8 ScrCmd_applymovement_at(struct ScriptContext * ctx)
static bool8 WaitForMovementFinish(void)
{
return ScriptMovement_IsObjectMovementFinished(sMovingNpcId, sMovingNpcMapId, sMovingNpcMapBank);
return ScriptMovement_IsObjectMovementFinished(sMovingNpcId, sMovingNpcMapNum, sMovingNpcMapGroup);
}
bool8 ScrCmd_waitmovement(struct ScriptContext * ctx)
@@ -1015,13 +1012,13 @@ bool8 ScrCmd_waitmovement(struct ScriptContext * ctx)
if (localId != 0)
sMovingNpcId = localId;
sMovingNpcMapBank = gSaveBlock1Ptr->location.mapGroup;
sMovingNpcMapId = gSaveBlock1Ptr->location.mapNum;
sMovingNpcMapGroup = gSaveBlock1Ptr->location.mapGroup;
sMovingNpcMapNum = gSaveBlock1Ptr->location.mapNum;
SetupNativeScript(ctx, WaitForMovementFinish);
return TRUE;
}
bool8 ScrCmd_waitmovement_at(struct ScriptContext * ctx)
bool8 ScrCmd_waitmovementat(struct ScriptContext * ctx)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
u8 mapBank;
@@ -1031,8 +1028,8 @@ bool8 ScrCmd_waitmovement_at(struct ScriptContext * ctx)
sMovingNpcId = localId;
mapBank = ScriptReadByte(ctx);
mapId = ScriptReadByte(ctx);
sMovingNpcMapBank = mapBank;
sMovingNpcMapId = mapId;
sMovingNpcMapGroup = mapBank;
sMovingNpcMapNum = mapId;
SetupNativeScript(ctx, WaitForMovementFinish);
return TRUE;
}
@@ -1045,7 +1042,7 @@ bool8 ScrCmd_removeobject(struct ScriptContext * ctx)
return FALSE;
}
bool8 ScrCmd_removeobject_at(struct ScriptContext * ctx)
bool8 ScrCmd_removeobjectat(struct ScriptContext * ctx)
{
u16 objectId = VarGet(ScriptReadHalfword(ctx));
u8 mapGroup = ScriptReadByte(ctx);
@@ -1063,7 +1060,7 @@ bool8 ScrCmd_addobject(struct ScriptContext * ctx)
return FALSE;
}
bool8 ScrCmd_addobject_at(struct ScriptContext * ctx)
bool8 ScrCmd_addobjectat(struct ScriptContext * ctx)
{
u16 objectId = VarGet(ScriptReadHalfword(ctx));
u8 mapGroup = ScriptReadByte(ctx);
@@ -1089,11 +1086,11 @@ bool8 ScrCmd_setobjectxyperm(struct ScriptContext * ctx)
u16 x = VarGet(ScriptReadHalfword(ctx));
u16 y = VarGet(ScriptReadHalfword(ctx));
Overworld_SetMapObjTemplateCoords(localId, x, y);
SetObjEventTemplateCoords(localId, x, y);
return FALSE;
}
bool8 ScrCmd_moveobjectoffscreen(struct ScriptContext * ctx)
bool8 ScrCmd_copyobjectxytoperm(struct ScriptContext * ctx)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
@@ -1101,44 +1098,44 @@ bool8 ScrCmd_moveobjectoffscreen(struct ScriptContext * ctx)
return FALSE;
}
bool8 ScrCmd_showobject_at(struct ScriptContext * ctx)
bool8 ScrCmd_showobjectat(struct ScriptContext * ctx)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
ShowOrHideObjectByLocalIdAndMap(localId, mapNum, mapGroup, 0);
SetObjectInvisibility(localId, mapNum, mapGroup, FALSE);
return FALSE;
}
bool8 ScrCmd_hideobject_at(struct ScriptContext * ctx)
bool8 ScrCmd_hideobjectat(struct ScriptContext * ctx)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
ShowOrHideObjectByLocalIdAndMap(localId, mapNum, mapGroup, 1);
SetObjectInvisibility(localId, mapNum, mapGroup, TRUE);
return FALSE;
}
bool8 ScrCmd_setobjectpriority(struct ScriptContext * ctx)
bool8 ScrCmd_setobjectsubpriority(struct ScriptContext * ctx)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
u8 priority = ScriptReadByte(ctx);
SetObjectPriorityByLocalIdAndMap(localId, mapNum, mapGroup, priority + 83);
SetObjectSubpriority(localId, mapNum, mapGroup, priority + 83);
return FALSE;
}
bool8 ScrCmd_resetobjectpriority(struct ScriptContext * ctx)
bool8 ScrCmd_resetobjectsubpriority(struct ScriptContext * ctx)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
UnfixObjectPriorityByLocalIdAndMap(localId, mapNum, mapGroup);
ResetObjectSubpriority(localId, mapNum, mapGroup);
return FALSE;
}
@@ -1166,32 +1163,34 @@ bool8 ScrCmd_setobjectmovementtype(struct ScriptContext * ctx)
u16 localId = VarGet(ScriptReadHalfword(ctx));
u8 movementType = ScriptReadByte(ctx);
Overworld_SetObjEventTemplateMovementType(localId, movementType);
SetObjEventTemplateMovementType(localId, movementType);
return FALSE;
}
bool8 ScrCmd_createvobject(struct ScriptContext * ctx)
{
u8 graphicsId = ScriptReadByte(ctx);
u8 v2 = ScriptReadByte(ctx);
u8 virtualObjId = ScriptReadByte(ctx);
u16 x = VarGet(ScriptReadHalfword(ctx));
u32 y = VarGet(ScriptReadHalfword(ctx));
u8 elevation = ScriptReadByte(ctx);
u8 direction = ScriptReadByte(ctx);
sprite_new(graphicsId, v2, x, y, elevation, direction);
CreateVirtualObject(graphicsId, virtualObjId, x, y, elevation, direction);
return FALSE;
}
bool8 ScrCmd_turnvobject(struct ScriptContext * ctx)
{
u8 v1 = ScriptReadByte(ctx);
u8 virtualObjId = ScriptReadByte(ctx);
u8 direction = ScriptReadByte(ctx);
TurnObjectEvent(v1, direction);
TurnVirtualObject(virtualObjId, direction);
return FALSE;
}
// lockall freezes all object events except the player immediately.
// The player is frozen after waiting for their current movement to finish.
bool8 ScrCmd_lockall(struct ScriptContext * ctx)
{
if (IsUpdateLinkStateCBActive())
@@ -1200,8 +1199,8 @@ bool8 ScrCmd_lockall(struct ScriptContext * ctx)
}
else
{
ScriptFreezeObjectEvents();
SetupNativeScript(ctx, NativeScript_WaitPlayerStopMoving);
FreezeObjects_WaitForPlayer();
SetupNativeScript(ctx, IsFreezePlayerFinished);
return TRUE;
}
}
@@ -1216,13 +1215,13 @@ bool8 ScrCmd_lock(struct ScriptContext * ctx)
{
if (gObjectEvents[gSelectedObjectEvent].active)
{
LockSelectedObjectEvent();
SetupNativeScript(ctx, NativeScript_WaitPlayerAndTargetNPCStopMoving);
FreezeObjects_WaitForPlayerAndSelected();
SetupNativeScript(ctx, IsFreezeSelectedObjectAndPlayerFinished);
}
else
{
ScriptFreezeObjectEvents();
SetupNativeScript(ctx, NativeScript_WaitPlayerStopMoving);
FreezeObjects_WaitForPlayer();
SetupNativeScript(ctx, IsFreezePlayerFinished);
}
return TRUE;
}
@@ -1429,7 +1428,7 @@ bool8 ScrCmd_multichoice(struct ScriptContext * ctx)
u8 left = ScriptReadByte(ctx);
u8 top = ScriptReadByte(ctx);
u8 multichoiceId = ScriptReadByte(ctx);
u8 ignoreBPress = ScriptReadByte(ctx);
bool8 ignoreBPress = ScriptReadByte(ctx);
if (ScriptMenu_Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE)
{
@@ -1448,7 +1447,7 @@ bool8 ScrCmd_multichoicedefault(struct ScriptContext * ctx)
u8 top = ScriptReadByte(ctx);
u8 multichoiceId = ScriptReadByte(ctx);
u8 defaultChoice = ScriptReadByte(ctx);
u8 ignoreBPress = ScriptReadByte(ctx);
bool8 ignoreBPress = ScriptReadByte(ctx);
if (ScriptMenu_MultichoiceWithDefault(left, top, multichoiceId, ignoreBPress, defaultChoice) == TRUE)
{
@@ -1478,7 +1477,7 @@ bool8 ScrCmd_multichoicegrid(struct ScriptContext * ctx)
u8 top = ScriptReadByte(ctx);
u8 multichoiceId = ScriptReadByte(ctx);
u8 numColumns = ScriptReadByte(ctx);
u8 ignoreBPress = ScriptReadByte(ctx);
bool8 ignoreBPress = ScriptReadByte(ctx);
if (ScriptMenu_MultichoiceGrid(left, top, multichoiceId, ignoreBPress, numColumns) == TRUE)
{
@@ -1498,7 +1497,7 @@ bool8 ScrCmd_erasebox(struct ScriptContext * ctx)
u8 right = ScriptReadByte(ctx);
u8 bottom = ScriptReadByte(ctx);
// MenuZeroFillWindowRect(left, top, right, bottom);
// Menu_EraseWindowRect(left, top, right, bottom);
return FALSE;
}
@@ -1507,7 +1506,7 @@ bool8 ScrCmd_drawboxtext(struct ScriptContext * ctx)
// u8 left = ScriptReadByte(ctx);
// u8 top = ScriptReadByte(ctx);
// u8 multichoiceId = ScriptReadByte(ctx);
// u8 ignoreBPress = ScriptReadByte(ctx);
// bool8 ignoreBPress = ScriptReadByte(ctx);
/*if (Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE)
{
@@ -1530,7 +1529,9 @@ bool8 ScrCmd_showmonpic(struct ScriptContext * ctx)
bool8 ScrCmd_hidemonpic(struct ScriptContext * ctx)
{
bool8 (*func)(void) = ScriptMenu_GetPicboxWaitFunc();
// The hide function returns a pointer to a function
// that returns true once the pic is hidden
bool8 (*func)(void) = ScriptMenu_HidePokemonPic();
if (func == NULL)
return FALSE;
@@ -1538,48 +1539,48 @@ bool8 ScrCmd_hidemonpic(struct ScriptContext * ctx)
return TRUE;
}
bool8 ScrCmd_showcontestwinner(struct ScriptContext * ctx)
bool8 ScrCmd_showcontestpainting(struct ScriptContext * ctx)
{
u8 v1 = ScriptReadByte(ctx);
u8 contestWinnerId = ScriptReadByte(ctx);
/*
if (v1)
sub_812FDA8(v1);
ShowContestWinner();
ScriptContext1_Stop();
return TRUE;
*/
// Artist's painting is temporary and already has its data loaded
if (contestWinnerId != CONTEST_WINNER_ARTIST)
SetContestWinnerForPainting(contestWinnerId);
ShowContestPainting();
ScriptContext1_Stop()
return TRUE;
*/
return FALSE;
}
bool8 ScrCmd_braillemessage(struct ScriptContext * ctx)
{
u8 *ptr = (u8 *)ScriptReadWord(ctx);
if (ptr == NULL)
ptr = (u8 *)ctx->data[0];
u8 *msg = (u8 *)ScriptReadWord(ctx);
if (msg == NULL)
msg = (u8 *)ctx->data[0];
LoadStdWindowFrameGfx();
DrawDialogueFrame(0, 1);
AddTextPrinterParameterized(0, FONT_6, ptr, 0, 1, 0, NULL);
AddTextPrinterParameterized(0, FONT_BRAILLE, msg, 0, 1, 0, NULL);
return FALSE;
}
bool8 ScrCmd_getbraillestringwidth(struct ScriptContext * ctx)
{
u8 *ptr = (u8 *)ScriptReadWord(ctx);
if (ptr == NULL)
ptr = (u8 *)ctx->data[0];
u8 *msg = (u8 *)ScriptReadWord(ctx);
if (msg == NULL)
msg = (u8 *)ctx->data[0];
gSpecialVar_0x8004 = GetStringWidth(FONT_6, ptr, -1);
gSpecialVar_0x8004 = GetStringWidth(FONT_BRAILLE, msg, -1);
return FALSE;
}
bool8 ScrCmd_vmessage(struct ScriptContext * ctx)
{
u32 v1 = ScriptReadWord(ctx);
u32 msg = ScriptReadWord(ctx);
ShowFieldMessage((u8 *)(v1 - gVScriptOffset));
ShowFieldMessage((u8 *)(msg - sAddressOffset));
return FALSE;
}
@@ -1629,8 +1630,8 @@ bool8 ScrCmd_bufferitemname(struct ScriptContext * ctx)
return FALSE;
}
const u8 gUnknown_83A72A0[] = _("S");
const u8 gUnknown_83A72A2[] = _("IES");
static const u8 sText_S[] = _("S");
static const u8 sText_IES[] = _("IES");
bool8 ScrCmd_bufferitemnameplural(struct ScriptContext * ctx)
{
@@ -1640,15 +1641,15 @@ bool8 ScrCmd_bufferitemnameplural(struct ScriptContext * ctx)
CopyItemName(itemId, sScriptStringVars[stringVarIndex]);
if (itemId == ITEM_POKE_BALL && quantity >= 2)
StringAppend(sScriptStringVars[stringVarIndex], gUnknown_83A72A0);
else if (itemId >= ITEM_CHERI_BERRY && itemId < ITEM_ENIGMA_BERRY && quantity >= 2)
StringAppend(sScriptStringVars[stringVarIndex], sText_S);
else if (itemId >= FIRST_BERRY_INDEX && itemId < LAST_BERRY_INDEX && quantity >= 2)
{
u16 strlength = StringLength(sScriptStringVars[stringVarIndex]);
if (strlength != 0)
{
u8 * endptr = sScriptStringVars[stringVarIndex] + strlength;
endptr[-1] = EOS;
StringAppend(sScriptStringVars[stringVarIndex], gUnknown_83A72A2);
StringAppend(sScriptStringVars[stringVarIndex], sText_IES);
}
}
@@ -1676,10 +1677,10 @@ bool8 ScrCmd_buffermovename(struct ScriptContext * ctx)
bool8 ScrCmd_buffernumberstring(struct ScriptContext * ctx)
{
u8 stringVarIndex = ScriptReadByte(ctx);
u16 v1 = VarGet(ScriptReadHalfword(ctx));
u8 v2 = CountDigits(v1);
u16 num = VarGet(ScriptReadHalfword(ctx));
u8 numDigits = CountDigits(num);
ConvertIntToDecimalStringN(sScriptStringVars[stringVarIndex], v1, 0, v2);
ConvertIntToDecimalStringN(sScriptStringVars[stringVarIndex], num, STR_CONV_MODE_LEFT_ALIGN, numDigits);
return FALSE;
}
@@ -1692,17 +1693,6 @@ bool8 ScrCmd_bufferstdstring(struct ScriptContext * ctx)
return FALSE;
}
/*
bool8 ScrCmd_buffercontesttype(struct ScriptContext * ctx)
{
u8 stringVarIndex = ScriptReadByte(ctx);
u16 index = VarGet(ScriptReadHalfword(ctx));
sub_818E868(sScriptStringVars[stringVarIndex], index);
return FALSE;
}
*/
bool8 ScrCmd_bufferstring(struct ScriptContext * ctx)
{
u8 stringVarIndex = ScriptReadByte(ctx);
@@ -1712,9 +1702,9 @@ bool8 ScrCmd_bufferstring(struct ScriptContext * ctx)
return FALSE;
}
bool8 ScrCmd_vloadword(struct ScriptContext * ctx)
bool8 ScrCmd_vbuffermessage(struct ScriptContext * ctx)
{
const u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gVScriptOffset);
const u8 *ptr = (u8 *)(ScriptReadWord(ctx) - sAddressOffset);
StringExpandPlaceholders(gStringVar4, ptr);
return FALSE;
@@ -1725,7 +1715,7 @@ bool8 ScrCmd_vbufferstring(struct ScriptContext * ctx)
u8 stringVarIndex = ScriptReadByte(ctx);
u32 addr = ScriptReadWord(ctx);
const u8 *src = (u8 *)(addr - gVScriptOffset);
const u8 *src = (u8 *)(addr - sAddressOffset);
u8 *dest = sScriptStringVars[stringVarIndex];
StringCopy(dest, src);
return FALSE;
@@ -1964,6 +1954,7 @@ bool8 ScrCmd_pokemartdecoration(struct ScriptContext * ctx)
return TRUE;
}
// Changes clerk dialogue slightly from above. See MART_TYPE_DECOR2
bool8 ScrCmd_pokemartdecoration2(struct ScriptContext * ctx)
{
const void *ptr = (void *)ScriptReadWord(ctx);
@@ -1989,13 +1980,13 @@ bool8 ScrCmd_setberrytree(struct ScriptContext * ctx)
// u8 growthStage = ScriptReadByte(ctx);
//
// if (berry == 0)
// PlantBerryTree(treeId, 0, growthStage, FALSE);
// PlantBerryTree(treeId, berry, growthStage, FALSE);
// else
// PlantBerryTree(treeId, berry, growthStage, FALSE);
return FALSE;
}
bool8 ScrCmd_getpricereduction(struct ScriptContext * ctx)
bool8 ScrCmd_getpokenewsactive(struct ScriptContext * ctx)
{
// u16 value = VarGet(ScriptReadHalfword(ctx));
//
@@ -2005,7 +1996,7 @@ bool8 ScrCmd_getpricereduction(struct ScriptContext * ctx)
bool8 ScrCmd_choosecontestmon(struct ScriptContext * ctx)
{
// sub_81B9404();
// ChooseContestMon();
ScriptContext1_Stop();
return TRUE;
}
@@ -2013,7 +2004,7 @@ bool8 ScrCmd_choosecontestmon(struct ScriptContext * ctx)
bool8 ScrCmd_startcontest(struct ScriptContext * ctx)
{
// sub_80F840C();
// StartContest();
// ScriptContext1_Stop();
// return TRUE;
return FALSE;
@@ -2021,7 +2012,7 @@ bool8 ScrCmd_startcontest(struct ScriptContext * ctx)
bool8 ScrCmd_showcontestresults(struct ScriptContext * ctx)
{
// sub_80F8484();
// ShowContestResults();
// ScriptContext1_Stop();
// return TRUE;
return FALSE;
@@ -2029,7 +2020,7 @@ bool8 ScrCmd_showcontestresults(struct ScriptContext * ctx)
bool8 ScrCmd_contestlinktransfer(struct ScriptContext * ctx)
{
// sub_80F84C4(gSpecialVar_ContestCategory);
// ContestLinkTransfer(gSpecialVar_ContestCategory);
// ScriptContext1_Stop();
// return TRUE;
return FALSE;
@@ -2044,7 +2035,7 @@ bool8 ScrCmd_dofieldeffect(struct ScriptContext * ctx)
return FALSE;
}
bool8 ScrCmd_setfieldeffectarg(struct ScriptContext * ctx)
bool8 ScrCmd_setfieldeffectargument(struct ScriptContext * ctx)
{
u8 argNum = ScriptReadByte(ctx);
@@ -2101,11 +2092,11 @@ bool8 ScrCmd_setmetatile(struct ScriptContext * ctx)
u16 x = VarGet(ScriptReadHalfword(ctx));
u16 y = VarGet(ScriptReadHalfword(ctx));
u16 tileId = VarGet(ScriptReadHalfword(ctx));
u16 v8 = VarGet(ScriptReadHalfword(ctx));
bool16 isImpassable = VarGet(ScriptReadHalfword(ctx));
x += 7;
y += 7;
if (!v8)
x += MAP_OFFSET;
y += MAP_OFFSET;
if (!isImpassable)
MapGridSetMetatileIdAt(x, y, tileId);
else
MapGridSetMetatileIdAt(x, y, tileId | METATILE_COLLISION_MASK);
@@ -2117,8 +2108,8 @@ bool8 ScrCmd_opendoor(struct ScriptContext * ctx)
u16 x = VarGet(ScriptReadHalfword(ctx));
u16 y = VarGet(ScriptReadHalfword(ctx));
x += 7;
y += 7;
x += MAP_OFFSET;
y += MAP_OFFSET;
PlaySE(GetDoorSoundEffect(x, y));
FieldAnimateDoorOpen(x, y);
return FALSE;
@@ -2129,8 +2120,8 @@ bool8 ScrCmd_closedoor(struct ScriptContext * ctx)
u16 x = VarGet(ScriptReadHalfword(ctx));
u16 y = VarGet(ScriptReadHalfword(ctx));
x += 7;
y += 7;
x += MAP_OFFSET;
y += MAP_OFFSET;
FieldAnimateDoorClose(x, y);
return FALSE;
}
@@ -2154,8 +2145,8 @@ bool8 ScrCmd_setdooropen(struct ScriptContext * ctx)
u16 x = VarGet(ScriptReadHalfword(ctx));
u16 y = VarGet(ScriptReadHalfword(ctx));
x += 7;
y += 7;
x += MAP_OFFSET;
y += MAP_OFFSET;
FieldSetDoorOpened(x, y);
return FALSE;
}
@@ -2165,8 +2156,8 @@ bool8 ScrCmd_setdoorclosed(struct ScriptContext * ctx)
u16 x = VarGet(ScriptReadHalfword(ctx));
u16 y = VarGet(ScriptReadHalfword(ctx));
x += 7;
y += 7;
x += MAP_OFFSET;
y += MAP_OFFSET;
FieldSetDoorClosed(x, y);
return FALSE;
}
@@ -2202,9 +2193,9 @@ bool8 ScrCmd_addcoins(struct ScriptContext * ctx)
u16 coins = VarGet(ScriptReadHalfword(ctx));
if (AddCoins(coins) == TRUE)
gSpecialVar_Result = 0;
gSpecialVar_Result = FALSE;
else
gSpecialVar_Result = 1;
gSpecialVar_Result = TRUE;
return FALSE;
}
@@ -2213,9 +2204,9 @@ bool8 ScrCmd_removecoins(struct ScriptContext * ctx)
u16 coins = VarGet(ScriptReadHalfword(ctx));
if (RemoveCoins(coins) == TRUE)
gSpecialVar_Result = 0;
gSpecialVar_Result = FALSE;
else
gSpecialVar_Result = 1;
gSpecialVar_Result = TRUE;
return FALSE;
}
+1 -1
View File
@@ -523,7 +523,7 @@ bool32 ValidateRamScript(void)
return TRUE;
}
u8 *sub_8069E48(void)
u8 *GetSavedRamScriptIfValid(void)
{
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
if (!ValidateReceivedWonderCard())
+1 -1
View File
@@ -1048,7 +1048,7 @@ bool8 ScriptMenu_ShowPokemonPic(u16 species, u8 x, u8 y)
return TRUE;
}
bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void)
bool8 (*ScriptMenu_HidePokemonPic(void))(void)
{
u8 taskId = FindTaskIdByFunc(Task_ScriptShowMonPic);
if (taskId == 0xFF)
+1 -1
View File
@@ -217,7 +217,7 @@ static u8 CreateShopMenu(u8 a0)
{
gShopData.martType = GetMartTypeFromItemList(a0);
gShopData.selectedRow = 0;
if (ContextNpcGetTextColor() == 0)
if (ContextNpcGetTextColor() == NPC_TEXT_COLOR_MALE)
gShopData.fontId = FONT_4;
else
gShopData.fontId = FONT_5;
+1 -1
View File
@@ -4657,7 +4657,7 @@ static void HandleCancelTrade(bool32 unlockObjs)
static void UR_EnableScriptContext2AndFreezeObjectEvents(void)
{
ScriptContext2_Enable();
ScriptFreezeObjectEvents();
FreezeObjects_WaitForPlayer();
}
static u8 GetSinglePartnerSpriteGenderParam(s32 linkPlayer)