summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarijn van der Werf <marijn.vanderwerf@gmail.com>2017-06-24 18:23:41 +0200
committerMarijn van der Werf <marijn.vanderwerf@gmail.com>2017-06-24 18:24:08 +0200
commitf7528a440daa93ed0916834dcaf84ea26ba0e22d (patch)
tree8939cfe8e3eab2df34878c200a6761744f87efbc
parentec3fe21936b250b329e58941a47e11afb9b240e0 (diff)
wip src
-rw-r--r--include/easy_chat.h4
-rw-r--r--src/contest_painting.c10
-rw-r--r--src/mystery_event_script.c16
-rw-r--r--src/option_menu.c93
-rw-r--r--src/pokemon_summary_screen.c6
-rw-r--r--src/starter_choose.c159
6 files changed, 276 insertions, 12 deletions
diff --git a/include/easy_chat.h b/include/easy_chat.h
index 6b04f524b..03e9bb737 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -41,4 +41,8 @@ void sub_80EB890(u8);
u8 sub_80EB8C0(void);
u16 sub_80EB8EC(void);
+#if GERMAN
+u32 de_sub_80EB748(u32, u32);
+#endif
+
#endif // GUARD_EASYCHAT_H
diff --git a/src/contest_painting.c b/src/contest_painting.c
index eddcc87c1..d75947e05 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -263,15 +263,23 @@ static void ContestPaintingPrintCaption(u8 contestType, u8 arg1)
{
ptr = StringCopy(ptr, gUnknown_083F60AC[type]);
ptr = StringCopy(ptr, gContestText_ContestWinner);
+#if ENGLISH
ptr = StringCopy(ptr, gUnknown_03005E8C->trainer_name);
+#elif GERMAN
+ ptr = StringCopy10(ptr, gUnknown_03005E8C->pokemon_name);
+#endif
- // {ENG}
+ // {LATIN}
ptr[0] = 0xFC;
ptr[1] = 0x16;
ptr += 2;
ptr = StringCopy(ptr, gOtherText_Unknown1);
+#if ENGLISH
ptr = StringCopy10(ptr, gUnknown_03005E8C->pokemon_name);
+#elif GERMAN
+ ptr = StringCopy(ptr, gUnknown_03005E8C->trainer_name);
+#endif
xPos = 6;
yPos = 14;
diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c
index e3d533d28..45ef719da 100644
--- a/src/mystery_event_script.c
+++ b/src/mystery_event_script.c
@@ -4,10 +4,16 @@
#include "string_util.h"
#include "text.h"
+#if ENGLISH
+#define UNK_MASK_1 0x2
+#elif GERMAN
+#define UNK_MASK_1 0x4
+#endif
+
#ifdef SAPPHIRE
-#define UNK_MASK 0x100
+#define UNK_MASK_2 0x100
#else
-#define UNK_MASK 0x80
+#define UNK_MASK_2 0x80
#endif
extern struct ScriptContext gUnknown_02039288;
@@ -19,16 +25,16 @@ extern u8 gOtherText_DataCannotUseVersion[];
bool32 sub_8126098(u16 a1, u32 a2, u16 a3, u32 a4)
{
- if (!(a1 & 0x2))
+ if (!(a1 & UNK_MASK_1))
return FALSE;
- if (!(a2 & 0x2))
+ if (!(a2 & UNK_MASK_1))
return FALSE;
if (!(a3 & 0x4))
return FALSE;
- if (!(a4 & UNK_MASK))
+ if (!(a4 & UNK_MASK_2))
return FALSE;
return TRUE;
diff --git a/src/option_menu.c b/src/option_menu.c
index 878df16ba..2463b11c6 100644
--- a/src/option_menu.c
+++ b/src/option_menu.c
@@ -334,6 +334,17 @@ static u8 TextSpeed_ProcessInput(u8 selection)
return selection;
}
+#if ENGLISH
+#define TEXTSPEED_SLOW_LEFT (120)
+#define TEXTSPEED_MIX_LEFT (155)
+#define TEXTSPEED_FAST_LEFT (184)
+#endif
+#if GERMAN
+#define TEXTSPEED_SLOW_LEFT (120)
+#define TEXTSPEED_MIX_LEFT (161)
+#define TEXTSPEED_FAST_LEFT (202)
+#endif
+
static void TextSpeed_DrawChoices(u8 selection)
{
u8 styles[3];
@@ -343,9 +354,9 @@ static void TextSpeed_DrawChoices(u8 selection)
styles[2] = 0xF;
styles[selection] = 0x8;
- DrawOptionMenuChoice(gSystemText_Slow, 120, 40, styles[0]);
- DrawOptionMenuChoice(gSystemText_Mid, 155, 40, styles[1]);
- DrawOptionMenuChoice(gSystemText_Fast, 184, 40, styles[2]);
+ DrawOptionMenuChoice(gSystemText_Slow, TEXTSPEED_SLOW_LEFT, 40, styles[0]);
+ DrawOptionMenuChoice(gSystemText_Mid, TEXTSPEED_MIX_LEFT, 40, styles[1]);
+ DrawOptionMenuChoice(gSystemText_Fast, TEXTSPEED_FAST_LEFT, 40, styles[2]);
}
static u8 BattleScene_ProcessInput(u8 selection)
@@ -374,6 +385,14 @@ static u8 BattleStyle_ProcessInput(u8 selection)
return selection;
}
+#if ENGLISH
+#define BATTLESTYLE_SHIFT (120)
+#define BATTLESTYLE_SET (190)
+#elif GERMAN
+#define BATTLESTYLE_SHIFT (120)
+#define BATTLESTYLE_SET (178)
+#endif
+
static void BattleStyle_DrawChoices(u8 selection)
{
u8 styles[2];
@@ -382,8 +401,8 @@ static void BattleStyle_DrawChoices(u8 selection)
styles[1] = 0xF;
styles[selection] = 0x8;
- DrawOptionMenuChoice(gSystemText_Shift, 120, 72, styles[0]);
- DrawOptionMenuChoice(gSystemText_Set, 190, 72, styles[1]);
+ DrawOptionMenuChoice(gSystemText_Shift, BATTLESTYLE_SHIFT, 72, styles[0]);
+ DrawOptionMenuChoice(gSystemText_Set, BATTLESTYLE_SET, 72, styles[1]);
}
static u8 Sound_ProcessInput(u8 selection)
@@ -431,6 +450,7 @@ static u8 FrameType_ProcessInput(u8 selection)
#define CHAR_0 0xA1 //Character code of '0' character
+#if ENGLISH
static void FrameType_DrawChoices(u8 selection)
{
u8 text[8];
@@ -460,6 +480,69 @@ static void FrameType_DrawChoices(u8 selection)
MenuPrint(gSystemText_Type, 15, 15);
MenuPrint(text, 18, 15);
}
+#elif GERMAN
+__attribute__((naked))
+static void FrameType_DrawChoices(u8 selection)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ sub sp, 0x10\n\
+ lsls r0, 24\n\
+ movs r1, 0x80\n\
+ lsls r1, 17\n\
+ adds r0, r1\n\
+ lsrs r5, r0, 24\n\
+ ldr r1, _0808C368 @ =gSystemText_Type\n\
+ mov r0, sp\n\
+ bl StringCopy\n\
+ ldr r1, _0808C36C @ =gSystemText_Terminator\n\
+ mov r0, sp\n\
+ bl StringAppend\n\
+ adds r4, r0, 0\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xA\n\
+ bl __udivsi3\n\
+ adds r1, r0, 0\n\
+ lsls r0, r1, 24\n\
+ lsrs r6, r0, 24\n\
+ cmp r6, 0\n\
+ beq _0808C370\n\
+ adds r0, r1, 0\n\
+ adds r0, 0xA1\n\
+ strb r0, [r4]\n\
+ adds r4, 0x1\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xA\n\
+ bl __umodsi3\n\
+ adds r0, 0xA1\n\
+ strb r0, [r4]\n\
+ b _0808C380\n\
+ .align 2, 0\n\
+_0808C368: .4byte gSystemText_Type\n\
+_0808C36C: .4byte gSystemText_Terminator\n\
+_0808C370:\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xA\n\
+ bl __umodsi3\n\
+ adds r0, 0xA1\n\
+ strb r0, [r4]\n\
+ adds r4, 0x1\n\
+ strb r6, [r4]\n\
+_0808C380:\n\
+ adds r4, 0x1\n\
+ movs r0, 0xFF\n\
+ strb r0, [r4]\n\
+ mov r0, sp\n\
+ movs r1, 0xF\n\
+ movs r2, 0xF\n\
+ bl MenuPrint\n\
+ add sp, 0x10\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}
+#endif
static u8 ButtonMode_ProcessInput(u8 selection)
{
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 61ae11438..00a0bea29 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -81,6 +81,7 @@ void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8
u8 *ptr = gStringVar4;
u8 nature = GetNature(pokemon);
+#if ENGLISH
ptr = sub_80A1E9C(ptr, gNatureNames[nature], 14);
if (nature != NATURE_BOLD && nature != NATURE_GENTLE)
@@ -89,6 +90,11 @@ void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8
}
ptr = StringCopy(ptr, gOtherText_Nature);
+#elif GERMAN
+ ptr = StringCopy(gStringVar4, gOtherText_Nature);
+ ptr = sub_80A1E9C(ptr, gNatureNames[nature], 14);
+ ptr = StringCopy(ptr, gOtherText_Terminator4);
+#endif
if (PokemonSummaryScreen_CheckOT(pokemon) == TRUE)
{
diff --git a/src/starter_choose.c b/src/starter_choose.c
index c838f2dc0..2b28df4f0 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -465,7 +465,7 @@ static void Task_StarterChoose6(u8 taskId)
gTasks[taskId].func = Task_StarterChoose1;
}
-static void AddTextColorCtrlCode(u8 *string, u8 bgColor, u8 textColor, u8 shadowColor)
+void AddTextColorCtrlCode(u8 *string, u8 bgColor, u8 textColor, u8 shadowColor)
{
*(string++) = EXT_CTRL_CODE_BEGIN;
*(string++) = 4;
@@ -480,6 +480,8 @@ static void AddTextColorCtrlCode(u8 *string, u8 bgColor, u8 textColor, u8 shadow
*p = c; \
}
+
+#if ENGLISH
static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection)
{
u8 labelText[72];
@@ -545,6 +547,161 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection)
REG_WIN0H = WIN_RANGE(labelLeft, labelRight);
REG_WIN0V = WIN_RANGE(labelTop, labelBottom);
}
+#elif GERMAN
+__attribute__((naked))
+static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ sub sp, 0x48\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ lsls r1, 24\n\
+ lsrs r5, r1, 24\n\
+ cmp r0, 0xFF\n\
+ beq _0810A872\n\
+ ldr r1, _0810A960 @ =gStarterChoose_LabelCoords\n\
+ lsls r2, r0, 1\n\
+ adds r0, r2, r1\n\
+ ldrb r0, [r0]\n\
+ adds r1, 0x1\n\
+ adds r2, r1\n\
+ ldrb r1, [r2]\n\
+ adds r2, r0, 0\n\
+ adds r2, 0xD\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ adds r3, r1, 0x3\n\
+ lsls r3, 24\n\
+ lsrs r3, 24\n\
+ bl MenuZeroFillWindowRect\n\
+ ldr r0, _0810A964 @ =0x04000040\n\
+ movs r1, 0\n\
+ strh r1, [r0]\n\
+ adds r0, 0x4\n\
+ strh r1, [r0]\n\
+_0810A872:\n\
+ adds r0, r5, 0\n\
+ bl GetStarterPokemon\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
+ adds r0, r6, 0\n\
+ bl SpeciesToNationalPokedexNum\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ bl GetPokemonCategory\n\
+ adds r4, r0, 0\n\
+ mov r0, sp\n\
+ movs r1, 0\n\
+ movs r2, 0xF\n\
+ movs r3, 0x8\n\
+ bl AddTextColorCtrlCode\n\
+ movs r2, 0x8\n\
+ movs r3, 0\n\
+ ldrb r0, [r4]\n\
+ lsls r5, 1\n\
+ mov r7, sp\n\
+ adds r7, 0x5\n\
+ cmp r0, 0xFF\n\
+ beq _0810A8CA\n\
+_0810A8A8:\n\
+ mov r0, sp\n\
+ adds r1, r0, r2\n\
+ adds r0, r4, r3\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ adds r0, r4, r3\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0xFF\n\
+ beq _0810A8CA\n\
+ cmp r3, 0xA\n\
+ bls _0810A8A8\n\
+_0810A8CA:\n\
+ mov r0, sp\n\
+ adds r1, r0, r2\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1]\n\
+ mov r1, sp\n\
+ movs r0, 0xFC\n\
+ strb r0, [r1, 0x5]\n\
+ movs r0, 0x11\n\
+ strb r0, [r1, 0x6]\n\
+ mov r2, sp\n\
+ lsls r1, r3, 1\n\
+ adds r1, r3\n\
+ lsls r1, 1\n\
+ movs r0, 0x70\n\
+ subs r0, r1\n\
+ asrs r0, 1\n\
+ strb r0, [r2, 0x7]\n\
+ ldr r0, _0810A960 @ =gStarterChoose_LabelCoords\n\
+ adds r1, r5, r0\n\
+ ldrb r4, [r1]\n\
+ adds r0, 0x1\n\
+ adds r0, r5, r0\n\
+ ldrb r5, [r0]\n\
+ mov r0, sp\n\
+ adds r1, r4, 0\n\
+ adds r2, r5, 0\n\
+ bl MenuPrint\n\
+ mov r0, sp\n\
+ movs r1, 0\n\
+ movs r2, 0xF\n\
+ movs r3, 0x8\n\
+ bl AddTextColorCtrlCode\n\
+ movs r0, 0xB\n\
+ adds r1, r6, 0\n\
+ muls r1, r0\n\
+ ldr r0, _0810A968 @ =gSpeciesNames\n\
+ adds r1, r0\n\
+ adds r0, r7, 0\n\
+ movs r2, 0x70\n\
+ movs r3, 0x2\n\
+ bl sub_8072C74\n\
+ adds r2, r5, 0x2\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ mov r0, sp\n\
+ adds r1, r4, 0\n\
+ bl MenuPrint\n\
+ lsls r0, r4, 3\n\
+ adds r0, 0x4\n\
+ lsls r0, 24\n\
+ adds r4, 0xD\n\
+ lsls r4, 3\n\
+ adds r4, 0x4\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ lsls r1, r5, 27\n\
+ adds r5, 0x4\n\
+ lsls r5, 27\n\
+ lsrs r5, 24\n\
+ ldr r2, _0810A964 @ =0x04000040\n\
+ lsrs r0, 16\n\
+ orrs r0, r4\n\
+ strh r0, [r2]\n\
+ ldr r0, _0810A96C @ =0x04000044\n\
+ lsrs r1, 16\n\
+ orrs r1, r5\n\
+ strh r1, [r0]\n\
+ add sp, 0x48\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0810A960: .4byte gStarterChoose_LabelCoords\n\
+_0810A964: .4byte 0x04000040\n\
+_0810A968: .4byte gSpeciesNames\n\
+_0810A96C: .4byte 0x04000044\n\
+ .syntax divided\n");
+}
+#endif
static void nullsub_72(struct Sprite *sprite)
{