summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarijn van der Werf <marijn.vanderwerf@gmail.com>2017-01-07 16:13:26 +0100
committerMarijn van der Werf <marijn.vanderwerf@gmail.com>2017-01-07 17:05:00 +0100
commit771b8a7cfee913a6f1bac1d154b20604f82eb330 (patch)
tree32619e84b206cfcb9a410cf2f5e8b329e277a69a /src
parentd8aee3a4a5fb66622fe44abb561b3bb49b4a93e5 (diff)
Continue decompilation
Diffstat (limited to 'src')
-rw-r--r--src/credits.c252
1 files changed, 245 insertions, 7 deletions
diff --git a/src/credits.c b/src/credits.c
index ef89707ff..7fa79cc2d 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -9,6 +9,72 @@
#include "task.h"
#include "text.h"
+enum {
+ PAGE_TITLE,
+ PAGE_DIRECTOR,
+ PAGE_ART_DIRECTOR,
+ PAGE_BATTLE_DIRECTOR,
+ PAGE_MAIN_PROGRAMMER,
+ PAGE_BATTLE_SYSTEM_PROGRAMMER,
+ PAGE_PROGRAMMERS_1,
+ PAGE_PROGRAMMERS_2,
+ PAGE_PROGRAMMERS_3,
+ PAGE_MAIN_GRAHPICS_DESIGNER,
+ PAGE_POKEMON_GRAHPIC_DESIGNERS_1,
+ PAGE_POKEMON_GRAHPIC_DESIGNERS_2,
+ PAGE_POKEMON_GRAHPIC_DESIGNERS_3,
+ PAGE_POKEMON_DESIGNERS_1,
+ PAGE_POKEMON_DESIGNERS_2,
+ PAGE_MUSIC_COMPOSITION,
+ PAGE_SOUND_EFFECTS,
+ PAGE_GAME_DESIGNERS_1,
+ PAGE_GAME_DESIGNERS_2,
+ PAGE_GAME_DESIGNERS_3,
+ PAGE_PLOT_SCENARIO,
+ PAGE_GAME_SCENARIO,
+ PAGE_SCRIPT_DESIGNERS,
+ PAGE_MAP_DESIGNERS,
+ PAGE_MAP_DATA_DESIGNERS,
+ PAGE_PARAMETRIC_DESIGNERS,
+ PAGE_POKEDEX_TEXT,
+ PAGE_ENVIRONMENT_TOOLS,
+ PAGE_PRODUCT_TESTING,
+ PAGE_SPECIAL_THANKS,
+ PAGE_SPECIAL_THANKS_1,
+ PAGE_SPECIAL_THANKS_2,
+ PAGE_SPECIAL_THANKS_3,
+ PAGE_INFORMATION_SUPERVISORS,
+ PAGE_COORDINATORS,
+ PAGE_TASK_MANAGERS,
+ PAGE_PRODUCERS,
+ PAGE_EXECUTIVE_DIRECTOR,
+ PAGE_EXECUTIVE_PRODUCERS_1,
+ PAGE_EXECUTIVE_PRODUCERS_2,
+ PAGE_TRANSLATION_COORDINATOR,
+ PAGE_TRANSLATORS,
+ PAGE_PROGRAMMERS,
+ PAGE_GRAPHIC_DESIGNERS,
+ PAGE_PRODUCT_SUPPORT,
+ PAGE_ARTWORK,
+ PAGE_TEXT_EDITOR,
+ PAGE_NOA_TESTING,
+ PAGE_BRAILLE_CODE_CHECK_1,
+ PAGE_BRAILLE_CODE_CHECK_2,
+ PAGE_SPECIAL_THANKS_4,
+ PAGE_SPECIAL_THANKS_5,
+
+ PAGE_COUNT
+};
+
+#define UNK_DEFINE_82 (0x82)
+
+#define COLOR_DARK_GREEN 0x1967
+#define COLOR_LIGHT_GREEN 0x328D
+
+enum {
+ TD_CURRENT_PAGE = 2,
+};
+
struct Unk201C000 {
u8 pad_00[0x88];
u16 var_88;
@@ -22,6 +88,11 @@ struct HallOfFame {
u8 sheet2[0x800];
};
+typedef struct CreditsEntry {
+ u8 var_0;
+ u8 *text;
+} CreditsEntry;
+
extern struct Unk201C000 unk_201C000;
extern struct HallOfFame gHallOfFame;
@@ -45,6 +116,7 @@ extern u8 gBirchHelpGfx[];
// data/credits
extern u16 gUnknown_0840B7BC[32];
extern u16 gUnknown_0840B7FC[32];
+extern CreditsEntry *gCreditsEntryPointerTable[][5];
extern struct SpriteSheet gUnknown_0840CAA0;
extern struct SpritePalette gUnknown_0840CAB0;
@@ -62,8 +134,9 @@ static void sub_8144024(u8 taskId);
static void sub_8144080(u8 taskId);
static void sub_8144114(u8 taskId);
static void sub_8144130(void);
+static void sub_81441B8(u8 taskId);
+static u8 sub_8144454(u8 page, u8 taskId);
-void sub_81441B8(u8 taskId);
void sub_8144514(u8 taskId);
u8 sub_8144ECC(u8 data, u8 taskId);
void sub_81450AC(u8 taskId);
@@ -276,9 +349,9 @@ static void sub_8143D04(u8 taskId) {
}
unk_201f800[0] = 0;
- unk_201f800[1] = 0x53FF;
- unk_201f800[2] = 0x529F;
- unk_201f800[3] = 0x7E94;
+ unk_201f800[1] = 0x53FF; // light yellow
+ unk_201f800[2] = 0x529F; // light red
+ unk_201f800[3] = 0x7E94; // light blue
LoadSpriteSheet(&gUnknown_0840CAA0);
LoadSpritePalette(&gUnknown_0840CAB0);
@@ -624,7 +697,172 @@ static void sub_8144130(void) {
REG_BLDALPHA = 0;
REG_BLDY = 0;
- DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE);
- DmaFill32(3, 0, (void *)OAM, OAM_SIZE);
- DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2);
+ DmaFill16(3, 0, (void *) VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, (void *) OAM, OAM_SIZE);
+ DmaFill16(3, 0, (void *) (PLTT + 2), PLTT_SIZE - 2);
+}
+
+static void sub_81441B8(u8 taskId) {
+ u16 i;
+
+ switch (gTasks[taskId].data[0]) {
+ case 0:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ default:
+ if (gPaletteFade.active) {
+ return;
+ }
+ gTasks[taskId].data[0] = 1;
+ gTasks[taskId].data[3] = 0x58;
+ gTasks[gTasks[taskId].data[1]].data[14] = 0;
+ gUnknown_02039320 = 0;
+ return;
+
+ case 1:
+ if (gTasks[taskId].data[3] != 0) {
+ gTasks[taskId].data[3] -= 1;
+ return;
+ }
+
+ gTasks[taskId].data[0] += 1;
+ return;
+
+ case 2:
+ REG_DISPCNT &= ~DISPCNT_BG0_ON;
+
+ if (gTasks[gTasks[taskId].data[1]].func == sub_8143B68) {
+ if (gTasks[taskId].data[TD_CURRENT_PAGE] < PAGE_COUNT) {
+
+ for (i = 0; i < 5; i++) {
+ sub_8072BD8(gCreditsEntryPointerTable[gTasks[taskId].data[TD_CURRENT_PAGE]][i]->text, 0,
+ 9 + i * 2, 240);
+ }
+
+ gTasks[taskId].data[TD_CURRENT_PAGE] += 1;
+ gTasks[taskId].data[0] += 1;
+
+ gTasks[gTasks[taskId].data[1]].data[14] = 1;
+
+ if (gTasks[gTasks[taskId].data[1]].data[13] == 1) {
+ BeginNormalPaletteFade(0x300, 0, 16, 0, COLOR_LIGHT_GREEN);
+ } else {
+ BeginNormalPaletteFade(0x300, 0, 16, 0, COLOR_DARK_GREEN);
+ }
+ return;
+ }
+
+
+ gTasks[taskId].data[0] = 10;
+ return;
+ }
+
+ gTasks[gTasks[taskId].data[1]].data[14] = 0;
+ return;
+
+ case 3:
+ REG_DISPCNT |= DISPCNT_BG0_ON;
+
+ if (gPaletteFade.active) {
+ return;
+ }
+
+ gTasks[taskId].data[3] = UNK_DEFINE_82;
+ gTasks[taskId].data[0] += 1;
+ return;
+
+ case 4:
+ if (gTasks[taskId].data[3] != 0) {
+ gTasks[taskId].data[3] -= 1;
+ return;
+ }
+
+ if (sub_8144454((u8) gTasks[taskId].data[2], (u8) gTasks[taskId].data[1])) {
+ gTasks[taskId].data[0] += 1;
+ return;
+ }
+
+ gTasks[taskId].data[0] += 1;
+
+ if (gTasks[gTasks[taskId].data[1]].data[13] == 1) {
+ BeginNormalPaletteFade(0x300, 0, 0, 16, COLOR_LIGHT_GREEN);
+ } else {
+ BeginNormalPaletteFade(0x300, 0, 0, 16, COLOR_DARK_GREEN);
+ }
+
+ return;
+
+ case 5:
+ if (gPaletteFade.active) {
+ return;
+ }
+
+ MenuZeroFillWindowRect(0, 9, 29, 19);
+ gTasks[taskId].data[0] = 2;
+ return;
+
+ case 10:
+ gTasks[gTasks[taskId].data[1]].data[4] = 1;
+ DestroyTask(taskId);
+ return;
+ }
}
+
+#define LAST_PAGE (PAGE_TEXT_EDITOR)
+
+static u8 sub_8144454(u8 page, u8 taskId) {
+ // Starts with bike + ocean + morning
+
+ if (page == PAGE_PROGRAMMERS_1) {
+ // Grass patch
+ gTasks[taskId].data[11] = 2;
+ }
+
+ if (page == PAGE_POKEMON_GRAHPIC_DESIGNERS_3) {
+ // Bike + ocean + sunset
+ gTasks[taskId].data[7] = 1;
+ gTasks[taskId].data[11] = 1;
+ }
+
+ if (page == PAGE_GAME_DESIGNERS_2) {
+ // Grass patch
+ gTasks[taskId].data[11] = 2;
+ }
+
+ if (page == PAGE_MAP_DATA_DESIGNERS) {
+ // Bike + forest + sunset
+ gTasks[taskId].data[7] = 2;
+ gTasks[taskId].data[11] = 1;
+ }
+
+ if (page == PAGE_SPECIAL_THANKS_1) {
+ // Grass patch
+ gTasks[taskId].data[11] = 2;
+ }
+
+ if (page == PAGE_TASK_MANAGERS) {
+ // Bike + forest + sunset
+ gTasks[taskId].data[7] = 3;
+ gTasks[taskId].data[11] = 1;
+ }
+
+ if (page == PAGE_TRANSLATION_COORDINATOR) {
+ // Grass patch
+ gTasks[taskId].data[11] = 2;
+ }
+
+ if (page == LAST_PAGE) {
+ // Bike + town + night
+ gTasks[taskId].data[7] = 4;
+ gTasks[taskId].data[11] = 1;
+ }
+
+ if (gTasks[taskId].data[11] != 0) {
+ // Returns true if changed?
+ return TRUE;
+ }
+
+ return FALSE;
+} \ No newline at end of file