Adding support for ribbon descriptions [LibPkmGC]

This commit is contained in:
TuxSH
2015-09-27 22:16:39 +02:00
parent 4d29306c6f
commit f31ce01cba
23 changed files with 835 additions and 24 deletions

View File

@@ -28,7 +28,7 @@ namespace Colosseum {
/*
??
0xc16c: Colosseum::GroupBattleRules rules[26]
0xc9dc: Colosseum::GroupBattleRules rules[6]
??
*/
class LIBPKMGC_DECL BattleModeData :

View File

@@ -16,8 +16,8 @@
* along with LibPkmGC. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _LIBPKMGC_XD_COMMON_EVERYTHING_H
#define _LIBPKMGC_XD_COMMON_EVERYTHING_H
#ifndef _LIBPKMGC_COLOSSEUM_COMMON_EVERYTHING_H
#define _LIBPKMGC_COLOSSEUM_COMMON_EVERYTHING_H
#include <LibPkmGC/Colosseum/Common/GameConfigData.h>
#include <LibPkmGC/Colosseum/Common/PlayerData.h>
@@ -28,4 +28,6 @@
#include <LibPkmGC/Colosseum/Common/StrategyMemoData.h>
#include <LibPkmGC/Colosseum/Common/BattleModeData.h>
#include <LibPkmGC/Colosseum/Common/RibbonDescriptionsData.h>
#endif

View File

@@ -0,0 +1,46 @@
/*
* Copyright (C) TuxSH 2015
* This file is part of LibPkmGC.
*
* LibPkmGC is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* LibPkmGC is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with LibPkmGC. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _LIBPKMGC_COLOSSEUM_RIBBON_DESCRIPTION_DATA_H
#define _LIBPKMGC_COLOSSEUM_RIBBON_DESCRIPTION_DATA_H
#include <LibPkmGC/GC/Common/RibbonDescriptionsData.h>
namespace LibPkmGC {
namespace Colosseum {
class LIBPKMGC_DECL RibbonDescriptionsData :
public GC::RibbonDescriptionsData
{
public:
static const size_t size = 11;
~RibbonDescriptionsData(void);
RibbonDescriptionsData(void);
RibbonDescriptionsData(const u8* inData);
bool isXD(void) const;
RibbonDescriptionsData* clone(void) const;
RibbonDescriptionsData* create(void) const;
};
}
}
#endif

View File

@@ -73,7 +73,7 @@ public:
u8 checksum[20]; // digest
void fixBugsAffectingPokemon(void);
void fixBugsAffectingPokemon(void); // LibPkmGC < 1.1.1
protected:
void loadData(u32 flags = 0);
void deleteFields(void);

View File

@@ -0,0 +1,46 @@
/*
* Copyright (C) TuxSH 2015
* This file is part of LibPkmGC.
*
* LibPkmGC is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* LibPkmGC is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with LibPkmGC. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _LIBPKMGC_RIBBON_DESCRIPTIONS_H
#define _LIBPKMGC_RIBBON_DESCRIPTIONS_H
#include <LibPkmGC/Core/Config.h>
namespace LibPkmGC {
namespace Localization {
namespace Detail {
namespace RibbonDescriptions {
#define NB_NAMES 65
extern const char LIBPKMGC_DECL *englishNames[NB_NAMES];
extern const char LIBPKMGC_DECL *frenchNames[NB_NAMES];
extern const char LIBPKMGC_DECL *germanNames[NB_NAMES];
extern const char LIBPKMGC_DECL *italianNames[NB_NAMES];
extern const char LIBPKMGC_DECL *spanishNames[NB_NAMES];
extern const char LIBPKMGC_DECL *japaneseNames[NB_NAMES];
extern const char **names[7];
#undef NB_NAMES
}
}
}
}
#endif

View File

@@ -26,6 +26,7 @@
#include <LibPkmGC/Core/Detail/MoveNames.h>
#include <LibPkmGC/Core/Detail/AbilityNames.h>
#include <LibPkmGC/Core/Detail/ItemNames.h>
#include <LibPkmGC/Core/Detail/RibbonDescriptions.h>
namespace LibPkmGC {
namespace Localization {
@@ -45,6 +46,8 @@ LIBPKMGC_DECL const char* getPokemonAbilityName(LanguageIndex language, Pokemon
LIBPKMGC_DECL const char* getItemName(LanguageIndex language, ItemIndex index, bool isXD = false);
LIBPKMGC_DECL const char* getRibbonDescription(LanguageIndex language, size_t index);
// Ribbons: Marine, Land, Sky, Country, National, Earth, World, Unused 1,2,3,4
}
}

View File

@@ -28,4 +28,5 @@
#include <LibPkmGC/GC/Common/StrategyMemoData.h>
#include <LibPkmGC/GC/Common/BattleModeData.h>
#include <LibPkmGC/GC/Common/RibbonDescriptionsData.h>
#endif

View File

@@ -0,0 +1,62 @@
/*
* Copyright (C) TuxSH 2015
* This file is part of LibPkmGC.
*
* LibPkmGC is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* LibPkmGC is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with LibPkmGC. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _LIBPKMGC_GC_RIBBON_DESCRIPTION_DATA_H
#define _LIBPKMGC_GC_RIBBON_DESCRIPTION_DATA_H
#include <LibPkmGC/Base/DataStruct.h>
namespace LibPkmGC {
LIBPKMGC_FWD_DECL_GC_CLS(RibbonDescriptionsData)
namespace GC {
/*
This is just an array of description IDs :
u8 descriptions[11];
Concerned ribbons: Marine, Land, Sky, Country, National, Earth, World, Unused 1,2,3,4
Please refer to Core/Detail/RibbonDescriptions.cpp
*/
class LIBPKMGC_DECL RibbonDescriptionsData :
public Base::DataStruct
{
public:
RibbonDescriptionsData(const u8* inData = NULL);
virtual ~RibbonDescriptionsData(void);
virtual bool isXD(void) const = 0;
virtual void save(void);
virtual RibbonDescriptionsData* clone(void) const = 0;
virtual RibbonDescriptionsData* create(void) const = 0;
void swap(RibbonDescriptionsData& other);
u8 descriptions[11];
protected:
virtual void deleteFields(void);
virtual void loadFields(void);
};
}
}
#endif

View File

@@ -56,7 +56,6 @@ public:
virtual bool isInfoPartial(void) const = 0;
virtual void setInfoCompleteness(bool partial) = 0;
//PokemonSpeciesStatus status; // discarded in Pokémon XD, where full information is automatically obtained
u16 flags;
PokemonSpeciesIndex species;
u16 firstSID, firstTID;

View File

@@ -76,6 +76,7 @@ public:
DaycareData* daycare;
StrategyMemoData* strategyMemo;
BattleModeData* battleMode;
RibbonDescriptionsData* ribbonDescriptions;
protected:
virtual void deleteFields(void);

View File

@@ -16,8 +16,8 @@
* along with LibPkmGC. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _LIBPKMGC_COLOSSEUM_COMMON_EVERYTHING_H
#define _LIBPKMGC_COLOSSEUM_COMMON_EVERYTHING_H
#ifndef _LIBPKMGC_XD_COMMON_EVERYTHING_H
#define _LIBPKMGC_XD_COMMON_EVERYTHING_H
#include <LibPkmGC/XD/Common/GameConfigData.h>
#include <LibPkmGC/XD/Common/PlayerData.h>
@@ -28,6 +28,8 @@
#include <LibPkmGC/XD/Common/StrategyMemoData.h>
#include <LibPkmGC/XD/Common/BattleModeData.h>
#include <LibPkmGC/XD/Common/RibbonDescriptionsData.h>
#include <LibPkmGC/XD/Common/PurifierData.h>
#endif

View File

