diff --git a/LibPkmGC/include/LibPkmGC/Colosseum/Common/BattleModeData.h b/LibPkmGC/include/LibPkmGC/Colosseum/Common/BattleModeData.h
index 7650930..924a21a 100644
--- a/LibPkmGC/include/LibPkmGC/Colosseum/Common/BattleModeData.h
+++ b/LibPkmGC/include/LibPkmGC/Colosseum/Common/BattleModeData.h
@@ -28,7 +28,7 @@ namespace Colosseum {
/*
??
- 0xc16c: Colosseum::GroupBattleRules rules[26]
+ 0xc9dc: Colosseum::GroupBattleRules rules[6]
??
*/
class LIBPKMGC_DECL BattleModeData :
diff --git a/LibPkmGC/include/LibPkmGC/Colosseum/Common/Everything.h b/LibPkmGC/include/LibPkmGC/Colosseum/Common/Everything.h
index f6ee62c..c36ce9f 100644
--- a/LibPkmGC/include/LibPkmGC/Colosseum/Common/Everything.h
+++ b/LibPkmGC/include/LibPkmGC/Colosseum/Common/Everything.h
@@ -16,8 +16,8 @@
* along with LibPkmGC. If not, see .
*/
-#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
#include
@@ -28,4 +28,6 @@
#include
#include
+#include
+
#endif
\ No newline at end of file
diff --git a/LibPkmGC/include/LibPkmGC/Colosseum/Common/RibbonDescriptionsData.h b/LibPkmGC/include/LibPkmGC/Colosseum/Common/RibbonDescriptionsData.h
new file mode 100644
index 0000000..191f9de
--- /dev/null
+++ b/LibPkmGC/include/LibPkmGC/Colosseum/Common/RibbonDescriptionsData.h
@@ -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 .
+*/
+
+#ifndef _LIBPKMGC_COLOSSEUM_RIBBON_DESCRIPTION_DATA_H
+#define _LIBPKMGC_COLOSSEUM_RIBBON_DESCRIPTION_DATA_H
+
+#include
+
+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
\ No newline at end of file
diff --git a/LibPkmGC/include/LibPkmGC/Colosseum/SaveEditing/SaveSlot.h b/LibPkmGC/include/LibPkmGC/Colosseum/SaveEditing/SaveSlot.h
index 847743d..e3bd94c 100644
--- a/LibPkmGC/include/LibPkmGC/Colosseum/SaveEditing/SaveSlot.h
+++ b/LibPkmGC/include/LibPkmGC/Colosseum/SaveEditing/SaveSlot.h
@@ -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);
diff --git a/LibPkmGC/include/LibPkmGC/Core/Detail/RibbonDescriptions.h b/LibPkmGC/include/LibPkmGC/Core/Detail/RibbonDescriptions.h
new file mode 100644
index 0000000..1695e6e
--- /dev/null
+++ b/LibPkmGC/include/LibPkmGC/Core/Detail/RibbonDescriptions.h
@@ -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 .
+*/
+
+#ifndef _LIBPKMGC_RIBBON_DESCRIPTIONS_H
+#define _LIBPKMGC_RIBBON_DESCRIPTIONS_H
+
+#include
+
+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
\ No newline at end of file
diff --git a/LibPkmGC/include/LibPkmGC/Core/Localization.h b/LibPkmGC/include/LibPkmGC/Core/Localization.h
index d7c122b..97e6d3b 100644
--- a/LibPkmGC/include/LibPkmGC/Core/Localization.h
+++ b/LibPkmGC/include/LibPkmGC/Core/Localization.h
@@ -26,6 +26,7 @@
#include
#include
#include
+#include
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
}
}
diff --git a/LibPkmGC/include/LibPkmGC/GC/Common/Everything.h b/LibPkmGC/include/LibPkmGC/GC/Common/Everything.h
index a601dc9..1378a39 100644
--- a/LibPkmGC/include/LibPkmGC/GC/Common/Everything.h
+++ b/LibPkmGC/include/LibPkmGC/GC/Common/Everything.h
@@ -28,4 +28,5 @@
#include
#include
+#include
#endif
\ No newline at end of file
diff --git a/LibPkmGC/include/LibPkmGC/GC/Common/RibbonDescriptionsData.h b/LibPkmGC/include/LibPkmGC/GC/Common/RibbonDescriptionsData.h
new file mode 100644
index 0000000..3ba75a1
--- /dev/null
+++ b/LibPkmGC/include/LibPkmGC/GC/Common/RibbonDescriptionsData.h
@@ -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 .
+*/
+
+#ifndef _LIBPKMGC_GC_RIBBON_DESCRIPTION_DATA_H
+#define _LIBPKMGC_GC_RIBBON_DESCRIPTION_DATA_H
+
+#include
+
+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
\ No newline at end of file
diff --git a/LibPkmGC/include/LibPkmGC/GC/Common/StrategyMemoEntry.h b/LibPkmGC/include/LibPkmGC/GC/Common/StrategyMemoEntry.h
index 58c501f..65d0af0 100644
--- a/LibPkmGC/include/LibPkmGC/GC/Common/StrategyMemoEntry.h
+++ b/LibPkmGC/include/LibPkmGC/GC/Common/StrategyMemoEntry.h
@@ -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;
diff --git a/LibPkmGC/include/LibPkmGC/GC/SaveEditing/SaveSlot.h b/LibPkmGC/include/LibPkmGC/GC/SaveEditing/SaveSlot.h
index 5c901ea..0d8a392 100644
--- a/LibPkmGC/include/LibPkmGC/GC/SaveEditing/SaveSlot.h
+++ b/LibPkmGC/include/LibPkmGC/GC/SaveEditing/SaveSlot.h
@@ -76,6 +76,7 @@ public:
DaycareData* daycare;
StrategyMemoData* strategyMemo;
BattleModeData* battleMode;
+ RibbonDescriptionsData* ribbonDescriptions;
protected:
virtual void deleteFields(void);
diff --git a/LibPkmGC/include/LibPkmGC/XD/Common/Everything.h b/LibPkmGC/include/LibPkmGC/XD/Common/Everything.h
index 1144dad..e9a587e 100644
--- a/LibPkmGC/include/LibPkmGC/XD/Common/Everything.h
+++ b/LibPkmGC/include/LibPkmGC/XD/Common/Everything.h
@@ -16,8 +16,8 @@
* along with LibPkmGC. If not, see .
*/
-#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
#include
@@ -28,6 +28,8 @@
#include
#include
+#include
+
#include
#endif
\ No newline at end of file
diff --git a/LibPkmGC/include/LibPkmGC/XD/Common/RibbonDescriptionsData.h b/LibPkmGC/include/LibPkmGC/XD/Common/RibbonDescriptionsData.h
new file mode 100644
index 0000000..c09b52d
--- /dev/null
+++ b/LibPkmGC/include/LibPkmGC/XD/Common/RibbonDescriptionsData.h
@@ -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 .
+*/
+
+#ifndef _LIBPKMGC_XD_RIBBON_DESCRIPTION_DATA_H
+#define _LIBPKMGC_XD_RIBBON_DESCRIPTION_DATA_H
+
+#include
+
+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
\ No newline at end of file
diff --git a/LibPkmGC/include/LibPkmGC/XD/SaveEditing/SaveSlot.h b/LibPkmGC/include/LibPkmGC/XD/SaveEditing/SaveSlot.h
index 2ad06a3..bb28e21 100644
--- a/LibPkmGC/include/LibPkmGC/XD/SaveEditing/SaveSlot.h
+++ b/LibPkmGC/include/LibPkmGC/XD/SaveEditing/SaveSlot.h
@@ -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
*/
diff --git a/LibPkmGC/src/LibPkmGC/Colosseum/Common/BattleModeData.cpp b/LibPkmGC/src/LibPkmGC/Colosseum/Common/BattleModeData.cpp
index ef2411f..57c311e 100644
--- a/LibPkmGC/src/LibPkmGC/Colosseum/Common/BattleModeData.cpp
+++ b/LibPkmGC/src/LibPkmGC/Colosseum/Common/BattleModeData.cpp
@@ -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);
}
}
diff --git a/LibPkmGC/src/LibPkmGC/Colosseum/Common/RibbonDescriptionsData.cpp b/LibPkmGC/src/LibPkmGC/Colosseum/Common/RibbonDescriptionsData.cpp
new file mode 100644
index 0000000..cbfe045
--- /dev/null
+++ b/LibPkmGC/src/LibPkmGC/Colosseum/Common/RibbonDescriptionsData.cpp
@@ -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 .
+*/
+
+#include
+
+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;
+}
+
+
+}
+}
diff --git a/LibPkmGC/src/LibPkmGC/Colosseum/SaveEditing/SaveSlot.cpp b/LibPkmGC/src/LibPkmGC/Colosseum/SaveEditing/SaveSlot.cpp
index 29334fc..9f2185f 100644
--- a/LibPkmGC/src/LibPkmGC/Colosseum/SaveEditing/SaveSlot.cpp
+++ b/LibPkmGC/src/LibPkmGC/Colosseum/SaveEditing/SaveSlot.cpp
@@ -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
diff --git a/LibPkmGC/src/LibPkmGC/Core/Detail/RibbonDescriptions.cpp b/LibPkmGC/src/LibPkmGC/Core/Detail/RibbonDescriptions.cpp
new file mode 100644
index 0000000..f66c0d2
--- /dev/null
+++ b/LibPkmGC/src/LibPkmGC/Core/Detail/RibbonDescriptions.cpp
@@ -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 .
+*/
+
+#include
+
+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éMON BATTLE CUP\nChampion RIBBON",
+ "POKéMON BATTLE CUP\nRunner-up RIBBON",
+ "POKéMON BATTLE CUP\nSemifinalist RIBBON",
+ "POKéMON BATTLE CUP\nParticipation RIBBON",
+ "POKéMON LEAGUE\nChampion RIBBON",
+ "POKéMON LEAGUE\nRunner-up RIBBON",
+ "POKéMON LEAGUE\nSemifinalist RIBBON",
+ "POKéMON LEAGUE\nParticipation RIBBON",
+ "ADVANCE CUP\nChampion RIBBON",
+ "ADVANCE CUP\nRunner-up RIBBON",
+ "ADVANCE CUP\nSemifinalist RIBBON",
+ "ADVANCE CUP\nParticipation RIBBON",
+ "POKéMON Tournament\nParticipation RIBBON",
+ "POKéMON Event\nParticipation RIBBON",
+ "POKé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éMON CENTER TOKYO\nCommemorative RIBBON",
+ "POKéMON CENTER OSAKA\nCommemorative RIBBON",
+ "POKéMON CENTER NAGOYA\nCommemorative RIBBON",
+ "POKé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éMON.",
+ "RIBBON that shows\nlove for POKé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"
+};
+
+
+}
+}
+}
+}
\ No newline at end of file
diff --git a/LibPkmGC/src/LibPkmGC/Core/Localization.cpp b/LibPkmGC/src/LibPkmGC/Core/Localization.cpp
index d435dd7..2f49427 100644
--- a/LibPkmGC/src/LibPkmGC/Core/Localization.cpp
+++ b/LibPkmGC/src/LibPkmGC/Core/Localization.cpp
@@ -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);
+}
+
}
}
diff --git a/LibPkmGC/src/LibPkmGC/GC/Common/RibbonDescriptionsData.cpp b/LibPkmGC/src/LibPkmGC/GC/Common/RibbonDescriptionsData.cpp
new file mode 100644
index 0000000..50790b2
--- /dev/null
+++ b/LibPkmGC/src/LibPkmGC/GC/Common/RibbonDescriptionsData.cpp
@@ -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 .
+*/
+
+#include
+
+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);
+}
+
+}
+}
\ No newline at end of file
diff --git a/LibPkmGC/src/LibPkmGC/GC/Common/StrategyMemoEntry.cpp b/LibPkmGC/src/LibPkmGC/GC/Common/StrategyMemoEntry.cpp
index 4b02d68..d3cadbe 100644
--- a/LibPkmGC/src/LibPkmGC/GC/Common/StrategyMemoEntry.cpp
+++ b/LibPkmGC/src/LibPkmGC/GC/Common/StrategyMemoEntry.cpp
@@ -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) {
diff --git a/LibPkmGC/src/LibPkmGC/GC/SaveEditing/SaveSlot.cpp b/LibPkmGC/src/LibPkmGC/GC/SaveEditing/SaveSlot.cpp
index 90b6c4f..57e72ed 100644
--- a/LibPkmGC/src/LibPkmGC/GC/SaveEditing/SaveSlot.cpp
+++ b/LibPkmGC/src/LibPkmGC/GC/SaveEditing/SaveSlot.cpp
@@ -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;
}
diff --git a/LibPkmGC/src/LibPkmGC/XD/Common/RibbonDescriptionsData.cpp b/LibPkmGC/src/LibPkmGC/XD/Common/RibbonDescriptionsData.cpp
new file mode 100644
index 0000000..da6e898
--- /dev/null
+++ b/LibPkmGC/src/LibPkmGC/XD/Common/RibbonDescriptionsData.cpp
@@ -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 .
+*/
+
+#include
+
+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;
+}
+
+
+}
+}
diff --git a/LibPkmGC/src/LibPkmGC/XD/SaveEditing/SaveSlot.cpp b/LibPkmGC/src/LibPkmGC/XD/SaveEditing/SaveSlot.cpp
index d49289b..abd7dfa 100644
--- a/LibPkmGC/src/LibPkmGC/XD/SaveEditing/SaveSlot.cpp
+++ b/LibPkmGC/src/LibPkmGC/XD/SaveEditing/SaveSlot.cpp
@@ -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;
}
}