Files
pokeruby/src/debug/watanabe_debug_menu.c
T
Kaz 2ec8ae4bec Preliminary support for English rev0 debug. Matching but still needs
cleaning up.
Rename DEBUG_TRANSLATE to DEBUG_FIX now that we have actual English
Debug ROMs.
Add Sapphire German "first edition" debug support, now that we have a
hash for it.
Fix an obvious nonmatching.
2020-06-08 04:12:23 -04:00

3774 lines
122 KiB
C
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#if DEBUG
#include "global.h"
#include "decompress.h"
#include "ewram.h"
#include "random.h"
#include "gba/flash_internal.h"
#include "constants/items.h"
#include "constants/species.h"
#include "constants/moves.h"
#include "constants/songs.h"
#include "debug.h"
#include "palette.h"
#include "scanline_effect.h"
#include "main.h"
#include "task.h"
#include "sprite.h"
#include "text.h"
#include "menu.h"
#include "script.h"
#include "overworld.h"
#include "data2.h"
#include "fieldmap.h"
#include "save.h"
#include "sound.h"
#include "pokedex.h"
#include "load_save.h"
#include "pokemon_storage_system.h"
#include "battle.h"
#include "battle_bg.h"
#include "item.h"
#include "pokemon_summary_screen.h"
#include "pokemon_icon.h"
#include "field_effect.h"
struct WatanabeDebugMenuItemSubstruct {
u32 unk0;
u32 unk4;
u8 unk8;
u8 unk9;
};
struct WatanabeDebugMenuItem {
const u8 * text;
union {
u8 type1[2];
u32 type2;
u8 type3;
const struct WatanabeDebugMenuItemSubstruct *type4;
} data;
};
struct WatanabeEwram17000 {
u8 fill0;
u8 unk1_0:4;
u8 unk1_4:1;
u8 unk1_5:3;
u8 unk2;
u8 unk3;
u8 fill4[5];
u8 unk9;
u8 unkA;
u8 unkB;
u8 unkC;
};
struct WatanabeEwram18000 {
struct Pokemon pokemon;
u32 unk64[0x40];
u32 unk164;
u8 unk168;
u8 unk169;
u8 unk16a;
u8 unk16b[259];
};
struct WatanabeEwram18000_2 {
u16 unk0;
u8 unk2;
u8 unk3;
u8 unk4;
u8 unk5;
u8 unk6;
u8 unk7;
u8 unk8;
u8 unk9;
u8 unkA;
struct PlttData unkC;
u16 unk10[16];
};
#define eWatanabe17000 (*(struct WatanabeEwram17000 *)(gSharedMem + 0x17000))
#define eWatanabe18000 (*(struct WatanabeEwram18000 *)(gSharedMem + 0x18000))
#define eWatanabe18000_2 (*(struct WatanabeEwram18000_2 *)(gSharedMem + 0x18000))
EWRAM_DATA u8 gUnknown_Debug_20389EC[0x20] = { 0 };
EWRAM_DATA u8 gUnknown_Debug_2038A0C[0x10] = { 0 };
EWRAM_DATA struct WatanabeEwram18000 * gUnknown_Debug_2038A1C = NULL;
EWRAM_DATA struct WatanabeEwram18000_2 * gUnknown_Debug_2038A20 = NULL;
u32 byte_3005E30;
extern s8 gBattleTerrain;
void debug_80C3A50(u8 taskId);
void debug_80C3D2C(u8 taskId);
void debug_80C4214(u8);
void debug_80C42B8(u8 taskId);
void debug_80C4348(u8 taskId);
void debug_80C43A8(u8 taskId);
void debug_80C44EC(u8 taskId);
void debug_80C4550(u8 taskId);
void debug_80C4694(void);
void debug_80C4704(void);
bool8 debug_80C4774(void);
void debug_80C47BC(u8 taskId);
void debug_80C48A0(u8 taskId);
void debug_80C4900(u8 taskId);
void debug_80C4A60(u8 taskId);
void debug_80C4AC4(u8 taskId);
void debug_80C4C44(u8);
void debug_80C4D14(u8 taskId);
void debug_80C4DB8(u8 taskId);
void debug_80C4E18(u8 taskId);
void debug_80C4F00(u8);
void debug_80C4F48(u8 taskId);
void debug_80C5038(u8 taskId);
void debug_80C5098(u8 taskId);
void debug_80C5158(u8 taskId);
void debug_80C5174(u8 taskId);
void debug_80C5190(u8 taskId);
void debug_80C51AC(u8 taskId);
void debug_80C51C8(u8 taskId);
void debug_80C51E4(u8 taskId);
void debug_80C53A4(u8 taskId);
void debug_80C53C0(u8 taskId);
void debug_80C53F0(u8 taskId);
void debug_80C55E4(u8 taskId);
void debug_80C5708(u8 taskId);
void debug_80C5C94(void);
void debug_80C5DEC(void);
void debug_80C5EF4(void);
void debug_80C5FFC(void);
void debug_80C627C(u8);
void debug_80C6384(void);
void debug_80C643C(void);
void debug_80C6544(u8);
void debug_80C689C(u8 *, const u8 *, u8);
void debug_80C6678(u8 *, u32, u8, u8);
void debug_80C68CC(u16, u8, u8, u8);
void debug_80C6B00(u8 taskId);
void debug_80C6CB8(u8 taskId);
void debug_80C6EE8(u8 taskId);
void debug_80C6FA8(u8 taskId);
void debug_80C71FC(u8 taskId);
void debug_80C7294(u8 taskId);
void debug_80C74E4(u8 taskId);
void debug_80C7584(struct Sprite *);
void debug_80C777C(u8 taskId);
void debug_80C7934(u8 taskId);
void debug_80C7A54(u8 taskId);
void debug_80C7B14(u8 taskId);
void debug_80C7D44(u8 taskId);
void debug_80C7DDC(u8 taskId);
void debug_80C802C(u8 taskId);
#define SPRITETAG_WATANABE 0x1000
u8 byte_83F88EC[];
u16 word_83F888C[];
struct SpriteSheet stru_83F8828[] = {
{byte_83F88EC, 0x800, SPRITETAG_WATANABE},
{}
};
struct SpritePalette stru_83F8838[] = {
{word_83F888C, SPRITETAG_WATANABE},
{}
};
void debug_69(struct Sprite *sprite)
{
}
void debug_80C35DC(void)
{
SetVBlankCallback(NULL);
REG_DISPCNT = 0;
REG_BG3CNT = 0;
REG_BG2CNT = 0;
REG_BG1CNT = 0;
REG_BG0CNT = 0;
REG_BG3HOFS = 0;
REG_BG3VOFS = 0;
REG_BG2HOFS = 0;
REG_BG2VOFS = 0;
REG_BG1HOFS = 0;
REG_BG1VOFS = 0;
REG_BG0HOFS = 0;
REG_BG0VOFS = 0;
DmaFill16Large(3, 0, VRAM, VRAM_SIZE, 0x1000);
DmaFill32Defvars(3, 0, OAM, OAM_SIZE);
DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE);
ResetPaletteFade();
ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
ResetPaletteFade(); // I really don't want palette fade here
FreeAllSpritePalettes();
LoadSpriteSheet(stru_83F8828);
LoadSpritePalette(stru_83F8838);
Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
InitMenuWindow(&gMenuTextWindowTemplate);
}
void debug_80C36F4(void)
{
RunTasks();
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
}
void debug_80C370C(void)
{
if (!gPaletteFade.active)
{
SetMainCallback2(debug_80C36F4);
}
else
{
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
}
}
void debug_80C373C(u8 taskId)
{
DestroyTask(taskId);
ScriptContext2_Disable();
SetMainCallback2(sub_80546F0);
}
void debug_80C3758(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
void debug_80C376C(u16 a0, u8 a1, u8 a2)
{
u8 i;
u8 divresult;
u8 sp00[4];
bool8 r4;
for (i = 0; i < 3; i++)
sp00[i] = CHAR_SPACE;
sp00[3] = EOS;
r4 = FALSE;
divresult = a0 / 100;
if (divresult)
{
sp00[0] = CHAR_0 + divresult;
r4 = TRUE;
}
divresult = (a0 % 100) / 10;
if (divresult || r4)
{
sp00[1] = CHAR_0 + divresult;
}
sp00[2] = CHAR_0 + ((a0 % 100) % 10);
Menu_PrintText(sp00, a1, a2);
}
void debug_80C3800(u16 a0, u8 a1, u8 a2)
{
u8 sp00[11];
u8 i;
for (i = 0; i < 10; i++)
sp00[i] = CHAR_SPACE;
sp00[i] = EOS;
for (i = 0; gSpeciesNames[a0][i] != EOS && i < 10; i++)
sp00[i] = gSpeciesNames[a0][i];
Menu_PrintText(sp00, a1, a2);
}
u16 debug_80C3878(u8 a0, u16 a1)
{
switch (a0)
{
default:
case 0:
if (a1 > SPECIES_BULBASAUR)
a1--;
else
a1 = NUM_SPECIES - 1;
break;
case 1:
if (a1 < NUM_SPECIES - 1)
a1++;
else
a1 = SPECIES_BULBASAUR;
break;
}
return a1;
}
u16 debug_80C38B4(u8 a0, u16 a1)
{
switch (a0)
{
default:
case 0:
if (a1)
a1--;
else
a1 = 0x52;
break;
case 1:
if (a1 < 0x52)
a1++;
else
a1 = 0;
break;
}
return a1;
}
void debug_80C38E4(u8 a0, u8 a1, u8 a2, u8 a3, u8 a4)
{
u8 sp00[] = _("▶");
Menu_BlankWindowRect(a1, a2, a1, a3);
if (a4)
Menu_PrintText(sp00, a1, a0);
}
const u8 gUnknown_Debug_083F7FD6[] = {0x25, 0x20, 0x01, 0x08};
void debug_80C393C(void)
{
ProgramFlashSectorAndVerify(30, (void *)gUnknown_Debug_083F7FD6);
}
void InitWatanabeDebugMenu(void)
{
switch (gMain.state)
{
default:
case 0:
save_serialize_map();
sub_8125E2C();
gMain.state = 1;
break;
case 1:
if (sub_8125E6C())
gMain.state++;
break;
case 2:
PlaySE(SE_SAVE);
gMain.state++;
break;
case 3:
if (!IsSEPlaying())
{
ScriptContext2_Disable();
SetMainCallback2(sub_80546F0);
}
break;
}
}
void InitSizeComparison(void)
{
u8 taskId;
u16 imeBak;
debug_80C35DC();
gReservedSpritePaletteCount = 1;
LoadPalette(gUnknown_Debug_20389EC, 0x100, 0x20);
imeBak = REG_IME;
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
REG_IME = imeBak;
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
SetVBlankCallback(debug_80C3758);
SetMainCallback2(debug_80C370C);
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON;
taskId = CreateTask(debug_80C3A50, 0);
gTasks[taskId].data[0] = 0xfc;
}
const u8 gUnknown_Debug_083F7FDA[] = DTR("ひりつ", "SCALE");
const u8 gUnknown_Debug_083F7FDE[] = DTR("たかさ", "HEIGHT");
const u8 gUnknown_Debug_083F7FE2[] = DTR("Lキー▶しゅくしょう", "{LEFT_ARROW}: SHRINK");
const u8 gUnknown_Debug_083F7FED[] = DTR("Rキー▶かくだい", "{RIGHT_ARROW}: ENLARGE");
const u8 gUnknown_Debug_083F7FF6[] = DTR("Uキー▶うえ いどう", "{UP_ARROW}: MOVE UP");
const u8 gUnknown_Debug_083F8001[] = DTR("Dキー▶した いどう", "{DOWN_ARROW}: MOVE DOWN");
const u8 gUnknown_Debug_083F800C[] = DTR("Aボタン▶そうさきりかえ", "A: SWITCH CONTROL");
const u8 gUnknown_Debug_083F8019[] = DTR("Bボタン▶やめる", "B: QUIT");
const u8 gUnknown_Debug_083F8022[] = DTR("スタート:", "START:");
const u8 gUnknown_Debug_083F8028[] = DTR(":セレクト", ":SELECT");
#ifdef NONMATCHING
void debug_80C3A50(u8 taskId)
{
u16 natDexNum = gTasks[taskId].data[0];
u16 species = NationalPokedexNumToSpecies(natDexNum);
u16 spriteId;
u16 spriteId2;
struct SaveBlock2 *saveBlock2 = &gSaveBlock2;
Menu_DrawStdWindowFrame(6, 0, 23, 9);
Menu_DrawStdWindowFrame(0, 0, 5, 9);
Menu_PrintText(gUnknown_Debug_083F7FDA, 1, 1);
Menu_PrintText(gUnknown_Debug_083F7FDE, 1, 5);
Menu_DrawStdWindowFrame(24, 0, 29, 9);
Menu_PrintText(gUnknown_Debug_083F7FD6, 25, 1);
Menu_PrintText(gUnknown_Debug_083F7FDE, 25, 5);
Menu_DrawStdWindowFrame(0, 10, 11, 19);
Menu_PrintText(gUnknown_Debug_083F7FE2, 1, 11);
Menu_PrintText(gUnknown_Debug_083F7FED, 1, 13);
Menu_PrintText(gUnknown_Debug_083F7FF6, 1, 15);
Menu_PrintText(gUnknown_Debug_083F8001, 1, 17);
Menu_DrawStdWindowFrame(12, 10, 29, 15);
Menu_PrintText(gUnknown_Debug_083F800C, 13, 11);
Menu_PrintText(gUnknown_Debug_083F8019, 13, 13);
Menu_DrawStdWindowFrame(12, 16, 29, 19);
Menu_PrintText(gUnknown_Debug_083F8022, 13, 17);
Menu_PrintText(gUnknown_Debug_083F8028, 24, 17);
debug_80C3800(species, 18, 17);
spriteId = sub_8091A4C(saveBlock2->playerGender, 0x98, 0x28, 0);
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 2;
gSprites[spriteId].oam.priority = 0;
gSprites[spriteId].oam.paletteNum = 0;
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(0));
gSprites[spriteId].pos2.y = gPokedexEntries[natDexNum].trainerOffset;
SetOamMatrix(2, gPokedexEntries[natDexNum].trainerScale, 0, 0, gPokedexEntries[natDexNum].trainerScale);
gTasks[taskId].data[3] = spriteId;
gTasks[taskId].data[4] = gPokedexEntries[natDexNum].trainerOffset;
gTasks[taskId].data[6] = gPokedexEntries[natDexNum].trainerScale;
spriteId2 = sub_80918EC(natDexNum, 0x58, 0x28, 1);
gSprites[spriteId2].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId2].oam.matrixNum = 1;
gSprites[spriteId2].oam.priority = 0;
gSprites[spriteId2].oam.paletteNum = 0;
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(0));
gSprites[spriteId2].pos2.y = gPokedexEntries[natDexNum].pokemonOffset;
SetOamMatrix(1, gPokedexEntries[natDexNum].pokemonScale, 0, 0, gPokedexEntries[natDexNum].pokemonScale);
gTasks[taskId].data[2] = spriteId2;
gTasks[taskId].data[5] = gPokedexEntries[natDexNum].pokemonOffset;
gTasks[taskId].data[7] = gPokedexEntries[natDexNum].pokemonScale;
gTasks[taskId].data[8] = 0;
gTasks[taskId].data[9] = 0;
REG_WININ = 0x3F1F;
REG_WINOUT = 0x001F;
REG_WIN0H = ((gTasks[taskId].data[8] * 64 + 0x38) << 8) + (gTasks[taskId].data[8] * 64 + 0x78);
REG_WIN0V = 0x0848;
REG_WIN1H = 0x31BF;
REG_WIN1V = 0x014F;
REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN;
REG_BLDALPHA = 0;
REG_BLDY = 7;
REG_DISPCNT |= DISPCNT_WIN0_ON | DISPCNT_WIN1_ON;
gTasks[taskId].func = debug_80C3D2C;
}
#else
NAKED void debug_80C3A50(u8 taskId)
{
asm("\tpush\t{r4, r5, r6, r7, lr}\n"
"\tmov\tr7, sl\n"
"\tmov\tr6, r9\n"
"\tmov\tr5, r8\n"
"\tpush\t{r5, r6, r7}\n"
"\tadd\tsp, sp, #0xffffffd8\n"
"\tlsl\tr0, r0, #0x18\n"
"\tlsr\tr0, r0, #0x18\n"
"\tldr\tr1, ._56 @ gTasks\n"
"\tlsl\tr2, r0, #0x2\n"
"\tadd\tr0, r2, r0\n"
"\tlsl\tr0, r0, #0x3\n"
"\tadd\tr7, r0, r1\n"
"\tldrh\tr0, [r7, #0x8]\n"
"\tstr\tr0, [sp, #0x4]\n"
"\tbl\tNationalPokedexNumToSpecies\n"
"\tmov\tr1, sp\n"
"\tstrh\tr0, [r1, #0x8]\n"
"\tadd\tr2, r0, #0\n"
"\tlsl\tr2, r2, #0x10\n"
"\tstr\tr2, [sp, #0xc]\n"
"\tlsr\tr2, r2, #0x10\n"
"\tmov\tr9, r2\n"
"\tldr\tr3, ._56 + 4 @ gSaveBlock2\n"
"\tmov\tr8, r3\n"
"\tmov\tr0, #0x6\n"
"\tmov\tr1, #0x0\n"
"\tmov\tr2, #0x17\n"
"\tmov\tr3, #0x9\n"
"\tbl\tMenu_DrawStdWindowFrame\n"
"\tmov\tr0, #0x0\n"
"\tmov\tr1, #0x0\n"
"\tmov\tr2, #0x5\n"
"\tmov\tr3, #0x9\n"
"\tbl\tMenu_DrawStdWindowFrame\n"
"\tldr\tr5, ._56 + 8 @ gUnknown_Debug_083F7FD6\n"
"\tadd\tr0, r5, #0\n"
"\tmov\tr1, #0x1\n"
"\tmov\tr2, #0x1\n"
"\tbl\tMenu_PrintText\n"
"\tldr\tr4, ._56 + 12 @ gUnknown_Debug_083F7FDE\n"
"\tadd\tr0, r4, #0\n"
"\tmov\tr1, #0x1\n"
"\tmov\tr2, #0x5\n"
"\tbl\tMenu_PrintText\n"
"\tmov\tr0, #0x18\n"
"\tmov\tr1, #0x0\n"
"\tmov\tr2, #0x1d\n"
"\tmov\tr3, #0x9\n"
"\tbl\tMenu_DrawStdWindowFrame\n"
"\tadd\tr0, r5, #0\n"
"\tmov\tr1, #0x19\n"
"\tmov\tr2, #0x1\n"
"\tbl\tMenu_PrintText\n"
"\tadd\tr0, r4, #0\n"
"\tmov\tr1, #0x19\n"
"\tmov\tr2, #0x5\n"
"\tbl\tMenu_PrintText\n"
"\tmov\tr0, #0x0\n"
"\tmov\tr1, #0xa\n"
"\tmov\tr2, #0xb\n"
"\tmov\tr3, #0x13\n"
"\tbl\tMenu_DrawStdWindowFrame\n"
"\tldr\tr0, ._56 + 16 @ gUnknown_Debug_083F7FE2\n"
"\tmov\tr1, #0x1\n"
"\tmov\tr2, #0xb\n"
"\tbl\tMenu_PrintText\n"
"\tldr\tr0, ._56 + 20 @ gUnknown_Debug_083F7FED\n"
"\tmov\tr1, #0x1\n"
"\tmov\tr2, #0xd\n"
"\tbl\tMenu_PrintText\n"
"\tldr\tr0, ._56 + 24 @ gUnknown_Debug_083F7FF6\n"
"\tmov\tr1, #0x1\n"
"\tmov\tr2, #0xf\n"
"\tbl\tMenu_PrintText\n"
"\tldr\tr0, ._56 + 28 @ gUnknown_Debug_083F8001\n"
"\tmov\tr1, #0x1\n"
"\tmov\tr2, #0x11\n"
"\tbl\tMenu_PrintText\n"
"\tmov\tr0, #0xc\n"
"\tmov\tr1, #0xa\n"
"\tmov\tr2, #0x1d\n"
"\tmov\tr3, #0xf\n"
"\tbl\tMenu_DrawStdWindowFrame\n"
"\tldr\tr0, ._56 + 32 @ gUnknown_Debug_083F800C\n"
"\tmov\tr1, #0xd\n"
"\tmov\tr2, #0xb\n"
"\tbl\tMenu_PrintText\n"
"\tldr\tr0, ._56 + 36 @ gUnknown_Debug_083F8019\n"
"\tmov\tr1, #0xd\n"
"\tmov\tr2, #0xd\n"
"\tbl\tMenu_PrintText\n"
"\tmov\tr0, #0xc\n"
"\tmov\tr1, #0x10\n"
"\tmov\tr2, #0x1d\n"
"\tmov\tr3, #0x13\n"
"\tbl\tMenu_DrawStdWindowFrame\n"
"\tldr\tr0, ._56 + 40 @ gUnknown_Debug_083F8022\n"
"\tmov\tr1, #0xd\n"
"\tmov\tr2, #0x11\n"
"\tbl\tMenu_PrintText\n"
"\tldr\tr0, ._56 + 44 @ gUnknown_Debug_083F8028\n"
"\tmov\tr1, #0x18\n"
"\tmov\tr2, #0x11\n"
"\tbl\tMenu_PrintText\n"
"\tmov\tr0, r9\n"
"\tmov\tr1, #0x12\n"
"\tmov\tr2, #0x11\n"
"\tbl\tdebug_80C3800\n"
"\tmov\tr1, r8\n"
"\tldrb\tr0, [r1, #0x8]\n"
"\tmov\tr1, #0x98\n"
"\tmov\tr2, #0x28\n"
"\tmov\tr3, #0x0\n"
"\tbl\tsub_8091A4C\n"
"\tmov\tr2, sp\n"
"\tstrh\tr0, [r2, #0x10]\n"
"\tadd\tr3, r0, #0\n"
"\tlsl\tr3, r3, #0x10\n"
"\tstr\tr3, [sp, #0x18]\n"
"\tlsr\tr0, r3, #0x10\n"
"\tstr\tr0, [sp, #0x14]\n"
"\tlsl\tr4, r0, #0x4\n"
"\tadd\tr4, r4, r0\n"
"\tlsl\tr4, r4, #0x2\n"
"\tldr\tr1, ._56 + 48 @ gSprites\n"
"\tadd\tr4, r4, r1\n"
"\tldrb\tr1, [r4, #0x1]\n"
"\tmov\tr2, #0x4\n"
"\tneg\tr2, r2\n"
"\tmov\tsl, r2\n"
"\tmov\tr0, sl\n"
"\tand\tr0, r0, r1\n"
"\tmov\tr3, #0x1\n"
"\torr\tr0, r0, r3\n"
"\tstrb\tr0, [r4, #0x1]\n"
"\tldrb\tr1, [r4, #0x3]\n"
"\tmov\tr0, #0x3f\n"
"\tneg\tr0, r0\n"
"\tmov\tr9, r0\n"
"\tand\tr0, r0, r1\n"
"\tmov\tr1, #0x4\n"
"\torr\tr0, r0, r1\n"
"\tstrb\tr0, [r4, #0x3]\n"
"\tldrb\tr1, [r4, #0x5]\n"
"\tsub\tr2, r2, #0x9\n"
"\tmov\tr8, r2\n"
"\tmov\tr0, r8\n"
"\tand\tr0, r0, r1\n"
"\tmov\tr3, #0xf\n"
"\tand\tr0, r0, r3\n"
"\tstrb\tr0, [r4, #0x5]\n"
"\tmov\tr0, #0x0\n"
"\tbl\tGetSpritePaletteTagByPaletteNum\n"
"\tlsl\tr0, r0, #0x10\n"
"\tlsr\tr0, r0, #0x10\n"
"\tbl\tFreeSpritePaletteByTag\n"
"\tldr\tr0, ._56 + 52 @ gPokedexEntries\n"
"\tldr\tr1, [sp, #0x4]\n"
"\tlsl\tr5, r1, #0x3\n"
"\tadd\tr5, r5, r1\n"
"\tlsl\tr5, r5, #0x2\n"
"\tadd\tr5, r5, r0\n"
"\tldrh\tr6, [r5, #0x20]\n"
"\tstrh\tr6, [r4, #0x26]\n"
"\tldrh\tr4, [r5, #0x1e]\n"
"\tstr\tr4, [sp]\n"
"\tmov\tr0, #0x2\n"
"\tadd\tr1, r4, #0\n"
"\tmov\tr2, #0x0\n"
"\tmov\tr3, #0x0\n"
"\tbl\tSetOamMatrix\n"
"\tmov\tr2, sp\n"
"\tldrh\tr2, [r2, #0x14]\n"
"\tstrh\tr2, [r7, #0xe]\n"
"\tstrh\tr6, [r7, #0x10]\n"
"\tstrh\tr4, [r7, #0x14]\n"
"\tldr\tr0, [sp, #0x4]\n"
"\tmov\tr1, #0x58\n"
"\tmov\tr2, #0x28\n"
"\tmov\tr3, #0x1\n"
"\tbl\tsub_80918EC\n"
"\tmov\tr3, sp\n"
"\tstrh\tr0, [r3, #0x1c]\n"
"\tlsl\tr0, r0, #0x10\n"
"\tstr\tr0, [sp, #0x24]\n"
"\tlsr\tr1, r0, #0x10\n"
"\tstr\tr1, [sp, #0x20]\n"
"\tlsl\tr4, r1, #0x4\n"
"\tadd\tr4, r4, r1\n"
"\tlsl\tr4, r4, #0x2\n"
"\tldr\tr2, ._56 + 48 @ gSprites\n"
"\tadd\tr4, r4, r2\n"
"\tldrb\tr0, [r4, #0x1]\n"
"\tmov\tr3, sl\n"
"\tand\tr3, r3, r0\n"
"\tmov\tr0, #0x1\n"
"\torr\tr3, r3, r0\n"
"\tstrb\tr3, [r4, #0x1]\n"
"\tldrb\tr0, [r4, #0x3]\n"
"\tmov\tr1, r9\n"
"\tand\tr1, r1, r0\n"
"\tmov\tr0, #0x2\n"
"\torr\tr1, r1, r0\n"
"\tstrb\tr1, [r4, #0x3]\n"
"\tldrb\tr0, [r4, #0x5]\n"
"\tmov\tr2, r8\n"
"\tand\tr2, r2, r0\n"
"\tmov\tr3, #0xf\n"
"\tand\tr2, r2, r3\n"
"\tstrb\tr2, [r4, #0x5]\n"
"\tmov\tr0, #0x0\n"
"\tbl\tGetSpritePaletteTagByPaletteNum\n"
"\tlsl\tr0, r0, #0x10\n"
"\tlsr\tr0, r0, #0x10\n"
"\tbl\tFreeSpritePaletteByTag\n"
"\tldrh\tr0, [r5, #0x1c]\n"
"\tmov\tr8, r0\n"
"\tstrh\tr0, [r4, #0x26]\n"
"\tldrh\tr4, [r5, #0x1a]\n"
"\tstr\tr4, [sp]\n"
"\tmov\tr0, #0x1\n"
"\tadd\tr1, r4, #0\n"
"\tmov\tr2, #0x0\n"
"\tmov\tr3, #0x0\n"
"\tbl\tSetOamMatrix\n"
"\tmov\tr1, sp\n"
"\tldrh\tr1, [r1, #0x20]\n"
"\tstrh\tr1, [r7, #0xc]\n"
"\tmov\tr2, r8\n"
"\tstrh\tr2, [r7, #0x12]\n"
"\tstrh\tr4, [r7, #0x16]\n"
"\tmov\tr3, #0x0\n"
"\tstrh\tr3, [r7, #0x18]\n"
"\tstrh\tr3, [r7, #0x1a]\n"
"\tldr\tr1, ._56 + 56 @ 0x4000048\n"
"\tldr\tr2, ._56 + 60 @ 0x3f1f\n"
"\tadd\tr0, r2, #0\n"
"\tstrh\tr0, [r1]\n"
"\tadd\tr1, r1, #0x2\n"
"\tmov\tr0, #0x1f\n"
"\tstrh\tr0, [r1]\n"
"\tldr\tr2, ._56 + 64 @ 0x4000040\n"
"\tmov\tr3, #0x18\n"
"\tldsh\tr1, [r7, r3]\n"
"\tlsl\tr1, r1, #0x6\n"
"\tadd\tr0, r1, #0\n"
"\tadd\tr0, r0, #0x38\n"
"\tlsl\tr0, r0, #0x8\n"
"\tadd\tr1, r1, #0x78\n"
"\tadd\tr0, r0, r1\n"
"\tstrh\tr0, [r2]\n"
"\tldr\tr1, ._56 + 68 @ 0x4000044\n"
"\tldr\tr2, ._56 + 72 @ 0x848\n"
"\tadd\tr0, r2, #0\n"
"\tstrh\tr0, [r1]\n"
"\tsub\tr1, r1, #0x2\n"
"\tldr\tr3, ._56 + 76 @ 0x31bf\n"
"\tadd\tr0, r3, #0\n"
"\tstrh\tr0, [r1]\n"
"\tadd\tr1, r1, #0x4\n"
"\tldr\tr2, ._56 + 80 @ 0x14f\n"
"\tadd\tr0, r2, #0\n"
"\tstrh\tr0, [r1]\n"
"\tadd\tr1, r1, #0xa\n"
"\tmov\tr0, #0xe1\n"
"\tstrh\tr0, [r1]\n"
"\tldr\tr0, ._56 + 84 @ 0x4000052\n"
"\tmov\tr3, #0x0\n"
"\tstrh\tr3, [r0]\n"
"\tadd\tr1, r1, #0x4\n"
"\tmov\tr0, #0x7\n"
"\tstrh\tr0, [r1]\n"
"\tmov\tr2, #0x80\n"
"\tlsl\tr2, r2, #0x13\n"
"\tldrh\tr0, [r2]\n"
"\tmov\tr3, #0xc0\n"
"\tlsl\tr3, r3, #0x7\n"
"\tadd\tr1, r3, #0\n"
"\torr\tr0, r0, r1\n"
"\tstrh\tr0, [r2]\n"
"\tldr\tr0, ._56 + 88 @ debug_80C3D2C\n"
"\tstr\tr0, [r7]\n"
"\tadd\tsp, sp, #0x28\n"
"\tpop\t{r3, r4, r5}\n"
"\tmov\tr8, r3\n"
"\tmov\tr9, r4\n"
"\tmov\tsl, r5\n"
"\tpop\t{r4, r5, r6, r7}\n"
"\tpop\t{r0}\n"
"\tbx\tr0\n"
"._57:\n"
"\t.align\t2, 0\n"
"._56:\n"
"\t.word\tgTasks\n"
"\t.word\tgSaveBlock2\n"
"\t.word\tgUnknown_Debug_083F7FD6+0x4\n"
"\t.word\tgUnknown_Debug_083F7FDE\n"
"\t.word\tgUnknown_Debug_083F7FE2\n"
"\t.word\tgUnknown_Debug_083F7FED\n"
"\t.word\tgUnknown_Debug_083F7FF6\n"
"\t.word\tgUnknown_Debug_083F8001\n"
"\t.word\tgUnknown_Debug_083F800C\n"
"\t.word\tgUnknown_Debug_083F8019\n"
"\t.word\tgUnknown_Debug_083F8022\n"
"\t.word\tgUnknown_Debug_083F8028\n"
"\t.word\tgSprites\n"
"\t.word\tgPokedexEntries\n"
"\t.word\t0x4000048\n"
"\t.word\t0x3f1f\n"
"\t.word\t0x4000040\n"
"\t.word\t0x4000044\n"
"\t.word\t0x848\n"
"\t.word\t0x31bf\n"
"\t.word\t0x14f\n"
"\t.word\t0x4000052\n"
"\t.word\tdebug_80C3D2C+1");
}
#endif // NONMATCHING
void debug_80C3D2C(u8 taskId)
{
if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
SetMainCallback2(debug_80C370C);
gTasks[taskId].func = debug_80C373C;
}
else if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
gTasks[taskId].data[8] ^= 1;
}
else if (gMain.newAndRepeatedKeys & DPAD_LEFT)
{
if (gTasks[taskId].data[8])
{
if (gMain.heldKeys & R_BUTTON)
gTasks[taskId].data[6] += 16;
else
gTasks[taskId].data[6] += 1;
if ((u16)gTasks[taskId].data[6] > 0x8000)
gTasks[taskId].data[6] = 0x8000;
}
else
{
if (gMain.heldKeys & R_BUTTON)
gTasks[taskId].data[7] += 16;
else
gTasks[taskId].data[7] += 1;
if ((u16)gTasks[taskId].data[7] > 0x8000)
gTasks[taskId].data[7] = 0x8000;
}
}
else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
{
if (gTasks[taskId].data[8])
{
if (gMain.heldKeys & R_BUTTON)
gTasks[taskId].data[6] -= 16;
else
gTasks[taskId].data[6] -= 1;
if (gTasks[taskId].data[6] < 0x100)
gTasks[taskId].data[6] = 0x100;
}
else
{
if (gMain.heldKeys & R_BUTTON)
gTasks[taskId].data[7] -= 16;
else
gTasks[taskId].data[7] -= 1;
if (gTasks[taskId].data[7] < 0x100)
gTasks[taskId].data[7] = 0x100;
}
}
else if (gMain.newAndRepeatedKeys & DPAD_UP)
{
if (gTasks[taskId].data[8])
{
gTasks[taskId].data[4]--;
}
else
{
gTasks[taskId].data[5]--;
}
}
else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
{
if (gTasks[taskId].data[8])
{
gTasks[taskId].data[4]++;
}
else
{
gTasks[taskId].data[5]++;
}
}
else if (gMain.newAndRepeatedKeys & START_BUTTON)
{
if (gTasks[taskId].data[0] < 0x182)
gTasks[taskId].data[0]++;
else
gTasks[taskId].data[0] = 1;
DestroySprite(gSprites + gTasks[taskId].data[2]);
DestroySprite(gSprites + gTasks[taskId].data[3]);
gTasks[taskId].func = debug_80C3A50;
}
else if (gMain.newAndRepeatedKeys & SELECT_BUTTON)
{
if (gTasks[taskId].data[0] > 1)
gTasks[taskId].data[0]--;
else
gTasks[taskId].data[0] = 0x182;
DestroySprite(gSprites + gTasks[taskId].data[2]);
DestroySprite(gSprites + gTasks[taskId].data[3]);
gTasks[taskId].func = debug_80C3A50;
}
else
{
u16 scale = gTasks[taskId].data[7];
u16 offset = gTasks[taskId].data[5];
SetOamMatrix(1, scale, 0, 0, scale);
debug_80C68CC(scale, 1, 3, 4);
debug_80C68CC(offset, 1, 7, 4);
gSprites[gTasks[taskId].data[2]].pos2.y = offset;
scale = gTasks[taskId].data[6];
offset = gTasks[taskId].data[4];
SetOamMatrix(2, scale, 0, 0, scale);
debug_80C68CC(scale, 25, 3, 4);
debug_80C68CC(offset, 25, 7, 4);
gSprites[gTasks[taskId].data[3]].pos2.y = offset;
REG_WIN0H = ((gTasks[taskId].data[8] * 64 + 0x38) << 8) + (gTasks[taskId].data[8] * 64 + 0x78);
}
}
void debug_80C405C(u8 * dest, u16 species)
{
u8 i;
for (i = 0; i < 10; i++)
dest[i] = CHAR_SPACE;
dest[i] = EOS;
dest[0] = CHAR_HYPHEN;
if (species != SPECIES_NONE)
{
for (i = 0; gSpeciesNames[species][i] != EOS && i < 10; i++)
dest[i] = gSpeciesNames[species][i];
}
}
void debug_80C40C4(bool8 who)
{
u8 i;
u16 maxHp;
for (i = 0; i < PARTY_SIZE; i++)
{
if (who)
{
struct Pokemon *pokemon = gEnemyParty + i;
if (GetMonData(pokemon, MON_DATA_SPECIES) != SPECIES_NONE)
{
CalculateMonStats(pokemon);
maxHp = GetMonData(pokemon, MON_DATA_MAX_HP);
SetMonData(pokemon, MON_DATA_HP, &maxHp);
}
}
else
{
struct Pokemon *pokemon = gPlayerParty + i;
if (GetMonData(pokemon, MON_DATA_SPECIES) != SPECIES_NONE)
{
CalculateMonStats(pokemon);
maxHp = GetMonData(pokemon, MON_DATA_MAX_HP);
SetMonData(pokemon, MON_DATA_HP, &maxHp);
}
}
}
}
void InitBattleForDebug(void)
{
SavePlayerParty();
gUnknown_Debug_2038A0C[13] = gSaveBlock2.playerGender;
gUnknown_Debug_2038A0C[0] = 0;
gUnknown_Debug_2038A0C[1] = 0;
gUnknown_Debug_2038A0C[2] = 0;
gUnknown_Debug_2038A0C[3] = 0;
gUnknown_Debug_2038A0C[4] = 0;
gUnknown_Debug_2038A0C[5] = 0;
gUnknown_Debug_2038A0C[6] = 0;
gUnknown_Debug_2038A0C[7] = 0;
gUnknown_Debug_2038A0C[8] = 0;
gUnknown_Debug_2038A0C[12] = 0;
byte_3005E30 = 0;
ZeroPlayerPartyMons();
ZeroEnemyPartyMons();
debug_80C4214(0);
CreateTask(debug_80C47BC, 0);
}
void debug_80C41A8(void)
{
gUnknown_Debug_2038A0C[1] = 0;
gUnknown_Debug_2038A0C[2] = 0;
ZeroPlayerPartyMons();
ZeroEnemyPartyMons();
debug_80C4214(0);
CreateTask(debug_80C47BC, 0);
}
const u8 gUnknown_Debug_083F802E[] = DTR("やせいたいせん", "Wild BATTLE");
const u8 gUnknown_Debug_083F8036[] = DTR("1VS1たいせん", "1v1 BATTLE");
const u8 gUnknown_Debug_083F803F[] = DTR("2VS2たいせん", "2v2 BATTLE");
const u8 gUnknown_Debug_083F8048[] = DTR("{COLOR BLUE}1VS1つうしんたいせん",
"{COLOR BLUE}LINK 1v1 BATTLE");
const u8 gUnknown_Debug_083F8058[] = DTR("{COLOR BLUE}2VS2つうしんたいせん",
"{COLOR BLUE}LINK 2v2 BATTLE");
const struct WatanabeDebugMenuItem gUnknown_Debug_083F8068[] = {
{gUnknown_Debug_083F802E, {.type1 = {0x00, 0x01}}},
{gUnknown_Debug_083F8036, {.type1 = {0x08, 0x01}}},
{gUnknown_Debug_083F803F, {.type1 = {0x09, 0x02}}},
{gUnknown_Debug_083F8048, {.type1 = {0x0A, 0x01}}},
{gUnknown_Debug_083F8058, {.type1 = {0x0B, 0x02}}}
};
const u8 gUnknown_Debug_083F8090[] = DTR("きほんタイプ", "Base type");
const u8 gUnknown_Debug_083F8097[] = DTR("AIタイプ2", "AI type 2");
const u8 gUnknown_Debug_083F809E[] = DTR("AIタイプ3", "AI type 3");
const u8 gUnknown_Debug_083F80A5[] = DTR("AIタイプ4", "AI type 4");
const u8 gUnknown_Debug_083F80AC[] = DTR("AIタイプ5", "AI type 5");
const u8 gUnknown_Debug_083F80B3[] = DTR("AIタイプ6", "AI type 6");
const u8 gUnknown_Debug_083F80BA[] = DTR("AIタイプ7", "AI type 7");
const u8 gUnknown_Debug_083F80C1[] = DTR("AIタイプ8", "AI type 8");
const u8 gUnknown_Debug_083F80C8[] = DTR("AIタイプ9", "AI type 9");
const u8 gUnknown_Debug_083F80CF[] = DTR("AIタイプ10", "AI type 10");
const struct WatanabeDebugMenuItem gUnknown_Debug_083F80D8[] = {
{gUnknown_Debug_083F8090, {.type2 = 0x1}},
{gUnknown_Debug_083F8097, {.type2 = 0x2}},
{gUnknown_Debug_083F809E, {.type2 = 0x4}},
{gUnknown_Debug_083F80A5, {.type2 = 0x8}},
{gUnknown_Debug_083F80AC, {.type2 = 0x10}},
{gUnknown_Debug_083F80B3, {.type2 = 0x20}},
{gUnknown_Debug_083F80BA, {.type2 = 0x40}},
{gUnknown_Debug_083F80C1, {.type2 = 0x80}},
{gUnknown_Debug_083F80C8, {.type2 = 0x100}},
{gUnknown_Debug_083F80CF, {.type2 = 0x200}}
};
const u8 gUnknown_Debug_083F8128[] = DTR("くさ", "GRASS");
const u8 gUnknown_Debug_083F812B[] = DTR("ながい くさ", "TALL GRASS");
const u8 gUnknown_Debug_083F8132[] = DTR("すな", "SAND");
const u8 gUnknown_Debug_083F8135[] = DTR("みず", "WATER");
const u8 gUnknown_Debug_083F8138[] = DTR("うみ", "SEA");
const u8 gUnknown_Debug_083F813B[] = DTR("いけ", "POND");
const u8 gUnknown_Debug_083F813E[] = DTR("いわ", "ROCKY");
const u8 gUnknown_Debug_083F8141[] = DTR("どうくつ", "CAVE");
const u8 gUnknown_Debug_083F8146[] = DTR("そのた", "OTHER");
const struct WatanabeDebugMenuItem gUnknown_Debug_083F814C[] = {
{gUnknown_Debug_083F8128, {.type3 = 0x0}},
{gUnknown_Debug_083F812B, {.type3 = 0x1}},
{gUnknown_Debug_083F8132, {.type3 = 0x2}},
{gUnknown_Debug_083F8135, {.type3 = 0x3}},
{gUnknown_Debug_083F8138, {.type3 = 0x4}},
{gUnknown_Debug_083F813B, {.type3 = 0x5}},
{gUnknown_Debug_083F813E, {.type3 = 0x6}},
{gUnknown_Debug_083F8141, {.type3 = 0x7}},
{gUnknown_Debug_083F8146, {.type3 = 0x8}}
};
void debug_80C41D4(void)
{
debug_80C40C4(0);
debug_80C4214(0);
CreateTask(debug_80C42B8, 0);
}
void debug_80C41F4(void)
{
debug_80C40C4(1);
debug_80C4214(1);
CreateTask(debug_80C42B8, 0);
}
void debug_80C4214(UNUSED u8 a0)
{
u16 imeBak;
debug_80C35DC();
REG_WIN0H = 0;
REG_WIN0V = 0;
REG_WIN1H = 0;
REG_WIN1V = 0;
REG_WININ = 0x1111;
REG_WINOUT = 0x0031;
REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN;
REG_BLDALPHA = 0;
REG_BLDY = 7;
imeBak = REG_IME;
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
REG_IME = imeBak;
SetVBlankCallback(debug_80C3758);
SetMainCallback2(debug_80C370C);
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON;
REG_WIN0H = 0x01EF;
REG_WIN0V = 0x819F;
}
void debug_80C42B8(u8 taskId)
{
u8 sp00[] = DTR("ポケモンを えらんでね", "Choose POKéMON");
u8 sp0c[] = DTR("{COLOR RED}START:つぎへ", "{COLOR RED}START: NEXT");
Menu_DrawStdWindowFrame(0, 16, 29, 19);
Menu_PrintText(sp00, 1, 17);
Menu_PrintText(sp0c, 20, 17);
debug_80C4694();
debug_80C4704();
if (gUnknown_Debug_2038A0C[0])
gTasks[taskId].func = debug_80C44EC;
else
gTasks[taskId].func = debug_80C4348;
}
void debug_80C4348(u8 taskId)
{
debug_80C38E4(gUnknown_Debug_2038A0C[1] * 2 + 3, 1, 1, 14, 1);
REG_WIN1H = 0x0177;
REG_WIN1V = 0x017F;
gTasks[taskId].func = debug_80C43A8;
}
void debug_80C43A8(u8 taskId)
{
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
debug_sub_80A433C(gPlayerParty + gUnknown_Debug_2038A0C[1], debug_80C41D4);
DestroyTask(taskId);
}
else if (gMain.newKeys & B_BUTTON)
{
gTasks[taskId].func = debug_80C4F48;
}
else if (gMain.newKeys & START_BUTTON)
{
if (debug_80C4774())
{
PlaySE(SE_SELECT);
CalculatePlayerPartyCount();
CalculateEnemyPartyCount();
gTasks[taskId].func = debug_80C4D14;
}
}
else if (gMain.newKeys & (R_BUTTON | DPAD_RIGHT))
{
debug_80C38E4(0, 1, 1, 14, 0);
gTasks[taskId].func = debug_80C44EC;
}
else if (gMain.newAndRepeatedKeys & DPAD_UP && gUnknown_Debug_2038A0C[1] != 0)
{
gUnknown_Debug_2038A0C[1]--;
gTasks[taskId].func = debug_80C4348;
}
else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A0C[1] < 5 && GetMonData(gPlayerParty + gUnknown_Debug_2038A0C[1], MON_DATA_SPECIES) != SPECIES_NONE)
{
gUnknown_Debug_2038A0C[1]++;
gTasks[taskId].func = debug_80C4348;
}
}
void debug_80C44EC(u8 taskId)
{
debug_80C38E4(gUnknown_Debug_2038A0C[2] * 2 + 3, 16, 1, 14, 1);
REG_WIN1H = 0x79EF;
REG_WIN1V = 0x017F;
gTasks[taskId].func = debug_80C4550;
}
void debug_80C4550(u8 taskId)
{
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
debug_sub_80A433C(gEnemyParty + gUnknown_Debug_2038A0C[2], debug_80C41F4);
DestroyTask(taskId);
}
else if (gMain.newKeys & B_BUTTON)
{
gTasks[taskId].func = debug_80C4F48;
}
else if (gMain.newKeys & START_BUTTON)
{
if (debug_80C4774())
{
PlaySE(SE_SELECT);
CalculatePlayerPartyCount();
CalculateEnemyPartyCount();
gTasks[taskId].func = debug_80C4D14;
}
}
else if (gMain.newKeys & (L_BUTTON | DPAD_LEFT))
{
debug_80C38E4(0, 16, 1, 14, 0);
gTasks[taskId].func = debug_80C4348;
}
else if (gMain.newAndRepeatedKeys & DPAD_UP && gUnknown_Debug_2038A0C[2] != 0)
{
gUnknown_Debug_2038A0C[2]--;
gTasks[taskId].func = debug_80C44EC;
}
else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A0C[2] < 5 && GetMonData(gEnemyParty + gUnknown_Debug_2038A0C[2], MON_DATA_SPECIES) != SPECIES_NONE)
{
gUnknown_Debug_2038A0C[2]++;
gTasks[taskId].func = debug_80C44EC;
}
}
void debug_80C4694(void)
{
u8 i;
u8 sp00[] = DTR("{COLOR RED}じぶんの ポケモン", "{COLOR RED}Enemy's POKéMON");
u8 sp10[POKEMON_NAME_LENGTH + 1];
Menu_DrawStdWindowFrame(0, 0, 14, 15);
Menu_PrintText(sp00, 2, 1);
for (i = 0; i < PARTY_SIZE; i++)
{
debug_80C405C(sp10, GetMonData(gPlayerParty + i, MON_DATA_SPECIES));
Menu_PrintText(sp10, 2, 2 * i + 3);
}
}
void debug_80C4704(void)
{
u8 i;
u8 sp00[] = DTR("{COLOR RED}あいての ポケモン", "{COLOR RED}Your POKéMON");
u8 sp10[POKEMON_NAME_LENGTH + 1];
Menu_DrawStdWindowFrame(15, 0, 29, 15);
Menu_PrintText(sp00, 17, 1);
for (i = 0; i < PARTY_SIZE; i++)
{
debug_80C405C(sp10, GetMonData(gEnemyParty + i, MON_DATA_SPECIES));
Menu_PrintText(sp10, 17, 2 * i + 3);
}
}
bool8 debug_80C4774(void)
{
u8 i = gUnknown_Debug_2038A0C[12] - 1;
if (GetMonData(gPlayerParty + i, MON_DATA_SPECIES) != SPECIES_NONE && GetMonData(gEnemyParty + i, MON_DATA_SPECIES) != SPECIES_NONE)
return TRUE;
return FALSE;
}
void debug_80C47BC(u8 taskId)
{
u8 i;
u8 sp00[] = DTR("たいせんモードを えらんでね", "Choose a battle mode");
u8 sp10[] = DTR("{COLOR RED}START:つぎへ", "{COLOR RED}START: NEXT");
u8 sp20[] = DTR("{COLOR RED}バトルモード せんたく", "{COLOR RED}Battle mode:");
u8 sp30[] = DTR("{COLOR RED}トレーナーAI せんたく", "{COLOR RED}TRAINER AI mode:");
Menu_DrawStdWindowFrame(0, 16, 29, 19);
Menu_PrintText(sp00, 1, 17);
Menu_PrintText(sp10, 20, 17);
Menu_DrawStdWindowFrame(0, 0, 14, 15);
Menu_PrintText(sp20, 2, 1);
for (i = 0; i < ARRAY_COUNT(gUnknown_Debug_083F8068); i++)
Menu_PrintText(gUnknown_Debug_083F8068[i].text, 2, 2 * i + 3);
Menu_DrawStdWindowFrame(15, 0, 29, 15);
Menu_PrintText(sp30, 17, 1);
debug_80C4C44(gUnknown_Debug_2038A0C[4]);
gTasks[taskId].func = debug_80C48A0;
}
void debug_80C48A0(u8 taskId)
{
debug_80C38E4(2 * gUnknown_Debug_2038A0C[3] + 3, 1, 1, 14, 1);
REG_WIN1H = 0x0177;
REG_WIN1V = 0x017F;
gTasks[taskId].func = debug_80C4900;
}
void debug_80C4900(u8 taskId)
{
if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
SetMainCallback2(debug_80C370C);
LoadPlayerParty();
gSaveBlock2.playerGender = gUnknown_Debug_2038A0C[13];
gBattleTypeFlags = 0;
gUnknown_02023A14_50 = 0;
gTasks[taskId].func = debug_80C373C;
}
else if (gMain.newKeys & START_BUTTON || gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
gBattleTypeFlags = gUnknown_Debug_083F8068[gUnknown_Debug_2038A0C[3]].data.type1[0];
gUnknown_02023A14_50 = 8;
gUnknown_Debug_2038A0C[12] = gUnknown_Debug_083F8068[gUnknown_Debug_2038A0C[3]].data.type1[1];
if (gUnknown_Debug_2038A0C[3] == 1 || gUnknown_Debug_2038A0C[3] == 2)
{
debug_80C38E4(0, 1, 1, 14, 0);
gTasks[taskId].func = debug_80C4A60;
}
else
{
gTasks[taskId].func = debug_80C4F48;
}
}
else if (gMain.newAndRepeatedKeys & DPAD_UP && gUnknown_Debug_2038A0C[3] > 0)
{
gUnknown_Debug_2038A0C[3]--;
gTasks[taskId].func = debug_80C48A0;
}
else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A0C[3] < 2)
{
gUnknown_Debug_2038A0C[3]++;
gTasks[taskId].func = debug_80C48A0;
}
}
void debug_80C4A60(u8 taskId)
{
debug_80C38E4(gUnknown_Debug_2038A0C[5] * 2 + 3, 16, 1, 14, 1);
REG_WIN1H = 0x79EF;
REG_WIN1V = 0x017F;
gTasks[taskId].func = debug_80C4AC4;
}
void debug_80C4AC4(u8 taskId)
{
u8 r1 = gUnknown_Debug_2038A0C[4] + gUnknown_Debug_2038A0C[5];
if (gMain.newKeys & A_BUTTON)
{
u32 mask = gUnknown_Debug_083F80D8[r1].data.type2;
if (byte_3005E30 & mask)
byte_3005E30 &= (mask ^ 0xFFFF);
else
byte_3005E30 |= mask;
debug_80C4C44(gUnknown_Debug_2038A0C[4]);
gTasks[taskId].func = debug_80C4A60;
}
else if (gMain.newKeys & B_BUTTON)
{
debug_80C38E4(0, 16, 1, 14, 0);
gTasks[taskId].func = debug_80C48A0;
}
else if (gMain.newKeys & START_BUTTON)
{
PlaySE(SE_SELECT);
gTrainerBattleOpponent = SECRET_BASE_OPPONENT;
eWatanabe17000.unk1_4 = 0;
eWatanabe17000.unk2 = 0xAC;
eWatanabe17000.unk3 = 0xFF;
eWatanabe17000.unk9 = 0;
eWatanabe17000.unkA = 0;
eWatanabe17000.unkB = 0;
eWatanabe17000.unkC = 0;
gTasks[taskId].func = debug_80C4F48;
}
else if (gMain.newAndRepeatedKeys & DPAD_UP)
{
if (gUnknown_Debug_2038A0C[5] > 0)
gUnknown_Debug_2038A0C[5]--;
else if (gUnknown_Debug_2038A0C[4] > 0)
{
gUnknown_Debug_2038A0C[4]--;
debug_80C4C44(gUnknown_Debug_2038A0C[4]);
}
gTasks[taskId].func = debug_80C4A60;
}
else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A0C[5] < 9)
{
if (gUnknown_Debug_2038A0C[5] < 5)
gUnknown_Debug_2038A0C[5]++;
else if (gUnknown_Debug_2038A0C[4] < 4)
{
gUnknown_Debug_2038A0C[4]++;
debug_80C4C44(gUnknown_Debug_2038A0C[4]);
}
gTasks[taskId].func = debug_80C4A60;
}
}
void debug_80C4C44(u8 a0)
{
u8 i;
u8 j;
u8 sp00[15];
for (i = 0; i < 6; i++)
{
if (i + a0 < 10)
{
for (j = 0; gUnknown_Debug_083F80D8[i + a0].text[j] != EOS && j < 12; j++)
{
sp00[j + 3] = gUnknown_Debug_083F80D8[i + a0].text[j];
}
for (; j < 12; j++)
{
sp00[j + 3] = CHAR_SPACE;
}
sp00[14] = EOS;
sp00[0] = EXT_CTRL_CODE_BEGIN;
sp00[1] = 0x01;
if (byte_3005E30 & (1 << (i + a0)))
sp00[2] = 0x03;
else
sp00[2] = 0x01;
Menu_PrintText(sp00, 17, 2 * i + 3);
}
}
}
void debug_80C4D14(u8 taskId)
{
u8 sp00[] = DTR("たいせんモードを えらんでね", "Choose a battle mode");
u8 sp10[] = DTR("{COLOR RED}START:かいし", "{COLOR RED}START: BEGIN");
u8 sp20[] = DTR("{COLOR RED}バトルちけい せんたく", "{COLOR RED}Battle terrain:");
Menu_DrawStdWindowFrame(0, 16, 29, 19);
Menu_PrintText(sp00, 1, 17);
Menu_PrintText(sp10, 20, 17);
Menu_DrawStdWindowFrame(0, 0, 14, 15);
Menu_PrintText(sp20, 2, 1);
debug_80C4F00(gUnknown_Debug_2038A0C[6]);
Menu_DrawStdWindowFrame(15, 0, 29,15);
gTasks[taskId].func = debug_80C4DB8;
}
void debug_80C4DB8(u8 taskId)
{
debug_80C38E4(2 * gUnknown_Debug_2038A0C[7] + 3, 1, 1, 14, 1);
REG_WIN1H = 0x0177;
REG_WIN1V = 0x017F;
gTasks[taskId].func = debug_80C4E18;
}
void debug_80C4E18(u8 taskId)
{
u8 r6 = gUnknown_Debug_2038A0C[6] + gUnknown_Debug_2038A0C[7];
if (gMain.newKeys & B_BUTTON)
{
gTasks[taskId].func = debug_80C42B8;
}
else if (gMain.newKeys & START_BUTTON || gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
gBattleTerrain = gUnknown_Debug_083F814C[r6].data.type3;
gTasks[taskId].func = debug_80C5158;
}
else if (gMain.newAndRepeatedKeys & DPAD_UP)
{
if (gUnknown_Debug_2038A0C[7] > 0)
gUnknown_Debug_2038A0C[7]--;
else if (gUnknown_Debug_2038A0C[6] > 0)
{
gUnknown_Debug_2038A0C[6]--;
debug_80C4F00(gUnknown_Debug_2038A0C[6]);
}
gTasks[taskId].func = debug_80C4DB8;
}
else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A0C[7] < 8)
{
if (gUnknown_Debug_2038A0C[7] < 5)
gUnknown_Debug_2038A0C[7]++;
else if (gUnknown_Debug_2038A0C[6] < 3)
{
gUnknown_Debug_2038A0C[6]++;
debug_80C4F00(gUnknown_Debug_2038A0C[6]);
}
gTasks[taskId].func = debug_80C4DB8;
}
}
void debug_80C4F00(u8 a0)
{
u8 i;
Menu_BlankWindowRect(1, 3, 13, 14);
for (i = 0; i < 6; i++)
{
if (i < 9)
Menu_PrintText(gUnknown_Debug_083F814C[i + a0].text, 2, 2 * i + 3);
}
}
void debug_80C4F48(u8 taskId)
{
u8 sp00[] = DTR("じぶんの せいべつを えらんでね", "Choose a gender");
u8 sp14[] = DTR("{COLOR RED}START:つぎへ", "{COLOR RED}START: NEXT");
u8 sp24[] = DTR("{COLOR RED}せいべつ せんたく", "{COLOR RED}Gender:");
u8 sp34[] = DTR("おとこ", "BOY");
u8 sp38[] = DTR("おんな", "GIRL");
Menu_DrawStdWindowFrame(0, 16, 29, 19);
Menu_PrintText(sp00, 1, 17);
Menu_PrintText(sp14, 20, 17);
Menu_DrawStdWindowFrame(0, 0, 14, 15);
Menu_PrintText(sp24, 2, 1);
Menu_BlankWindowRect(1, 3, 13, 14);
Menu_PrintText(sp24, 2, 1);
Menu_PrintText(sp34, 2, 3);
Menu_PrintText(sp38, 2, 5);
Menu_DrawStdWindowFrame(15, 0, 29, 15);
gTasks[taskId].func = debug_80C5038;
}
void debug_80C5038(u8 taskId)
{
debug_80C38E4(gUnknown_Debug_2038A0C[8] * 2 + 3, 1, 1, 14, 1);
REG_WIN1H = 0x0177;
REG_WIN1V = 0x017F;
gTasks[taskId].func = debug_80C5098;
}
void debug_80C5098(u8 taskId)
{
if (gMain.newKeys & B_BUTTON)
{
gTasks[taskId].func = debug_80C47BC;
}
else if (gMain.newKeys & START_BUTTON || gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
gSaveBlock2.playerGender = gUnknown_Debug_2038A0C[8];
gTasks[taskId].func = debug_80C42B8;
}
else if (gMain.newAndRepeatedKeys & DPAD_UP && gUnknown_Debug_2038A0C[8] > 0)
{
gUnknown_Debug_2038A0C[8]--;
gTasks[taskId].func = debug_80C5038;
}
else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A0C[8] < 1)
{
gUnknown_Debug_2038A0C[8]++;
gTasks[taskId].func = debug_80C5038;
}
}
void debug_80C5158(u8 taskId)
{
gTasks[taskId].func = debug_80C5174;
}
void debug_80C5174(u8 taskId)
{
gTasks[taskId].func = debug_80C5190;
}
void debug_80C5190(u8 taskId)
{
gTasks[taskId].func = debug_80C51AC;
}
void debug_80C51AC(u8 taskId)
{
gTasks[taskId].func = debug_80C51C8;
}
void debug_80C51C8(u8 taskId)
{
gTasks[taskId].func = debug_80C51E4;
}
void debug_80C51E4(u8 taskId)
{
sub_80408BC();
gMain.savedCallback = debug_80C41A8;
SetMainCallback2(debug_sub_800D684);
}
void debug_80C5208(void)
{
u16 i;
gUnknown_Debug_2038A1C = &eWatanabe18000;
for (i = 0; i < 64; i++)
{
gUnknown_Debug_2038A1C->unk64[i] = 0;
}
gUnknown_Debug_2038A1C->unk64[0] = 0xfc;
gUnknown_Debug_2038A1C->unk64[3] = gSaveBlock2.playerTrainerId[0] | (gSaveBlock2.playerTrainerId[1] << 8) | (gSaveBlock2.playerTrainerId[2] << 16) | (gSaveBlock2.playerTrainerId[3] << 24);
gUnknown_Debug_2038A1C->unk64[4] = (Random() << 16) | Random();
gUnknown_Debug_2038A1C->unk64[1] = 1;
gUnknown_Debug_2038A1C->unk64[2] = 1;
debug_80C5C94();
}
bool8 debug_80C527C(struct Pokemon *pokemon)
{
u8 i;
for (i = 0; i < PARTY_SIZE; i++)
{
if (GetMonData(gPlayerParty + i, MON_DATA_SPECIES, NULL) == SPECIES_NONE)
{
gPlayerParty[i] = *pokemon;
gPlayerPartyCount = i + 1;
return FALSE;
}
}
SendMonToPC(&gUnknown_Debug_2038A1C->pokemon);
return TRUE;
}
const u8 Str_83F8237[] = _("Kind");
const struct WatanabeDebugMenuItemSubstruct _83F823C = {1, 0x00000182, 0x00, 0x03};
const u8 Str_83F8248[] = _("Level");
const struct WatanabeDebugMenuItemSubstruct _83F8250 = {1, 0x00000064, 0x00, 0x03};
const u8 Str_83F825C[] = _("EXP Points");
const struct WatanabeDebugMenuItemSubstruct _83F8268 = {1, 0x001E8480, 0x00, 0x07};
const u8 Str_83F8274[] = _("ID");
const struct WatanabeDebugMenuItemSubstruct _83F8278 = {0, 0xFFFFFFFF, 0x00, 0x0A};
const u8 Str_83F8284[] = _("Rnd Numbers");
const struct WatanabeDebugMenuItemSubstruct _83F8290 = {0, 0xFFFFFFFF, 0x00, 0x0A};
const u8 Str_83F829C[] = _("Sex");
const struct WatanabeDebugMenuItemSubstruct _83F82A0 = {0, 0x00000002, 0x00, 0xFF};
const u8 Str_83F82AC[] = _("Character");
const struct WatanabeDebugMenuItemSubstruct _83F82B8 = {0, 0x00000018, 0x00, 0xFF};
const u8 Str_83F82C4[] = _("Move1");
const struct WatanabeDebugMenuItemSubstruct _83F82CC = {0, 0x00000162, 0x00, 0x03};
const u8 Str_83F82D8[] = _("Move2");
const struct WatanabeDebugMenuItemSubstruct _83F82E0 = {0, 0x00000162, 0x00, 0x03};
const u8 Str_83F82EC[] = _("Move3");
const struct WatanabeDebugMenuItemSubstruct _83F82F4 = {0, 0x00000162, 0x00, 0x03};
const u8 Str_83F8300[] = _("Move4");
const struct WatanabeDebugMenuItemSubstruct _83F8308 = {0, 0x00000162, 0x00, 0x03};
const u8 Str_83F8314[] = _("Hold");
const struct WatanabeDebugMenuItemSubstruct _83F831C = {0, 0x000000FF, 0x00, 0x03};
const u8 Str_83F8328[] = _("SP. Ability");
const struct WatanabeDebugMenuItemSubstruct _83F8334 = {0, 0x00000001, 0x00, 0xFF};
const u8 Str_83F8340[] = _("HPrnd");
const struct WatanabeDebugMenuItemSubstruct _83F8348 = {0, 0x0000001F, 0x00, 0x02};
const u8 Str_83F8354[] = _("HPexp");
const struct WatanabeDebugMenuItemSubstruct _83F835C = {0, 0x000000FF, 0x00, 0x03};
const u8 Str_83F8368[] = _("ATKrnd");
const struct WatanabeDebugMenuItemSubstruct _83F8370 = {0, 0x0000001F, 0x00, 0x02};
const u8 Str_83F837C[] = _("ATKexp");
const struct WatanabeDebugMenuItemSubstruct _83F8384 = {0, 0x000000FF, 0x00, 0x03};
const u8 Str_83F8390[] = _("DEFrnd");
const struct WatanabeDebugMenuItemSubstruct _83F8398 = {0, 0x0000001F, 0x00, 0x02};
const u8 Str_83F83A4[] = _("DEFexp");
const struct WatanabeDebugMenuItemSubstruct _83F83AC = {0, 0x000000FF, 0x00, 0x03};
const u8 Str_83F83B8[] = _("SPDrnd");
const struct WatanabeDebugMenuItemSubstruct _83F83C0 = {0, 0x0000001F, 0x00, 0x02};
const u8 Str_83F83CC[] = _("SPDexp");
const struct WatanabeDebugMenuItemSubstruct _83F83D4 = {0, 0x000000FF, 0x00, 0x03};
const u8 Str_83F83E0[] = _("SP. ATK$rnd");
const struct WatanabeDebugMenuItemSubstruct _83F83EC = {0, 0x0000001F, 0x00, 0x02};
const u8 Str_83F83F8[] = _("SP. ATK$exp");
const struct WatanabeDebugMenuItemSubstruct _83F8404 = {0, 0x000000FF, 0x00, 0x03};
const u8 Str_83F8410[] = _("SP. DEF$rnd");
const struct WatanabeDebugMenuItemSubstruct _83F841C = {0, 0x0000001F, 0x00, 0x02};
const u8 Str_83F8428[] = _("SP. DEF$exp");
const struct WatanabeDebugMenuItemSubstruct _83F8434 = {0, 0x000000FF, 0x00, 0x03};
const u8 Str_83F8440[] = _("Cool");
const struct WatanabeDebugMenuItemSubstruct _83F8448 = {0, 0x000000FF, 0x00, 0x03};
const u8 Str_83F8454[] = _("Beauty");
const struct WatanabeDebugMenuItemSubstruct _83F845C = {0, 0x000000FF, 0x00, 0x03};
const u8 Str_83F8468[] = _("Cute");
const struct WatanabeDebugMenuItemSubstruct _83F8470 = {0, 0x000000FF, 0x00, 0x03};
const u8 Str_83F847C[] = _("Smart");
const struct WatanabeDebugMenuItemSubstruct _83F8484 = {0, 0x000000FF, 0x00, 0x03};
const u8 Str_83F8490[] = _("Tough");
const struct WatanabeDebugMenuItemSubstruct _83F8498 = {0, 0x000000FF, 0x00, 0x03};
const u8 Str_83F84A4[] = _("Sheen");
const struct WatanabeDebugMenuItemSubstruct _83F84AC = {0, 0x000000FF, 0x00, 0x03};
const u8 Str_83F84B8[] = _("Tameness");
const struct WatanabeDebugMenuItemSubstruct _83F84C4 = {0, 0x000000FF, 0x00, 0x03};
const u8 Str_83F84D0[] = _("{PK}RUS");
const struct WatanabeDebugMenuItemSubstruct _83F84D8 = {0, 0x000000FF, 0x00, 0x03};
const u8 Str_83F84E4[] = _("EGG$");
const struct WatanabeDebugMenuItemSubstruct _83F84EC = {0, 0x00000001, 0x00, 0xFF};
const u8 Str_83F84F8[] = _("Status");
const struct WatanabeDebugMenuItemSubstruct _83F8500 = {0, 0x00000006, 0x00, 0xFF};
const u8 gUnknown_Debug_083F850A[] = _("{COLOR RED}HP  ");
const u8 gUnknown_Debug_083F8514[] = _("{COLOR RED}ATK ");
const u8 gUnknown_Debug_083F851C[] = _("{COLOR RED}DEF ");
const u8 gUnknown_Debug_083F8524[] = _("{COLOR RED}SPEED");
const u8 gUnknown_Debug_083F852D[] = _("{COLOR RED}SP。ATK");
const u8 gUnknown_Debug_083F8537[] = _("{COLOR RED}SP。DEF");
const u8 gUnknown_Debug_083F8541[] = DTR("なし", "without");
const u8 gUnknown_Debug_083F8544[] = _("♂");
const u8 gUnknown_Debug_083F8546[] = _("♀");
const u8 gUnknown_Debug_083F8548[] = _("ー");
const u8 gUnknown_Debug_083F854A[] = _("ON");
const u8 gUnknown_Debug_083F854D[] = _("OFF");
const struct WatanabeDebugMenuItem gUnknown_Debug_083F8554[] = {
{Str_83F8237, {.type4 = &_83F823C}},
{Str_83F8248, {.type4 = &_83F8250}},
{Str_83F825C, {.type4 = &_83F8268}},
{Str_83F8274, {.type4 = &_83F8278}},
{Str_83F8284, {.type4 = &_83F8290}},
{Str_83F829C, {.type4 = &_83F82A0}},
{Str_83F82AC, {.type4 = &_83F82B8}},
{Str_83F82C4, {.type4 = &_83F82CC}},
{Str_83F82D8, {.type4 = &_83F82E0}},
{Str_83F82EC, {.type4 = &_83F82F4}},
{Str_83F8300, {.type4 = &_83F8308}},
{Str_83F8314, {.type4 = &_83F831C}},
{Str_83F8328, {.type4 = &_83F8334}},
{Str_83F8340, {.type4 = &_83F8348}},
{Str_83F8354, {.type4 = &_83F835C}},
{Str_83F8368, {.type4 = &_83F8370}},
{Str_83F837C, {.type4 = &_83F8384}},
{Str_83F8390, {.type4 = &_83F8398}},
{Str_83F83A4, {.type4 = &_83F83AC}},
{Str_83F83B8, {.type4 = &_83F83C0}},
{Str_83F83CC, {.type4 = &_83F83D4}},
{Str_83F83E0, {.type4 = &_83F83EC}},
{Str_83F83F8, {.type4 = &_83F8404}},
{Str_83F8410, {.type4 = &_83F841C}},
{Str_83F8428, {.type4 = &_83F8434}},
{Str_83F8440, {.type4 = &_83F8448}},
{Str_83F8454, {.type4 = &_83F845C}},
{Str_83F8468, {.type4 = &_83F8470}},
{Str_83F847C, {.type4 = &_83F8484}},
{Str_83F8490, {.type4 = &_83F8498}},
{Str_83F84A4, {.type4 = &_83F84AC}},
{Str_83F84B8, {.type4 = &_83F84C4}},
{Str_83F84D0, {.type4 = &_83F84D8}},
{Str_83F84E4, {.type4 = &_83F84EC}},
{Str_83F84F8, {.type4 = &_83F8500}}
};
const u8 gUnknown_Debug_083F866C[] = {
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0xFF
};
const u8 gUnknown_Debug_083F8674[] = {
0x22, 0x1F, 0x20, 0xFF
};
const u8 gUnknown_Debug_083F8678[] = {
0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0xFF
};
const u8 gUnknown_Debug_083F867F[] = {
0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0xFE, 0xFF
};
const u8 gUnknown_Debug_083F8687[] = {
0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0xFD, 0xFF
};
const u8 gUnknown_Debug_083F868F[] = {
0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0xFF
};
const struct WatanabeDebugMenuItem gUnknown_Debug_083F8698[] = {
{gUnknown_Debug_083F866C, {.type3 = 0x5}},
{gUnknown_Debug_083F8674, {.type3 = 0x3}},
{gUnknown_Debug_083F8678, {.type3 = 0x6}},
{gUnknown_Debug_083F867F, {.type3 = 0x6}},
{gUnknown_Debug_083F8687, {.type3 = 0x6}},
{gUnknown_Debug_083F868F, {.type3 = 0x6}}
};
#if (ENGLISH && REVISION == 0)
const u8 gUnknown_Debug_083F86C8[] = _("ふつう");
const u8 gUnknown_Debug_083F86CC[] = _("ねむり");
const u8 gUnknown_Debug_083F86D0[] = _("どく");
const u8 gUnknown_Debug_083F86D4[] = _("やけど");
const u8 gUnknown_Debug_083F86D8[] = _("こおり");
const u8 gUnknown_Debug_083F86DC[] = _("まひ");
const u8 gUnknown_Debug_083F86E0[] = _("どくどく");
#else
const u8 gUnknown_Debug_083F86C8[] = _("ーーー");
const u8 gUnknown_Debug_083F86CC[] = _("SLP");
const u8 gUnknown_Debug_083F86D0[] = _("PSN");
const u8 gUnknown_Debug_083F86D4[] = _("BRN");
const u8 gUnknown_Debug_083F86D8[] = _("FRZ");
const u8 gUnknown_Debug_083F86DC[] = _("PAR");
const u8 gUnknown_Debug_083F86E0[] = _("PSN2");
#endif
const struct WatanabeDebugMenuItem gUnknown_Debug_083F86E8[] = {
{gUnknown_Debug_083F86C8, {.type3 = 0x0}},
{gUnknown_Debug_083F86CC, {.type3 = 0x1}},
{gUnknown_Debug_083F86D0, {.type3 = 0x8}},
{gUnknown_Debug_083F86D4, {.type3 = 0x10}},
{gUnknown_Debug_083F86D8, {.type3 = 0x20}},
{gUnknown_Debug_083F86DC, {.type3 = 0x40}},
{gUnknown_Debug_083F86E0, {.type3 = 0x80}}
};
#if (ENGLISH && REVISION == 0)
const u8 gUnknown_Debug_083F8720[] = _("ポケモンを てもちに くわえました");
const u8 gUnknown_Debug_083F872A[] = _("ポケモンを ボックスに くわえました");
#else
const u8 gUnknown_Debug_083F8720[] = _("PKMN{RIGHT_ARROW}LIST");
const u8 gUnknown_Debug_083F872A[] = _("PKMN{RIGHT_ARROW}BOX");
#endif
void InitCreatePokemon(void)
{
u8 sp04[] = _("Create POKéMON LR:Shift START:Add");
debug_80C35DC();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
REG_BLDCNT = 0x0000;
REG_BLDALPHA = 0x0000;
REG_BLDY = 0x0000;
{
u16 imeBak = REG_IME;
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
REG_IME = imeBak;
}
REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
SetVBlankCallback(debug_80C3758);
SetMainCallback2(debug_80C370C);
Menu_DrawStdWindowFrame(0, 0, 29, 3);
Menu_PrintText(sp04, 1, 1);
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON;
CreateTask(debug_80C53A4, 0);
debug_80C5208();
gUnknown_Debug_2038A1C->unk168 = 0;
gUnknown_Debug_2038A1C->unk169 = 0;
}
void debug_80C53A4(u8 taskId)
{
gTasks[taskId].func = debug_80C53C0;
}
void debug_80C53C0(u8 taskId)
{
debug_80C6384();
debug_80C627C(0);
gTasks[taskId].func = debug_80C53F0;
}
void debug_80C53F0(u8 taskId)
{
if (gMain.newKeys & A_BUTTON)
{
gUnknown_Debug_2038A1C->unk164 = gUnknown_Debug_2038A1C->unk64[gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]];
gUnknown_Debug_2038A1C->unk16a = 0;
debug_80C643C();
gTasks[taskId].func = debug_80C55E4;
}
else if (gMain.newKeys & B_BUTTON)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
SetMainCallback2(debug_80C370C);
gTasks[taskId].func = debug_80C373C;
}
else if (gMain.newKeys & START_BUTTON)
{
bool8 r4;
PlaySE(SE_SELECT);
debug_80C5FFC();
r4 = debug_80C527C(&gUnknown_Debug_2038A1C->pokemon);
Menu_DrawStdWindowFrame(3, 8, 26, 11);
if (r4)
Menu_PrintText(gUnknown_Debug_083F872A, 4, 9);
else
Menu_PrintText(gUnknown_Debug_083F8720, 4, 9);
gTasks[taskId].func = debug_80C5708;
}
else if (gMain.newKeys & SELECT_BUTTON)
{
u32 r4 = gUnknown_Debug_2038A1C->unk64[0];
GetSetPokedexFlag(r4, 2);
GetSetPokedexFlag(r4, 3);
PlaySE(SE_SELECT);
}
else if (gMain.newKeys & DPAD_UP)
{
debug_80C627C(2);
}
else if (gMain.newKeys & DPAD_DOWN)
{
debug_80C627C(1);
}
else if (gMain.newKeys & L_BUTTON && gUnknown_Debug_2038A1C->unk168 > 0)
{
gUnknown_Debug_2038A1C->unk168--;
gUnknown_Debug_2038A1C->unk169 = 0;
gTasks[taskId].func = debug_80C53C0;
}
else if (gMain.newKeys & R_BUTTON && gUnknown_Debug_2038A1C->unk168 < 5)
{
gUnknown_Debug_2038A1C->unk168++;
gUnknown_Debug_2038A1C->unk169 = 0;
gTasks[taskId].func = debug_80C53C0;
}
}
void debug_80C55E4(u8 taskId)
{
u8 r7 = gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169];
if (gMain.newKeys & A_BUTTON)
{
gTasks[taskId].func = debug_80C53C0;
}
else if (gMain.newKeys & B_BUTTON)
{
gUnknown_Debug_2038A1C->unk64[r7] = gUnknown_Debug_2038A1C->unk164;
gTasks[taskId].func = debug_80C53C0;
}
else if (gMain.newAndRepeatedKeys & DPAD_UP)
{
debug_80C6544(1);
debug_80C643C();
}
else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
{
debug_80C6544(2);
debug_80C643C();
}
else if (gUnknown_Debug_083F8554[r7].data.type4->unk9 != 0xFF)
{
if (gMain.newKeys & DPAD_LEFT && gUnknown_Debug_2038A1C->unk16a < gUnknown_Debug_083F8554[r7].data.type4->unk9 - 1)
{
gUnknown_Debug_2038A1C->unk16a++;
debug_80C643C();
}
else if (gMain.newKeys & DPAD_RIGHT && gUnknown_Debug_2038A1C->unk16a > 0)
{
gUnknown_Debug_2038A1C->unk16a--;
debug_80C643C();
}
}
}
void debug_80C5708(u8 taskId)
{
if (gMain.newKeys & A_BUTTON)
{
gTasks[taskId].func = debug_80C53C0;
}
}
u8 debug_80C5738(u8 * a0, u8 a1, u8 a2)
{
u16 i;
u8 r5;
u8 r2;
if (a1 == 0xfe)
{
debug_80C689C(a0, gUnknown_Debug_083F850A, 7);
debug_80C6678(a0 + 7, gUnknown_Debug_2038A1C->unk64[35], 3, 1);
a0[19] = CHAR_SPACE;
a0[20] = CHAR_SPACE;
debug_80C689C(a0 + 21, gUnknown_Debug_083F8514, 7);
debug_80C6678(a0 + 28, gUnknown_Debug_2038A1C->unk64[36], 3, 1);
a0[40] = CHAR_SPACE;
a0[41] = CHAR_SPACE;
debug_80C689C(a0 + 42, gUnknown_Debug_083F851C, 9);
debug_80C6678(a0 + 49, gUnknown_Debug_2038A1C->unk64[37], 3, 1);
return 0;
}
if (a1 == 0xfd)
{
debug_80C689C(a0, gUnknown_Debug_083F8524, 9);
debug_80C6678(a0 + 9, gUnknown_Debug_2038A1C->unk64[38], 3, 1);
a0[21] = CHAR_SPACE;
a0[22] = CHAR_SPACE;
debug_80C689C(a0 + 23, gUnknown_Debug_083F852D, 9);
debug_80C6678(a0 + 32, gUnknown_Debug_2038A1C->unk64[39], 3, 1);
a0[44] = CHAR_SPACE;
a0[45] = CHAR_SPACE;
debug_80C689C(a0 + 46, gUnknown_Debug_083F8537, 9);
debug_80C6678(a0 + 55, gUnknown_Debug_2038A1C->unk64[40], 3, 1);
return 0;
}
for (i = 0; i < 12; i++)
a0[i] = CHAR_SPACE;
debug_80C689C(a0, gUnknown_Debug_083F8554[a1].text, 11);
for (i = 12; i < 256; i++)
a0[i] = EOS;
r2 = gUnknown_Debug_083F8554[a1].data.type4->unk9;
r5 = r2 * 4;
switch (a1)
{
default:
a0[0] = EOS;
break;
case 0:
debug_80C6678(a0 + 10, gUnknown_Debug_2038A1C->unk64[a1], r2, a2);
a0[10 + r5] = CHAR_SPACE;
a0[11 + r5] = EXT_CTRL_CODE_BEGIN;
a0[12 + r5] = 0x01;
a0[13 + r5] = a2;
debug_80C689C(a0 + 14 + r5, gSpeciesNames[NationalPokedexNumToSpecies(gUnknown_Debug_2038A1C->unk64[a1])], 10);
break;
case 5:
switch (gUnknown_Debug_2038A1C->unk64[a1])
{
case 0:
debug_80C689C(a0 + 10, gUnknown_Debug_083F8546, 2);
break;
case 1:
debug_80C689C(a0 + 10, gUnknown_Debug_083F8541, 2);
break;
case 2:
debug_80C689C(a0 + 10, gUnknown_Debug_083F8544, 2);
break;
}
break;
case 7 ... 10:
debug_80C6678(a0 + 10, gUnknown_Debug_2038A1C->unk64[a1], r2, a2);
a0[10 + r5] = CHAR_SPACE;
a0[11 + r5] = EXT_CTRL_CODE_BEGIN;
a0[12 + r5] = 0x01;
a0[13 + r5] = a2;
debug_80C689C(a0 + 14 + r5, gMoveNames[gUnknown_Debug_2038A1C->unk64[a1]], 12);
break;
case 11:
debug_80C6678(a0 + 10, gUnknown_Debug_2038A1C->unk64[a1], r2, a2);
a0[10 + r5] = CHAR_SPACE;
a0[11 + r5] = EXT_CTRL_CODE_BEGIN;
a0[12 + r5] = 0x01;
a0[13 + r5] = a2;
if (gUnknown_Debug_2038A1C->unk64[a1] != ITEM_NONE)
debug_80C689C(a0 + 14 + r5, ItemId_GetName(gUnknown_Debug_2038A1C->unk64[a1]), 9);
else
debug_80C689C(a0 + 14 + r5, gUnknown_Debug_083F8541, 9);
break;
case 12:
a0 += 12;
debug_80C689C(a0, gAbilityNames[GetAbilityBySpecies(NationalPokedexNumToSpecies(gUnknown_Debug_2038A1C->unk64[0]), gUnknown_Debug_2038A1C->unk64[a1])], 12);
break;
case 34:
debug_80C689C(a0 + 10, gUnknown_Debug_083F86E8[gUnknown_Debug_2038A1C->unk64[a1]].text, 4);
break;
case 1 ... 4:
case 13 ... 32:
debug_80C6678(a0 + 12, gUnknown_Debug_2038A1C->unk64[a1], r2, a2);
break;
case 33:
if (gUnknown_Debug_2038A1C->unk64[a1])
debug_80C689C(a0 + 10, gUnknown_Debug_083F854A, 4);
else
debug_80C689C(a0 + 10, gUnknown_Debug_083F854D, 4);
break;
case 6:
debug_80C689C(a0 + 10, gNatureNames[gUnknown_Debug_2038A1C->unk64[a1]], 5);
break;
}
return 0;
}
u32 debug_80C5B60(u8 a0)
{
return gUnknown_Debug_2038A1C->unk64[a0];
}
void debug_80C5B74(u32 a0, u8 a1)
{
switch (a1)
{
default:
gUnknown_Debug_2038A1C->unk64[a1] = a0;
break;
case 0:
case 3:
case 4:
gUnknown_Debug_2038A1C->unk64[a1] = a0;
debug_80C5C94();
break;
case 1:
gUnknown_Debug_2038A1C->unk64[a1] = a0;
gUnknown_Debug_2038A1C->unk64[2] = gExperienceTables[gBaseStats[NationalPokedexNumToSpecies(gUnknown_Debug_2038A1C->unk64[0])].growthRate][a0];
debug_80C5C94();
break;
case 2:
gUnknown_Debug_2038A1C->unk64[a1] = a0;
debug_80C5DEC();
break;
case 13 ... 24:
gUnknown_Debug_2038A1C->unk64[a1] = a0;
debug_80C5EF4();
break;
}
}
void debug_80C5C94(void)
{
u32 ivs = gUnknown_Debug_2038A1C->unk64[13] & 0x1f;
ivs |= (gUnknown_Debug_2038A1C->unk64[15] & 0x1f) << 5;
ivs |= (gUnknown_Debug_2038A1C->unk64[17] & 0x1f) << 10;
ivs |= (gUnknown_Debug_2038A1C->unk64[19] & 0x1f) << 15;
ivs |= (gUnknown_Debug_2038A1C->unk64[21] & 0x1f) << 20;
ivs |= (gUnknown_Debug_2038A1C->unk64[23] & 0x1f) << 25;
CreateMon(&gUnknown_Debug_2038A1C->pokemon, NationalPokedexNumToSpecies(gUnknown_Debug_2038A1C->unk64[0]), gUnknown_Debug_2038A1C->unk64[1], ivs, TRUE, gUnknown_Debug_2038A1C->unk64[4], TRUE, gUnknown_Debug_2038A1C->unk64[3]);
gUnknown_Debug_2038A1C->unk64[5] = (u8)(GetMonGender(&gUnknown_Debug_2038A1C->pokemon) + 2);
gUnknown_Debug_2038A1C->unk64[6] = GetNature(&gUnknown_Debug_2038A1C->pokemon);
gUnknown_Debug_2038A1C->unk64[7] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE1);
gUnknown_Debug_2038A1C->unk64[8] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE2);
gUnknown_Debug_2038A1C->unk64[9] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE3);
gUnknown_Debug_2038A1C->unk64[10] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE4);
gUnknown_Debug_2038A1C->unk64[2] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_EXP);
gUnknown_Debug_2038A1C->unk64[35] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MAX_HP);
gUnknown_Debug_2038A1C->unk64[36] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ATK);
gUnknown_Debug_2038A1C->unk64[37] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_DEF);
gUnknown_Debug_2038A1C->unk64[38] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPEED);
gUnknown_Debug_2038A1C->unk64[39] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPATK);
gUnknown_Debug_2038A1C->unk64[40] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPDEF);
}
void debug_80C5DEC(void)
{
u32 zero = 0;
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_EXP, gUnknown_Debug_2038A1C->unk64 + 2);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE1, &zero);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE2, &zero);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE3, &zero);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE4, &zero);
CalculateMonStats(&gUnknown_Debug_2038A1C->pokemon);
GiveMonInitialMoveset(&gUnknown_Debug_2038A1C->pokemon);
gUnknown_Debug_2038A1C->unk64[1] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_LEVEL);
gUnknown_Debug_2038A1C->unk64[7] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE1);
gUnknown_Debug_2038A1C->unk64[8] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE2);
gUnknown_Debug_2038A1C->unk64[9] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE3);
gUnknown_Debug_2038A1C->unk64[10] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MOVE4);
gUnknown_Debug_2038A1C->unk64[35] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MAX_HP);
gUnknown_Debug_2038A1C->unk64[36] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ATK);
gUnknown_Debug_2038A1C->unk64[37] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_DEF);
gUnknown_Debug_2038A1C->unk64[38] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPEED);
gUnknown_Debug_2038A1C->unk64[39] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPATK);
gUnknown_Debug_2038A1C->unk64[40] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPDEF);
}
void debug_80C5EF4(void)
{
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_HP_IV, gUnknown_Debug_2038A1C->unk64 + 13);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_HP_EV, gUnknown_Debug_2038A1C->unk64 + 14);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ATK_IV, gUnknown_Debug_2038A1C->unk64 + 15);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ATK_EV, gUnknown_Debug_2038A1C->unk64 + 16);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_DEF_IV, gUnknown_Debug_2038A1C->unk64 + 17);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_DEF_EV, gUnknown_Debug_2038A1C->unk64 + 18);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPEED_IV, gUnknown_Debug_2038A1C->unk64 + 19);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPEED_EV, gUnknown_Debug_2038A1C->unk64 + 20);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPATK_IV, gUnknown_Debug_2038A1C->unk64 + 21);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPATK_EV, gUnknown_Debug_2038A1C->unk64 + 22);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPDEF_IV, gUnknown_Debug_2038A1C->unk64 + 23);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPDEF_EV, gUnknown_Debug_2038A1C->unk64 + 24);
CalculateMonStats(&gUnknown_Debug_2038A1C->pokemon);
gUnknown_Debug_2038A1C->unk64[35] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MAX_HP);
gUnknown_Debug_2038A1C->unk64[36] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ATK);
gUnknown_Debug_2038A1C->unk64[37] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_DEF);
gUnknown_Debug_2038A1C->unk64[38] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPEED);
gUnknown_Debug_2038A1C->unk64[39] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPATK);
gUnknown_Debug_2038A1C->unk64[40] = GetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPDEF);
}
void debug_80C5FFC(void)
{
u32 ivs;
u8 sp10[] = DTR("たまご", "EGG");
#if (ENGLISH && REVISION == 0)
u8 sp14[] = _("デバッグポケ1");
#else
u8 sp14[] = _("DebugーG");
#endif
u8 one;
u16 ff;
ivs = gUnknown_Debug_2038A1C->unk64[13] & 0x1f;
ivs |= (gUnknown_Debug_2038A1C->unk64[15] & 0x1f) << 5;
ivs |= (gUnknown_Debug_2038A1C->unk64[17] & 0x1f) << 10;
ivs |= (gUnknown_Debug_2038A1C->unk64[19] & 0x1f) << 15;
ivs |= (gUnknown_Debug_2038A1C->unk64[21] & 0x1f) << 20;
ivs |= (gUnknown_Debug_2038A1C->unk64[23] & 0x1f) << 25;
CreateMon(&gUnknown_Debug_2038A1C->pokemon, NationalPokedexNumToSpecies(gUnknown_Debug_2038A1C->unk64[0]), gUnknown_Debug_2038A1C->unk64[1], ivs, TRUE, gUnknown_Debug_2038A1C->unk64[4], TRUE, gUnknown_Debug_2038A1C->unk64[3]);
if (gUnknown_Debug_2038A1C->unk64[7] != MOVE_NONE)
SetMonMoveSlot(&gUnknown_Debug_2038A1C->pokemon, gUnknown_Debug_2038A1C->unk64[7], 0);
if (gUnknown_Debug_2038A1C->unk64[8] != MOVE_NONE)
SetMonMoveSlot(&gUnknown_Debug_2038A1C->pokemon, gUnknown_Debug_2038A1C->unk64[8], 1);
if (gUnknown_Debug_2038A1C->unk64[9] != MOVE_NONE)
SetMonMoveSlot(&gUnknown_Debug_2038A1C->pokemon, gUnknown_Debug_2038A1C->unk64[9], 2);
if (gUnknown_Debug_2038A1C->unk64[10] != MOVE_NONE)
SetMonMoveSlot(&gUnknown_Debug_2038A1C->pokemon, gUnknown_Debug_2038A1C->unk64[10], 3);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_EXP, gUnknown_Debug_2038A1C->unk64 + 2);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_HP_IV, gUnknown_Debug_2038A1C->unk64 + 13);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_HP_EV, gUnknown_Debug_2038A1C->unk64 + 14);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ATK_IV, gUnknown_Debug_2038A1C->unk64 + 15);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ATK_EV, gUnknown_Debug_2038A1C->unk64 + 16);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_DEF_IV, gUnknown_Debug_2038A1C->unk64 + 17);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_DEF_EV, gUnknown_Debug_2038A1C->unk64 + 18);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPEED_IV, gUnknown_Debug_2038A1C->unk64 + 19);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPEED_EV, gUnknown_Debug_2038A1C->unk64 + 20);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPATK_IV, gUnknown_Debug_2038A1C->unk64 + 21);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPATK_EV, gUnknown_Debug_2038A1C->unk64 + 22);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPDEF_IV, gUnknown_Debug_2038A1C->unk64 + 23);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SPDEF_EV, gUnknown_Debug_2038A1C->unk64 + 24);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_COOL, gUnknown_Debug_2038A1C->unk64 + 25);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_BEAUTY, gUnknown_Debug_2038A1C->unk64 + 26);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_CUTE, gUnknown_Debug_2038A1C->unk64 + 27);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SMART, gUnknown_Debug_2038A1C->unk64 + 28);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_TOUGH, gUnknown_Debug_2038A1C->unk64 + 29);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_SHEEN, gUnknown_Debug_2038A1C->unk64 + 30);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_FRIENDSHIP, gUnknown_Debug_2038A1C->unk64 + 31);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_POKERUS, gUnknown_Debug_2038A1C->unk64 + 32);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_HELD_ITEM, gUnknown_Debug_2038A1C->unk64 + 11);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_ALT_ABILITY, gUnknown_Debug_2038A1C->unk64 + 12);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_STATUS, &gUnknown_Debug_083F86E8[gUnknown_Debug_2038A1C->unk64[34]].data.type3);
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_IS_EGG, gUnknown_Debug_2038A1C->unk64 + 33);
if (gUnknown_Debug_2038A1C->unk64[33])
{
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_NICKNAME, sp10);
one = LANGUAGE_JAPANESE;
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_LANGUAGE, &one);
}
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_OT_NAME, sp14);
ff = 0xff;
SetMonData(&gUnknown_Debug_2038A1C->pokemon, MON_DATA_MET_LOCATION, &ff);
CalculateMonStats(&gUnknown_Debug_2038A1C->pokemon);
}
void debug_80C627C(u8 a0)
{
u8 sp00[] = _("▶");
u8 sp04[] = _(" ");
switch (a0)
{
case 0:
Menu_PrintText(sp00, 1, 2 * gUnknown_Debug_2038A1C->unk169 + 5);
break;
case 1:
if (gUnknown_Debug_2038A1C->unk169 < gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].data.type3 - 1)
{
Menu_PrintText(sp04, 1, 2 * gUnknown_Debug_2038A1C->unk169 + 5);
gUnknown_Debug_2038A1C->unk169++;
Menu_PrintText(sp00, 1, 2 * gUnknown_Debug_2038A1C->unk169 + 5);
}
break;
case 2:
if (gUnknown_Debug_2038A1C->unk169 > 0)
{
Menu_PrintText(sp04, 1, 2 * gUnknown_Debug_2038A1C->unk169 + 5);
gUnknown_Debug_2038A1C->unk169--;
Menu_PrintText(sp00, 1, 2 * gUnknown_Debug_2038A1C->unk169 + 5);
}
break;
}
}
void debug_80C6384(void)
{
u16 i;
Menu_DrawStdWindowFrame(0, 4, 29, 19);
for (i = 0; gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[i] != EOS; i++)
{
gUnknown_Debug_2038A1C->unk16b[0] = EXT_CTRL_CODE_BEGIN;
gUnknown_Debug_2038A1C->unk16b[1] = 0x01;
gUnknown_Debug_2038A1C->unk16b[2] = 0x01;
debug_80C5738(gUnknown_Debug_2038A1C->unk16b + 3, gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[i], 1);
Menu_PrintText(gUnknown_Debug_2038A1C->unk16b, 2, 2 * i + 5);
}
}
void debug_80C643C(void)
{
u16 i;
Menu_BlankWindowRect(2, 5, 28, 18);
for (i = 0; gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[i] != EOS; i++)
{
gUnknown_Debug_2038A1C->unk16b[0] = EXT_CTRL_CODE_BEGIN;
gUnknown_Debug_2038A1C->unk16b[1] = 0x01;
if (i == gUnknown_Debug_2038A1C->unk169)
{
gUnknown_Debug_2038A1C->unk16b[2] = 0x02;
debug_80C5738(gUnknown_Debug_2038A1C->unk16b + 3, gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[i], 2);
}
else
{
gUnknown_Debug_2038A1C->unk16b[2] = 0x01;
debug_80C5738(gUnknown_Debug_2038A1C->unk16b + 3, gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[i], 1);
}
Menu_PrintText(gUnknown_Debug_2038A1C->unk16b, 2, 2 * i + 5);
}
}
const u32 gUnknown_Debug_083F8768[] = {
1,
10,
100,
1000,
10000,
100000,
1000000,
10000000,
100000000,
1000000000
};
void debug_80C6544(u8 a0)
{
u32 r7 = debug_80C5B60(gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]);
u32 r5 = gUnknown_Debug_083F8554[gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]].data.type4->unk0;
u32 r4 = gUnknown_Debug_083F8554[gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]].data.type4->unk4;
u32 r3 = gUnknown_Debug_083F8768[gUnknown_Debug_2038A1C->unk16a];
if (gUnknown_Debug_083F8554[gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]].data.type4->unk8 == 0)
{
switch (a0)
{
case 1:
if (r7 < r4 - r3)
r7 += r3;
else if (r7 < r4)
r7 = r4;
else
r7 = r5;
break;
case 2:
if (r7 > r5 + r3)
r7 -= r3;
else if (r7 > r5)
r7 = r5;
else
r7 = r4;
break;
}
}
debug_80C5B74(r7, gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]);
}
void debug_80C6630(u8 * a0, u8 a1, u8 a2, u8 a3)
{
*a0++ = EXT_CTRL_CODE_BEGIN;
*a0++ = 0x01;
if (a2 == 2)
{
if (a3 != gUnknown_Debug_2038A1C->unk16a)
*a0 = 0x02;
else
*a0 = 0x04;
}
else
*a0 = 0x01;
a0[1] = a1 + CHAR_0;
}
void debug_80C6678(u8 * a0, u32 a1, u8 a2, u8 a3)
{
u8 r7 = 0;
switch (a2)
{
default:
case 10:
debug_80C6630(a0 + r7, a1 / 1000000000, a3, 9);
a1 %= 1000000000;
r7 += 4;
case 9:
debug_80C6630(a0 + r7, a1 / 100000000, a3, 8);
a1 %= 100000000;
r7 += 4;
case 8:
debug_80C6630(a0 + r7, a1 / 10000000, a3, 7);
a1 %= 10000000;
r7 += 4;
case 7:
debug_80C6630(a0 + r7, a1 / 1000000, a3, 6);
a1 %= 1000000;
r7 += 4;
case 6:
debug_80C6630(a0 + r7, a1 / 100000, a3, 5);
a1 %= 100000;
r7 += 4;
case 5:
debug_80C6630(a0 + r7, a1 / 10000, a3, 4);
a1 %= 10000;
r7 += 4;
case 4:
debug_80C6630(a0 + r7, a1 / 1000, a3, 3);
a1 %= 1000;
r7 += 4;
case 3:
debug_80C6630(a0 + r7, a1 / 100, a3, 2);
a1 %= 100;
r7 += 4;
case 2:
debug_80C6630(a0 + r7, a1 / 10, a3, 1);
a1 %= 10;
r7 += 4;
case 1:
debug_80C6630(a0 + r7, a1, a3, 0);
break;
}
}
void debug_80C689C(u8 * a0, const u8 * a1, u8 a2)
{
u8 i;
for (i = 0; a1[i] != EOS && i < a2; i++)
a0[i] = a1[i];
}
void debug_80C68CC(u16 a0, u8 a1, u8 a2, u8 a3)
{
u8 sp00[5];
u8 i;
for (i = 0; i < 4; i++)
sp00[i] = 0;
sp00[4] = EOS;
switch (a3)
{
default:
sp00[0] = a0 >> 12;
case 3:
sp00[1] = (a0 & 0x0F00) >> 8;
case 2:
sp00[2] = (a0 & 0x00F0) >> 4;
case 1:
sp00[3] = (a0 & 0x000F);
break;
}
for (i = 0; i < 4; i++)
{
if (sp00[i] < 10)
sp00[i] += CHAR_0;
else
sp00[i] += CHAR_A - 10;
}
Menu_PrintText(sp00 + (u8)(4 - a3), a1, a2);
}
struct OamData gOamData_83F8848 = {
.y = 0xa0
};
union AnimCmd gSpriteAnim_83F8850[] = {
ANIMCMD_FRAME(38, 30),
ANIMCMD_END
};
union AnimCmd gSpriteAnim_83F8858[] = {
ANIMCMD_FRAME(39, 30),
ANIMCMD_END
};
union AnimCmd gSpriteAnim_83F8860[] = {
ANIMCMD_FRAME(40, 30),
ANIMCMD_END
};
const union AnimCmd *gSpriteAnimTable_83F8868[] = {
gSpriteAnim_83F8850,
gSpriteAnim_83F8858,
gSpriteAnim_83F8860
};
struct SpriteTemplate gSpriteTemplate_83F8874 = {
SPRITETAG_WATANABE,
SPRITETAG_WATANABE,
&gOamData_83F8848,
gSpriteAnimTable_83F8868,
NULL,
gDummySpriteAffineAnimTable,
debug_80C7584
};
u16 word_83F888C[] = INCBIN_U16("graphics/debug/sprite_browser.gbapal");
u8 byte_83F88EC[] = INCBIN_U8("graphics/debug/sprite_browser.4bpp");
void InitSeePokemonGraphics(void)
{
u16 pal;
u8 spriteId;
debug_80C35DC();
DmaCopy16Defvars(3, byte_83F88EC, BG_SCREEN_ADDR(28), sizeof(byte_83F88EC));
LoadPalette(word_83F888C, 0x80, sizeof(word_83F888C));
pal = RGB(31, 31, 31);
LoadPalette(&pal, 0, sizeof(pal));
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
REG_WIN0H = 0;
REG_WIN0V = 0;
REG_WIN1H = 0;
REG_WIN1V = 0;
REG_WININ = 0x3F;
REG_WINOUT = 0x1F;
REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN;
REG_BLDALPHA = 0;
REG_BLDY = 0x07;
{
u16 imeBak = REG_IME;
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
REG_IME = imeBak;
}
SetVBlankCallback(debug_80C3758);
SetMainCallback2(debug_80C370C);
sub_809D51C();
REG_BG0CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(31);
REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(30);
REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON;
CreateTask(debug_80C6B00, 0);
gUnknown_Debug_2038A20 = &eWatanabe18000_2;
gUnknown_Debug_2038A20->unk0 = 0x115;
gUnknown_Debug_2038A20->unk2 = 0;
gUnknown_Debug_2038A20->unk3 = 0;
gUnknown_Debug_2038A20->unk5 = 0;
gUnknown_Debug_2038A20->unk7 = 0;
gUnknown_Debug_2038A20->unkA = 0;
gUnknown_Debug_2038A20->unk8 = 0;
spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6C, 0x74, 0);
gSprites[spriteId].data[0] = 0;
StartSpriteAnim(gSprites + spriteId, 0);
spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6C, 0x74, 0);
gSprites[spriteId].data[0] = 1;
StartSpriteAnim(gSprites + spriteId, 1);
spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6C, 0x74, 0);
gSprites[spriteId].data[0] = 2;
StartSpriteAnim(gSprites + spriteId, 2);
}
const u16 gUnknown_Debug_083F8790[] = {
0x0000,
0x0002,
0x0004,
0x0006,
0x0008,
0x000a,
0x000c,
0x000e,
0x0010,
0x0012,
0x0014,
0x0016,
0x0018,
0x001a,
0x001c,
0x001e,
0x001f,
0x001e,
0x001c,
0x001a,
0x0018,
0x0016,
0x0014,
0x0012,
0x0010,
0x000e,
0x000c,
0x000a,
0x0008,
0x0006,
0x0004,
0x0002
};
const u8 gUnknown_Debug_083F87D0[] = _("{COLOR RED}L{ESCAPE}{LEFT_ARROW}");
const u8 gUnknown_Debug_083F87D8[] = _("{COLOR RED}{ESCAPE}{RIGHT_ARROW}R");
const u8 gUnknown_Debug_083F87E0[] = DTR("かいはつナンバー", "Devel No.");
const u8 gUnknown_Debug_083F87E9[] = DTR("グラフィックナンバー", "Graphic No.");
const u8 gUnknown_Debug_083F87F4[] = DTR("{COLOR RED}A:カラーせってい", "{COLOR RED}A: SET COLOR");
const u8 gUnknown_Debug_083F8801[] = DTR("{COLOR RED}A:けってい B:キャンセル", "{COLOR RED}A: CONFIRM B: CANCEL");
const u8 gUnknown_Debug_083F8813[] = _(":");
void debug_80C6B00(u8 taskId)
{
u8 sp00[] = {0x00, 0x10, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x21};
u8 i;
Menu_DrawStdWindowFrame(10, 0, 15, 7);
Menu_DrawStdWindowFrame(0, 0, 9, 9);
Menu_DrawStdWindowFrame(0, 10, 9, 19);
Menu_DrawStdWindowFrame(16, 0, 29, 7);
Menu_PrintText(gUnknown_Debug_083F87D0, 17, 1);
Menu_PrintText(gUnknown_Debug_083F87D8, 27, 1);
Menu_PrintText(gUnknown_Debug_083F87E0, 17, 5);
Menu_DrawStdWindowFrame(10, 8, 29, 12);
for (i = 0; i < 15; i++)
((u16 *)(VRAM + 0xFA56))[i] = 0xA311 + i;
for (i = 0; i < 15; i++)
((u16 *)(VRAM + 0xF256))[i] = 0x8301 + i;
Menu_PrintText(gUnknown_Debug_083F87F4, 20, 10);
Menu_DrawStdWindowFrame(10, 13, 29, 19);
sp00[0] = 0x23;
for (i = 0; i < 18; i++)
((u16 *)(VRAM + 0xF396))[i] = 0x9300 + sp00[i];
sp00[0] = 0x24;
for (i = 0; i < 18; i++)
((u16 *)(VRAM + 0xF3D6))[i] = 0x9300 + sp00[i];
sp00[0] = 0x25;
for (i = 0; i < 18; i++)
((u16 *)(VRAM + 0xF416))[i] = 0x9300 + sp00[i];
Menu_PrintText(gUnknown_Debug_083F8801, 15, 17);
REG_WIN0H = 0x51EF;
REG_WIN0V = 0x699F;
gTasks[taskId].func = debug_80C6CB8;
}
void debug_80C6CB8(u8 taskId)
{
DecompressPicFromTable_2(gMonFrontPicTable + gUnknown_Debug_2038A20->unk0, gMonFrontPicCoords[gUnknown_Debug_2038A20->unk0].coords, gMonFrontPicCoords[gUnknown_Debug_2038A20->unk0].y_offset, gUnknown_081FAF4C[0], gUnknown_081FAF4C[1], gUnknown_Debug_2038A20->unk0);
LoadCompressedObjectPalette(gMonPaletteTable + gUnknown_Debug_2038A20->unk0);
GetMonSpriteTemplate_803C56C(gUnknown_Debug_2038A20->unk0, 1);
gUnknown_Debug_2038A20->unk2 = CreateSprite(&gUnknown_02024E8C, 0x28, 0x28, 0);
gSprites[gUnknown_Debug_2038A20->unk2].callback = debug_69;
gSprites[gUnknown_Debug_2038A20->unk2].oam.priority = 0;
DecompressPicFromTable_2(gMonBackPicTable + gUnknown_Debug_2038A20->unk0, gMonBackPicCoords[gUnknown_Debug_2038A20->unk0].coords, gMonBackPicCoords[gUnknown_Debug_2038A20->unk0].y_offset, gUnknown_081FAF4C[0], gUnknown_081FAF4C[2], gUnknown_Debug_2038A20->unk0);
LoadCompressedObjectPalette(gMonPaletteTable + gUnknown_Debug_2038A20->unk0);
GetMonSpriteTemplate_803C56C(gUnknown_Debug_2038A20->unk0, 2);
gUnknown_Debug_2038A20->unk3 = CreateSprite(&gUnknown_02024E8C, 0x28, 0x78, 0);
gSprites[gUnknown_Debug_2038A20->unk3].callback = debug_69;
gSprites[gUnknown_Debug_2038A20->unk3].oam.priority = 0;
gUnknown_Debug_2038A20->unk4 = CreateMonIcon(gUnknown_Debug_2038A20->unk0, sub_809D62C, 0x68, 0x2C, 0, 0);
sub_8091738(SpeciesToNationalPokedexNum(gUnknown_Debug_2038A20->unk0), 2, 0x3fc);
((u16 *)(VRAM + 0xF858))[0] = 0xF3FC;
((u16 *)(VRAM + 0xF858))[1] = 0xF3FD;
((u16 *)(VRAM + 0xF858))[32] = 0xF3FE;
((u16 *)(VRAM + 0xF858))[33] = 0xF3FF;
debug_80C3800(gUnknown_Debug_2038A20->unk0, 17, 3);
debug_80C376C(gUnknown_Debug_2038A20->unk0, 26, 5);
gUnknown_Debug_2038A20->unk6 = gSprites[gUnknown_Debug_2038A20->unk2].oam.paletteNum;
CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferUnfaded + 0x80, 0x20);
CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferFaded + 0x80, 0x20);
gTasks[taskId].func = debug_80C6EE8;
gUnknown_Debug_2038A20->unk9 = 0;
StopCryAndClearCrySongs();
PlayCry1(gUnknown_Debug_2038A20->unk0, 0);
}
void debug_80C6EE8(u8 taskId)
{
u16 hue;
CpuCopy16(gPlttBufferUnfaded + 0x80, gUnknown_Debug_2038A20->unk10, 32);
hue = gPlttBufferUnfaded[gUnknown_Debug_2038A20->unk7 + 0x81];
gUnknown_Debug_2038A20->unkC.r = hue & 0x1f;
gUnknown_Debug_2038A20->unkC.g = (hue & 0x3e0) >> 5;
gUnknown_Debug_2038A20->unkC.b = (hue & 0x7c00) >> 10;
gUnknown_Debug_2038A20->unkC.unused_15 = 0;
debug_80C68CC(gUnknown_Debug_2038A20->unk7 + 1, 11, 10, 2);
Menu_PrintText(gUnknown_Debug_083F8813, 13, 10);
debug_80C68CC(hue, 14, 10, 4);
gTasks[taskId].func = debug_80C6FA8;
}
#ifdef NONMATCHING
void debug_80C6FA8(u8 taskId)
{
if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
SetMainCallback2(debug_80C370C);
gTasks[taskId].func = debug_80C373C;
}
else if (gMain.newAndRepeatedKeys & R_BUTTON)
{
gUnknown_Debug_2038A20->unk0 = debug_80C3878(0, gUnknown_Debug_2038A20->unk0);
gTasks[taskId].func = debug_80C71FC;
}
else if (gMain.newAndRepeatedKeys & L_BUTTON)
{
gUnknown_Debug_2038A20->unk0 = debug_80C3878(1, gUnknown_Debug_2038A20->unk0);
gTasks[taskId].func = debug_80C71FC;
}
else if (gMain.newKeys & A_BUTTON)
{
gUnknown_Debug_2038A20->unk5 = 1;
REG_WIN0H = 0x51EF;
REG_WIN0V = 0x4167;
gTasks[taskId].func = debug_80C7294;
}
else if (gMain.newAndRepeatedKeys & DPAD_RIGHT && gUnknown_Debug_2038A20->unk7 < 14)
{
((u16 *)PLTT)[0x81 + gUnknown_Debug_2038A20->unk7] = 0;
do; while(0);
gUnknown_Debug_2038A20->unk7++;
gTasks[taskId].func = debug_80C6EE8;
}
else if (gMain.newAndRepeatedKeys & DPAD_LEFT && gUnknown_Debug_2038A20->unk7 > 0)
{
((u16 *)PLTT)[0x81 + gUnknown_Debug_2038A20->unk7] = 0;
do; while(0);
gUnknown_Debug_2038A20->unk7--;
gTasks[taskId].func = debug_80C6EE8;
}
else if (gMain.newKeys & START_BUTTON)
{
gUnknown_Debug_2038A20->unk9 ^= 1;
if (gUnknown_Debug_2038A20->unk9)
LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(gUnknown_Debug_2038A20->unk0, 0, 0), gUnknown_Debug_2038A20->unk6 * 16 + 0x100, 0x20);
else
LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(gUnknown_Debug_2038A20->unk0, 0, 9), gUnknown_Debug_2038A20->unk6 * 16 + 0x100, 0x20);
CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferUnfaded + 0x80, 32);
CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferFaded + 0x80, 32);
gTasks[taskId].func = debug_80C6EE8;
}
else
{
if (gMain.newKeys & SELECT_BUTTON)
{
StopCryAndClearCrySongs();
PlayCry1(gUnknown_Debug_2038A20->unk0, 0);
}
gUnknown_Debug_2038A20->unk8 += 4;
gUnknown_Debug_2038A20->unk8 &= 0x1f;
((u16 *)PLTT)[0xa1 + gUnknown_Debug_2038A20->unk7] = gUnknown_Debug_083F8790[gUnknown_Debug_2038A20->unk8];
}
}
#else
NAKED void debug_80C6FA8(u8 taskId)
{
asm(".equiv PLTT, 0x05000000\n"
"\tpush\t{r4, r5, r6, lr}\n"
"\tadd\tsp, sp, #0xfffffffc\n"
"\tlsl\tr0, r0, #0x18\n"
"\tlsr\tr6, r0, #0x18\n"
"\tldr\tr1, ._674 @ gMain\n"
"\tldrh\tr2, [r1, #0x2e]\n"
"\tmov\tr0, #0x2\n"
"\tand\tr0, r0, r2\n"
"\tadd\tr4, r1, #0\n"
"\tcmp\tr0, #0\n"
"\tbeq\t._672\t@cond_branch\n"
"\tmov\tr0, #0x5\n"
"\tbl\tPlaySE\n"
"\tmov\tr0, #0x1\n"
"\tneg\tr0, r0\n"
"\tmov\tr1, #0x0\n"
"\tstr\tr1, [sp]\n"
"\tmov\tr2, #0x0\n"
"\tmov\tr3, #0x10\n"
"\tbl\tBeginNormalPaletteFade\n"
"\tldr\tr0, ._674 + 4 @ debug_80C370C\n"
"\tbl\tSetMainCallback2\n"
"\tldr\tr1, ._674 + 8 @ gTasks\n"
"\tlsl\tr0, r6, #0x2\n"
"\tadd\tr0, r0, r6\n"
"\tlsl\tr0, r0, #0x3\n"
"\tadd\tr0, r0, r1\n"
"\tldr\tr1, ._674 + 12 @ debug_80C373C\n"
"\tstr\tr1, [r0]\n"
"\tb\t._703\n"
"._675:\n"
"\t.align\t2, 0\n"
"._674:\n"
"\t.word\tgMain\n"
"\t.word\tdebug_80C370C+1\n"
"\t.word\tgTasks\n"
"\t.word\tdebug_80C373C+1\n"
"._672:\n"
"\tldrh\tr1, [r4, #0x30]\n"
"\tmov\tr0, #0x80\n"
"\tlsl\tr0, r0, #0x1\n"
"\tand\tr0, r0, r1\n"
"\tcmp\tr0, #0\n"
"\tbeq\t._676\t@cond_branch\n"
"\tldr\tr4, ._678 @ gUnknown_Debug_2038A20\n"
"\tldr\tr0, [r4]\n"
"\tldrh\tr1, [r0]\n"
"\tmov\tr0, #0x0\n"
"\tb\t._677\n"
"._679:\n"
"\t.align\t2, 0\n"
"._678:\n"
"\t.word\tgUnknown_Debug_2038A20\n"
"._676:\n"
"\tmov\tr0, #0x80\n"
"\tlsl\tr0, r0, #0x2\n"
"\tand\tr0, r0, r1\n"
"\tcmp\tr0, #0\n"
"\tbeq\t._680\t@cond_branch\n"
"\tldr\tr4, ._682 @ gUnknown_Debug_2038A20\n"
"\tldr\tr0, [r4]\n"
"\tldrh\tr1, [r0]\n"
"\tmov\tr0, #0x1\n"
"._677:\n"
"\tbl\tdebug_80C3878\n"
"\tldr\tr1, [r4]\n"
"\tstrh\tr0, [r1]\n"
"\tldr\tr1, ._682 + 4 @ gTasks\n"
"\tlsl\tr0, r6, #0x2\n"
"\tadd\tr0, r0, r6\n"
"\tlsl\tr0, r0, #0x3\n"
"\tadd\tr0, r0, r1\n"
"\tldr\tr1, ._682 + 8 @ debug_80C71FC\n"
"\tstr\tr1, [r0]\n"
"\tb\t._703\n"
"._683:\n"
"\t.align\t2, 0\n"
"._682:\n"
"\t.word\tgUnknown_Debug_2038A20\n"
"\t.word\tgTasks\n"
"\t.word\tdebug_80C71FC+1\n"
"._680:\n"
"\tmov\tr3, #0x1\n"
"\tand\tr3, r3, r2\n"
"\tcmp\tr3, #0\n"
"\tbeq\t._684\t@cond_branch\n"
"\tldr\tr0, ._686 @ gUnknown_Debug_2038A20\n"
"\tldr\tr1, [r0]\n"
"\tmov\tr0, #0x1\n"
"\tstrb\tr0, [r1, #0x5]\n"
"\tldr\tr1, ._686 + 4 @ 0x4000040\n"
"\tldr\tr2, ._686 + 8 @ 0x51ef\n"
"\tadd\tr0, r2, #0\n"
"\tstrh\tr0, [r1]\n"
"\tadd\tr1, r1, #0x4\n"
"\tldr\tr2, ._686 + 12 @ 0x4167\n"
"\tadd\tr0, r2, #0\n"
"\tstrh\tr0, [r1]\n"
"\tldr\tr1, ._686 + 16 @ gTasks\n"
"\tlsl\tr0, r6, #0x2\n"
"\tadd\tr0, r0, r6\n"
"\tlsl\tr0, r0, #0x3\n"
"\tadd\tr0, r0, r1\n"
"\tldr\tr1, ._686 + 20 @ debug_80C7294\n"
"\tstr\tr1, [r0]\n"
"\tb\t._703\n"
"._687:\n"
"\t.align\t2, 0\n"
"._686:\n"
"\t.word\tgUnknown_Debug_2038A20\n"
"\t.word\t0x4000040\n"
"\t.word\t0x51ef\n"
"\t.word\t0x4167\n"
"\t.word\tgTasks\n"
"\t.word\tdebug_80C7294+1\n"
"._684:\n"
"\tmov\tr0, #0x10\n"
"\tand\tr0, r0, r1\n"
"\tcmp\tr0, #0\n"
"\tbeq\t._689\t@cond_branch\n"
"\tldr\tr1, ._691 @ gUnknown_Debug_2038A20\n"
"\tldr\tr2, [r1]\n"
"\tldrb\tr0, [r2, #0x7]\n"
"\tcmp\tr0, #0xd\n"
"\tbhi\t._689\t@cond_branch\n"
"\tlsl\tr0, r0, #0x1\n"
"\tldr\tr2, ._691 + 4 @ PLTT + 0x102\n"
"\tadd\tr0, r0, r2\n"
"\tstrh\tr3, [r0]\n"
"\tldr\tr1, [r1]\n"
"\tldrb\tr0, [r1, #0x7]\n"
"\tadd\tr0, r0, #0x1\n"
"\tstrb\tr0, [r1, #0x7]\n"
"\tb\t._695\n"
"._692:\n"
"\t.align\t2, 0\n"
"._691:\n"
"\t.word\tgUnknown_Debug_2038A20\n"
"\t.word\tPLTT + 0x102\n"
"._689:\n"
"\tldrh\tr1, [r4, #0x30]\n"
"\tmov\tr0, #0x20\n"
"\tand\tr0, r0, r1\n"
"\tcmp\tr0, #0\n"
"\tbeq\t._694\t@cond_branch\n"
"\tldr\tr2, ._696 @ gUnknown_Debug_2038A20\n"
"\tldr\tr1, [r2]\n"
"\tldrb\tr0, [r1, #0x7]\n"
"\tcmp\tr0, #0\n"
"\tbeq\t._694\t@cond_branch\n"
"\tlsl\tr0, r0, #0x1\n"
"\tldr\tr1, ._696 + 4 @ PLTT + 0x102\n"
"\tadd\tr0, r0, r1\n"
"\tmov\tr1, #0x0\n"
"\tstrh\tr1, [r0]\n"
"\tldr\tr1, [r2]\n"
"\tldrb\tr0, [r1, #0x7]\n"
"\tsub\tr0, r0, #0x1\n"
"\tstrb\tr0, [r1, #0x7]\n"
"\tb\t._695\n"
"._697:\n"
"\t.align\t2, 0\n"
"._696:\n"
"\t.word\tgUnknown_Debug_2038A20\n"
"\t.word\tPLTT + 0x102\n"
"._694:\n"
"\tldrh\tr1, [r4, #0x2e]\n"
"\tmov\tr0, #0x8\n"
"\tand\tr0, r0, r1\n"
"\tcmp\tr0, #0\n"
"\tbeq\t._698\t@cond_branch\n"
"\tldr\tr4, ._701 @ gUnknown_Debug_2038A20\n"
"\tldr\tr2, [r4]\n"
"\tldrb\tr0, [r2, #0x9]\n"
"\tmov\tr1, #0x1\n"
"\teor\tr0, r0, r1\n"
"\tstrb\tr0, [r2, #0x9]\n"
"\tldr\tr1, [r4]\n"
"\tldrb\tr0, [r1, #0x9]\n"
"\tcmp\tr0, #0\n"
"\tbeq\t._699\t@cond_branch\n"
"\tldrh\tr0, [r1]\n"
"\tmov\tr1, #0x0\n"
"\tmov\tr2, #0x0\n"
"\tbl\tGetMonSpritePalFromOtIdPersonality\n"
"\tldr\tr1, [r4]\n"
"\tldrb\tr1, [r1, #0x6]\n"
"\tlsl\tr1, r1, #0x14\n"
"\tmov\tr2, #0x80\n"
"\tlsl\tr2, r2, #0x11\n"
"\tadd\tr1, r1, r2\n"
"\tlsr\tr1, r1, #0x10\n"
"\tmov\tr2, #0x20\n"
"\tbl\tLoadCompressedPalette\n"
"\tb\t._700\n"
"._702:\n"
"\t.align\t2, 0\n"
"._701:\n"
"\t.word\tgUnknown_Debug_2038A20\n"
"._699:\n"
"\tldrh\tr0, [r1]\n"
"\tmov\tr1, #0x0\n"
"\tmov\tr2, #0x9\n"
"\tbl\tGetMonSpritePalFromOtIdPersonality\n"
"\tldr\tr1, [r4]\n"
"\tldrb\tr1, [r1, #0x6]\n"
"\tlsl\tr1, r1, #0x14\n"
"\tmov\tr2, #0x80\n"
"\tlsl\tr2, r2, #0x11\n"
"\tadd\tr1, r1, r2\n"
"\tlsr\tr1, r1, #0x10\n"
"\tmov\tr2, #0x20\n"
"\tbl\tLoadCompressedPalette\n"
"._700:\n"
"\tldr\tr5, ._704 @ gUnknown_Debug_2038A20\n"
"\tldr\tr0, [r5]\n"
"\tldrb\tr0, [r0, #0x6]\n"
"\tlsl\tr0, r0, #0x5\n"
"\tldr\tr4, ._704 + 4 @ gPlttBufferUnfaded\n"
"\tadd\tr0, r0, r4\n"
"\tldr\tr2, ._704 + 8 @ 0xffffff00\n"
"\tadd\tr1, r4, r2\n"
"\tmov\tr2, #0x10\n"
"\tbl\tCpuSet\n"
"\tldr\tr0, [r5]\n"
"\tldrb\tr0, [r0, #0x6]\n"
"\tlsl\tr0, r0, #0x5\n"
"\tadd\tr0, r0, r4\n"
"\tldr\tr1, ._704 + 12 @ gPlttBufferFaded\n"
"\tmov\tr2, #0x10\n"
"\tbl\tCpuSet\n"
"._695:\n"
"\tldr\tr1, ._704 + 16 @ gTasks\n"
"\tlsl\tr0, r6, #0x2\n"
"\tadd\tr0, r0, r6\n"
"\tlsl\tr0, r0, #0x3\n"
"\tadd\tr0, r0, r1\n"
"\tldr\tr1, ._704 + 20 @ debug_80C6EE8\n"
"\tstr\tr1, [r0]\n"
"\tb\t._703\n"
"._705:\n"
"\t.align\t2, 0\n"
"._704:\n"
"\t.word\tgUnknown_Debug_2038A20\n"
"\t.word\tgPlttBufferUnfaded+0x200\n"
"\t.word\t0xffffff00\n"
"\t.word\tgPlttBufferFaded+0x100\n"
"\t.word\tgTasks\n"
"\t.word\tdebug_80C6EE8+1\n"
"._698:\n"
"\tmov\tr0, #0x4\n"
"\tand\tr0, r0, r1\n"
"\tcmp\tr0, #0\n"
"\tbeq\t._706\t@cond_branch\n"
"\tbl\tStopCryAndClearCrySongs\n"
"\tldr\tr0, ._707 @ gUnknown_Debug_2038A20\n"
"\tldr\tr0, [r0]\n"
"\tldrh\tr0, [r0]\n"
"\tmov\tr1, #0x0\n"
"\tbl\tPlayCry1\n"
"._706:\n"
"\tldr\tr2, ._707 @ gUnknown_Debug_2038A20\n"
"\tldr\tr1, [r2]\n"
"\tldrb\tr0, [r1, #0x8]\n"
"\tadd\tr0, r0, #0x4\n"
"\tstrb\tr0, [r1, #0x8]\n"
"\tldr\tr3, [r2]\n"
"\tldrb\tr1, [r3, #0x8]\n"
"\tmov\tr0, #0x1f\n"
"\tand\tr0, r0, r1\n"
"\tstrb\tr0, [r3, #0x8]\n"
"\tldr\tr0, [r2]\n"
"\tldrb\tr1, [r0, #0x7]\n"
"\tlsl\tr1, r1, #0x1\n"
"\tldr\tr2, ._707 + 4 @ PLTT + 0x142\n"
"\tadd\tr1, r1, r2\n"
"\tldr\tr2, ._707 + 8 @ gUnknown_Debug_083F8790\n"
"\tldrb\tr0, [r0, #0x8]\n"
"\tlsl\tr0, r0, #0x1\n"
"\tadd\tr0, r0, r2\n"
"\tldrh\tr0, [r0]\n"
"\tstrh\tr0, [r1]\n"
"._703:\n"
"\tadd\tsp, sp, #0x4\n"
"\tpop\t{r4, r5, r6}\n"
"\tpop\t{r0}\n"
"\tbx\tr0\n"
"._708:\n"
"\t.align\t2, 0\n"
"._707:\n"
"\t.word\tgUnknown_Debug_2038A20\n"
"\t.word\tPLTT + 0x142\n"
"\t.word\tgUnknown_Debug_083F8790");
}
#endif // NONMATCHING
void debug_80C71FC(u8 taskId)
{
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gUnknown_Debug_2038A20->unk2].oam.paletteNum));
DestroySprite(gSprites + gUnknown_Debug_2038A20->unk2);
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gUnknown_Debug_2038A20->unk3].oam.paletteNum));
DestroySprite(gSprites + gUnknown_Debug_2038A20->unk3);
sub_809D510(gSprites + gUnknown_Debug_2038A20->unk4);
gTasks[taskId].func = debug_80C6CB8;
}
void debug_80C7294(u8 taskId)
{
if (gMain.newKeys & A_BUTTON)
{
gUnknown_Debug_2038A20->unk5 = 0;
REG_WIN0H = 0x51EF;
REG_WIN0V = 0x699F;
gTasks[taskId].func = debug_80C6EE8;
}
else if (gMain.newKeys & B_BUTTON)
{
gUnknown_Debug_2038A20->unk5 = 0;
REG_WIN0H = 0x51EF;
REG_WIN0V = 0x699F;
CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferUnfaded + 0x80, 32);
CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferFaded + 0x80, 32);
CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferUnfaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32);
CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferFaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32);
gTasks[taskId].func = debug_80C6EE8;
}
else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A20->unkA < 2)
{
gUnknown_Debug_2038A20->unkA++;
}
else if (gMain.newAndRepeatedKeys & DPAD_UP && gUnknown_Debug_2038A20->unkA > 0)
{
gUnknown_Debug_2038A20->unkA--;
}
else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
{
switch (gUnknown_Debug_2038A20->unkA)
{
case 0:
if (gUnknown_Debug_2038A20->unkC.r < 31)
gUnknown_Debug_2038A20->unkC.r++;
gTasks[taskId].func = debug_80C74E4;
break;
case 1:
if (gUnknown_Debug_2038A20->unkC.g < 31)
gUnknown_Debug_2038A20->unkC.g++;
gTasks[taskId].func = debug_80C74E4;
break;
case 2:
if (gUnknown_Debug_2038A20->unkC.b < 31)
gUnknown_Debug_2038A20->unkC.b++;
gTasks[taskId].func = debug_80C74E4;
break;
}
}
else if (gMain.newAndRepeatedKeys & DPAD_LEFT)
{
switch (gUnknown_Debug_2038A20->unkA)
{
case 0:
if (gUnknown_Debug_2038A20->unkC.r > 0)
gUnknown_Debug_2038A20->unkC.r--;
gTasks[taskId].func = debug_80C74E4;
break;
case 1:
if (gUnknown_Debug_2038A20->unkC.g > 0)
gUnknown_Debug_2038A20->unkC.g--;
gTasks[taskId].func = debug_80C74E4;
break;
case 2:
if (gUnknown_Debug_2038A20->unkC.b > 0)
gUnknown_Debug_2038A20->unkC.b--;
gTasks[taskId].func = debug_80C74E4;
break;
}
}
}
void debug_80C74E4(u8 taskId)
{
u16 pal = (gUnknown_Debug_2038A20->unkC.r & 0x001f) + ((gUnknown_Debug_2038A20->unkC.g << 5) & 0x03e0) + ((gUnknown_Debug_2038A20->unkC.b << 10) & 0x7c00);
gPlttBufferUnfaded[gUnknown_Debug_2038A20->unk7 + 0x81] = pal;
gPlttBufferFaded[gUnknown_Debug_2038A20->unk7 + 0x81] = pal;
gPlttBufferUnfaded[0x101 + gUnknown_Debug_2038A20->unk6 * 16 + gUnknown_Debug_2038A20->unk7] = pal;
gPlttBufferFaded[0x101 + gUnknown_Debug_2038A20->unk6 * 16 + gUnknown_Debug_2038A20->unk7] = pal;
debug_80C68CC(pal, 14, 10, 4);
gTasks[taskId].func = debug_80C7294;
}
void debug_80C7584(struct Sprite *sprite)
{
if (!gUnknown_Debug_2038A20->unk5)
sprite->invisible = TRUE;
else
{
u8 shade;
switch (sprite->data[0])
{
default:
case 0:
shade = gUnknown_Debug_2038A20->unkC.r;
break;
case 1:
shade = gUnknown_Debug_2038A20->unkC.g;
break;
case 2:
shade = gUnknown_Debug_2038A20->unkC.b;
break;
}
sprite->pos2.x = 4 * shade;
sprite->pos2.y = 8 * sprite->data[0];
sprite->data[1]++;
if (sprite->data[0] == gUnknown_Debug_2038A20->unkA && !(sprite->data[1] & 0x08))
sprite->invisible = TRUE;
else
sprite->invisible = FALSE;
}
}
void InitSeeTrainers(void)
{
u8 spriteId;
u16 imeBak;
debug_80C35DC();
DmaCopy16Defvars(3, byte_83F88EC, VRAM + 0xe000, 0x800);
LoadPalette(word_83F888C, 0x80, 0x60);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
REG_WIN0H = 0;
REG_WIN0V = 0;
REG_WIN1H = 0;
REG_WIN1V = 0;
REG_WININ = 0x3F;
REG_WINOUT = 0x1F;
REG_BLDCNT = 0xF1;
REG_BLDALPHA = 0;
REG_BLDY = 7;
imeBak = REG_IME;
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
REG_IME = imeBak;
SetVBlankCallback(debug_80C3758);
SetMainCallback2(debug_80C370C);
REG_BG0CNT = 0x1F0B;
REG_BG1CNT = 0x1E0A;
REG_DISPCNT = 0x3340;
CreateTask(debug_80C777C, 0);
gUnknown_Debug_2038A20 = &eWatanabe18000_2;
gUnknown_Debug_2038A20->unk0 = 0;
gUnknown_Debug_2038A20->unk2 = 0;
gUnknown_Debug_2038A20->unk3 = 0;
gUnknown_Debug_2038A20->unk5 = 0;
gUnknown_Debug_2038A20->unk7 = 0;
gUnknown_Debug_2038A20->unkA = 0;
gUnknown_Debug_2038A20->unk8 = 0;
spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6c, 0x74, 0);
gSprites[spriteId].data[0] = 0;
StartSpriteAnim(gSprites + spriteId, 0);
spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6c, 0x74, 0);
gSprites[spriteId].data[0] = 1;
StartSpriteAnim(gSprites + spriteId, 1);
spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6c, 0x74, 0);
gSprites[spriteId].data[0] = 2;
StartSpriteAnim(gSprites + spriteId, 2);
}
void debug_80C777C(u8 taskId)
{
u8 sp00[] = {0x00, 0x10, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x21, 0x20, 0x20, 0x20, 0x21};
u8 i;
Menu_DrawStdWindowFrame(9, 0, 14, 7);
Menu_DrawStdWindowFrame(0, 0, 9, 9);
Menu_DrawStdWindowFrame(0, 10, 9, 19);
Menu_DrawStdWindowFrame(14, 0, 29, 7);
Menu_PrintText(gUnknown_Debug_083F87D0, 15, 1);
Menu_PrintText(gUnknown_Debug_083F87D8, 25, 1);
Menu_PrintText(gUnknown_Debug_083F87E0, 15, 5);
Menu_DrawStdWindowFrame(10, 8, 29, 12);
for (i = 0; i < 15; i++)
((u16 *)(VRAM + 0xFA56))[i] = 0xA311 + i;
for (i = 0; i < 15; i++)
((u16 *)(VRAM + 0xF256))[i] = 0x8301 + i;
Menu_PrintText(gUnknown_Debug_083F87F4, 20, 10);
Menu_DrawStdWindowFrame(10, 13, 29, 19);
sp00[0] = 0x23;
for (i = 0; i < 18; i++)
((u16 *)(VRAM + 0xF396))[i] = 0x9300 + sp00[i];
sp00[0] = 0x24;
for (i = 0; i < 18; i++)
((u16 *)(VRAM + 0xF3D6))[i] = 0x9300 + sp00[i];
sp00[0] = 0x25;
for (i = 0; i < 18; i++)
((u16 *)(VRAM + 0xF416))[i] = 0x9300 + sp00[i];
Menu_PrintText(gUnknown_Debug_083F8801, 15, 17);
REG_WIN0H = 0x51EF;
REG_WIN0V = 0x699F;
gTasks[taskId].func = debug_80C7934;
}
void debug_80C7934(u8 taskId)
{
DecompressPicFromTable_2(gTrainerFrontPicTable + gUnknown_Debug_2038A20->unk0, gTrainerFrontPicCoords[gUnknown_Debug_2038A20->unk0].coords, gTrainerFrontPicCoords[gUnknown_Debug_2038A20->unk0].y_offset, gUnknown_081FAF4C[0], gUnknown_081FAF4C[1], gUnknown_Debug_2038A20->unk0);
LoadCompressedObjectPalette(gTrainerFrontPicPaletteTable + gUnknown_Debug_2038A20->unk0);
GetMonSpriteTemplate_803C5A0(gUnknown_Debug_2038A20->unk0, 1);
gUnknown_Debug_2038A20->unk2 = CreateSprite(&gUnknown_02024E8C, 0x28, 0x28, 0);
gSprites[gUnknown_Debug_2038A20->unk2].callback = debug_69;
gSprites[gUnknown_Debug_2038A20->unk2].oam.priority = 0;
debug_80C376C(gUnknown_Debug_2038A20->unk0, 26, 5);
gUnknown_Debug_2038A20->unk6 = gSprites[gUnknown_Debug_2038A20->unk2].oam.paletteNum;
CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferUnfaded + 0x80, 0x20);
CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferFaded + 0x80, 0x20);
gTasks[taskId].func = debug_80C7A54;
gUnknown_Debug_2038A20->unk9 = 0;
}
void debug_80C7A54(u8 taskId)
{
u16 hue;
CpuCopy16(gPlttBufferUnfaded + 0x80, gUnknown_Debug_2038A20->unk10, 32);
hue = gPlttBufferUnfaded[gUnknown_Debug_2038A20->unk7 + 0x81];
gUnknown_Debug_2038A20->unkC.r = hue & 0x1f;
gUnknown_Debug_2038A20->unkC.g = (hue & 0x3e0) >> 5;
gUnknown_Debug_2038A20->unkC.b = (hue & 0x7c00) >> 10;
gUnknown_Debug_2038A20->unkC.unused_15 = 0;
debug_80C68CC(gUnknown_Debug_2038A20->unk7 + 1, 11, 10, 2);
Menu_PrintText(gUnknown_Debug_083F8813, 13, 10);
debug_80C68CC(hue, 14, 10, 4);
gTasks[taskId].func = debug_80C7B14;
}
#ifdef NONMATCHING
void debug_80C7B14(u8 taskId)
{
if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
SetMainCallback2(debug_80C370C);
gTasks[taskId].func = debug_80C373C;
}
else if (gMain.newAndRepeatedKeys & R_BUTTON)
{
gUnknown_Debug_2038A20->unk0 = debug_80C38B4(0, gUnknown_Debug_2038A20->unk0);
gTasks[taskId].func = debug_80C7D44;
}
else if (gMain.newAndRepeatedKeys & L_BUTTON)
{
gUnknown_Debug_2038A20->unk0 = debug_80C38B4(1, gUnknown_Debug_2038A20->unk0);
gTasks[taskId].func = debug_80C7D44;
}
else if (gMain.newKeys & A_BUTTON)
{
gUnknown_Debug_2038A20->unk5 = 1;
REG_WIN0H = 0x51EF;
REG_WIN0V = 0x4167;
gTasks[taskId].func = debug_80C7DDC;
}
else if (gMain.newAndRepeatedKeys & DPAD_RIGHT && gUnknown_Debug_2038A20->unk7 < 14)
{
((u16 *)PLTT)[0x81 + gUnknown_Debug_2038A20->unk7] = 0;
do; while (0); // this matches the asm here...
gUnknown_Debug_2038A20->unk7++;
gTasks[taskId].func = debug_80C7A54;
}
else if (gMain.newAndRepeatedKeys & DPAD_LEFT && gUnknown_Debug_2038A20->unk7 > 0)
{
((u16 *)PLTT)[0x81 + gUnknown_Debug_2038A20->unk7] = 0;
do; while (0); // ... but not here
gUnknown_Debug_2038A20->unk7--;
gTasks[taskId].func = debug_80C7A54;
}
else if (gMain.newKeys & START_BUTTON)
{
gUnknown_Debug_2038A20->unk9 ^= 1;
if (gUnknown_Debug_2038A20->unk9)
{
LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(gUnknown_Debug_2038A20->unk0, 0, 0), gUnknown_Debug_2038A20->unk6 * 16 + 0x100, 0x20);
}
else
{
LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(gUnknown_Debug_2038A20->unk0, 0, 9), gUnknown_Debug_2038A20->unk6 * 16 + 0x100, 0x20);
}
CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferUnfaded + 0x80, 32);
CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferFaded + 0x80, 32);
gTasks[taskId].func = debug_80C7A54;
}
else
{
gUnknown_Debug_2038A20->unk8 += 4;
gUnknown_Debug_2038A20->unk8 &= 0x1f;
((u16 *)PLTT)[0xa1 + gUnknown_Debug_2038A20->unk7] = gUnknown_Debug_083F8790[gUnknown_Debug_2038A20->unk8];
}
}
#else
NAKED void debug_80C7B14(u8 taskId)
{
asm("\tpush\t{r4, r5, r6, lr}\n"
"\tadd\tsp, sp, #0xfffffffc\n"
"\tlsl\tr0, r0, #0x18\n"
"\tlsr\tr6, r0, #0x18\n"
"\tldr\tr1, ._792 @ gMain\n"
"\tldrh\tr3, [r1, #0x2e]\n"
"\tmov\tr0, #0x2\n"
"\tand\tr0, r0, r3\n"
"\tadd\tr4, r1, #0\n"
"\tcmp\tr0, #0\n"
"\tbeq\t._790\t@cond_branch\n"
"\tmov\tr0, #0x5\n"
"\tbl\tPlaySE\n"
"\tmov\tr0, #0x1\n"
"\tneg\tr0, r0\n"
"\tmov\tr1, #0x0\n"
"\tstr\tr1, [sp]\n"
"\tmov\tr2, #0x0\n"
"\tmov\tr3, #0x10\n"
"\tbl\tBeginNormalPaletteFade\n"
"\tldr\tr0, ._792 + 4 @ debug_80C370C\n"
"\tbl\tSetMainCallback2\n"
"\tldr\tr1, ._792 + 8 @ gTasks\n"
"\tlsl\tr0, r6, #0x2\n"
"\tadd\tr0, r0, r6\n"
"\tlsl\tr0, r0, #0x3\n"
"\tadd\tr0, r0, r1\n"
"\tldr\tr1, ._792 + 12 @ debug_80C373C\n"
"\tstr\tr1, [r0]\n"
"\tb\t._821\n"
"._793:\n"
"\t.align\t2, 0\n"
"._792:\n"
"\t.word\tgMain\n"
"\t.word\tdebug_80C370C+1\n"
"\t.word\tgTasks\n"
"\t.word\tdebug_80C373C+1\n"
"._790:\n"
"\tldrh\tr1, [r4, #0x30]\n"
"\tmov\tr0, #0x80\n"
"\tlsl\tr0, r0, #0x1\n"
"\tand\tr0, r0, r1\n"
"\tcmp\tr0, #0\n"
"\tbeq\t._794\t@cond_branch\n"
"\tldr\tr4, ._796 @ gUnknown_Debug_2038A20\n"
"\tldr\tr0, [r4]\n"
"\tldrh\tr1, [r0]\n"
"\tmov\tr0, #0x0\n"
"\tb\t._795\n"
"._797:\n"
"\t.align\t2, 0\n"
"._796:\n"
"\t.word\tgUnknown_Debug_2038A20\n"
"._794:\n"
"\tmov\tr0, #0x80\n"
"\tlsl\tr0, r0, #0x2\n"
"\tand\tr0, r0, r1\n"
"\tcmp\tr0, #0\n"
"\tbeq\t._798\t@cond_branch\n"
"\tldr\tr4, ._800 @ gUnknown_Debug_2038A20\n"
"\tldr\tr0, [r4]\n"
"\tldrh\tr1, [r0]\n"
"\tmov\tr0, #0x1\n"
"._795:\n"
"\tbl\tdebug_80C38B4\n"
"\tldr\tr1, [r4]\n"
"\tstrh\tr0, [r1]\n"
"\tldr\tr1, ._800 + 4 @ gTasks\n"
"\tlsl\tr0, r6, #0x2\n"
"\tadd\tr0, r0, r6\n"
"\tlsl\tr0, r0, #0x3\n"
"\tadd\tr0, r0, r1\n"
"\tldr\tr1, ._800 + 8 @ debug_80C7D44\n"
"\tstr\tr1, [r0]\n"
"\tb\t._821\n"
"._801:\n"
"\t.align\t2, 0\n"
"._800:\n"
"\t.word\tgUnknown_Debug_2038A20\n"
"\t.word\tgTasks\n"
"\t.word\tdebug_80C7D44+1\n"
"._798:\n"
"\tmov\tr2, #0x1\n"
"\tand\tr2, r2, r3\n"
"\tcmp\tr2, #0\n"
"\tbeq\t._802\t@cond_branch\n"
"\tldr\tr0, ._804 @ gUnknown_Debug_2038A20\n"
"\tldr\tr1, [r0]\n"
"\tmov\tr0, #0x1\n"
"\tstrb\tr0, [r1, #0x5]\n"
"\tldr\tr1, ._804 + 4 @ 0x4000040\n"
"\tldr\tr2, ._804 + 8 @ 0x51ef\n"
"\tadd\tr0, r2, #0\n"
"\tstrh\tr0, [r1]\n"
"\tadd\tr1, r1, #0x4\n"
"\tldr\tr2, ._804 + 12 @ 0x4167\n"
"\tadd\tr0, r2, #0\n"
"\tstrh\tr0, [r1]\n"
"\tldr\tr1, ._804 + 16 @ gTasks\n"
"\tlsl\tr0, r6, #0x2\n"
"\tadd\tr0, r0, r6\n"
"\tlsl\tr0, r0, #0x3\n"
"\tadd\tr0, r0, r1\n"
"\tldr\tr1, ._804 + 20 @ debug_80C7DDC\n"
"\tstr\tr1, [r0]\n"
"\tb\t._821\n"
"._805:\n"
"\t.align\t2, 0\n"
"._804:\n"
"\t.word\tgUnknown_Debug_2038A20\n"
"\t.word\t0x4000040\n"
"\t.word\t0x51ef\n"
"\t.word\t0x4167\n"
"\t.word\tgTasks\n"
"\t.word\tdebug_80C7DDC+1\n"
"._802:\n"
"\tmov\tr0, #0x10\n"
"\tand\tr0, r0, r1\n"
"\tldr\tr3, ._809 @ gUnknown_Debug_2038A20\n"
"\tcmp\tr0, #0\n"
"\tbeq\t._807\t@cond_branch\n"
"\tldr\tr1, [r3]\n"
"\tldrb\tr0, [r1, #0x7]\n"
"\tcmp\tr0, #0xd\n"
"\tbhi\t._807\t@cond_branch\n"
"\tlsl\tr0, r0, #0x1\n"
"\tldr\tr1, ._809 + 4 @ 0x5000102\n"
"\tadd\tr0, r0, r1\n"
"\tstrh\tr2, [r0]\n"
"\tldr\tr1, [r3]\n"
"\tldrb\tr0, [r1, #0x7]\n"
"\tadd\tr0, r0, #0x1\n"
"\tstrb\tr0, [r1, #0x7]\n"
"\tb\t._813\n"
"._810:\n"
"\t.align\t2, 0\n"
"._809:\n"
"\t.word\tgUnknown_Debug_2038A20\n"
"\t.word\t0x5000102\n"
"._807:\n"
"\tldrh\tr1, [r4, #0x30]\n"
"\tmov\tr0, #0x20\n"
"\tand\tr0, r0, r1\n"
"\tcmp\tr0, #0\n"
"\tbeq\t._812\t@cond_branch\n"
"\tldr\tr1, [r3]\n"
"\tldrb\tr0, [r1, #0x7]\n"
"\tcmp\tr0, #0\n"
"\tbeq\t._812\t@cond_branch\n"
"\tlsl\tr0, r0, #0x1\n"
"\tldr\tr2, ._814 @ 0x5000102\n"
"\tadd\tr0, r0, r2\n"
"\tmov\tr1, #0x0\n"
"\tstrh\tr1, [r0]\n"
"\tldr\tr1, [r3]\n"
"\tldrb\tr0, [r1, #0x7]\n"
"\tsub\tr0, r0, #0x1\n"
"\tstrb\tr0, [r1, #0x7]\n"
"\tb\t._813\n"
"._815:\n"
"\t.align\t2, 0\n"
"._814:\n"
"\t.word\t0x5000102\n"
"._812:\n"
"\tldrh\tr1, [r4, #0x2e]\n"
"\tmov\tr0, #0x8\n"
"\tand\tr0, r0, r1\n"
"\tcmp\tr0, #0\n"
"\tbeq\t._816\t@cond_branch\n"
"\tldr\tr4, ._819 @ gUnknown_Debug_2038A20\n"
"\tldr\tr2, [r4]\n"
"\tldrb\tr0, [r2, #0x9]\n"
"\tmov\tr1, #0x1\n"
"\teor\tr0, r0, r1\n"
"\tstrb\tr0, [r2, #0x9]\n"
"\tldr\tr1, [r4]\n"
"\tldrb\tr0, [r1, #0x9]\n"
"\tcmp\tr0, #0\n"
"\tbeq\t._817\t@cond_branch\n"
"\tldrh\tr0, [r1]\n"
"\tmov\tr1, #0x0\n"
"\tmov\tr2, #0x0\n"
"\tbl\tGetMonSpritePalFromOtIdPersonality\n"
"\tldr\tr1, [r4]\n"
"\tldrb\tr1, [r1, #0x6]\n"
"\tlsl\tr1, r1, #0x14\n"
"\tmov\tr2, #0x80\n"
"\tlsl\tr2, r2, #0x11\n"
"\tadd\tr1, r1, r2\n"
"\tlsr\tr1, r1, #0x10\n"
"\tmov\tr2, #0x20\n"
"\tbl\tLoadCompressedPalette\n"
"\tb\t._818\n"
"._820:\n"
"\t.align\t2, 0\n"
"._819:\n"
"\t.word\tgUnknown_Debug_2038A20\n"
"._817:\n"
"\tldrh\tr0, [r1]\n"
"\tmov\tr1, #0x0\n"
"\tmov\tr2, #0x9\n"
"\tbl\tGetMonSpritePalFromOtIdPersonality\n"
"\tldr\tr1, [r4]\n"
"\tldrb\tr1, [r1, #0x6]\n"
"\tlsl\tr1, r1, #0x14\n"
"\tmov\tr2, #0x80\n"
"\tlsl\tr2, r2, #0x11\n"
"\tadd\tr1, r1, r2\n"
"\tlsr\tr1, r1, #0x10\n"
"\tmov\tr2, #0x20\n"
"\tbl\tLoadCompressedPalette\n"
"._818:\n"
"\tldr\tr5, ._822 @ gUnknown_Debug_2038A20\n"
"\tldr\tr0, [r5]\n"
"\tldrb\tr0, [r0, #0x6]\n"
"\tlsl\tr0, r0, #0x5\n"
"\tldr\tr4, ._822 + 4 @ gPlttBufferUnfaded\n"
"\tadd\tr0, r0, r4\n"
"\tldr\tr2, ._822 + 8 @ 0xffffff00\n"
"\tadd\tr1, r4, r2\n"
"\tmov\tr2, #0x10\n"
"\tbl\tCpuSet\n"
"\tldr\tr0, [r5]\n"
"\tldrb\tr0, [r0, #0x6]\n"
"\tlsl\tr0, r0, #0x5\n"
"\tadd\tr0, r0, r4\n"
"\tldr\tr1, ._822 + 12 @ gPlttBufferFaded\n"
"\tmov\tr2, #0x10\n"
"\tbl\tCpuSet\n"
"._813:\n"
"\tldr\tr1, ._822 + 16 @ gTasks\n"
"\tlsl\tr0, r6, #0x2\n"
"\tadd\tr0, r0, r6\n"
"\tlsl\tr0, r0, #0x3\n"
"\tadd\tr0, r0, r1\n"
"\tldr\tr1, ._822 + 20 @ debug_80C7A54\n"
"\tstr\tr1, [r0]\n"
"\tb\t._821\n"
"._823:\n"
"\t.align\t2, 0\n"
"._822:\n"
"\t.word\tgUnknown_Debug_2038A20\n"
"\t.word\tgPlttBufferUnfaded+0x200\n"
"\t.word\t0xffffff00\n"
"\t.word\tgPlttBufferFaded+0x100\n"
"\t.word\tgTasks\n"
"\t.word\tdebug_80C7A54+1\n"
"._816:\n"
"\tldr\tr1, [r3]\n"
"\tldrb\tr0, [r1, #0x8]\n"
"\tadd\tr0, r0, #0x4\n"
"\tstrb\tr0, [r1, #0x8]\n"
"\tldr\tr2, [r3]\n"
"\tldrb\tr1, [r2, #0x8]\n"
"\tmov\tr0, #0x1f\n"
"\tand\tr0, r0, r1\n"
"\tstrb\tr0, [r2, #0x8]\n"
"\tldr\tr0, [r3]\n"
"\tldrb\tr1, [r0, #0x7]\n"
"\tlsl\tr1, r1, #0x1\n"
"\tldr\tr2, ._824 @ 0x5000142\n"
"\tadd\tr1, r1, r2\n"
"\tldr\tr2, ._824 + 4 @ gUnknown_Debug_083F8790\n"
"\tldrb\tr0, [r0, #0x8]\n"
"\tlsl\tr0, r0, #0x1\n"
"\tadd\tr0, r0, r2\n"
"\tldrh\tr0, [r0]\n"
"\tstrh\tr0, [r1]\n"
"._821:\n"
"\tadd\tsp, sp, #0x4\n"
"\tpop\t{r4, r5, r6}\n"
"\tpop\t{r0}\n"
"\tbx\tr0\n"
"._825:\n"
"\t.align\t2, 0\n"
"._824:\n"
"\t.word\t0x5000142\n"
"\t.word\tgUnknown_Debug_083F8790");
}
#endif // NONMATCHING
void debug_80C7D44(u8 taskId)
{
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gUnknown_Debug_2038A20->unk2].oam.paletteNum));
DestroySprite(gSprites + gUnknown_Debug_2038A20->unk2);
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gUnknown_Debug_2038A20->unk3].oam.paletteNum));
DestroySprite(gSprites + gUnknown_Debug_2038A20->unk3);
sub_809D510(gSprites + gUnknown_Debug_2038A20->unk4);
gTasks[taskId].func = debug_80C7934;
}
void debug_80C7DDC(u8 taskId)
{
if (gMain.newKeys & A_BUTTON)
{
gUnknown_Debug_2038A20->unk5 = 0;
REG_WIN0H = 0x51EF;
REG_WIN0V = 0x699F;
gTasks[taskId].func = debug_80C7A54;
}
else if (gMain.newKeys & B_BUTTON)
{
gUnknown_Debug_2038A20->unk5 = 0;
REG_WIN0H = 0x51EF;
REG_WIN0V = 0x699F;
CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferUnfaded + 0x80, 32);
CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferFaded + 0x80, 32);
CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferUnfaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32);
CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferFaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32);
gTasks[taskId].func = debug_80C7A54;
}
else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A20->unkA < 2)
{
gUnknown_Debug_2038A20->unkA++;
}
else if (gMain.newAndRepeatedKeys & DPAD_UP && gUnknown_Debug_2038A20->unkA > 0)
{
gUnknown_Debug_2038A20->unkA--;
}
else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
{
switch (gUnknown_Debug_2038A20->unkA)
{
case 0:
if (gUnknown_Debug_2038A20->unkC.r < 31)
gUnknown_Debug_2038A20->unkC.r++;
gTasks[taskId].func = debug_80C802C;
break;
case 1:
if (gUnknown_Debug_2038A20->unkC.g < 31)
gUnknown_Debug_2038A20->unkC.g++;
gTasks[taskId].func = debug_80C802C;
break;
case 2:
if (gUnknown_Debug_2038A20->unkC.b < 31)
gUnknown_Debug_2038A20->unkC.b++;
gTasks[taskId].func = debug_80C802C;
break;
}
}
else if (gMain.newAndRepeatedKeys & DPAD_LEFT)
{
switch (gUnknown_Debug_2038A20->unkA)
{
case 0:
if (gUnknown_Debug_2038A20->unkC.r > 0)
gUnknown_Debug_2038A20->unkC.r--;
gTasks[taskId].func = debug_80C802C;
break;
case 1:
if (gUnknown_Debug_2038A20->unkC.g > 0)
gUnknown_Debug_2038A20->unkC.g--;
gTasks[taskId].func = debug_80C802C;
break;
case 2:
if (gUnknown_Debug_2038A20->unkC.b > 0)
gUnknown_Debug_2038A20->unkC.b--;
gTasks[taskId].func = debug_80C802C;
break;
}
}
}
void debug_80C802C(u8 taskId)
{
u16 pal = (gUnknown_Debug_2038A20->unkC.r & 0x001f) + ((gUnknown_Debug_2038A20->unkC.g << 5) & 0x03e0) + ((gUnknown_Debug_2038A20->unkC.b << 10) & 0x7c00);
gPlttBufferUnfaded[gUnknown_Debug_2038A20->unk7 + 0x81] = pal;
gPlttBufferFaded[gUnknown_Debug_2038A20->unk7 + 0x81] = pal;
gPlttBufferUnfaded[0x101 + gUnknown_Debug_2038A20->unk6 * 16 + gUnknown_Debug_2038A20->unk7] = pal;
gPlttBufferFaded[0x101 + gUnknown_Debug_2038A20->unk6 * 16 + gUnknown_Debug_2038A20->unk7] = pal;
debug_80C68CC(pal, 14, 10, 4);
gTasks[taskId].func = debug_80C7DDC;
}
#endif // DEBUG