@@ -0,0 +1,46 @@
/*
* Copyright (C) TuxSH 2015
* This file is part of LibPkmGC.
*
* LibPkmGC is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* LibPkmGC is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with LibPkmGC. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _LIBPKMGC_XD_RIBBON_DESCRIPTION_DATA_H
#define _LIBPKMGC_XD_RIBBON_DESCRIPTION_DATA_H
#include <LibPkmGC/GC/Common/RibbonDescriptionsData.h>
namespace LibPkmGC {
namespace XD {
class LIBPKMGC_DECL RibbonDescriptionsData :
public GC::RibbonDescriptionsData
{
public:
static const size_t size = 11;
~RibbonDescriptionsData(void);
RibbonDescriptionsData(void);
RibbonDescriptionsData(const u8* inData);
bool isXD(void) const;
RibbonDescriptionsData* clone(void) const;
RibbonDescriptionsData* create(void) const;
};
}
}
#endif

View File

@@ -52,7 +52,7 @@ namespace SaveEditing {
- [6] Battle mode
- [7] Shadow Pokémon data (in Colosseum, this is apparently a PID list; the full shadow data SEEMS to be included in the Pokémon's data)
- [8] Flags (not handled here)
- [9] Special ribbons description (will be handled soon)
- [9] Ribbon descriptions
- [15] map data / script state
- [14] Purifier
*/

View File

@@ -47,13 +47,11 @@ BattleModeData* BattleModeData::create(void) const
}
void BattleModeData::loadFields(void) {
LD_SUBSTRUCTURE_ARRAY(GroupBattleRule, rules, 6, 0xc16c);
//LD_FIELD_B(u8, groupBattleModeUsed, 0x360);
LD_SUBSTRUCTURE_ARRAY(GroupBattleRule, rules, 6, 0xc9dc);
}
void BattleModeData::save(void) {
SV_SUBSTRUCTURE_ARRAY(GroupBattleRule, rules, 6, 0xc16c);
//SV_FIELD_B(u8, groupBattleModeUsed, 0x360);
SV_SUBSTRUCTURE_ARRAY(GroupBattleRule, rules, 6, 0xc9dc);
}
}

View File

@@ -0,0 +1,49 @@
/*
* Copyright (C) TuxSH 2015
* This file is part of LibPkmGC.
*
* LibPkmGC is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* LibPkmGC is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with LibPkmGC. If not, see <http://www.gnu.org/licenses/>.
*/
#include <LibPkmGC/Colosseum/Common/RibbonDescriptionsData.h>
namespace LibPkmGC {
namespace Colosseum {
RibbonDescriptionsData::~RibbonDescriptionsData(void) {
}
RibbonDescriptionsData::RibbonDescriptionsData(void) : GC::RibbonDescriptionsData() {
initWithEmptyData();
}
RibbonDescriptionsData::RibbonDescriptionsData(const u8* inData) : GC::RibbonDescriptionsData(inData) {
load();
}
bool RibbonDescriptionsData::isXD(void) const {
return false;
}
RibbonDescriptionsData* RibbonDescriptionsData::clone(void) const {
return new RibbonDescriptionsData(*this);
}
RibbonDescriptionsData* RibbonDescriptionsData::create(void) const {
return new RibbonDescriptionsData;
}
}
}

View File

@@ -247,10 +247,10 @@ void SaveSlot::loadFields(void) {
randomBytes = new u8[20];
LD_FIELD_E(u32, magic, 0, SaveMagic);
LD_FIELD(s32, saveCount, 4);
size_t offset = 8;
size_t offset = 0;
#define LD_IMPLEMENTED_SUBSTRUCTURE(type, field) LD_SUBSTRUCTURE(type, field, offset); offset += type::size;
#define LD_IMPLEMENTED_SUBSTRUCTURE(type, field) LD_SUBSTRUCTURE(type, field, 8 + offset); offset += type::size;
LD_IMPLEMENTED_SUBSTRUCTURE(GameConfigData, gameConfig);
LD_IMPLEMENTED_SUBSTRUCTURE(PlayerData, player);
@@ -258,8 +258,12 @@ void SaveSlot::loadFields(void) {
LD_IMPLEMENTED_SUBSTRUCTURE(MailboxData, mailbox);
LD_IMPLEMENTED_SUBSTRUCTURE(DaycareData, daycare);
LD_IMPLEMENTED_SUBSTRUCTURE(StrategyMemoData, strategyMemo);
offset += 0x523c;
//offset += 0x523c;
offset = 0xe3e8;
LD_IMPLEMENTED_SUBSTRUCTURE(BattleModeData, battleMode);
//offset += 0x1448;
offset = 0x1c45c;
LD_IMPLEMENTED_SUBSTRUCTURE(RibbonDescriptionsData, ribbonDescriptions);
// unknown substructures following
std::copy(data + 0x1dfd8, data + 0x1dfec, randomBytes);
@@ -270,10 +274,10 @@ void SaveSlot::save(void) {
SV_FIELD_E(u32, ColosseumMagic, 0, SaveMagic);
SV_FIELD(u32, saveCount, 4);
size_t offset = 8;
size_t offset = 0;
#define SV_IMPLEMENTED_SUBSTRUCTURE(type, field) SV_SUBSTRUCTURE(type, field, offset); offset += type::size;
#define SV_IMPLEMENTED_SUBSTRUCTURE(type, field) SV_SUBSTRUCTURE(type, field, 8 + offset); offset += type::size;
SV_IMPLEMENTED_SUBSTRUCTURE(GameConfigData, gameConfig);
SV_IMPLEMENTED_SUBSTRUCTURE(PlayerData, player);
@@ -281,8 +285,12 @@ void SaveSlot::save(void) {
SV_IMPLEMENTED_SUBSTRUCTURE(MailboxData, mailbox);
SV_IMPLEMENTED_SUBSTRUCTURE(DaycareData, daycare);
SV_IMPLEMENTED_SUBSTRUCTURE(StrategyMemoData, strategyMemo);
offset += 0x523c;
//offset += 0x523c;
offset = 0xe3e8;
SV_IMPLEMENTED_SUBSTRUCTURE(BattleModeData, battleMode);
//offset += 0x1448;
offset = 0x1c45c;
SV_IMPLEMENTED_SUBSTRUCTURE(RibbonDescriptionsData, ribbonDescriptions);
// unknown substructures following

View File

@@ -0,0 +1,440 @@
/*
* Copyright (C) TuxSH 2015
* This file is part of LibPkmGC.
*
* LibPkmGC is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* LibPkmGC is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with LibPkmGC. If not, see <http://www.gnu.org/licenses/>.
*/
#include <LibPkmGC/Core/Detail/RibbonDescriptions.h>
namespace LibPkmGC {
namespace Localization {
namespace Detail {
namespace RibbonDescriptions {
const char **names[7] = { NULL, japaneseNames, englishNames, germanNames, frenchNames, italianNames, spanishNames };
const char *englishNames[65] = {
"(None)",
"2003 REGIONAL TOURNEY\nChampion RIBBON",
"2003 NATIONAL TOURNEY\nChampion RIBBON",
"2003 GLOBAL CUP\nChampion RIBBON",
"2003 REGIONAL TOURNEY\nRunner-up RIBBON",
"2003 NATIONAL TOURNEY\nRunner-up RIBBON",
"2003 GLOBAL CUP\nRunner-up RIBBON",
"2003 REGIONAL TOURNEY\nSemifinalist RIBBON",
"2003 NATIONAL TOURNEY\nSemifinalist RIBBON",
"2003 GLOBAL CUP\nSemifinalist RIBBON",
"2004 REGIONAL TOURNEY\nChampion RIBBON",
"2004 NATIONAL TOURNEY\nChampion RIBBON",
"2004 GLOBAL CUP\nChampion RIBBON",
"2004 REGIONAL TOURNEY\nRunner-up RIBBON",
"2004 NATIONAL TOURNEY\nRunner-up RIBBON",
"2004 GLOBAL CUP\nRunner-up RIBBON",
"2004 REGIONAL TOURNEY\nSemifinalist RIBBON",
"2004 NATIONAL TOURNEY\nSemifinalist RIBBON",
"2004 GLOBAL CUP\nSemifinalist RIBBON",
"2005 REGIONAL TOURNEY\nChampion RIBBON",
"2005 NATIONAL TOURNEY\nChampion RIBBON",
"2005 GLOBAL CUP\nChampion RIBBON",
"2005 REGIONAL TOURNEY\nRunner-up RIBBON",
"2005 NATIONAL TOURNEY\nRunner-up RIBBON",
"2005 GLOBAL CUP\nRunner-up RIBBON",
"2005 REGIONAL TOURNEY\nSemifinalist RIBBON",
"2005 NATIONAL TOURNEY\nSemifinalist RIBBON",
"2005 GLOBAL CUP\nSemifinalist RIBBON",
"POK<EFBFBD>MON BATTLE CUP\nChampion RIBBON",
"POK<EFBFBD>MON BATTLE CUP\nRunner-up RIBBON",
"POK<EFBFBD>MON BATTLE CUP\nSemifinalist RIBBON",
"POK<EFBFBD>MON BATTLE CUP\nParticipation RIBBON",
"POK<EFBFBD>MON LEAGUE\nChampion RIBBON",
"POK<EFBFBD>MON LEAGUE\nRunner-up RIBBON",
"POK<EFBFBD>MON LEAGUE\nSemifinalist RIBBON",
"POK<EFBFBD>MON LEAGUE\nParticipation RIBBON",
"ADVANCE CUP\nChampion RIBBON",
"ADVANCE CUP\nRunner-up RIBBON",
"ADVANCE CUP\nSemifinalist RIBBON",
"ADVANCE CUP\nParticipation RIBBON",
"POK<EFBFBD>MON Tournament\nParticipation RIBBON",
"POK<EFBFBD>MON Event\nParticipation RIBBON",
"POK<EFBFBD>MON Festival\nParticipation RIBBON",
"Difficulty-Clearing\nCommemorative RIBBON",
"RIBBON awarded for\nclearing all difficulties.",
"100-Straight Win\nCommemorative RIBBON",
"DARKNESS TOWER Clear\nCommemorative RIBBON",
"RED TOWER Clear\nCommemorative RIBBON",
"BLACKIRON TOWER Clear\nCommemorative RIBBON",
"FINAL TOWER Clear\nCommemorative RIBBON",
"Legend-Making\nCommemorative RIBBON",
"POK<EFBFBD>MON CENTER TOKYO\nCommemorative RIBBON",
"POK<EFBFBD>MON CENTER OSAKA\nCommemorative RIBBON",
"POK<EFBFBD>MON CENTER NAGOYA\nCommemorative RIBBON",
"POK<EFBFBD>MON CENTER NY\nCommemorative RIBBON",
"Summer Holidays RIBBON",
"Winter Holidays RIBBON",
"Spring Holidays RIBBON",
"Evergreen RIBBON",
"Special Holiday RIBBON",
"Hard Worker RIBBON",
"Lots of Friends RIBBON",
"Full of Energy RIBBON",
"A commemorative RIBBON\nfor a loved POK<4F>MON.",
"RIBBON that shows\nlove for POK<4F>MON."
};
const char *frenchNames[65] = {
"(Rien)",
"TOURNOI REGIONAL 2003 RUBAN MAITRE",
"TOURNOI NATIONAL 2003 RUBAN MAITRE",
"COUPE GLOBALE 2003 RUBAN MAITRE",
"TOURNOI REGIONAL 2003 RUBAN 2\xC3\xA8me place",
"TOURNOI NATIONAL 2003 RUBAN 2\xC3\xA8me place",
"COUPE GLOBALE 2003 RUBAN 2\xC3\xA8me place",
"TOURNOI REGIONAL 2003 RUBAN demi-finaliste",
"TOURNOI NATIONAL 2003 RUBAN demi-finaliste",
"COUPE GLOBALE 2003 RUBAN demi-finaliste",
"TOURNOI REGIONAL 2004 RUBAN MAITRE",
"TOURNOI NATIONAL 2004 RUBAN MAITRE",
"COUPE GLOBALE 2004 RUBAN MAITRE",
"TOURNOI REGIONAL 2004 RUBAN 2\xC3\xA8me place",
"TOURNOI NATIONAL 2004 RUBAN 2\xC3\xA8me place",
"COUPE GLOBALE 2004 RUBAN 2\xC3\xA8me place",
"TOURNOI REGIONAL 2004 RUBAN demi-finaliste",
"TOURNOI NATIONAL 2004 RUBAN demi-finaliste",
"COUPE GLOBALE 2004 RUBAN demi-finaliste",
"TOURNOI REGIONAL 2005 RUBAN MAITRE",
"TOURNOI NATIONAL 2005 RUBAN MAITRE",
"COUPE GLOBALE 2005 RUBAN MAITRE",
"TOURNOI REGIONAL 2005 RUBAN 2\xC3\xA8me place",
"TOURNOI NATIONAL 2005 RUBAN 2\xC3\xA8me place",
"COUPE GLOBALE 2005 RUBAN 2\xC3\xA8me place",
"TOURNOI REGIONAL 2005 RUBAN demi-finaliste",
"TOURNOI NATIONAL 2005 RUBAN demi-finaliste",
"COUPE GLOBALE 2005 RUBAN demi-finaliste",
"COUPE COMBAT POK\xC3\xA9MON RUBAN MAITRE",
"COUPE COMBAT POK\xC3\xA9MON RUBAN 2\xC3\xA8me place",
"COUPE COMBAT POK\xC3\xA9MON RUBAN demi-finaliste",
"COUPE COMBAT POK\xC3\xA9MON RUBAN de participation",
"LIGUE POK\xC3\xA9MON RUBAN MAITRE",
"LIGUE POK\xC3\xA9MON RUBAN 2\xC3\xA8me place",
"LIGUE POK\xC3\xA9MON RUBAN demi-finaliste",
"LIGUE POK\xC3\xA9MON RUBAN de participation",
"COUPE ADVANCE RUBAN MAITRE",
"COUPE ADVANCE RUBAN 2\xC3\xA8me place",
"COUPE ADVANCE RUBAN demi-finaliste",
"COUPE ADVANCE RUBAN de participation",
"Tournoi POK\xC3\xA9MON RUBAN de participation",
"Ev\xC3\xA8nement POK\xC3\xA9MON RUBAN de participation",
"Festival POK\xC3\xA9MON RUBAN de participation",
"RUBAN comm\xC3\xA9moratif pour avoir tout r\xC3\xA9ussi.",
"RUBAN pour le triomphe face aux difficult\xC3\xA9s.",
"RUBAN comm\xC3\xA9moratif pour 100 victoires \xC3\xA0 la suite.",
"RUBAN comm\xC3\xA9moratif pour Succ\xC3\xA8s TOUR OBSCURE.",
"RUBAN comm\xC3\xA9moratif pour Succ\xC3\xA8s TOUR ROUGE.",
"RUBAN comm\xC3\xA9moratif pour Succ\xC3\xA8s TOUR FER NOIR.",
"RUBAN comm\xC3\xA9moratif pour Succ\xC3\xA8s TOUR FINALE.",
"RUBAN comm\xC3\xA9moratif pour avoir contribu\xC3\xA9 \xC3\xA0 la l\xC3\xA9gende.",
"RUBAN comm\xC3\xA9moratif pour CENTRE POK\xC3\xA9MON TOKYO.",
"RUBAN comm\xC3\xA9moratif pour CENTRE POK\xC3\xA9MON OSAKA.",
"RUBAN comm\xC3\xA9moratif pour CENTRE POK\xC3\xA9MON NAGOYA.",
"RUBAN comm\xC3\xA9moratif pour CENTRE POK\xC3\xA9MON NY.",
"RUBAN vacances d'\xC3\xA9t\xC3\xA9.",
"RUBAN vacances d'hiver.",
"RUBAN vacances de printemps.",
"RUBAN feuilles persistantes.",
"RUBAN vacances sp\xC3\xA9""ciales.",
"RUBAN travailleur.",
"RUBAN amiti\xC3\xA9.",
"RUBAN \xC3\xA9nergie.",
"RUBAN souvenir pour un POK\xC3\xA9MON bien-aim\xC3\xA9.",
"RUBAN qui montre l'amour port\xC3\xA9 \xC3\xA0 un POK\xC3\xA9MON."
};
const char *germanNames[65] = {
"(Nichts)",
"REGIONALTURNIER 2003 BAND des CHAMPs",
"NATIONALTURNIER 2003 BAND des CHAMPs",
"WELTPOKAL 2003 BAND des CHAMPs",
"REGIONALTURNIER 2003 BAND f\xC3\xBCr Platzierungen",
"NATIONALTURNIER 2003 BAND f\xC3\xBCr Platzierungen",
"WELTPOKAL 2003 BAND f\xC3\xBCr Platzierungen",
"REGIONALTURNIER 2003 BAND f\xC3\xBCr Halbfinalisten",
"NATIONALTURNIER 2003 BAND f\xC3\xBCr Halbfinalisten",
"WELTPOKAL 2003 BAND f\xC3\xBCr Halbfinalisten",
"REGIONALTURNIER 2004 BAND des CHAMPs",
"NATIONALTURNIER 2004 BAND des CHAMPs",
"WELTPOKAL 2004 BAND des CHAMPs",
"REGIONALTURNIER 2004 BAND f\xC3\xBCr Platzierungen",
"NATIONALTURNIER 2004 BAND f\xC3\xBCr Platzierungen",
"WELTPOKAL 2004 BAND f\xC3\xBCr Platzierungen",
"REGIONALTURNIER 2004 BAND f\xC3\xBCr Halbfinalisten",
"NATIONALTURNIER 2004 BAND f\xC3\xBCr Halbfinalisten",
"WELTPOKAL 2004 BAND f\xC3\xBCr Halbfinalisten",
"REGIONALTURNIER 2005 BAND des CHAMPs",
"NATIONALTURNIER 2005 BAND des CHAMPs",
"WELTPOKAL 2005 BAND des CHAMPs",
"REGIONALTURNIER 2005 BAND f\xC3\xBCr Platzierungen",
"NATIONALTURNIER 2005 BAND f\xC3\xBCr Platzierungen",
"WELTPOKAL 2005 BAND f\xC3\xBCr Platzierungen",
"REGIONALTURNIER 2005 BAND f\xC3\xBCr Halbfinalisten",
"NATIONALTURNIER 2005 BAND f\xC3\xBCr Halbfinalisten",
"WELTPOKAL 2005 BAND f\xC3\xBCr Halbfinalisten",
"POK\xC3\xA9MON-KAMPF-POKAL BAND des CHAMPs",
"POK\xC3\xA9MON-KAMPF-POKAL BAND f\xC3\xBCr Platzierungen",
"POK\xC3\xA9MON-KAMPF-POKAL BAND f\xC3\xBCr Halbfinalisten",
"POK\xC3\xA9MON-KAMPF-POKAL Teilnehmer-BAND",
"POK\xC3\xA9MON LIGA BAND des CHAMPs",
"POK\xC3\xA9MON LIGA BAND f\xC3\xBCr Platzierungen",
"POK\xC3\xA9MON LIGA BAND f\xC3\xBCr Halbfinalisten",
"POK\xC3\xA9MON LIGA Teilnehmer-BAND",
"TALENTPOKAL BAND des CHAMPs",
"TALENTPOKAL Band f\xC3\xBCr Platzierungen",
"TALENTPOKAL BAND f\xC3\xBCr Halbfinalisten",
"TALENTPOKAL Teilnehmer-BAND",
"POK\xC3\xA9MON-Turnier Teilnehmer-BAND",
"POK\xC3\xA9MON-Wettkampf Teilnehmer-BAND",
"POK\xC3\xA9MON-Festival Teilnehmer-BAND",
"Schwierigkeits-Grad- Abschluss-Gedenk-BAND",
"BAND f\xC3\xBCr erf. Abschluss aller Schwierigk.-Grade.",
"100. Sieg in Folge Gedenk-BAND",
"APOKELIPSE-TURM fertig Gedenk-BAND",
"ROTER TURM fertig Gedenk-BAND",
"EISERNER TURM fertig Gedenk-BAND",
"FINAL-TURM-Abschluss Gedenk-BAND",
"Legend\xC3\xA4res Gedenk-BAND",
"POK\xC3\xA9MON-CENTER TOKIO Gedenk-BAND",
"POK\xC3\xA9MON-CENTER OSAKA Gedenk-BAND",
"POK\xC3\xA9MON-CENTER NAGOYA Gedenk-BAND",
"POK\xC3\xA9MON-CENTER N.Y. Gedenk-BAND",
"Sommerferien-BAND",
"Weihnachtsferien-BAND",
"Osterferien-BAND",
"Evergreen-BAND",
"Sonderurlaubs-BAND",
"Flei\xC3\x9F-BAND",
"Beliebtheits-BAND",
"Energie-BAND",
"Ein Gedenk-BAND f\xC3\xBCr ein beliebtes POK\xC3\xA9MON.",
"Ein Band f\xC3\xBCr POK\xC3\xA9MON-Freunde."
};
const char *italianNames[65] = {
"(Nessuno)",
"TORNEO REGIONALE 2003 FIOCCO CAMPIONE",
"TORNEO NAZIONALE 2003 FIOCCO CAMPIONE",
"TORNEO MONDIALE 2003 FIOCCO CAMPIONE",
"TORNEO REGIONALE 2003 FIOCCO finalista",
"TORNEO NAZIONALE 2003 FIOCCO finalista",
"TORNEO MONDIALE 2003 FIOCCO finalista",
"TORNEO REGIONALE 2003 FIOCCO semifinalista",
"TORNEO NAZIONALE 2003 FIOCCO semifinalista",
"TORNEO MONDIALE 2003 FIOCCO semifinalista",
"TORNEO REGIONALE 2004 FIOCCO CAMPIONE",
"TORNEO NAZIONALE 2004 FIOCCO CAMPIONE",
"TORNEO MONDIALE 2004 FIOCCO CAMPIONE",
"TORNEO REGIONALE 2004 FIOCCO finalista",
"TORNEO NAZIONALE 2004 FIOCCO finalista",
"TORNEO MONDIALE 2004 FIOCCO finalista",
"TORNEO REGIONALE 2004 FIOCCO semifinalista",
"TORNEO NAZIONALE 2004 FIOCCO semifinalista",
"TORNEO MONDIALE 2004 FIOCCO semifinalista",
"TORNEO REGIONALE 2005 FIOCCO CAMPIONE",
"TORNEO NAZIONALE 2005 FIOCCO CAMPIONE",
"TORNEO MONDIALE 2005 FIOCCO CAMPIONE",
"TORNEO REGIONALE 2005 FIOCCO finalista",
"TORNEO NAZIONALE 2005 FIOCCO finalista",
"TORNEO MONDIALE 2005 FIOCCO finalista",
"TORNEO REGIONALE 2005 FIOCCO semifinalista",
"TORNEO NAZIONALE 2005 FIOCCO semifinalista",
"TORNEO MONDIALE 2005 FIOCCO semifinalista",
"COPPA LOTTE POK\xC3\xA9MON FIOCCO CAMPIONE",
"COPPA LOTTE POK\xC3\xA9MON FIOCCO finalista",
"COPPA LOTTE POK\xC3\xA9MON FIOCCO semifinalista",
"COPPA LOTTE POK\xC3\xA9MON FIOCCO partecipazione",
"LEGA POK\xC3\xA9MON FIOCCO CAMPIONE",
"LEGA POK\xC3\xA9MON FIOCCO finalista",
"LEGA POK\xC3\xA9MON FIOCCO semifinalista",
"LEGA POK\xC3\xA9MON FIOCCO partecipazione",
"COPPA ADVANCE FIOCCO CAMPIONE",
"COPPA ADVANCE FIOCCO finalista",
"COPPA ADVANCE FIOCCO semifinalista",
"COPPA ADVANCE FIOCCO partecipazione",
"Torneo POK\xC3\xA9MON FIOCCO partecipazione",
"Evento POK\xC3\xA9MON FIOCCO partecipazione",
"Festival POK\xC3\xA9MON FIOCCO partecipazione",
"Tutto facile FIOCCO celebrativo",
"FIOCCO per aver superato tutte le sfide.",
"100 vittorie di seguito FIOCCO celebrativo",
"Completata TORRE SCURA FIOCCO celebrativo",
"Completata TORRE ROSSA FIOCCO celebrativo",
"Completata TORRE FERRO FIOCCO celebrativo",
"Completata TORRE FINALE FIOCCO celebrativo",
"Leggenda FIOCCO celebrativo",
"POK\xC3\xA9MON CENTER TOKYO FIOCCO celebrativo",
"POK\xC3\xA9MON CENTER OSAKA FIOCCO celebrativo",
"POK\xC3\xA9MON CENTER NAGOYA FIOCCO celebrativo",
"POK\xC3\xA9MON CENTER NY FIOCCO celebrativo",
"FIOCCO vacanze estive",
"FIOCCO ferie invernali",
"FIOCCO ferie primaverili",
"FIOCCO sempreverde",
"FIOCCO vacanze speciali",
"FIOCCO lavoro duro",
"FIOCCO amicizia",
"FIOCCO energia",
"FIOCCO celebrativo per un caro POK\xC3\xA9MON.",
"FIOCCO che dimostra amore per i POK\xC3\xA9MON."
};
const char *spanishNames[65] = {
"(Ninguno)",
"TORNEO REGIONAL 2003 CINTA CAMPE\xC3\x93N",
"TORNEO NACIONAL 2003 CINTA CAMPE\xC3\x93N",
"COPA DEL MUNDO 2003 CINTA CAMPE\xC3\x93N",
"TORNEO REGIONAL 2003 CINTA subcampe\xC3\xB3n",
"TORNEO NACIONAL 2003 CINTA subcampe\xC3\xB3n",
"COPA DEL MUNDO 2003 CINTA subcampe\xC3\xB3n",
"TORNEO REGIONAL 2003 CINTA semifinalista",
"TORNEO NACIONAL 2003 CINTA semifinalista",
"COPA DEL MUNDO 2003 CINTA semifinalista",
"TORNEO REGIONAL 2004 CINTA CAMPE\xC3\x93N",
"TORNEO NACIONAL 2004 CINTA CAMPE\xC3\x93N",
"COPA DEL MUNDO 2004 CINTA CAMPE\xC3\x93N",
"TORNEO REGIONAL 2004 CINTA subcampe\xC3\xB3n",
"TORNEO NACIONAL 2004 CINTA subcampe\xC3\xB3n",
"COPA DEL MUNDO 2004 CINTA subcampe\xC3\xB3n",
"TORNEO REGIONAL 2004 CINTA semifinalista",
"TORNEO NACIONAL 2004 CINTA semifinalista",
"COPA DEL MUNDO 2004 CINTA semifinalista",
"TORNEO REGIONAL 2005 CINTA CAMPE\xC3\x93N",
"TORNEO NACIONAL 2005 CINTA CAMPE\xC3\x93N",
"COPA DEL MUNDO 2005 CINTA CAMPE\xC3\x93N",
"TORNEO REGIONAL 2005 CINTA subcampe\xC3\xB3n",
"TORNEO NACIONAL 2005 CINTA subcampe\xC3\xB3n",
"COPA DEL MUNDO 2005 CINTA subcampe\xC3\xB3n",
"TORNEO REGIONAL 2005 CINTA semifinalista",
"TORNEO NACIONAL 2005 CINTA semifinalista",
"COPA DEL MUNDO 2005 CINTA semifinalista",
"COPA BATALLA POK\xC3\xA9MON CINTA CAMPE\xC3\x93N",
"COPA BATALLA POK\xC3\xA9MON CINTA subcampe\xC3\xB3n",
"COPA BATALLA POK\xC3\xA9MON CINTA semifinalista",
"COPA BATALLA POK\xC3\xA9MON CINTA de participaci\xC3\xB3n",
"LIGA POK\xC3\xA9MON CINTA CAMPE\xC3\x93N",
"LIGA POK\xC3\xA9MON CINTA subcampe\xC3\xB3n",
"LIGA POK\xC3\xA9MON CINTA semifinalista",
"LIGA POK\xC3\xA9MON CINTA de participaci\xC3\xB3n",
"COPA AVANZADA CINTA CAMPE\xC3\x93N",
"COPA AVANZADA CINTA subcampe\xC3\xB3n",
"COPA AVANZADA CINTA semifinalista",
"COPA AVANZADA CINTA de participaci\xC3\xB3n",
"Certamen POK\xC3\xA9MON CINTA de participaci\xC3\xB3n",
"Encuentro POK\xC3\xA9MON CINTA de participaci\xC3\xB3n",
"Festival POK\xC3\xA9MON CINTA de participaci\xC3\xB3n",
"Superaci\xC3\xB3n obst\xC3\xA1""culos CINTA conmemorativa",
"CINTA ganada por superar los desaf\xC3\xADos.",
"100 victorias seguidas CINTA conmemorativa",
"TORRE OSCURA superada CINTA conmemorativa",
"TORRE ROJA superada CINTA conmemorativa",
"TORRE F\xC3\x89RREA superada CINTA conmemorativa",
"TORRE FINAL superada CINTA conmemorativa",
"Legendario CINTA conmemorativa",
"CENTRO POK\xC3\xA9MON TOKIO CINTA conmemorativa",
"CENTRO POK\xC3\xA9MON OSAKA CINTA conmemorativa",
"CENTRO POK\xC3\xA9MON NAGOYA CINTA conmemorativa",
"CENTRO POK\xC3\xA9MON NY CINTA conmemorativa",
"CINTA vacac. verano",
"CINTA vacac. invierno",
"CINTA vacac. primavera",
"CINTA hoja perenne",
"CINTA vacac. especiales",
"CINTA esfuerzo",
"CINTA amistad",
"CINTA energ\xC3\xAD""a",
"CINTA conmemorativa para un POK\xC3\xA9MON querido.",
"CINTA s\xC3\xADmbolo de amor hacia los POK\xC3\xA9MON."
};
const char *japaneseNames[65] = {
"(\xe4\xbd\x95\xe3\x82\x82)",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x93\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x81\xa1\xe3\x81\xbb\xe3\x81\x86\xe3\x80\x80\xe3\x81\x9f\xe3\x81\x84\xe3\x81\x8b\xe3\x81\x84 \xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x93\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x81\x9c\xe3\x82\x93\xe3\x81\x93\xe3\x81\x8f\xe3\x80\x80\xe3\x81\x9f\xe3\x81\x84\xe3\x81\x8b\xe3\x81\x84 \xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x93\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x83\xaf\xe3\x83\xbc\xe3\x83\xab\xe3\x83\x89\xe3\x82\xab\xe3\x83\x83\xe3\x83\x97 \xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x93\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x81\xa1\xe3\x81\xbb\xe3\x81\x86\xe3\x80\x80\xe3\x81\x9f\xe3\x81\x84\xe3\x81\x8b\xe3\x81\x84 \xe3\x81\x98\xe3\x82\x85\xe3\x82\x93\xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x93\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x81\x9c\xe3\x82\x93\xe3\x81\x93\xe3\x81\x8f\xe3\x80\x80\xe3\x81\x9f\xe3\x81\x84\xe3\x81\x8b\xe3\x81\x84 \xe3\x81\x98\xe3\x82\x85\xe3\x82\x93\xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x93\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x83\xaf\xe3\x83\xbc\xe3\x83\xab\xe3\x83\x89\xe3\x82\xab\xe3\x83\x83\xe3\x83\x97 \xe3\x81\x98\xe3\x82\x85\xe3\x82\x93\xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x93\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x81\xa1\xe3\x81\xbb\xe3\x81\x86\xe3\x80\x80\xe3\x81\x9f\xe3\x81\x84\xe3\x81\x8b\xe3\x81\x84 \xe3\x83\x99\xe3\x82\xb9\xe3\x83\x88\xef\xbc\x94\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x93\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x81\x9c\xe3\x82\x93\xe3\x81\x93\xe3\x81\x8f\xe3\x80\x80\xe3\x81\x9f\xe3\x81\x84\xe3\x81\x8b\xe3\x81\x84 \xe3\x83\x99\xe3\x82\xb9\xe3\x83\x88\xef\xbc\x94\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x93\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x83\xaf\xe3\x83\xbc\xe3\x83\xab\xe3\x83\x89\xe3\x82\xab\xe3\x83\x83\xe3\x83\x97 \xe3\x83\x99\xe3\x82\xb9\xe3\x83\x88\xef\xbc\x94\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x94\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x81\xa1\xe3\x81\xbb\xe3\x81\x86\xe3\x80\x80\xe3\x81\x9f\xe3\x81\x84\xe3\x81\x8b\xe3\x81\x84 \xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x94\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x81\x9c\xe3\x82\x93\xe3\x81\x93\xe3\x81\x8f\xe3\x80\x80\xe3\x81\x9f\xe3\x81\x84\xe3\x81\x8b\xe3\x81\x84 \xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x94\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x83\xaf\xe3\x83\xbc\xe3\x83\xab\xe3\x83\x89\xe3\x82\xab\xe3\x83\x83\xe3\x83\x97 \xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x94\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x81\xa1\xe3\x81\xbb\xe3\x81\x86\xe3\x80\x80\xe3\x81\x9f\xe3\x81\x84\xe3\x81\x8b\xe3\x81\x84 \xe3\x81\x98\xe3\x82\x85\xe3\x82\x93\xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x94\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x81\x9c\xe3\x82\x93\xe3\x81\x93\xe3\x81\x8f\xe3\x80\x80\xe3\x81\x9f\xe3\x81\x84\xe3\x81\x8b\xe3\x81\x84 \xe3\x81\x98\xe3\x82\x85\xe3\x82\x93\xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x94\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x83\xaf\xe3\x83\xbc\xe3\x83\xab\xe3\x83\x89\xe3\x82\xab\xe3\x83\x83\xe3\x83\x97 \xe3\x81\x98\xe3\x82\x85\xe3\x82\x93\xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x94\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x81\xa1\xe3\x81\xbb\xe3\x81\x86\xe3\x80\x80\xe3\x81\x9f\xe3\x81\x84\xe3\x81\x8b\xe3\x81\x84 \xe3\x83\x99\xe3\x82\xb9\xe3\x83\x88\xef\xbc\x94\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x94\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x81\x9c\xe3\x82\x93\xe3\x81\x93\xe3\x81\x8f\xe3\x80\x80\xe3\x81\x9f\xe3\x81\x84\xe3\x81\x8b\xe3\x81\x84 \xe3\x83\x99\xe3\x82\xb9\xe3\x83\x88\xef\xbc\x94\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x94\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x83\xaf\xe3\x83\xbc\xe3\x83\xab\xe3\x83\x89\xe3\x82\xab\xe3\x83\x83\xe3\x83\x97 \xe3\x83\x99\xe3\x82\xb9\xe3\x83\x88\xef\xbc\x94\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x95\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x81\xa1\xe3\x81\xbb\xe3\x81\x86\xe3\x80\x80\xe3\x81\x9f\xe3\x81\x84\xe3\x81\x8b\xe3\x81\x84 \xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x95\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x81\x9c\xe3\x82\x93\xe3\x81\x93\xe3\x81\x8f\xe3\x80\x80\xe3\x81\x9f\xe3\x81\x84\xe3\x81\x8b\xe3\x81\x84 \xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x95\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x83\xaf\xe3\x83\xbc\xe3\x83\xab\xe3\x83\x89\xe3\x82\xab\xe3\x83\x83\xe3\x83\x97 \xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x95\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x81\xa1\xe3\x81\xbb\xe3\x81\x86\xe3\x80\x80\xe3\x81\x9f\xe3\x81\x84\xe3\x81\x8b\xe3\x81\x84 \xe3\x81\x98\xe3\x82\x85\xe3\x82\x93\xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x95\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x81\x9c\xe3\x82\x93\xe3\x81\x93\xe3\x81\x8f\xe3\x80\x80\xe3\x81\x9f\xe3\x81\x84\xe3\x81\x8b\xe3\x81\x84 \xe3\x81\x98\xe3\x82\x85\xe3\x82\x93\xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x95\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x83\xaf\xe3\x83\xbc\xe3\x83\xab\xe3\x83\x89\xe3\x82\xab\xe3\x83\x83\xe3\x83\x97 \xe3\x81\x98\xe3\x82\x85\xe3\x82\x93\xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x95\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x81\xa1\xe3\x81\xbb\xe3\x81\x86\xe3\x80\x80\xe3\x81\x9f\xe3\x81\x84\xe3\x81\x8b\xe3\x81\x84 \xe3\x83\x99\xe3\x82\xb9\xe3\x83\x88\xef\xbc\x94\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x95\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x81\x9c\xe3\x82\x93\xe3\x81\x93\xe3\x81\x8f\xe3\x80\x80\xe3\x81\x9f\xe3\x81\x84\xe3\x81\x8b\xe3\x81\x84 \xe3\x83\x99\xe3\x82\xb9\xe3\x83\x88\xef\xbc\x94\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x92\xef\xbc\x90\xef\xbc\x90\xef\xbc\x95\xe3\x81\xad\xe3\x82\x93\xe3\x80\x80\xe3\x83\xaf\xe3\x83\xbc\xe3\x83\xab\xe3\x83\x89\xe3\x82\xab\xe3\x83\x83\xe3\x83\x97 \xe3\x83\x99\xe3\x82\xb9\xe3\x83\x88\xef\xbc\x94\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x83\x9d\xe3\x82\xb1\xe3\x83\xa2\xe3\x83\xb3\xe3\x80\x80\xe3\x83\x90\xe3\x83\x88\xe3\x83\xab\xe3\x80\x80\xe3\x82\xab\xe3\x83\x83\xe3\x83\x97 \xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x83\x9d\xe3\x82\xb1\xe3\x83\xa2\xe3\x83\xb3\xe3\x80\x80\xe3\x83\x90\xe3\x83\x88\xe3\x83\xab\xe3\x80\x80\xe3\x82\xab\xe3\x83\x83\xe3\x83\x97 \xe3\x81\x98\xe3\x82\x85\xe3\x82\x93\xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x83\x9d\xe3\x82\xb1\xe3\x83\xa2\xe3\x83\xb3\xe3\x80\x80\xe3\x83\x90\xe3\x83\x88\xe3\x83\xab\xe3\x80\x80\xe3\x82\xab\xe3\x83\x83\xe3\x83\x97 \xe3\x83\x99\xe3\x82\xb9\xe3\x83\x88\xef\xbc\x94\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x83\x9d\xe3\x82\xb1\xe3\x83\xa2\xe3\x83\xb3\xe3\x80\x80\xe3\x83\x90\xe3\x83\x88\xe3\x83\xab\xe3\x80\x80\xe3\x82\xab\xe3\x83\x83\xe3\x83\x97 \xe3\x81\x95\xe3\x82\x93\xe3\x81\x8b\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x83\x9d\xe3\x82\xb1\xe3\x83\xa2\xe3\x83\xb3\xe3\x80\x80\xe3\x83\xaa\xe3\x83\xbc\xe3\x82\xb0 \xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x83\x9d\xe3\x82\xb1\xe3\x83\xa2\xe3\x83\xb3\xe3\x80\x80\xe3\x83\xaa\xe3\x83\xbc\xe3\x82\xb0 \xe3\x81\x98\xe3\x82\x85\xe3\x82\x93\xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x83\x9d\xe3\x82\xb1\xe3\x83\xa2\xe3\x83\xb3\xe3\x80\x80\xe3\x83\xaa\xe3\x83\xbc\xe3\x82\xb0 \xe3\x83\x99\xe3\x82\xb9\xe3\x83\x88\xef\xbc\x94\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x83\x9d\xe3\x82\xb1\xe3\x83\xa2\xe3\x83\xb3\xe3\x80\x80\xe3\x83\xaa\xe3\x83\xbc\xe3\x82\xb0 \xe3\x81\x95\xe3\x82\x93\xe3\x81\x8b\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x82\xa2\xe3\x83\x89\xe3\x83\x90\xe3\x83\xb3\xe3\x82\xb9\xe3\x80\x80\xe3\x82\xab\xe3\x83\x83\xe3\x83\x97 \xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x82\xa2\xe3\x83\x89\xe3\x83\x90\xe3\x83\xb3\xe3\x82\xb9\xe3\x80\x80\xe3\x82\xab\xe3\x83\x83\xe3\x83\x97 \xe3\x81\x98\xe3\x82\x85\xe3\x82\x93\xe3\x82\x86\xe3\x81\x86\xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x82\xa2\xe3\x83\x89\xe3\x83\x90\xe3\x83\xb3\xe3\x82\xb9\xe3\x80\x80\xe3\x82\xab\xe3\x83\x83\xe3\x83\x97 \xe3\x83\x99\xe3\x82\xb9\xe3\x83\x88\xef\xbc\x94\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x82\xa2\xe3\x83\x89\xe3\x83\x90\xe3\x83\xb3\xe3\x82\xb9\xe3\x80\x80\xe3\x82\xab\xe3\x83\x83\xe3\x83\x97 \xe3\x81\x95\xe3\x82\x93\xe3\x81\x8b\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x83\x9d\xe3\x82\xb1\xe3\x83\xa2\xe3\x83\xb3\xe3\x81\xae\xe3\x80\x80\xe3\x81\x9f\xe3\x81\x84\xe3\x81\x8b\xe3\x81\x84\xe3\x81\xab \xe3\x81\x95\xe3\x82\x93\xe3\x81\x8b\xe3\x81\x97\xe3\x81\x9f\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x83\x9d\xe3\x82\xb1\xe3\x83\xa2\xe3\x83\xb3\xe3\x81\xae\xe3\x80\x80\xe3\x82\xa4\xe3\x83\x99\xe3\x83\xb3\xe3\x83\x88\xe3\x81\xab \xe3\x81\x95\xe3\x82\x93\xe3\x81\x8b\xe3\x81\x97\xe3\x81\x9f\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x83\x9d\xe3\x82\xb1\xe3\x83\xa2\xe3\x83\xb3\xe3\x81\xae\xe3\x80\x80\xe3\x81\x8a\xe3\x81\xbe\xe3\x81\xa4\xe3\x82\x8a\xe3\x81\xab \xe3\x81\x95\xe3\x82\x93\xe3\x81\x8b\xe3\x81\x97\xe3\x81\x9f\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x81\x93\xe3\x82\x93\xe3\x81\xaa\xe3\x82\x93\xe3\x81\xab\xe3\x80\x80\xe3\x81\x86\xe3\x81\xa1\xe3\x81\x8b\xe3\x81\xa3\xe3\x81\x9f \xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x81\x99\xe3\x81\xb9\xe3\x81\xa6\xe3\x81\xae\xe3\x80\x80\xe3\x81\x93\xe3\x82\x93\xe3\x81\xaa\xe3\x82\x93\xe3\x82\x92 \xe3\x81\xae\xe3\x82\x8a\xe3\x81\x93\xe3\x81\x88\xe3\x81\x9f\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xef\xbc\x91\xef\xbc\x90\xef\xbc\x90\xe3\x81\xab\xe3\x82\x93\xe3\x81\xac\xe3\x81\x8d\xe3\x80\x80\xe3\x81\x9f\xe3\x81\xa3\xe3\x81\x9b\xe3\x81\x84 \xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x81\x8f\xe3\x82\x89\xe3\x82\x84\xe3\x81\xbf\xe3\x81\xae\xe3\x81\xa8\xe3\x81\x86\xe3\x80\x80\xe3\x82\xaf\xe3\x83\xaa\xe3\x82\xa2 \xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x81\x8f\xe3\x82\x8c\xe3\x81\xaa\xe3\x81\x84\xe3\x81\xae\xe3\x81\xa8\xe3\x81\x86\xe3\x80\x80\xe3\x82\xaf\xe3\x83\xaa\xe3\x82\xa2 \xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x81\x8f\xe3\x82\x8d\xe3\x81\x8c\xe3\x81\xad\xe3\x81\xae\xe3\x81\xa8\xe3\x81\x86\xe3\x80\x80\xe3\x82\xaf\xe3\x83\xaa\xe3\x82\xa2 \xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x81\x95\xe3\x81\x84\xe3\x81\x94\xe3\x81\xae\xe3\x81\xa8\xe3\x81\x86\xe3\x80\x80\xe3\x82\xaf\xe3\x83\xaa\xe3\x82\xa2 \xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x81\xa7\xe3\x82\x93\xe3\x81\x9b\xe3\x81\xa4\xe3\x82\x92\xe3\x80\x80\xe3\x81\xa4\xe3\x81\x8f\xe3\x81\xa3\xe3\x81\x9f \xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x83\x9d\xe3\x82\xb1\xe3\x83\xa2\xe3\x83\xb3\xe3\x82\xbb\xe3\x83\xb3\xe3\x82\xbf\xe3\x83\xbc\xe3\x83\x88\xe3\x82\xa6\xe3\x82\xad\xe3\x83\xa7\xe3\x83\xbc \xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x83\x9d\xe3\x82\xb1\xe3\x83\xa2\xe3\x83\xb3\xe3\x82\xbb\xe3\x83\xb3\xe3\x82\xbf\xe3\x83\xbc\xe3\x82\xaa\xe3\x83\xbc\xe3\x82\xb5\xe3\x82\xab \xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x83\x9d\xe3\x82\xb1\xe3\x83\xa2\xe3\x83\xb3\xe3\x82\xbb\xe3\x83\xb3\xe3\x82\xbf\xe3\x83\xbc\xe3\x83\x8a\xe3\x82\xb4\xe3\x83\xa4 \xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x83\x9d\xe3\x82\xb1\xe3\x83\xa2\xe3\x83\xb3\xe3\x82\xbb\xe3\x83\xb3\xe3\x82\xbf\xe3\x83\xbc\xe3\x83\x8b\xe3\x83\xa5\xe3\x83\xbc\xe3\x83\xa8\xe3\x83\xbc\xe3\x82\xaf \xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x81\xaa\xe3\x81\xa4\xe3\x82\x84\xe3\x81\x99\xe3\x81\xbf\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x81\xb5\xe3\x82\x86\xe3\x82\x84\xe3\x81\x99\xe3\x81\xbf\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x81\xaf\xe3\x82\x8b\xe3\x82\x84\xe3\x81\x99\xe3\x81\xbf\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x82\xaf\xe3\x83\xaa\xe3\x82\xb9\xe3\x83\x9e\xe3\x82\xb9\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x81\xb3\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x81\x8c\xe3\x82\x93\xe3\x81\xb0\xe3\x81\xa3\xe3\x81\x9f\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x81\xae\xe3\x80\x80\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x81\xa8\xe3\x82\x82\xe3\x81\xa0\xe3\x81\xa1\xe3\x80\x80\xe3\x81\x84\xe3\x81\xa3\xe3\x81\xb1\xe3\x81\x84\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x81\x92\xe3\x82\x93\xe3\x81\x8d\xe3\x80\x80\xe3\x81\x84\xe3\x81\xa3\xe3\x81\xb1\xe3\x81\x84\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x81\xa0\xe3\x81\x84\xe3\x81\x99\xe3\x81\x8d\xe3\x81\xaa\xe3\x80\x80\xe3\x83\x9d\xe3\x82\xb1\xe3\x83\xa2\xe3\x83\xb3\xe3\x81\xab \xe3\x81\xa4\xe3\x81\x91\xe3\x81\xa6\xe3\x81\x82\xe3\x81\x92\xe3\x82\x8b\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xad\xe3\x82\x93\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3",
"\xe3\x83\x9d\xe3\x82\xb1\xe3\x83\xa2\xe3\x83\xb3\xe3\x81\x8c\xe3\x80\x80\xe3\x81\xa0\xe3\x81\x84\xe3\x81\x99\xe3\x81\x8d\xe3\x81\xaa\xe3\x80\x80\xe3\x81\x93\xe3\x81\xa8\xe3\x82\x92 \xe3\x81\x97\xe3\x82\x87\xe3\x81\x86\xe3\x82\x81\xe3\x81\x84\xe3\x81\x99\xe3\x82\x8b\xe3\x80\x80\xe3\x83\xaa\xe3\x83\x9c\xe3\x83\xb3"
};
}
}
}
}

View File

@@ -543,6 +543,11 @@ const char* getItemName(LanguageIndex language, ItemIndex index, bool isXD) {
return 0;
}
const char* getRibbonDescription(LanguageIndex language, size_t index) {
using namespace Detail::RibbonDescriptions;
LIBPKMGC_GET_LOCALIZED_NAME(language, index, 65);
}
}
}

View File

@@ -0,0 +1,49 @@
/*
* Copyright (C) TuxSH 2015
* This file is part of LibPkmGC.
*
* LibPkmGC is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* LibPkmGC is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with LibPkmGC. If not, see <http://www.gnu.org/licenses/>.
*/
#include <LibPkmGC/GC/Common/RibbonDescriptionsData.h>
namespace LibPkmGC {
namespace GC {
RibbonDescriptionsData::RibbonDescriptionsData(const u8* inData) : Base::DataStruct(0xb, inData) {
}
void RibbonDescriptionsData::deleteFields(void) {
}
RibbonDescriptionsData::~RibbonDescriptionsData(void) {
RibbonDescriptionsData::deleteFields();
}
void RibbonDescriptionsData::swap(RibbonDescriptionsData& other) {
Base::DataStruct::swap(other);
SW_ARRAY(descriptions, 11);
}
void RibbonDescriptionsData::loadFields(void) {
LD_ARRAY_MAX(u8, descriptions, 11, 0, 65);
}
void RibbonDescriptionsData::save(void) {
SV_ARRAY_MAX(u8, descriptions, 11, 0, 65);
}
}
}

View File

@@ -24,7 +24,8 @@ namespace GC {
StrategyMemoEntry::StrategyMemoEntry(const u8* inData) : Base::DataStruct(0xc, inData) {
}
void StrategyMemoEntry::deleteFields(void) {}
void StrategyMemoEntry::deleteFields(void) {
}
StrategyMemoEntry::~StrategyMemoEntry(void) {

View File

@@ -34,6 +34,7 @@ void SaveSlot::deleteFields(void) {
delete daycare;
delete strategyMemo;
delete battleMode;
delete ribbonDescriptions;
}
SaveSlot::~SaveSlot(void) {
@@ -50,9 +51,9 @@ SaveSlot::SaveSlot(const SaveSlot& other) : Base::DataStruct(other), magic(other
CL(mailbox);
CL(daycare);
CL(strategyMemo);
CL(battleMode);
CL(ribbonDescriptions);
}
@@ -69,6 +70,8 @@ void SaveSlot::swap(SaveSlot& other) {
SW(strategyMemo);
SW(battleMode);
SW(ribbonDescriptions);
SW(randomBytes);
}
@@ -90,6 +93,8 @@ SaveSlot& SaveSlot::operator=(SaveSlot const& other) {
CL(daycare);
CL(strategyMemo);
CL(battleMode);
CL(ribbonDescriptions);
}
return *this;
}

View File

@@ -0,0 +1,49 @@
/*
* Copyright (C) TuxSH 2015
* This file is part of LibPkmGC.
*
* LibPkmGC is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* LibPkmGC is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with LibPkmGC. If not, see <http://www.gnu.org/licenses/>.
*/
#include <LibPkmGC/XD/Common/RibbonDescriptionsData.h>
namespace LibPkmGC {
namespace XD {
RibbonDescriptionsData::~RibbonDescriptionsData(void) {
}
RibbonDescriptionsData::RibbonDescriptionsData(void) : GC::RibbonDescriptionsData() {
initWithEmptyData();
}
RibbonDescriptionsData::RibbonDescriptionsData(const u8* inData) : GC::RibbonDescriptionsData(inData) {
load();
}
bool RibbonDescriptionsData::isXD(void) const {
return true;
}
RibbonDescriptionsData* RibbonDescriptionsData::clone(void) const {
return new RibbonDescriptionsData(*this);
}
RibbonDescriptionsData* RibbonDescriptionsData::create(void) const {
return new RibbonDescriptionsData;
}
}
}

View File

@@ -225,9 +225,7 @@ void SaveSlot::loadFields(void) {
_other_corruption_flags = substructureSizes[0] != 0x88;
for (size_t i = 0; i < 16; ++i) {
s8 subscript = substructureOrder[i]; // substructure order if unshuffled
if ((subscript != -1) && ((subscript <= 6) || (subscript == 15))) {
if (i <= 6 || i == 9 || i == 14) {
unhandledSubstructures[i] = NULL;
continue;
}
@@ -245,6 +243,7 @@ void SaveSlot::loadFields(void) {
LD_IMPLEMENTED_SUBSTRUCTURE(DaycareData, daycare, 4);
LD_IMPLEMENTED_SUBSTRUCTURE(StrategyMemoData, strategyMemo, 5);
LD_IMPLEMENTED_SUBSTRUCTURE(BattleModeData, battleMode, 6);
LD_IMPLEMENTED_SUBSTRUCTURE(RibbonDescriptionsData, ribbonDescriptions, 9);
LD_IMPLEMENTED_SUBSTRUCTURE(PurifierData, purifier, 14);
{ // flags
@@ -350,6 +349,7 @@ void SaveSlot::save(void) {
SV_IMPLEMENTED_SUBSTRUCTURE(DaycareData, daycare, 4);
SV_IMPLEMENTED_SUBSTRUCTURE(StrategyMemoData, strategyMemo, 5);
SV_IMPLEMENTED_SUBSTRUCTURE(BattleModeData, battleMode, 6);
SV_IMPLEMENTED_SUBSTRUCTURE(RibbonDescriptionsData, ribbonDescriptions, 9);
SV_IMPLEMENTED_SUBSTRUCTURE(PurifierData, purifier, 14);
@@ -415,7 +415,6 @@ void SaveSlot::saveEncrypted(u8* outBuf) {
void SaveSlot::_deleteFields_extension(void) {
for (size_t i = 0; i < 16; ++i) delete unhandledSubstructures[i];
delete purifier;
//delete groupBattleRules;
}
}