From f1a304b7e48e38ec7c5859d92dd9626e55324539 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 6 Jan 2017 22:40:18 +0100 Subject: Start decompiling credits --- src/credits.c | 544 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 544 insertions(+) create mode 100644 src/credits.c (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c new file mode 100644 index 000000000..196a3a112 --- /dev/null +++ b/src/credits.c @@ -0,0 +1,544 @@ +#include "global.h" +#include "m4a.h" +#include "main.h" +#include "menu.h" +#include "palette.h" +#include "songs.h" +#include "sprite.h" +#include "task.h" +#include "text.h" + +struct Unk201C000 { + u8 pad_00[0x88]; + u16 var_88; + u16 var_8A; + u16 var_8C; +}; + +struct HallOfFame { + u8 sheet0[0x800]; + u8 sheet1[0x800]; + u8 sheet2[0x800]; +}; + +extern struct Unk201C000 unk_201C000; + +extern struct HallOfFame gHallOfFame; +extern u8 unk_201e800[0x800]; +extern u8 unk_201f000[0x800]; +extern u16 unk_201f800[]; + +extern s16 gUnknown_02039320; +extern u16 gUnknown_02039322; +extern u8 gUnknown_02039324; +extern u8 gUnknown_02039325; +extern u16 gUnknown_0203935C; + +extern u8 gReservedSpritePaletteCount; + +// data/starter_choose +extern u16 gBirchBagGrassPal[32]; +extern u8 gBirchBagTilemap[]; +extern u8 gBirchHelpGfx[]; + +// data/credits +extern u16 gUnknown_0840B7BC[32]; +extern u16 gUnknown_0840B7FC[32]; +extern struct SpriteSheet gUnknown_0840CAA0; +extern struct SpritePalette gUnknown_0840CAB0; + +void sub_8143B38(u8 taskId); +void sub_8143B68(u8 taskId); +static void sub_8143BFC(u8 taskId); +static void c2_080C9BFC(u8 taskId); +static void sub_8143CC0(u8 taskId); +static void sub_8143D04(u8 taskId); +static void sub_8143EBC(u8 taskId); +static void sub_8143F04(u8 taskId); +static void sub_8143F3C(u8 taskId); + +void sub_8143FDC(u8 taskId); +void sub_8144130(void); +void sub_81441B8(u8 taskId); +void sub_8144514(u8 taskId); +u8 sub_8144ECC(u8 data, u8 taskId); +void sub_81450AC(u8 taskId); +void sub_8145128(u16, u16, u16); +void sub_81458DC(void); + +static void sub_8143948(void) { + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void sub_814395C(void) { + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + + if (!(gMain.heldKeys & B_BUTTON)) { + return; + } + + if (!gUnknown_02039324) { + return; + } + + if (gTasks[gUnknown_02039322].func != sub_8143B68) { + return; + } + + sub_8143948(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + gUnknown_02039325 = 1; +} + +void sub_81439D0(void) { + u8 taskId; + s16 taskId3; + u8 taskId2; + u16 savedIme; + struct Unk201C000 * c000; + + sub_8144130(); + SetVBlankCallback(NULL); + ResetPaletteFade(); + ResetTasks(); + + taskId = CreateTask(sub_8143B38, 0); + + gTasks[taskId].data[4] = 0; + gTasks[taskId].data[7] = 0; + gTasks[taskId].data[11] = 0; + gTasks[taskId].data[13] = 1; + + while (TRUE) { + if (sub_8144ECC(0, taskId)) { + break; + } + } + + taskId3 = gTasks[taskId].data[1]; + gTasks[taskId3].data[0] = 40; + + SetUpWindowConfig(&gWindowConfig_81E7208); + InitMenuWindow(&gWindowConfig_81E7208); + LoadPalette(&gUnknown_0840B7BC, 0x80, sizeof(gUnknown_0840B7BC)); + + CpuCopy16(&gUnknown_0840B7FC, (void *) (VRAM + 0xBEE0), sizeof(gUnknown_0840B7FC)); + + REG_BG0VOFS = 0xFFFC; + + taskId2 = CreateTask(sub_81441B8, 0); + + gTasks[taskId2].data[1] = taskId; + gTasks[taskId].data[15] = taskId2; + + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + + + savedIme = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = savedIme; + REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; + + + SetVBlankCallback(sub_8143948); + m4aSongNumStart(BGM_THANKFOR); + SetMainCallback2(sub_814395C); + gUnknown_02039325 = 0; + + c000 = &unk_201C000; + + sub_81458DC(); + + c000->var_88 = 0; + c000->var_8A = 0; + c000->var_8C = 0; + + gUnknown_02039322 = taskId; +} + +void sub_8143B38(u8 taskId) { + if (gPaletteFade.active) { + return; + } + + gTasks[taskId].func = sub_8143B68; +} + +void sub_8143B68(u8 taskId) { + u16 data11; + + if (gTasks[taskId].data[4]) { + s16 secondaryTaskId; + + secondaryTaskId = gTasks[taskId].data[1]; + gTasks[secondaryTaskId].data[0] = 30; + + gTasks[taskId].data[12] = 0x100; + gTasks[taskId].func = sub_8143EBC; + return; + } + + gUnknown_02039320 = 0; + data11 = gTasks[taskId].data[11]; + + if (gTasks[taskId].data[11] == 1) { + gTasks[taskId].data[13] = data11; + gTasks[taskId].data[11] = 0; + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gTasks[taskId].func = sub_8143BFC; + } else if (gTasks[taskId].data[11] == 2) { + gTasks[taskId].data[13] = data11; + gTasks[taskId].data[11] = 0; + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gTasks[taskId].func = sub_8143CC0; + } +} + +static void sub_8143BFC(u8 taskId) { + if (gPaletteFade.active) { + return; + } + + REG_DISPCNT = 0; + sub_81450AC(taskId); + gTasks[taskId].func = c2_080C9BFC; +} + +static void c2_080C9BFC(u8 taskId) { + u16 backup; + + SetVBlankCallback(NULL); + + if (!sub_8144ECC(gTasks[taskId].data[7], taskId)) { + return; + } + + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + + backup = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = backup; + REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; + + SetVBlankCallback(sub_8143948); + gTasks[taskId].func = sub_8143B38; +} + +static void sub_8143CC0(u8 taskId) { + if (gPaletteFade.active) { + return; + } + + REG_DISPCNT = 0; + sub_81450AC(taskId); + gTasks[taskId].func = sub_8143D04; +} + +#ifdef NONMATCHING +static void sub_8143D04(u8 taskId) { + switch (gMain.state) { + default: + case 0: { + u16 i; + + ResetSpriteData(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 8; + LZ77UnCompVram(&gBirchHelpGfx, (void *) VRAM); + LZ77UnCompVram(&gBirchBagTilemap, (void *) (VRAM + 0x3800)); + LoadPalette(gBirchBagGrassPal + 2, 1, 31 * 2); + + for (i = 0; i < 0x800; i++) { + gHallOfFame.sheet0[i] = 0x11; + } + + for (i = 0; i < 0x800; i++) { + gHallOfFame.sheet1[i] = 0x22; + } + + for (i = 0; i < 0x800; i++) { + gHallOfFame.sheet2[i] = 0x33; + } + + unk_201f800[0] = 0; + unk_201f800[1] = 0x53FF; + unk_201f800[2] = 0x529F; + unk_201f800[3] = 0x7E94; + + LoadSpriteSheet(&gUnknown_0840CAA0); + LoadSpritePalette(&gUnknown_0840CAB0); + + gMain.state += 1; + break; + } + + case 1: { + gTasks[taskId].data[3] = CreateTask(sub_8144514, 0); + gTasks[gTasks[taskId].data[3]].data[0] = 1; + gTasks[gTasks[taskId].data[3]].data[1] = taskId; + gTasks[gTasks[taskId].data[3]].data[2] = gTasks[taskId].data[7]; + + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + REG_BG3HOFS = 0; + REG_BG3VOFS = 32; + REG_BG3CNT = 0x703; + REG_DISPCNT = 0x1940; + + gMain.state = 0; + gUnknown_0203935C = 0; + gTasks[taskId].func = sub_8143B38; + break; + } + } +} +#else +__attribute__((naked)) +static void sub_8143D04(u8 taskId) { + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6,r7}\n\ + sub sp, 0x4\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + ldr r0, _08143DC8 @ =gMain\n\ + ldr r1, _08143DCC @ =0x0000043c\n\ + adds r1, r0\n\ + mov r8, r1\n\ + ldrb r7, [r1]\n\ + cmp r7, 0\n\ + beq _08143D24\n\ + cmp r7, 0x1\n\ + beq _08143E0C\n\ +_08143D24:\n\ + bl ResetSpriteData\n\ + bl FreeAllSpritePalettes\n\ + ldr r1, _08143DD0 @ =gReservedSpritePaletteCount\n\ + movs r0, 0x8\n\ + strb r0, [r1]\n\ + ldr r0, _08143DD4 @ =gBirchHelpGfx\n\ + movs r1, 0xC0\n\ + lsls r1, 19\n\ + bl LZ77UnCompVram\n\ + ldr r0, _08143DD8 @ =gBirchGrassTilemap\n\ + ldr r1, _08143DDC @ =0x06003800\n\ + bl LZ77UnCompVram\n\ + ldr r0, _08143DE0 @ =0x0840281a\n\ + movs r1, 0x1\n\ + movs r2, 0x3E\n\ + bl LoadPalette\n\ + movs r1, 0\n\ + ldr r4, _08143DE4 @ =0x0201e000\n\ + movs r3, 0x11\n\ + ldr r2, _08143DE8 @ =0x000007ff\n\ +_08143D56:\n\ + adds r0, r1, r4\n\ + strb r3, [r0]\n\ + adds r0, r1, 0x1\n\ + lsls r0, 16\n\ + lsrs r1, r0, 16\n\ + cmp r1, r2\n\ + bls _08143D56\n\ + movs r1, 0\n\ + ldr r2, _08143DEC @ =0x0201f800\n\ + ldr r6, _08143DF0 @ =gUnknown_0840CAA0\n\ + ldr r0, _08143DF4 @ =0xfffff000\n\ + adds r5, r2, r0\n\ + movs r4, 0x22\n\ + ldr r3, _08143DE8 @ =0x000007ff\n\ +_08143D72:\n\ + adds r0, r1, r5\n\ + strb r4, [r0]\n\ + adds r0, r1, 0x1\n\ + lsls r0, 16\n\ + lsrs r1, r0, 16\n\ + cmp r1, r3\n\ + bls _08143D72\n\ + movs r1, 0\n\ + ldr r5, _08143DF8 @ =0x0201f000\n\ + movs r4, 0x33\n\ + ldr r3, _08143DE8 @ =0x000007ff\n\ +_08143D88:\n\ + adds r0, r1, r5\n\ + strb r4, [r0]\n\ + adds r0, r1, 0x1\n\ + lsls r0, 16\n\ + lsrs r1, r0, 16\n\ + cmp r1, r3\n\ + bls _08143D88\n\ + movs r0, 0\n\ + strh r0, [r2]\n\ + ldr r1, _08143DFC @ =0x000053ff\n\ + adds r0, r1, 0\n\ + strh r0, [r2, 0x2]\n\ + ldr r1, _08143E00 @ =0x0000529f\n\ + adds r0, r1, 0\n\ + strh r0, [r2, 0x4]\n\ + ldr r1, _08143E04 @ =0x00007e94\n\ + adds r0, r1, 0\n\ + strh r0, [r2, 0x6]\n\ + adds r0, r6, 0\n\ + bl LoadSpriteSheet\n\ + ldr r0, _08143E08 @ =gUnknown_0840CAB0\n\ + bl LoadSpritePalette\n\ + ldr r1, _08143DC8 @ =gMain\n\ + ldr r2, _08143DCC @ =0x0000043c\n\ + adds r1, r2\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ + b _08143E90\n\ + .align 2, 0\n\ +_08143DC8: .4byte gMain\n\ +_08143DCC: .4byte 0x0000043c\n\ +_08143DD0: .4byte gReservedSpritePaletteCount\n\ +_08143DD4: .4byte gBirchHelpGfx\n\ +_08143DD8: .4byte gBirchGrassTilemap\n\ +_08143DDC: .4byte 0x06003800\n\ +_08143DE0: .4byte gBirchBagGrassPal + 2\n\ +_08143DE4: .4byte 0x0201e000\n\ +_08143DE8: .4byte 0x000007ff\n\ +_08143DEC: .4byte 0x0201f800\n\ +_08143DF0: .4byte gUnknown_0840CAA0\n\ +_08143DF4: .4byte 0xfffff000\n\ +_08143DF8: .4byte 0x0201f000\n\ +_08143DFC: .4byte 0x000053ff\n\ +_08143E00: .4byte 0x0000529f\n\ +_08143E04: .4byte 0x00007e94\n\ +_08143E08: .4byte gUnknown_0840CAB0\n\ +_08143E0C:\n\ + ldr r0, _08143EA0 @ =sub_8144514\n\ + movs r1, 0\n\ + bl CreateTask\n\ + ldr r2, _08143EA4 @ =gTasks\n\ + lsls r4, r6, 2\n\ + adds r4, r6\n\ + lsls r4, 3\n\ + adds r4, r2\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + movs r1, 0\n\ + mov r9, r1\n\ + movs r5, 0\n\ + strh r0, [r4, 0xE]\n\ + movs r0, 0xE\n\ + ldrsh r1, [r4, r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 3\n\ + adds r0, r2\n\ + strh r7, [r0, 0x8]\n\ + movs r0, 0xE\n\ + ldrsh r1, [r4, r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 3\n\ + adds r0, r2\n\ + strh r6, [r0, 0xA]\n\ + movs r0, 0xE\n\ + ldrsh r1, [r4, r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 3\n\ + adds r0, r2\n\ + ldrh r1, [r4, 0x16]\n\ + strh r1, [r0, 0xC]\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + str r5, [sp]\n\ + movs r1, 0\n\ + movs r2, 0x10\n\ + movs r3, 0\n\ + bl BeginNormalPaletteFade\n\ + ldr r0, _08143EA8 @ =REG_BG3HOFS\n\ + strh r5, [r0]\n\ + ldr r1, _08143EAC @ =REG_BG3VOFS\n\ + movs r0, 0x20\n\ + strh r0, [r1]\n\ + subs r1, 0x10\n\ + ldr r2, _08143EB0 @ =0x00000703\n\ + adds r0, r2, 0\n\ + strh r0, [r1]\n\ + subs r1, 0xE\n\ + movs r2, 0xCA\n\ + lsls r2, 5\n\ + adds r0, r2, 0\n\ + strh r0, [r1]\n\ + mov r1, r9\n\ + mov r0, r8\n\ + strb r1, [r0]\n\ + ldr r0, _08143EB4 @ =gUnknown_0203935C\n\ + strh r5, [r0]\n\ + ldr r0, _08143EB8 @ =sub_8143B38\n\ + str r0, [r4]\n\ +_08143E90:\n\ + add sp, 0x4\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08143EA0: .4byte sub_8144514\n\ +_08143EA4: .4byte gTasks\n\ +_08143EA8: .4byte 0x4000000 + 0x1c\n\ +_08143EAC: .4byte 0x4000000 + 0x1e\n\ +_08143EB0: .4byte 0x00000703\n\ +_08143EB4: .4byte gUnknown_0203935C\n\ +_08143EB8: .4byte sub_8143B38\n\ + .syntax divided\n"); +} +#endif + +static void sub_8143EBC(u8 taskId) { + if (gTasks[taskId].data[12]) { + gTasks[taskId].data[12] -= 1; + return; + } + + BeginNormalPaletteFade(-1, 12, 0, 16, 0); + gTasks[taskId].func = sub_8143F04; +} + +static void sub_8143F04(u8 taskId) { + if (gPaletteFade.active) { + return; + } + + sub_81450AC(taskId); + gTasks[taskId].func = sub_8143F3C; +} + +static void sub_8143F3C(u8 taskId) { + u16 backup; + + sub_8144130(); + ResetPaletteFade(); + sub_8145128(0, 0x3800, 0); + ResetSpriteData(); + FreeAllSpritePalettes(); + BeginNormalPaletteFade(-1, 8, 16, 0, 0); + + REG_BG0CNT = 0x700; + backup = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = backup; + REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; + REG_DISPCNT = 0x140; + + gTasks[taskId].data[0] = 0x100; + gTasks[taskId].func = sub_8143FDC; +} -- cgit v1.2.3 From 481f403dfef6bdb7d5fae4ba7a095256ea4f7b9c Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sat, 7 Jan 2017 11:14:52 +0100 Subject: Continue credits --- src/credits.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 90 insertions(+), 4 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index 196a3a112..ef89707ff 100644 --- a/src/credits.c +++ b/src/credits.c @@ -4,6 +4,7 @@ #include "menu.h" #include "palette.h" #include "songs.h" +#include "sound.h" #include "sprite.h" #include "task.h" #include "text.h" @@ -47,7 +48,7 @@ extern u16 gUnknown_0840B7FC[32]; extern struct SpriteSheet gUnknown_0840CAA0; extern struct SpritePalette gUnknown_0840CAB0; -void sub_8143B38(u8 taskId); +static void sub_8143B38(u8 taskId); void sub_8143B68(u8 taskId); static void sub_8143BFC(u8 taskId); static void c2_080C9BFC(u8 taskId); @@ -56,14 +57,18 @@ static void sub_8143D04(u8 taskId); static void sub_8143EBC(u8 taskId); static void sub_8143F04(u8 taskId); static void sub_8143F3C(u8 taskId); +static void sub_8143FDC(u8 taskId); +static void sub_8144024(u8 taskId); +static void sub_8144080(u8 taskId); +static void sub_8144114(u8 taskId); +static void sub_8144130(void); -void sub_8143FDC(u8 taskId); -void sub_8144130(void); void sub_81441B8(u8 taskId); void sub_8144514(u8 taskId); u8 sub_8144ECC(u8 data, u8 taskId); void sub_81450AC(u8 taskId); void sub_8145128(u16, u16, u16); +void sub_81452D0(int, int); void sub_81458DC(void); static void sub_8143948(void) { @@ -334,7 +339,7 @@ _08143D24:\n\ ldr r0, _08143DD8 @ =gBirchGrassTilemap\n\ ldr r1, _08143DDC @ =0x06003800\n\ bl LZ77UnCompVram\n\ - ldr r0, _08143DE0 @ =0x0840281a\n\ + ldr r0, _08143DE0 @ =gBirchBagGrassPal + 2\n\ movs r1, 0x1\n\ movs r2, 0x3E\n\ bl LoadPalette\n\ @@ -542,3 +547,84 @@ static void sub_8143F3C(u8 taskId) { gTasks[taskId].data[0] = 0x100; gTasks[taskId].func = sub_8143FDC; } + +static void sub_8143FDC(u8 taskId) { + if (gTasks[taskId].data[0]) { + gTasks[taskId].data[0] -= 1; + return; + } + + BeginNormalPaletteFade(-1, 6, 0, 16, 0); + gTasks[taskId].func = sub_8144024; +} + +static void sub_8144024(u8 taskId) { + if (gPaletteFade.active) { + return; + } + + sub_81452D0(0x3800, 0); + + BeginNormalPaletteFade(-1, 0, 0, 0, 0); + gTasks[taskId].data[0] = 7200; + gTasks[taskId].func = sub_8144080; +} + +static void sub_8144080(u8 taskId) { + if (gPaletteFade.active) { + return; + } + + if (gTasks[taskId].data[0] == 0) { + FadeOutBGM(4); + BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF); + gTasks[taskId].func = sub_8144114; + return; + } + + if (gMain.newKeys) { + FadeOutBGM(4); + BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF); + gTasks[taskId].func = sub_8144114; + return; + } + + if (gTasks[taskId].data[0] == 7144) { + FadeOutBGM(8); + } + + if (gTasks[taskId].data[0] == 6840) { + m4aSongNumStart(BGM_END); + } + + gTasks[taskId].data[0] -= 1; +} + +static void sub_8144114(u8 taskId) { + if (gPaletteFade.active) { + return; + } + + SoftReset(0xFF); +} + +static void sub_8144130(void) { + REG_DISPCNT = 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; + + REG_BLDCNT = 0; + 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); +} -- cgit v1.2.3 From 771b8a7cfee913a6f1bac1d154b20604f82eb330 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sat, 7 Jan 2017 16:13:26 +0100 Subject: Continue decompilation --- src/credits.c | 252 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 245 insertions(+), 7 deletions(-) (limited to 'src/credits.c') 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 -- cgit v1.2.3 From b56b8bc3b4d284fb182f37dd1c96a7e51db76aee Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sat, 7 Jan 2017 18:27:35 +0100 Subject: Update code style --- src/credits.c | 148 ++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 98 insertions(+), 50 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index 7fa79cc2d..edfe170a1 100644 --- a/src/credits.c +++ b/src/credits.c @@ -88,10 +88,10 @@ struct HallOfFame { u8 sheet2[0x800]; }; -typedef struct CreditsEntry { +struct CreditsEntry { u8 var_0; u8 *text; -} CreditsEntry; +}; extern struct Unk201C000 unk_201C000; @@ -116,7 +116,7 @@ extern u8 gBirchHelpGfx[]; // data/credits extern u16 gUnknown_0840B7BC[32]; extern u16 gUnknown_0840B7FC[32]; -extern CreditsEntry *gCreditsEntryPointerTable[][5]; +extern struct CreditsEntry *gCreditsEntryPointerTable[][5]; extern struct SpriteSheet gUnknown_0840CAA0; extern struct SpritePalette gUnknown_0840CAB0; @@ -156,15 +156,18 @@ static void sub_814395C(void) { BuildOamBuffer(); UpdatePaletteFade(); - if (!(gMain.heldKeys & B_BUTTON)) { + if (!(gMain.heldKeys & B_BUTTON)) + { return; } - if (!gUnknown_02039324) { + if (!gUnknown_02039324) + { return; } - if (gTasks[gUnknown_02039322].func != sub_8143B68) { + if (gTasks[gUnknown_02039322].func != sub_8143B68) + { return; } @@ -181,7 +184,7 @@ void sub_81439D0(void) { s16 taskId3; u8 taskId2; u16 savedIme; - struct Unk201C000 * c000; + struct Unk201C000 *c000; sub_8144130(); SetVBlankCallback(NULL); @@ -195,8 +198,10 @@ void sub_81439D0(void) { gTasks[taskId].data[11] = 0; gTasks[taskId].data[13] = 1; - while (TRUE) { - if (sub_8144ECC(0, taskId)) { + while (TRUE) + { + if (sub_8144ECC(0, taskId)) + { break; } } @@ -244,7 +249,8 @@ void sub_81439D0(void) { } void sub_8143B38(u8 taskId) { - if (gPaletteFade.active) { + if (gPaletteFade.active) + { return; } @@ -254,7 +260,8 @@ void sub_8143B38(u8 taskId) { void sub_8143B68(u8 taskId) { u16 data11; - if (gTasks[taskId].data[4]) { + if (gTasks[taskId].data[4]) + { s16 secondaryTaskId; secondaryTaskId = gTasks[taskId].data[1]; @@ -268,12 +275,15 @@ void sub_8143B68(u8 taskId) { gUnknown_02039320 = 0; data11 = gTasks[taskId].data[11]; - if (gTasks[taskId].data[11] == 1) { + if (gTasks[taskId].data[11] == 1) + { gTasks[taskId].data[13] = data11; gTasks[taskId].data[11] = 0; BeginNormalPaletteFade(-1, 0, 0, 16, 0); gTasks[taskId].func = sub_8143BFC; - } else if (gTasks[taskId].data[11] == 2) { + } + else if (gTasks[taskId].data[11] == 2) + { gTasks[taskId].data[13] = data11; gTasks[taskId].data[11] = 0; BeginNormalPaletteFade(-1, 0, 0, 16, 0); @@ -282,7 +292,8 @@ void sub_8143B68(u8 taskId) { } static void sub_8143BFC(u8 taskId) { - if (gPaletteFade.active) { + if (gPaletteFade.active) + { return; } @@ -296,7 +307,8 @@ static void c2_080C9BFC(u8 taskId) { SetVBlankCallback(NULL); - if (!sub_8144ECC(gTasks[taskId].data[7], taskId)) { + if (!sub_8144ECC(gTasks[taskId].data[7], taskId)) + { return; } @@ -313,7 +325,8 @@ static void c2_080C9BFC(u8 taskId) { } static void sub_8143CC0(u8 taskId) { - if (gPaletteFade.active) { + if (gPaletteFade.active) + { return; } @@ -581,7 +594,8 @@ _08143EB8: .4byte sub_8143B38\n\ #endif static void sub_8143EBC(u8 taskId) { - if (gTasks[taskId].data[12]) { + if (gTasks[taskId].data[12]) + { gTasks[taskId].data[12] -= 1; return; } @@ -591,7 +605,8 @@ static void sub_8143EBC(u8 taskId) { } static void sub_8143F04(u8 taskId) { - if (gPaletteFade.active) { + if (gPaletteFade.active) + { return; } @@ -622,7 +637,8 @@ static void sub_8143F3C(u8 taskId) { } static void sub_8143FDC(u8 taskId) { - if (gTasks[taskId].data[0]) { + if (gTasks[taskId].data[0]) + { gTasks[taskId].data[0] -= 1; return; } @@ -632,7 +648,8 @@ static void sub_8143FDC(u8 taskId) { } static void sub_8144024(u8 taskId) { - if (gPaletteFade.active) { + if (gPaletteFade.active) + { return; } @@ -644,29 +661,34 @@ static void sub_8144024(u8 taskId) { } static void sub_8144080(u8 taskId) { - if (gPaletteFade.active) { + if (gPaletteFade.active) + { return; } - if (gTasks[taskId].data[0] == 0) { + if (gTasks[taskId].data[0] == 0) + { FadeOutBGM(4); BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF); gTasks[taskId].func = sub_8144114; return; } - if (gMain.newKeys) { + if (gMain.newKeys) + { FadeOutBGM(4); BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF); gTasks[taskId].func = sub_8144114; return; } - if (gTasks[taskId].data[0] == 7144) { + if (gTasks[taskId].data[0] == 7144) + { FadeOutBGM(8); } - if (gTasks[taskId].data[0] == 6840) { + if (gTasks[taskId].data[0] == 6840) + { m4aSongNumStart(BGM_END); } @@ -674,7 +696,8 @@ static void sub_8144080(u8 taskId) { } static void sub_8144114(u8 taskId) { - if (gPaletteFade.active) { + if (gPaletteFade.active) + { return; } @@ -705,14 +728,16 @@ static void sub_8144130(void) { static void sub_81441B8(u8 taskId) { u16 i; - switch (gTasks[taskId].data[0]) { + switch (gTasks[taskId].data[0]) + { case 0: case 6: case 7: case 8: case 9: default: - if (gPaletteFade.active) { + if (gPaletteFade.active) + { return; } gTasks[taskId].data[0] = 1; @@ -722,7 +747,8 @@ static void sub_81441B8(u8 taskId) { return; case 1: - if (gTasks[taskId].data[3] != 0) { + if (gTasks[taskId].data[3] != 0) + { gTasks[taskId].data[3] -= 1; return; } @@ -733,10 +759,13 @@ static void sub_81441B8(u8 taskId) { 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) { + if (gTasks[gTasks[taskId].data[1]].func == sub_8143B68) + { + if (gTasks[taskId].data[TD_CURRENT_PAGE] < PAGE_COUNT) + { - for (i = 0; i < 5; i++) { + for (i = 0; i < 5; i++) + { sub_8072BD8(gCreditsEntryPointerTable[gTasks[taskId].data[TD_CURRENT_PAGE]][i]->text, 0, 9 + i * 2, 240); } @@ -746,9 +775,12 @@ static void sub_81441B8(u8 taskId) { gTasks[gTasks[taskId].data[1]].data[14] = 1; - if (gTasks[gTasks[taskId].data[1]].data[13] == 1) { + if (gTasks[gTasks[taskId].data[1]].data[13] == 1) + { BeginNormalPaletteFade(0x300, 0, 16, 0, COLOR_LIGHT_GREEN); - } else { + } + else + { BeginNormalPaletteFade(0x300, 0, 16, 0, COLOR_DARK_GREEN); } return; @@ -765,7 +797,8 @@ static void sub_81441B8(u8 taskId) { case 3: REG_DISPCNT |= DISPCNT_BG0_ON; - if (gPaletteFade.active) { + if (gPaletteFade.active) + { return; } @@ -774,28 +807,34 @@ static void sub_81441B8(u8 taskId) { return; case 4: - if (gTasks[taskId].data[3] != 0) { + 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])) { + 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) { + if (gTasks[gTasks[taskId].data[1]].data[13] == 1) + { BeginNormalPaletteFade(0x300, 0, 0, 16, COLOR_LIGHT_GREEN); - } else { + } + else + { BeginNormalPaletteFade(0x300, 0, 0, 16, COLOR_DARK_GREEN); } return; case 5: - if (gPaletteFade.active) { + if (gPaletteFade.active) + { return; } @@ -815,54 +854,63 @@ static void sub_81441B8(u8 taskId) { static u8 sub_8144454(u8 page, u8 taskId) { // Starts with bike + ocean + morning - if (page == PAGE_PROGRAMMERS_1) { + if (page == PAGE_PROGRAMMERS_1) + { // Grass patch gTasks[taskId].data[11] = 2; } - if (page == PAGE_POKEMON_GRAHPIC_DESIGNERS_3) { + 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) { + if (page == PAGE_GAME_DESIGNERS_2) + { // Grass patch gTasks[taskId].data[11] = 2; } - if (page == PAGE_MAP_DATA_DESIGNERS) { + 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) { + if (page == PAGE_SPECIAL_THANKS_1) + { // Grass patch gTasks[taskId].data[11] = 2; } - if (page == PAGE_TASK_MANAGERS) { + if (page == PAGE_TASK_MANAGERS) + { // Bike + forest + sunset gTasks[taskId].data[7] = 3; gTasks[taskId].data[11] = 1; } - if (page == PAGE_TRANSLATION_COORDINATOR) { + if (page == PAGE_TRANSLATION_COORDINATOR) + { // Grass patch gTasks[taskId].data[11] = 2; } - if (page == LAST_PAGE) { + if (page == LAST_PAGE) + { // Bike + town + night gTasks[taskId].data[7] = 4; gTasks[taskId].data[11] = 1; } - if (gTasks[taskId].data[11] != 0) { + if (gTasks[taskId].data[11] != 0) + { // Returns true if changed? return TRUE; } return FALSE; -} \ No newline at end of file +} -- cgit v1.2.3 From eac8f3514f91f9770b61305b4c443e8d64536350 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sat, 7 Jan 2017 18:45:09 +0100 Subject: Unindent switch --- src/credits.c | 268 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 134 insertions(+), 134 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index edfe170a1..13a6a1633 100644 --- a/src/credits.c +++ b/src/credits.c @@ -338,58 +338,58 @@ static void sub_8143CC0(u8 taskId) { #ifdef NONMATCHING static void sub_8143D04(u8 taskId) { switch (gMain.state) { - default: - case 0: { - u16 i; - - ResetSpriteData(); - FreeAllSpritePalettes(); - gReservedSpritePaletteCount = 8; - LZ77UnCompVram(&gBirchHelpGfx, (void *) VRAM); - LZ77UnCompVram(&gBirchBagTilemap, (void *) (VRAM + 0x3800)); - LoadPalette(gBirchBagGrassPal + 2, 1, 31 * 2); - - for (i = 0; i < 0x800; i++) { - gHallOfFame.sheet0[i] = 0x11; - } + default: + case 0: { + u16 i; + + ResetSpriteData(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 8; + LZ77UnCompVram(&gBirchHelpGfx, (void *) VRAM); + LZ77UnCompVram(&gBirchBagTilemap, (void *) (VRAM + 0x3800)); + LoadPalette(gBirchBagGrassPal + 2, 1, 31 * 2); + + for (i = 0; i < 0x800; i++) { + gHallOfFame.sheet0[i] = 0x11; + } - for (i = 0; i < 0x800; i++) { - gHallOfFame.sheet1[i] = 0x22; - } + for (i = 0; i < 0x800; i++) { + gHallOfFame.sheet1[i] = 0x22; + } - for (i = 0; i < 0x800; i++) { - gHallOfFame.sheet2[i] = 0x33; - } + for (i = 0; i < 0x800; i++) { + gHallOfFame.sheet2[i] = 0x33; + } - unk_201f800[0] = 0; - unk_201f800[1] = 0x53FF; // light yellow - unk_201f800[2] = 0x529F; // light red - unk_201f800[3] = 0x7E94; // light blue + unk_201f800[0] = 0; + unk_201f800[1] = 0x53FF; // light yellow + unk_201f800[2] = 0x529F; // light red + unk_201f800[3] = 0x7E94; // light blue - LoadSpriteSheet(&gUnknown_0840CAA0); - LoadSpritePalette(&gUnknown_0840CAB0); + LoadSpriteSheet(&gUnknown_0840CAA0); + LoadSpritePalette(&gUnknown_0840CAB0); - gMain.state += 1; - break; - } + gMain.state += 1; + break; + } - case 1: { - gTasks[taskId].data[3] = CreateTask(sub_8144514, 0); - gTasks[gTasks[taskId].data[3]].data[0] = 1; - gTasks[gTasks[taskId].data[3]].data[1] = taskId; - gTasks[gTasks[taskId].data[3]].data[2] = gTasks[taskId].data[7]; - - BeginNormalPaletteFade(-1, 0, 16, 0, 0); - REG_BG3HOFS = 0; - REG_BG3VOFS = 32; - REG_BG3CNT = 0x703; - REG_DISPCNT = 0x1940; - - gMain.state = 0; - gUnknown_0203935C = 0; - gTasks[taskId].func = sub_8143B38; - break; - } + case 1: { + gTasks[taskId].data[3] = CreateTask(sub_8144514, 0); + gTasks[gTasks[taskId].data[3]].data[0] = 1; + gTasks[gTasks[taskId].data[3]].data[1] = taskId; + gTasks[gTasks[taskId].data[3]].data[2] = gTasks[taskId].data[7]; + + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + REG_BG3HOFS = 0; + REG_BG3VOFS = 32; + REG_BG3CNT = 0x703; + REG_DISPCNT = 0x1940; + + gMain.state = 0; + gUnknown_0203935C = 0; + gTasks[taskId].func = sub_8143B38; + break; + } } } #else @@ -730,122 +730,122 @@ static void sub_81441B8(u8 taskId) { 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; + 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; + case 1: + if (gTasks[taskId].data[3] != 0) + { + gTasks[taskId].data[3] -= 1; return; + } - case 2: - REG_DISPCNT &= ~DISPCNT_BG0_ON; + gTasks[taskId].data[0] += 1; + return; - if (gTasks[gTasks[taskId].data[1]].func == sub_8143B68) + 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) { - 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; + 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[taskId].data[0] = 10; + 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[gTasks[taskId].data[1]].data[14] = 0; + + gTasks[taskId].data[0] = 10; return; + } - case 3: - REG_DISPCNT |= DISPCNT_BG0_ON; + gTasks[gTasks[taskId].data[1]].data[14] = 0; + return; - if (gPaletteFade.active) - { - return; - } + case 3: + REG_DISPCNT |= DISPCNT_BG0_ON; - gTasks[taskId].data[3] = UNK_DEFINE_82; - gTasks[taskId].data[0] += 1; + if (gPaletteFade.active) + { return; + } - case 4: - if (gTasks[taskId].data[3] != 0) - { - gTasks[taskId].data[3] -= 1; - return; - } + gTasks[taskId].data[3] = UNK_DEFINE_82; + gTasks[taskId].data[0] += 1; + return; - if (sub_8144454((u8) gTasks[taskId].data[2], (u8) gTasks[taskId].data[1])) - { - 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; + } - 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); - } + gTasks[taskId].data[0] += 1; - return; + 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); + } - case 5: - if (gPaletteFade.active) - { - return; - } + return; - MenuZeroFillWindowRect(0, 9, 29, 19); - gTasks[taskId].data[0] = 2; + case 5: + if (gPaletteFade.active) + { return; + } - case 10: - gTasks[gTasks[taskId].data[1]].data[4] = 1; - DestroyTask(taskId); - 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; } } -- cgit v1.2.3 From c4506ac9d4ca81bb33f0684e81f3b323fe773ef0 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Mon, 9 Jan 2017 01:16:00 +0100 Subject: Split up different credits tasks --- src/credits.c | 309 +++++++++++++++++++++++++++++++--------------------------- 1 file changed, 165 insertions(+), 144 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index 13a6a1633..665279f8e 100644 --- a/src/credits.c +++ b/src/credits.c @@ -72,7 +72,28 @@ enum { #define COLOR_LIGHT_GREEN 0x328D enum { - TD_CURRENT_PAGE = 2, + TDA_0 = 0, + TDA_TASK_C_ID = 1, + TDA_TASK_D_ID = 3, + TDA_4 = 4, + TDA_7 = 7, // Has something to do with the bike scene + TDA_11 = 11, // Gets set depending on whether the bike or the grass scene should be shown + TDA_12 = 12, + TDA_13 = 13, + TDA_14 = 14, + TDA_TASK_B_ID = 15, + + // Appears to be responsible for text + TDB_0 = 0, + TDB_TASK_A_ID = 1, + TDB_CURRENT_PAGE = 2, + TDB_3 = 3, + + TDC_0 = 0, + + TDD_0 = 0, + TDD_1 = 1, + TDD_2 = 2, }; struct Unk201C000 { @@ -101,7 +122,7 @@ extern u8 unk_201f000[0x800]; extern u16 unk_201f800[]; extern s16 gUnknown_02039320; -extern u16 gUnknown_02039322; +extern u16 gUnknown_02039322; // TASK A extern u8 gUnknown_02039324; extern u8 gUnknown_02039325; extern u16 gUnknown_0203935C; @@ -120,31 +141,31 @@ extern struct CreditsEntry *gCreditsEntryPointerTable[][5]; extern struct SpriteSheet gUnknown_0840CAA0; extern struct SpritePalette gUnknown_0840CAB0; -static void sub_8143B38(u8 taskId); -void sub_8143B68(u8 taskId); -static void sub_8143BFC(u8 taskId); -static void c2_080C9BFC(u8 taskId); -static void sub_8143CC0(u8 taskId); -static void sub_8143D04(u8 taskId); -static void sub_8143EBC(u8 taskId); -static void sub_8143F04(u8 taskId); -static void sub_8143F3C(u8 taskId); -static void sub_8143FDC(u8 taskId); -static void sub_8144024(u8 taskId); -static void sub_8144080(u8 taskId); -static void sub_8144114(u8 taskId); +static void task_a_8143B38(u8 taskIdA); +void task_a_8143B68(u8 taskIdA); +static void task_a_8143BFC(u8 taskIdA); +static void task_a_080C9BFC(u8 taskIdA); +static void task_a_8143CC0(u8 taskIdA); +static void task_a_8143D04(u8 taskIdA); +static void task_a_8143EBC(u8 taskIdA); +static void task_a_8143F04(u8 taskIdA); +static void task_a_8143F3C(u8 taskIdA); +static void task_a_8143FDC(u8 taskIdA); +static void task_a_8144024(u8 taskIdA); +static void task_a_8144080(u8 taskIdA); +static void task_a_8144114(u8 taskIdA); static void sub_8144130(void); -static void sub_81441B8(u8 taskId); -static u8 sub_8144454(u8 page, u8 taskId); +static void task_b_81441B8(u8 taskIdB); +static u8 sub_8144454(u8 page, u8 taskIdA); -void sub_8144514(u8 taskId); -u8 sub_8144ECC(u8 data, u8 taskId); -void sub_81450AC(u8 taskId); +void task_d_8144514(u8 taskIdD); +u8 sub_8144ECC(u8 data, u8 taskIdA); +void sub_81450AC(u8 taskIdA); void sub_8145128(u16, u16, u16); void sub_81452D0(int, int); void sub_81458DC(void); -static void sub_8143948(void) { +static void vblank_8143948(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); @@ -166,12 +187,12 @@ static void sub_814395C(void) { return; } - if (gTasks[gUnknown_02039322].func != sub_8143B68) + if (gTasks[gUnknown_02039322].func != task_a_8143B68) { return; } - sub_8143948(); + vblank_8143948(); RunTasks(); AnimateSprites(); BuildOamBuffer(); @@ -180,9 +201,9 @@ static void sub_814395C(void) { } void sub_81439D0(void) { - u8 taskId; - s16 taskId3; - u8 taskId2; + u8 taskIdA; + s16 taskIdC; + u8 taskIdB; u16 savedIme; struct Unk201C000 *c000; @@ -191,23 +212,23 @@ void sub_81439D0(void) { ResetPaletteFade(); ResetTasks(); - taskId = CreateTask(sub_8143B38, 0); + taskIdA = CreateTask(task_a_8143B38, 0); - gTasks[taskId].data[4] = 0; - gTasks[taskId].data[7] = 0; - gTasks[taskId].data[11] = 0; - gTasks[taskId].data[13] = 1; + gTasks[taskIdA].data[TDA_4] = 0; + gTasks[taskIdA].data[TDA_7] = 0; + gTasks[taskIdA].data[TDA_11] = 0; + gTasks[taskIdA].data[TDA_13] = 1; while (TRUE) { - if (sub_8144ECC(0, taskId)) + if (sub_8144ECC(0, taskIdA)) { break; } } - taskId3 = gTasks[taskId].data[1]; - gTasks[taskId3].data[0] = 40; + taskIdC = gTasks[taskIdA].data[TDA_TASK_C_ID]; + gTasks[taskIdC].data[TDC_0] = 40; SetUpWindowConfig(&gWindowConfig_81E7208); InitMenuWindow(&gWindowConfig_81E7208); @@ -217,10 +238,10 @@ void sub_81439D0(void) { REG_BG0VOFS = 0xFFFC; - taskId2 = CreateTask(sub_81441B8, 0); + taskIdB = CreateTask(task_b_81441B8, 0); - gTasks[taskId2].data[1] = taskId; - gTasks[taskId].data[15] = taskId2; + gTasks[taskIdB].data[TDB_TASK_A_ID] = taskIdA; + gTasks[taskIdA].data[TDA_TASK_B_ID] = taskIdB; BeginNormalPaletteFade(-1, 0, 16, 0, 0); @@ -232,7 +253,7 @@ void sub_81439D0(void) { REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; - SetVBlankCallback(sub_8143948); + SetVBlankCallback(vblank_8143948); m4aSongNumStart(BGM_THANKFOR); SetMainCallback2(sub_814395C); gUnknown_02039325 = 0; @@ -245,69 +266,69 @@ void sub_81439D0(void) { c000->var_8A = 0; c000->var_8C = 0; - gUnknown_02039322 = taskId; + gUnknown_02039322 = taskIdA; } -void sub_8143B38(u8 taskId) { +void task_a_8143B38(u8 taskIdA) { if (gPaletteFade.active) { return; } - gTasks[taskId].func = sub_8143B68; + gTasks[taskIdA].func = task_a_8143B68; } -void sub_8143B68(u8 taskId) { +void task_a_8143B68(u8 taskIdA) { u16 data11; - if (gTasks[taskId].data[4]) + if (gTasks[taskIdA].data[TDA_4]) { - s16 secondaryTaskId; + s16 taskIdC; - secondaryTaskId = gTasks[taskId].data[1]; - gTasks[secondaryTaskId].data[0] = 30; + taskIdC = gTasks[taskIdA].data[TDA_TASK_C_ID]; + gTasks[taskIdC].data[TDC_0] = 30; - gTasks[taskId].data[12] = 0x100; - gTasks[taskId].func = sub_8143EBC; + gTasks[taskIdA].data[TDA_12] = 0x100; + gTasks[taskIdA].func = task_a_8143EBC; return; } gUnknown_02039320 = 0; - data11 = gTasks[taskId].data[11]; + data11 = gTasks[taskIdA].data[TDA_11]; - if (gTasks[taskId].data[11] == 1) + if (gTasks[taskIdA].data[TDA_11] == 1) { - gTasks[taskId].data[13] = data11; - gTasks[taskId].data[11] = 0; + gTasks[taskIdA].data[TDA_13] = data11; + gTasks[taskIdA].data[TDA_11] = 0; BeginNormalPaletteFade(-1, 0, 0, 16, 0); - gTasks[taskId].func = sub_8143BFC; + gTasks[taskIdA].func = task_a_8143BFC; } - else if (gTasks[taskId].data[11] == 2) + else if (gTasks[taskIdA].data[TDA_11] == 2) { - gTasks[taskId].data[13] = data11; - gTasks[taskId].data[11] = 0; + gTasks[taskIdA].data[TDA_13] = data11; + gTasks[taskIdA].data[TDA_11] = 0; BeginNormalPaletteFade(-1, 0, 0, 16, 0); - gTasks[taskId].func = sub_8143CC0; + gTasks[taskIdA].func = task_a_8143CC0; } } -static void sub_8143BFC(u8 taskId) { +static void task_a_8143BFC(u8 taskIdA) { if (gPaletteFade.active) { return; } REG_DISPCNT = 0; - sub_81450AC(taskId); - gTasks[taskId].func = c2_080C9BFC; + sub_81450AC(taskIdA); + gTasks[taskIdA].func = task_a_080C9BFC; } -static void c2_080C9BFC(u8 taskId) { +static void task_a_080C9BFC(u8 taskIdA) { u16 backup; SetVBlankCallback(NULL); - if (!sub_8144ECC(gTasks[taskId].data[7], taskId)) + if (!sub_8144ECC(gTasks[taskIdA].data[TDA_7], taskIdA)) { return; } @@ -320,23 +341,23 @@ static void c2_080C9BFC(u8 taskId) { REG_IME = backup; REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; - SetVBlankCallback(sub_8143948); - gTasks[taskId].func = sub_8143B38; + SetVBlankCallback(vblank_8143948); + gTasks[taskIdA].func = task_a_8143B38; } -static void sub_8143CC0(u8 taskId) { +static void task_a_8143CC0(u8 taskIdA) { if (gPaletteFade.active) { return; } REG_DISPCNT = 0; - sub_81450AC(taskId); - gTasks[taskId].func = sub_8143D04; + sub_81450AC(taskIdA); + gTasks[taskIdA].func = task_a_8143D04; } #ifdef NONMATCHING -static void sub_8143D04(u8 taskId) { +static void task_a_8143D04(u8 taskIdA) { switch (gMain.state) { default: case 0: { @@ -374,10 +395,10 @@ static void sub_8143D04(u8 taskId) { } case 1: { - gTasks[taskId].data[3] = CreateTask(sub_8144514, 0); - gTasks[gTasks[taskId].data[3]].data[0] = 1; - gTasks[gTasks[taskId].data[3]].data[1] = taskId; - gTasks[gTasks[taskId].data[3]].data[2] = gTasks[taskId].data[7]; + gTasks[taskIdA].data[TDA_TASK_D_ID] = CreateTask(task_d_8144514, 0); + gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_0] = 1; + gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_1] = taskIdA; + gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_2] = gTasks[taskIdA].data[TDA_7]; BeginNormalPaletteFade(-1, 0, 16, 0, 0); REG_BG3HOFS = 0; @@ -387,14 +408,14 @@ static void sub_8143D04(u8 taskId) { gMain.state = 0; gUnknown_0203935C = 0; - gTasks[taskId].func = sub_8143B38; + gTasks[taskIdA].func = task_a_8143B38; break; } } } #else __attribute__((naked)) -static void sub_8143D04(u8 taskId) { +static void task_a_8143D04(u8 taskId) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ mov r7, r9\n\ @@ -509,7 +530,7 @@ _08143E00: .4byte 0x0000529f\n\ _08143E04: .4byte 0x00007e94\n\ _08143E08: .4byte gUnknown_0840CAB0\n\ _08143E0C:\n\ - ldr r0, _08143EA0 @ =sub_8144514\n\ + ldr r0, _08143EA0 @ =task_d_8144514\n\ movs r1, 0\n\ bl CreateTask\n\ ldr r2, _08143EA4 @ =gTasks\n\ @@ -582,39 +603,39 @@ _08143E90:\n\ pop {r0}\n\ bx r0\n\ .align 2, 0\n\ -_08143EA0: .4byte sub_8144514\n\ +_08143EA0: .4byte task_d_8144514\n\ _08143EA4: .4byte gTasks\n\ _08143EA8: .4byte 0x4000000 + 0x1c\n\ _08143EAC: .4byte 0x4000000 + 0x1e\n\ _08143EB0: .4byte 0x00000703\n\ _08143EB4: .4byte gUnknown_0203935C\n\ -_08143EB8: .4byte sub_8143B38\n\ +_08143EB8: .4byte task_a_8143B38\n\ .syntax divided\n"); } #endif -static void sub_8143EBC(u8 taskId) { - if (gTasks[taskId].data[12]) +static void task_a_8143EBC(u8 taskIdA) { + if (gTasks[taskIdA].data[TDA_12]) { - gTasks[taskId].data[12] -= 1; + gTasks[taskIdA].data[TDA_12] -= 1; return; } BeginNormalPaletteFade(-1, 12, 0, 16, 0); - gTasks[taskId].func = sub_8143F04; + gTasks[taskIdA].func = task_a_8143F04; } -static void sub_8143F04(u8 taskId) { +static void task_a_8143F04(u8 taskIdA) { if (gPaletteFade.active) { return; } - sub_81450AC(taskId); - gTasks[taskId].func = sub_8143F3C; + sub_81450AC(taskIdA); + gTasks[taskIdA].func = task_a_8143F3C; } -static void sub_8143F3C(u8 taskId) { +static void task_a_8143F3C(u8 taskIdA) { u16 backup; sub_8144130(); @@ -632,22 +653,22 @@ static void sub_8143F3C(u8 taskId) { REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; REG_DISPCNT = 0x140; - gTasks[taskId].data[0] = 0x100; - gTasks[taskId].func = sub_8143FDC; + gTasks[taskIdA].data[TDA_0] = 0x100; + gTasks[taskIdA].func = task_a_8143FDC; } -static void sub_8143FDC(u8 taskId) { - if (gTasks[taskId].data[0]) +static void task_a_8143FDC(u8 taskIdA) { + if (gTasks[taskIdA].data[TDA_0]) { - gTasks[taskId].data[0] -= 1; + gTasks[taskIdA].data[TDA_0] -= 1; return; } BeginNormalPaletteFade(-1, 6, 0, 16, 0); - gTasks[taskId].func = sub_8144024; + gTasks[taskIdA].func = task_a_8144024; } -static void sub_8144024(u8 taskId) { +static void task_a_8144024(u8 taskIdA) { if (gPaletteFade.active) { return; @@ -656,21 +677,21 @@ static void sub_8144024(u8 taskId) { sub_81452D0(0x3800, 0); BeginNormalPaletteFade(-1, 0, 0, 0, 0); - gTasks[taskId].data[0] = 7200; - gTasks[taskId].func = sub_8144080; + gTasks[taskIdA].data[TDA_0] = 7200; + gTasks[taskIdA].func = task_a_8144080; } -static void sub_8144080(u8 taskId) { +static void task_a_8144080(u8 taskIdA) { if (gPaletteFade.active) { return; } - if (gTasks[taskId].data[0] == 0) + if (gTasks[taskIdA].data[TDA_0] == 0) { FadeOutBGM(4); BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF); - gTasks[taskId].func = sub_8144114; + gTasks[taskIdA].func = task_a_8144114; return; } @@ -678,24 +699,24 @@ static void sub_8144080(u8 taskId) { { FadeOutBGM(4); BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF); - gTasks[taskId].func = sub_8144114; + gTasks[taskIdA].func = task_a_8144114; return; } - if (gTasks[taskId].data[0] == 7144) + if (gTasks[taskIdA].data[TDA_0] == 7144) { FadeOutBGM(8); } - if (gTasks[taskId].data[0] == 6840) + if (gTasks[taskIdA].data[TDA_0] == 6840) { m4aSongNumStart(BGM_END); } - gTasks[taskId].data[0] -= 1; + gTasks[taskIdA].data[TDA_0] -= 1; } -static void sub_8144114(u8 taskId) { +static void task_a_8144114(u8 taskIdA) { if (gPaletteFade.active) { return; @@ -725,10 +746,10 @@ static void sub_8144130(void) { DmaFill16(3, 0, (void *) (PLTT + 2), PLTT_SIZE - 2); } -static void sub_81441B8(u8 taskId) { +static void task_b_81441B8(u8 taskIdB) { u16 i; - switch (gTasks[taskId].data[0]) + switch (gTasks[taskIdB].data[TDB_0]) { case 0: case 6: @@ -740,42 +761,42 @@ static void sub_81441B8(u8 taskId) { { return; } - gTasks[taskId].data[0] = 1; - gTasks[taskId].data[3] = 0x58; - gTasks[gTasks[taskId].data[1]].data[14] = 0; + gTasks[taskIdB].data[TDB_0] = 1; + gTasks[taskIdB].data[TDB_3] = 0x58; + gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 0; gUnknown_02039320 = 0; return; case 1: - if (gTasks[taskId].data[3] != 0) + if (gTasks[taskIdB].data[TDB_3] != 0) { - gTasks[taskId].data[3] -= 1; + gTasks[taskIdB].data[TDB_3] -= 1; return; } - gTasks[taskId].data[0] += 1; + gTasks[taskIdB].data[TDB_0] += 1; return; case 2: REG_DISPCNT &= ~DISPCNT_BG0_ON; - if (gTasks[gTasks[taskId].data[1]].func == sub_8143B68) + if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].func == task_a_8143B68) { - if (gTasks[taskId].data[TD_CURRENT_PAGE] < PAGE_COUNT) + if (gTasks[taskIdB].data[TDB_CURRENT_PAGE] < PAGE_COUNT) { for (i = 0; i < 5; i++) { - sub_8072BD8(gCreditsEntryPointerTable[gTasks[taskId].data[TD_CURRENT_PAGE]][i]->text, 0, + sub_8072BD8(gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text, 0, 9 + i * 2, 240); } - gTasks[taskId].data[TD_CURRENT_PAGE] += 1; - gTasks[taskId].data[0] += 1; + gTasks[taskIdB].data[TDB_CURRENT_PAGE] += 1; + gTasks[taskIdB].data[TDB_0] += 1; - gTasks[gTasks[taskId].data[1]].data[14] = 1; + gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 1; - if (gTasks[gTasks[taskId].data[1]].data[13] == 1) + if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_13] == 1) { BeginNormalPaletteFade(0x300, 0, 16, 0, COLOR_LIGHT_GREEN); } @@ -787,11 +808,11 @@ static void sub_81441B8(u8 taskId) { } - gTasks[taskId].data[0] = 10; + gTasks[taskIdB].data[TDB_0] = 10; return; } - gTasks[gTasks[taskId].data[1]].data[14] = 0; + gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 0; return; case 3: @@ -802,26 +823,26 @@ static void sub_81441B8(u8 taskId) { return; } - gTasks[taskId].data[3] = UNK_DEFINE_82; - gTasks[taskId].data[0] += 1; + gTasks[taskIdB].data[TDB_3] = UNK_DEFINE_82; + gTasks[taskIdB].data[TDB_0] += 1; return; case 4: - if (gTasks[taskId].data[3] != 0) + if (gTasks[taskIdB].data[TDB_3] != 0) { - gTasks[taskId].data[3] -= 1; + gTasks[taskIdB].data[TDB_3] -= 1; return; } - if (sub_8144454((u8) gTasks[taskId].data[2], (u8) gTasks[taskId].data[1])) + if (sub_8144454((u8) gTasks[taskIdB].data[TDB_CURRENT_PAGE], (u8) gTasks[taskIdB].data[TDB_TASK_A_ID])) { - gTasks[taskId].data[0] += 1; + gTasks[taskIdB].data[TDB_0] += 1; return; } - gTasks[taskId].data[0] += 1; + gTasks[taskIdB].data[TDB_0] += 1; - if (gTasks[gTasks[taskId].data[1]].data[13] == 1) + if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_13] == 1) { BeginNormalPaletteFade(0x300, 0, 0, 16, COLOR_LIGHT_GREEN); } @@ -839,74 +860,74 @@ static void sub_81441B8(u8 taskId) { } MenuZeroFillWindowRect(0, 9, 29, 19); - gTasks[taskId].data[0] = 2; + gTasks[taskIdB].data[TDB_0] = 2; return; case 10: - gTasks[gTasks[taskId].data[1]].data[4] = 1; - DestroyTask(taskId); + gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_4] = 1; + DestroyTask(taskIdB); return; } } #define LAST_PAGE (PAGE_TEXT_EDITOR) -static u8 sub_8144454(u8 page, u8 taskId) { +static u8 sub_8144454(u8 page, u8 taskIdA) { // Starts with bike + ocean + morning if (page == PAGE_PROGRAMMERS_1) { // Grass patch - gTasks[taskId].data[11] = 2; + gTasks[taskIdA].data[TDA_11] = 2; } if (page == PAGE_POKEMON_GRAHPIC_DESIGNERS_3) { // Bike + ocean + sunset - gTasks[taskId].data[7] = 1; - gTasks[taskId].data[11] = 1; + gTasks[taskIdA].data[TDA_7] = 1; + gTasks[taskIdA].data[TDA_11] = 1; } if (page == PAGE_GAME_DESIGNERS_2) { // Grass patch - gTasks[taskId].data[11] = 2; + gTasks[taskIdA].data[TDA_11] = 2; } if (page == PAGE_MAP_DATA_DESIGNERS) { // Bike + forest + sunset - gTasks[taskId].data[7] = 2; - gTasks[taskId].data[11] = 1; + gTasks[taskIdA].data[TDA_7] = 2; + gTasks[taskIdA].data[TDA_11] = 1; } if (page == PAGE_SPECIAL_THANKS_1) { // Grass patch - gTasks[taskId].data[11] = 2; + gTasks[taskIdA].data[TDA_11] = 2; } if (page == PAGE_TASK_MANAGERS) { // Bike + forest + sunset - gTasks[taskId].data[7] = 3; - gTasks[taskId].data[11] = 1; + gTasks[taskIdA].data[TDA_7] = 3; + gTasks[taskIdA].data[TDA_11] = 1; } if (page == PAGE_TRANSLATION_COORDINATOR) { // Grass patch - gTasks[taskId].data[11] = 2; + gTasks[taskIdA].data[TDA_11] = 2; } if (page == LAST_PAGE) { // Bike + town + night - gTasks[taskId].data[7] = 4; - gTasks[taskId].data[11] = 1; + gTasks[taskIdA].data[TDA_7] = 4; + gTasks[taskIdA].data[TDA_11] = 1; } - if (gTasks[taskId].data[11] != 0) + if (gTasks[taskIdA].data[TDA_11] != 0) { // Returns true if changed? return TRUE; -- cgit v1.2.3 From 0e96421b07bf5e51a7197535262950c45391cf1f Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Tue, 10 Jan 2017 21:08:59 +0100 Subject: Continue decompiling credits --- src/credits.c | 2047 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 2027 insertions(+), 20 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index 665279f8e..d6eea4cac 100644 --- a/src/credits.c +++ b/src/credits.c @@ -1,14 +1,36 @@ #include "global.h" +#include "asm.h" +#include "decompress.h" #include "m4a.h" #include "main.h" #include "menu.h" #include "palette.h" #include "songs.h" #include "sound.h" +#include "species.h" #include "sprite.h" #include "task.h" #include "text.h" +u32 NationalPokedexNumToSpecies(u16 nationalNum); + +struct MonCoords { + u8 x, y; +}; + + +extern void *species_and_otid_get_pal(u32, u16, u16); + +asm(".set REG_BASE, 0x4000000"); +asm(".set OFFSET_REG_BG3HOFS, 0x1c"); +asm(".set OFFSET_REG_BG3VOFS, 0x1e"); +asm(".set OFFSET_REG_BLDCNT, 0x50"); +asm(".set OFFSET_REG_BLDALPHA, 0x52"); +asm(".set REG_BG3HOFS, REG_BASE + OFFSET_REG_BG3HOFS"); +asm(".set REG_BG3VOFS, REG_BASE + OFFSET_REG_BG3VOFS"); +asm(".set REG_BLDCNT, REG_BASE + OFFSET_REG_BLDCNT"); +asm(".set REG_BLDALPHA, REG_BASE + OFFSET_REG_BLDALPHA"); + enum { PAGE_TITLE, PAGE_DIRECTOR, @@ -74,8 +96,11 @@ enum { enum { TDA_0 = 0, TDA_TASK_C_ID = 1, + TDA_TASK_E_ID = 2, TDA_TASK_D_ID = 3, TDA_4 = 4, + TDA_PLAYER_CYCLIST = 5, + TDA_RIVAL_CYCLIST = 6, TDA_7 = 7, // Has something to do with the bike scene TDA_11 = 11, // Gets set depending on whether the bike or the grass scene should be shown TDA_12 = 12, @@ -90,10 +115,20 @@ enum { TDB_3 = 3, TDC_0 = 0, - - TDD_0 = 0, - TDD_1 = 1, + TDC_1 = 1, + TDC_2 = 2, + TDC_3 = 3, + TDC_4 = 4, + TDC_5 = 5, + + TDD_STATE = 0, + TDD_TASK_A_ID = 1, TDD_2 = 2, + TDD_3 = 3, + + TDE_0 = 0, + TDE_1 = 1, + TDE_TASK_A_ID = 2, }; struct Unk201C000 { @@ -101,6 +136,7 @@ struct Unk201C000 { u16 var_88; u16 var_8A; u16 var_8C; + u16 var_8E; }; struct HallOfFame { @@ -121,30 +157,60 @@ extern u8 unk_201e800[0x800]; extern u8 unk_201f000[0x800]; extern u16 unk_201f800[]; +extern struct SpriteTemplate gUnknown_02024E8C; + extern s16 gUnknown_02039320; extern u16 gUnknown_02039322; // TASK A extern u8 gUnknown_02039324; extern u8 gUnknown_02039325; -extern u16 gUnknown_0203935C; + +extern u16 gUnknown_02039358; +extern u16 gUnknown_0203935A; +extern s16 gUnknown_0203935C; + extern u8 gReservedSpritePaletteCount; +// data/data2 +extern struct MonCoords gMonFrontPicCoords[]; +extern struct SpriteSheet gMonFrontPicTable[]; + // data/starter_choose extern u16 gBirchBagGrassPal[32]; extern u8 gBirchBagTilemap[]; extern u8 gBirchHelpGfx[]; -// data/credits +// data/hall_of_fame +extern void *gUnknown_0840B5A0[]; + +// data/credits extern u16 gUnknown_0840B7BC[32]; extern u16 gUnknown_0840B7FC[32]; +extern u8 gUnknown_0840B85A[]; extern struct CreditsEntry *gCreditsEntryPointerTable[][5]; +extern u8 gUnknown_0840CA00[][2]; extern struct SpriteSheet gUnknown_0840CAA0; extern struct SpritePalette gUnknown_0840CAB0; +extern union AnimCmd *gSpriteAnimTable_0840CA54[]; +extern union AnimCmd *gSpriteAnimTable_0840CA94[]; +extern struct SpriteTemplate gSpriteTemplate_840CAEC; + +// data/intro_credits_graphics +extern const struct SpriteSheet gIntro2BrendanSpriteSheet; +extern const struct SpriteSheet gIntro2MaySpriteSheet; +extern const struct SpriteSheet gIntro2BicycleSpriteSheet; +extern const struct SpritePalette gIntro2SpritePalettes[]; +extern const struct SpriteSheet gUnknown_08416E24; +extern const struct SpriteSheet gUnknown_08416E34; + +// graphics +extern u8 gCreditsCopyrightEnd_Gfx[]; +extern u16 gIntroCopyright_Pal[16]; static void task_a_8143B38(u8 taskIdA); -void task_a_8143B68(u8 taskIdA); +static void task_a_8143B68(u8 taskIdA); static void task_a_8143BFC(u8 taskIdA); -static void task_a_080C9BFC(u8 taskIdA); +static void task_a_80C9BFC(u8 taskIdA); static void task_a_8143CC0(u8 taskIdA); static void task_a_8143D04(u8 taskIdA); static void task_a_8143EBC(u8 taskIdA); @@ -157,12 +223,14 @@ static void task_a_8144114(u8 taskIdA); static void sub_8144130(void); static void task_b_81441B8(u8 taskIdB); static u8 sub_8144454(u8 page, u8 taskIdA); - void task_d_8144514(u8 taskIdD); -u8 sub_8144ECC(u8 data, u8 taskIdA); -void sub_81450AC(u8 taskIdA); +static bool8 sub_8144ECC(u8 data, u8 taskIdA); +static void sub_81450AC(u8 taskIdA); void sub_8145128(u16, u16, u16); -void sub_81452D0(int, int); +void sub_81452D0(u16 arg0, u16 arg1); +static void spritecb_player_8145378(struct Sprite *sprite); +static void spritecb_rival_8145420(struct Sprite *sprite); +u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3); void sub_81458DC(void); static void vblank_8143948(void) { @@ -245,7 +313,6 @@ void sub_81439D0(void) { BeginNormalPaletteFade(-1, 0, 16, 0, 0); - savedIme = REG_IME; REG_IME = 0; REG_IE |= INTR_FLAG_VBLANK; @@ -269,7 +336,7 @@ void sub_81439D0(void) { gUnknown_02039322 = taskIdA; } -void task_a_8143B38(u8 taskIdA) { +static void task_a_8143B38(u8 taskIdA) { if (gPaletteFade.active) { return; @@ -278,7 +345,7 @@ void task_a_8143B38(u8 taskIdA) { gTasks[taskIdA].func = task_a_8143B68; } -void task_a_8143B68(u8 taskIdA) { +static void task_a_8143B68(u8 taskIdA) { u16 data11; if (gTasks[taskIdA].data[TDA_4]) @@ -320,10 +387,10 @@ static void task_a_8143BFC(u8 taskIdA) { REG_DISPCNT = 0; sub_81450AC(taskIdA); - gTasks[taskIdA].func = task_a_080C9BFC; + gTasks[taskIdA].func = task_a_80C9BFC; } -static void task_a_080C9BFC(u8 taskIdA) { +static void task_a_80C9BFC(u8 taskIdA) { u16 backup; SetVBlankCallback(NULL); @@ -357,7 +424,7 @@ static void task_a_8143CC0(u8 taskIdA) { } #ifdef NONMATCHING -static void task_a_8143D04(u8 taskIdA) { +void task_a_8143D04(u8 taskIdA) { switch (gMain.state) { default: case 0: { @@ -396,8 +463,8 @@ static void task_a_8143D04(u8 taskIdA) { case 1: { gTasks[taskIdA].data[TDA_TASK_D_ID] = CreateTask(task_d_8144514, 0); - gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_0] = 1; - gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_1] = taskIdA; + gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_STATE] = 1; + gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_TASK_A_ID] = taskIdA; gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_2] = gTasks[taskIdA].data[TDA_7]; BeginNormalPaletteFade(-1, 0, 16, 0, 0); @@ -415,7 +482,7 @@ static void task_a_8143D04(u8 taskIdA) { } #else __attribute__((naked)) -static void task_a_8143D04(u8 taskId) { +void task_a_8143D04(u8 taskId) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ mov r7, r9\n\ @@ -612,6 +679,7 @@ _08143EB4: .4byte gUnknown_0203935C\n\ _08143EB8: .4byte task_a_8143B38\n\ .syntax divided\n"); } + #endif static void task_a_8143EBC(u8 taskIdA) { @@ -935,3 +1003,1942 @@ static u8 sub_8144454(u8 page, u8 taskIdA) { return FALSE; } + +#define UNK_DEFINE_44 (0x44) + +#ifdef NONMATCHING +void task_d_8144514(u8 taskIdD) { + u8 local1; + + switch (gTasks[taskIdD].data[TDD_STATE]) + { + case 0: + break; + + case 1: + if (unk_201C000.var_8A == 0 && gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14]) + { + break; + } + + gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14] = 0; + gTasks[taskIdD].data[TDD_STATE] += 1; + + break; + + case 2: + if (unk_201C000.var_88 == UNK_DEFINE_44) + { + break; + } + + if (gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != task_a_8143B68) + { + break; + } + + local1 = sub_81456B4( + unk_201C000.var_00[unk_201C000.var_8C], + gUnknown_0840CA00[unk_201C000.var_8A][0], + gUnknown_0840CA00[unk_201C000.var_8A][1], + unk_201C000.var_8A + ); + + if (unk_201C000.var_8C > unk_201C000.var_8E - 1) + { + unk_201C000.var_8C += 1; + gSprites[local1].data3 = 50; + } + else + { + unk_201C000.var_8C = 0; + gSprites[local1].data3 = 512; + } + + unk_201C000.var_88 += 1; + + if (unk_201C000.var_8A == 2) + { + unk_201C000.var_8A = 0; + } + else + { + unk_201C000.var_8A += 1; + } + + gTasks[taskIdD].data[TDD_3] = 50; + gTasks[taskIdD].data[TDD_STATE] += 1; + break; + + case 3: + if (gTasks[taskIdD].data[TDD_3] != 0) + { + gTasks[taskIdD].data[TDD_3] -= 1; + break; + } + + gTasks[taskIdD].data[TDD_STATE] = 1; + break; + } +} +#else +__attribute__((naked)) +void task_d_8144514(u8 taskIdD) { + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6,r7}\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + ldr r6, _08144548 @ =0x0201c000\n\ + ldr r3, _0814454C @ =gTasks\n\ + lsls r0, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r2, r0, r3\n\ + movs r1, 0x8\n\ + ldrsh r0, [r2, r1]\n\ + cmp r0, 0x1\n\ + beq _08144550\n\ + cmp r0, 0x1\n\ + bgt _0814453C\n\ + b _08144658\n\ +_0814453C:\n\ + cmp r0, 0x2\n\ + beq _08144584\n\ + cmp r0, 0x3\n\ + bne _08144546\n\ + b _08144644\n\ +_08144546:\n\ + b _08144658\n\ + .align 2, 0\n\ +_08144548: .4byte 0x0201c000\n\ +_0814454C: .4byte gTasks\n\ +_08144550:\n\ + adds r0, r6, 0\n\ + adds r0, 0x8A\n\ + ldrh r0, [r0]\n\ + cmp r0, 0\n\ + bne _0814456E\n\ + movs r4, 0xA\n\ + ldrsh r0, [r2, r4]\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 3\n\ + adds r1, r3\n\ + movs r4, 0x24\n\ + ldrsh r0, [r1, r4]\n\ + cmp r0, 0\n\ + beq _08144658\n\ +_0814456E:\n\ + movs r0, 0xA\n\ + ldrsh r1, [r2, r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 3\n\ + adds r0, r3\n\ + movs r1, 0\n\ + strh r1, [r0, 0x24]\n\ + ldrh r0, [r2, 0x8]\n\ + adds r0, 0x1\n\ + b _08144656\n\ +_08144584:\n\ + adds r0, r6, 0\n\ + adds r0, 0x88\n\ + ldrh r1, [r0]\n\ + mov r9, r0\n\ + cmp r1, 0x44\n\ + beq _08144658\n\ + movs r4, 0xA\n\ + ldrsh r1, [r2, r4]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 3\n\ + adds r0, r3\n\ + ldr r1, [r0]\n\ + ldr r0, _081445EC @ =sub_8143B68\n\ + cmp r1, r0\n\ + bne _08144658\n\ + adds r7, r6, 0\n\ + adds r7, 0x8C\n\ + ldrh r0, [r7]\n\ + lsls r0, 1\n\ + adds r0, r6\n\ + ldrh r0, [r0]\n\ + ldr r4, _081445F0 @ =gUnknown_0840CA00\n\ + adds r5, r6, 0\n\ + adds r5, 0x8A\n\ + ldrh r3, [r5]\n\ + lsls r2, r3, 1\n\ + adds r1, r2, r4\n\ + ldrb r1, [r1]\n\ + adds r4, 0x1\n\ + adds r2, r4\n\ + ldrb r2, [r2]\n\ + bl sub_81456B4\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ + ldrh r1, [r7]\n\ + adds r0, r6, 0\n\ + adds r0, 0x8E\n\ + ldrh r0, [r0]\n\ + subs r0, 0x1\n\ + cmp r1, r0\n\ + bge _081445F8\n\ + adds r0, r1, 0x1\n\ + strh r0, [r7]\n\ + ldr r1, _081445F4 @ =gSprites\n\ + lsls r0, r2, 4\n\ + adds r0, r2\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + movs r1, 0x32\n\ + b _0814460A\n\ + .align 2, 0\n\ +_081445EC: .4byte task_a_8143B68\n\ +_081445F0: .4byte gUnknown_0840CA00\n\ +_081445F4: .4byte gSprites\n\ +_081445F8:\n\ + movs r0, 0\n\ + strh r0, [r7]\n\ + ldr r1, _08144620 @ =gSprites\n\ + lsls r0, r2, 4\n\ + adds r0, r2\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + movs r1, 0x80\n\ + lsls r1, 2\n\ +_0814460A:\n\ + strh r1, [r0, 0x34]\n\ + mov r1, r9\n\ + ldrh r0, [r1]\n\ + adds r0, 0x1\n\ + strh r0, [r1]\n\ + ldrh r0, [r5]\n\ + cmp r0, 0x2\n\ + bne _08144624\n\ + movs r0, 0\n\ + b _08144626\n\ + .align 2, 0\n\ +_08144620: .4byte gSprites\n\ +_08144624:\n\ + adds r0, 0x1\n\ +_08144626:\n\ + strh r0, [r5]\n\ + ldr r0, _08144640 @ =gTasks\n\ + mov r2, r8\n\ + lsls r1, r2, 2\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + movs r0, 0x32\n\ + strh r0, [r1, 0xE]\n\ + ldrh r0, [r1, 0x8]\n\ + adds r0, 0x1\n\ + strh r0, [r1, 0x8]\n\ + b _08144658\n\ + .align 2, 0\n\ +_08144640: .4byte gTasks\n\ +_08144644:\n\ + ldrh r1, [r2, 0xE]\n\ + movs r3, 0xE\n\ + ldrsh r0, [r2, r3]\n\ + cmp r0, 0\n\ + beq _08144654\n\ + subs r0, r1, 0x1\n\ + strh r0, [r2, 0xE]\n\ + b _08144658\n\ +_08144654:\n\ + movs r0, 0x1\n\ +_08144656:\n\ + strh r0, [r2, 0x8]\n\ +_08144658:\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif + +__attribute__((naked)) +void task_c_8144664(u8 taskIdC) { + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + ldr r1, _0814468C @ =gTasks\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r2, 0x8\n\ + ldrsh r0, [r0, r2]\n\ + adds r6, r1, 0\n\ + cmp r0, 0x32\n\ + bls _08144680\n\ + b _0814492C\n\ +_08144680:\n\ + lsls r0, 2\n\ + ldr r1, _08144690 @ =_08144694\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_0814468C: .4byte gTasks\n\ +_08144690: .4byte _08144694\n\ + .align 2, 0\n\ +_08144694:\n\ + .4byte _08144760\n\ + .4byte _08144784\n\ + .4byte _081447D8\n\ + .4byte _081447F0\n\ + .4byte _0814482C\n\ + .4byte _08144850\n\ + .4byte _0814489C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _081448A8\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _081448C8\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _081448EC\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _08144920\n\ +_08144760:\n\ + lsls r4, r5, 2\n\ + adds r4, r5\n\ + lsls r4, 3\n\ + adds r4, r6\n\ + ldrh r0, [r4, 0x12]\n\ + lsls r0, 16\n\ + asrs r0, 17\n\ + movs r1, 0x7F\n\ + ands r0, r1\n\ + movs r1, 0xC\n\ + bl Sin\n\ + ldr r1, _08144780 @ =gUnknown_0203935A\n\ + strh r0, [r1]\n\ + b _081447A8\n\ + .align 2, 0\n\ +_08144780: .4byte gUnknown_0203935A\n\ +_08144784:\n\ + ldr r7, _081447B0 @ =gUnknown_0203935A\n\ + movs r3, 0\n\ + ldrsh r4, [r7, r3]\n\ + cmp r4, 0\n\ + beq _081447B4\n\ + lsls r4, r5, 2\n\ + adds r4, r5\n\ + lsls r4, 3\n\ + adds r4, r6\n\ + ldrh r0, [r4, 0x12]\n\ + lsls r0, 16\n\ + asrs r0, 17\n\ + movs r1, 0x7F\n\ + ands r0, r1\n\ + movs r1, 0xC\n\ + bl Sin\n\ + strh r0, [r7]\n\ +_081447A8:\n\ + ldrh r0, [r4, 0x12]\n\ + adds r0, 0x1\n\ + strh r0, [r4, 0x12]\n\ + b _0814492C\n\ + .align 2, 0\n\ +_081447B0: .4byte gUnknown_0203935A\n\ +_081447B4:\n\ + ldr r3, _081447D4 @ =gSprites\n\ + lsls r1, r5, 2\n\ + adds r1, r5\n\ + lsls r1, 3\n\ + adds r1, r6\n\ + movs r0, 0xC\n\ + ldrsh r2, [r1, r0]\n\ + lsls r0, r2, 4\n\ + adds r0, r2\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + movs r2, 0x2\n\ + strh r2, [r0, 0x2E]\n\ + strh r4, [r1, 0x12]\n\ + b _08144848\n\ + .align 2, 0\n\ +_081447D4: .4byte gSprites\n\ +_081447D8:\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r1, r0, r6\n\ + ldrh r2, [r1, 0x12]\n\ + movs r3, 0x12\n\ + ldrsh r0, [r1, r3]\n\ + cmp r0, 0x3F\n\ + bgt _08144848\n\ + adds r0, r2, 0x1\n\ + strh r0, [r1, 0x12]\n\ + b _08144866\n\ +_081447F0:\n\ + ldr r3, _08144828 @ =gSprites\n\ + lsls r2, r5, 2\n\ + adds r2, r5\n\ + lsls r2, 3\n\ + adds r2, r6\n\ + movs r0, 0xC\n\ + ldrsh r1, [r2, r0]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + movs r1, 0x3\n\ + strh r1, [r0, 0x2E]\n\ + movs r0, 0xE\n\ + ldrsh r1, [r2, r0]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + movs r1, 0x1\n\ + strh r1, [r0, 0x2E]\n\ + movs r0, 0x78\n\ + strh r0, [r2, 0x10]\n\ + ldrh r0, [r2, 0x8]\n\ + adds r0, 0x1\n\ + strh r0, [r2, 0x8]\n\ + b _0814492C\n\ + .align 2, 0\n\ +_08144828: .4byte gSprites\n\ +_0814482C:\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r1, r0, r6\n\ + ldrh r2, [r1, 0x10]\n\ + movs r3, 0x10\n\ + ldrsh r0, [r1, r3]\n\ + cmp r0, 0\n\ + beq _08144844\n\ + subs r0, r2, 0x1\n\ + strh r0, [r1, 0x10]\n\ + b _0814492C\n\ +_08144844:\n\ + movs r0, 0x40\n\ + strh r0, [r1, 0x12]\n\ +_08144848:\n\ + ldrh r0, [r1, 0x8]\n\ + adds r0, 0x1\n\ + strh r0, [r1, 0x8]\n\ + b _0814492C\n\ +_08144850:\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r4, r0, r6\n\ + ldrh r1, [r4, 0x12]\n\ + movs r2, 0x12\n\ + ldrsh r0, [r4, r2]\n\ + cmp r0, 0\n\ + ble _0814487C\n\ + subs r0, r1, 0x1\n\ + strh r0, [r4, 0x12]\n\ +_08144866:\n\ + movs r1, 0x7F\n\ + ands r0, r1\n\ + movs r1, 0x14\n\ + bl Sin\n\ + ldr r1, _08144878 @ =gUnknown_0203935A\n\ + strh r0, [r1]\n\ + b _0814492C\n\ + .align 2, 0\n\ +_08144878: .4byte gUnknown_0203935A\n\ +_0814487C:\n\ + ldr r2, _08144898 @ =gSprites\n\ + movs r3, 0xC\n\ + ldrsh r1, [r4, r3]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + movs r1, 0x1\n\ + strh r1, [r0, 0x2E]\n\ + ldrh r0, [r4, 0x8]\n\ + adds r0, 0x1\n\ + strh r0, [r4, 0x8]\n\ + b _0814492C\n\ + .align 2, 0\n\ +_08144898: .4byte gSprites\n\ +_0814489C:\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r0, r6\n\ + movs r1, 0x32\n\ + b _0814492A\n\ +_081448A8:\n\ + ldr r3, _081448C4 @ =gSprites\n\ + lsls r1, r5, 2\n\ + adds r1, r5\n\ + lsls r1, 3\n\ + adds r1, r6\n\ + movs r0, 0xE\n\ + ldrsh r2, [r1, r0]\n\ + lsls r0, r2, 4\n\ + adds r0, r2\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + movs r2, 0x2\n\ + b _081448E0\n\ + .align 2, 0\n\ +_081448C4: .4byte gSprites\n\ +_081448C8:\n\ + ldr r3, _081448E8 @ =gSprites\n\ + lsls r1, r5, 2\n\ + adds r1, r5\n\ + lsls r1, 3\n\ + adds r1, r6\n\ + movs r0, 0xC\n\ + ldrsh r2, [r1, r0]\n\ + lsls r0, r2, 4\n\ + adds r0, r2\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + movs r2, 0x4\n\ +_081448E0:\n\ + strh r2, [r0, 0x2E]\n\ + movs r0, 0x32\n\ + strh r0, [r1, 0x8]\n\ + b _0814492C\n\ + .align 2, 0\n\ +_081448E8: .4byte gSprites\n\ +_081448EC:\n\ + ldr r3, _0814491C @ =gSprites\n\ + lsls r2, r5, 2\n\ + adds r2, r5\n\ + lsls r2, 3\n\ + adds r2, r6\n\ + movs r0, 0xC\n\ + ldrsh r1, [r2, r0]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + movs r1, 0x5\n\ + strh r1, [r0, 0x2E]\n\ + movs r0, 0xE\n\ + ldrsh r1, [r2, r0]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + movs r1, 0x3\n\ + strh r1, [r0, 0x2E]\n\ + movs r0, 0x32\n\ + strh r0, [r2, 0x8]\n\ + b _0814492C\n\ + .align 2, 0\n\ +_0814491C: .4byte gSprites\n\ +_08144920:\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r0, r6\n\ + movs r1, 0\n\ +_0814492A:\n\ + strh r1, [r0, 0x8]\n\ +_0814492C:\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} + +#define UNK_DEF_1F3 (499) + +void task_e_8144934(u8 taskIdE) { + s16 taskIdC; + + switch (gTasks[taskIdE].data[TDE_0]) + { + default: + case 0: + if (gTasks[taskIdE].data[TDE_1] != 0x7FFF) + { + + if (gTasks[gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_B_ID]].data[TDB_CURRENT_PAGE] == PAGE_ART_DIRECTOR) + { + gTasks[gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_C_ID]].data[TDC_0] = 20; + gTasks[taskIdE].data[TDE_1] = 0x7FFF; + } + } + + sub_8149020(0); + break; + + case 1: + sub_8149020(0); + break; + + case 2: + if (gTasks[taskIdE].data[TDE_1] != 0x7FFF) + { + taskIdC = gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_C_ID]; + + // Floor to multiple of 128 + if ((gTasks[taskIdC].data[TDC_5] & - 128) == 640) + { + gTasks[taskIdC].data[TDC_0] = 1; + gTasks[taskIdE].data[TDE_1] = 0x7FFF; + } + } + sub_8149020(1); + break; + + case 3: + if (gTasks[taskIdE].data[TDE_1] != 0x7FFF) + { + + if (gTasks[taskIdE].data[TDE_1] == UNK_DEF_1F3) + { + gTasks[gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_C_ID]].data[TDC_0] = 10; + gTasks[taskIdE].data[TDE_1] = 0x7FFF; + } + else + { + gTasks[taskIdE].data[TDE_1] += 1; + } + } + + sub_8149020(1); + break; + + case 4: + sub_8149020(2); + break; + } +} + +#define UNK_DEFINE_45 (0x45) + +static void sub_8144A68(u8 data, u8 taskIdA) { + switch (data) + { + case 0: + gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0; + gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0; + gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 272; + gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272; + gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46; + gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46; + gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data0 = 0; + gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0; + gTasks[taskIdA].data[TDA_0] = sub_8148EC0(0, 0x2000, 0x20, 8); + break; + + case 1: + gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0; + gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0; + gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120; + gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272; + gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46; + gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46; + gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data0 = 0; + gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0; + gTasks[taskIdA].data[TDA_0] = sub_8148EC0(0, 0x2000, 0x20, 8); + break; + + case 2: + gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0; + gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0; + gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120; + gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272; + gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46; + gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46; + gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data0 = 0; + gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0; + gTasks[taskIdA].data[TDA_0] = sub_8148EC0(1, 0x2000, 0x200, 8); + break; + + case 3: + gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0; + gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0; + gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120; + gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = - 32; + gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46; + gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46; + gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data0 = 0; + gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0; + gTasks[taskIdA].data[TDA_0] = sub_8148EC0(1, 0x2000, 0x200, 8); + break; + + case 4: + gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0; + gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0; + gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 88; + gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 152; + gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46; + gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46; + gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data0 = 0; + gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0; + gTasks[taskIdA].data[TDA_0] = sub_8148EC0(2, 0x2000, 0x200, 8); + break; + } + + gTasks[taskIdA].data[TDA_TASK_E_ID] = CreateTask(task_e_8144934, 0); + gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_0] = data; + gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_1] = 0; + gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_TASK_A_ID] = taskIdA; + + gTasks[taskIdA].data[TDA_TASK_C_ID] = CreateTask(task_c_8144664, 0); + gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_0] = 0; + gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_1] = taskIdA; + gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_2] = gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]; + gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_3] = gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]; + gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_4] = 0; + + if (data == 2) + { + gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_5] = UNK_DEFINE_45; + } +} + +static bool8 sub_8144ECC(u8 data, u8 taskIdA) { + u8 spriteId; + + switch (gMain.state) + { + default: + case 0: + REG_DISPCNT = 0; + REG_BG3HOFS = 8; + REG_BG3VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + ResetSpriteData(); + FreeAllSpritePalettes(); + gMain.state = 1; + break; + + case 1: + gUnknown_02039358 = 34; + gUnknown_0203935A = 0; + sub_8148CB0(data); + gMain.state += 1; + break; + + case 2: + if (gSaveBlock2.playerGender == MALE) + { + LoadCompressedObjectPic(&gIntro2BrendanSpriteSheet); + LoadCompressedObjectPic(&gUnknown_08416E34); + LoadCompressedObjectPic(&gIntro2BicycleSpriteSheet); + LoadSpritePalettes(gIntro2SpritePalettes); + + spriteId = intro_create_brendan_sprite(120, 46); + gTasks[taskIdA].data[TDA_PLAYER_CYCLIST] = spriteId; + gSprites[spriteId].callback = spritecb_player_8145378; + gSprites[spriteId].anims = gSpriteAnimTable_0840CA54; + + spriteId = intro_create_may_sprite(272, 46); + gTasks[taskIdA].data[TDA_RIVAL_CYCLIST] = spriteId; + gSprites[spriteId].callback = spritecb_rival_8145420; + gSprites[spriteId].anims = gSpriteAnimTable_0840CA94; + } + else + { + LoadCompressedObjectPic(&gIntro2MaySpriteSheet); + LoadCompressedObjectPic(&gUnknown_08416E24); + LoadCompressedObjectPic(&gIntro2BicycleSpriteSheet); + LoadSpritePalettes(gIntro2SpritePalettes); + + spriteId = intro_create_may_sprite(120, 46); + gTasks[taskIdA].data[TDA_PLAYER_CYCLIST] = spriteId; + gSprites[spriteId].callback = spritecb_player_8145378; + gSprites[spriteId].anims = gSpriteAnimTable_0840CA54; + + spriteId = intro_create_brendan_sprite(272, 46); + gTasks[taskIdA].data[TDA_RIVAL_CYCLIST] = spriteId; + gSprites[spriteId].callback = spritecb_rival_8145420; + gSprites[spriteId].anims = gSpriteAnimTable_0840CA94; + }; + + gMain.state += 1; + break; + + case 3: + sub_8144A68(data, taskIdA); + sub_8148E90(data); + gMain.state = 0; + return TRUE; + } + + return FALSE; +} + +static void sub_81450AC(u8 taskIdA) { + if (gTasks[taskIdA].data[TDA_0] != 0) + { + DestroyTask(gTasks[taskIdA].data[TDA_0]); + gTasks[taskIdA].data[TDA_0] = 0; + } + + if (gTasks[taskIdA].data[TDA_TASK_C_ID] != 0) + { + DestroyTask(gTasks[taskIdA].data[TDA_TASK_C_ID]); + gTasks[taskIdA].data[TDA_TASK_C_ID] = 0; + } + + if (gTasks[taskIdA].data[TDA_TASK_E_ID] != 0) + { + DestroyTask(gTasks[taskIdA].data[TDA_TASK_E_ID]); + gTasks[taskIdA].data[TDA_TASK_E_ID] = 0; + } + + if (gTasks[taskIdA].data[TDA_TASK_D_ID] != 0) + { + DestroyTask(gTasks[taskIdA].data[TDA_TASK_D_ID]); + gTasks[taskIdA].data[TDA_TASK_D_ID] = 0; + } + + gUnknown_0203935C = 1; +} + +__attribute__((naked)) +void sub_8145128(u16 arg0, u16 arg1, u16 arg2) { + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + adds r3, r0, 0\n\ + adds r4, r2, 0\n\ + lsls r3, 16\n\ + lsrs r3, 16\n\ + lsls r1, 16\n\ + lsrs r7, r1, 16\n\ + lsls r4, 16\n\ + lsrs r5, r4, 16\n\ + ldr r0, _081451EC @ =gCreditsCopyrightEnd_Gfx\n\ + movs r6, 0xC0\n\ + lsls r6, 19\n\ + adds r3, r6\n\ + adds r1, r3, 0\n\ + bl LZ77UnCompVram\n\ + ldr r0, _081451F0 @ =gIntroCopyright_Pal\n\ + adds r1, r5, 0\n\ + movs r2, 0x20\n\ + bl LoadPalette\n\ + lsrs r4, 20\n\ + lsls r4, 28\n\ + lsrs r4, 16\n\ + movs r2, 0\n\ + adds r1, r4, 0x1\n\ + ldr r3, _081451F4 @ =0x000003ff\n\ +_0814515E:\n\ + lsls r0, r2, 1\n\ + adds r0, r7\n\ + adds r0, r6\n\ + strh r1, [r0]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + cmp r2, r3\n\ + bls _0814515E\n\ + movs r2, 0\n\ + adds r0, r4, 0x2\n\ + adds r6, r4, 0\n\ + adds r6, 0x17\n\ + movs r1, 0x2B\n\ + adds r1, r4\n\ + mov r12, r1\n\ + adds r4, 0x42\n\ + ldr r5, _081451F8 @ =0x060001c8\n\ + adds r3, r0, 0\n\ +_08145184:\n\ + lsls r0, r2, 1\n\ + adds r0, r7\n\ + adds r0, r5\n\ + adds r1, r2, r3\n\ + strh r1, [r0]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + cmp r2, 0x14\n\ + bls _08145184\n\ + movs r2, 0\n\ + ldr r5, _081451FC @ =0x06000248\n\ + adds r3, r6, 0\n\ +_0814519E:\n\ + lsls r0, r2, 1\n\ + adds r0, r7\n\ + adds r0, r5\n\ + adds r1, r2, r3\n\ + strh r1, [r0]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + cmp r2, 0x13\n\ + bls _0814519E\n\ + movs r2, 0\n\ + ldr r5, _08145200 @ =0x060002c8\n\ + mov r3, r12\n\ +_081451B8:\n\ + lsls r0, r2, 1\n\ + adds r0, r7\n\ + adds r0, r5\n\ + adds r1, r2, r3\n\ + strh r1, [r0]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + cmp r2, 0x16\n\ + bls _081451B8\n\ + movs r2, 0\n\ + ldr r3, _08145204 @ =0x06000348\n\ +_081451D0:\n\ + lsls r0, r2, 1\n\ + adds r0, r7\n\ + adds r0, r3\n\ + adds r1, r2, r4\n\ + strh r1, [r0]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + cmp r2, 0xB\n\ + bls _081451D0\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_081451EC: .4byte gCreditsCopyrightEnd_Gfx\n\ +_081451F0: .4byte gIntroCopyright_Pal\n\ +_081451F4: .4byte 0x000003ff\n\ +_081451F8: .4byte 0x060001c8\n\ +_081451FC: .4byte 0x06000248\n\ +_08145200: .4byte 0x060002c8\n\ +_08145204: .4byte 0x06000348\n\ + .syntax divided\n"); +} + +u16 sub_8145208(u8 arg0) { + + u16 out = (arg0 & 0x3F) + 80; + + if (arg0 == 0xFF) + { + return 1; + } + + if (arg0 & (1 << 7)) + { + out |= 0x800; + } + + if (arg0 & (1 << 6)) + { + out |= 0x400; + } + + return out; +} + +__attribute__((naked)) +void sub_814524C(int arg0, u8 arg1, u8 arg2, u16 arg3, int arg4) { + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0xC\n\ + str r0, [sp]\n\ + ldr r0, [sp, 0x2C]\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + mov r10, r1\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + str r2, [sp, 0x4]\n\ + lsls r3, 16\n\ + lsrs r3, 16\n\ + str r3, [sp, 0x8]\n\ + lsls r0, 16\n\ + lsrs r0, 20\n\ + lsls r0, 28\n\ + lsrs r0, 16\n\ + mov r9, r0\n\ + movs r5, 0\n\ +_0814527A:\n\ + movs r4, 0\n\ + lsls r7, r5, 1\n\ + ldr r1, [sp, 0x4]\n\ + adds r0, r1, r5\n\ + adds r2, r5, 0x1\n\ + mov r8, r2\n\ + lsls r0, 6\n\ + ldr r1, [sp, 0x8]\n\ + adds r6, r0, r1\n\ +_0814528C:\n\ + adds r0, r7, r5\n\ + adds r0, r4\n\ + ldr r2, [sp]\n\ + adds r0, r2, r0\n\ + ldrb r0, [r0]\n\ + bl sub_8145208\n\ + mov r2, r10\n\ + adds r1, r2, r4\n\ + lsls r1, 1\n\ + adds r1, r6\n\ + movs r2, 0xC0\n\ + lsls r2, 19\n\ + adds r1, r2\n\ + add r0, r9\n\ + strh r0, [r1]\n\ + adds r0, r4, 0x1\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, 0x2\n\ + bls _0814528C\n\ + mov r1, r8\n\ + lsls r0, r1, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0x4\n\ + bls _0814527A\n\ + add sp, 0xC\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} + +#ifdef NONMATCHING +void sub_81452D0(u16 arg0, u16 arg1) { + u16 i; + + + for (i = 0; i < 0x400; i ++) + { + (u16 *) (VRAM + ) + } + sub_814524C(&gUnknown_0840B85A, 7, 7, arg0, arg1); + sub_814524C(&gUnknown_0840B869, 11, 7, arg0, arg1); + sub_814524C(&gUnknown_0840B878, 15, 7, arg0, arg1); + sub_814524C(&gUnknown_0840B85A, 19, 7, arg0, arg1); +} +#else +__attribute__((naked)) +void sub_81452D0(u16 arg0, u16 arg1) { + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + sub sp, 0x4\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + lsls r1, 16\n\ + lsrs r6, r1, 16\n\ + lsrs r1, 20\n\ + lsls r1, 28\n\ + lsrs r1, 16\n\ + movs r2, 0\n\ + ldr r7, _08145360 @ =gUnknown_0840B83C\n\ + movs r4, 0xC0\n\ + lsls r4, 19\n\ + adds r1, 0x1\n\ + ldr r3, _08145364 @ =0x000003ff\n\ +_081452EE:\n\ + lsls r0, r2, 1\n\ + adds r0, r5\n\ + adds r0, r4\n\ + strh r1, [r0]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + cmp r2, r3\n\ + bls _081452EE\n\ + str r6, [sp]\n\ + adds r0, r7, 0\n\ + movs r1, 0x3\n\ + movs r2, 0x7\n\ + adds r3, r5, 0\n\ + bl sub_814524C\n\ + ldr r0, _08145368 @ =gUnknown_0840B84B\n\ + str r6, [sp]\n\ + movs r1, 0x7\n\ + movs r2, 0x7\n\ + adds r3, r5, 0\n\ + bl sub_814524C\n\ + ldr r4, _0814536C @ =gUnknown_0840B85A\n\ + str r6, [sp]\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + movs r2, 0x7\n\ + adds r3, r5, 0\n\ + bl sub_814524C\n\ + str r6, [sp]\n\ + adds r0, r4, 0\n\ + movs r1, 0x10\n\ + movs r2, 0x7\n\ + adds r3, r5, 0\n\ + bl sub_814524C\n\ + ldr r0, _08145370 @ =gUnknown_0840B869\n\ + str r6, [sp]\n\ + movs r1, 0x14\n\ + movs r2, 0x7\n\ + adds r3, r5, 0\n\ + bl sub_814524C\n\ + ldr r0, _08145374 @ =gUnknown_0840B878\n\ + str r6, [sp]\n\ + movs r1, 0x18\n\ + movs r2, 0x7\n\ + adds r3, r5, 0\n\ + bl sub_814524C\n\ + add sp, 0x4\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08145360: .4byte gUnknown_0840B83C\n\ +_08145364: .4byte 0x000003ff\n\ +_08145368: .4byte gUnknown_0840B84B\n\ +_0814536C: .4byte gUnknown_0840B85A\n\ +_08145370: .4byte gUnknown_0840B869\n\ +_08145374: .4byte gUnknown_0840B878\n\ + .syntax divided\n"); +} +#endif + +static void spritecb_player_8145378(struct Sprite *sprite) { + if (gUnknown_0203935C != 0) + { + DestroySprite(sprite); + return; + } + + switch (sprite->data0) + { + case 0: + StartSpriteAnimIfDifferent(sprite, 0); + break; + + case 1: + StartSpriteAnimIfDifferent(sprite, 1); + if (sprite->pos1.x > - 32) + { + sprite->pos1.x -= 1; + } + break; + + case 2: + StartSpriteAnimIfDifferent(sprite, 2); + break; + + case 3: + StartSpriteAnimIfDifferent(sprite, 3); + break; + + case 4: + StartSpriteAnimIfDifferent(sprite, 0); + if (sprite->pos1.x > 120) + { + sprite->pos1.x -= 1; + } + break; + + case 5: + StartSpriteAnimIfDifferent(sprite, 0); + if (sprite->pos1.x > - 32) + { + sprite->pos1.x -= 1; + } + break; + } +} + +static void spritecb_rival_8145420(struct Sprite *sprite) { + if (gUnknown_0203935C != 0) + { + DestroySprite(sprite); + return; + } + + switch (sprite->data0) + { + case 0: + sprite->pos2.y = 0; + StartSpriteAnimIfDifferent(sprite, 0); + break; + + case 1: + if (sprite->pos1.x > 200) + { + StartSpriteAnimIfDifferent(sprite, 1); + } + else + { + StartSpriteAnimIfDifferent(sprite, 2); + } + + if (sprite->pos1.x > - 32) + { + sprite->pos1.x -= 2; + } + + sprite->pos2.y = - gUnknown_0203935A; + break; + + case 2: + sprite->data7 += 1; + StartSpriteAnimIfDifferent(sprite, 0); + + if ((sprite->data7 & 3) == 0) + { + sprite->pos1.x += 1; + } + break; + + case 3: + StartSpriteAnimIfDifferent(sprite, 0); + + if (sprite->pos1.x > - 32) + { + sprite->pos1.x -= 1; + } + break; + + + } +} + +__attribute__((naked)) +void spritecb_81454E0(struct Sprite *sprite) { + asm(".syntax unified\n\ + push {r4,r5,lr}\n\ + sub sp, 0x4\n\ + adds r5, r0, 0\n\ + ldr r0, _081454F8 @ =gUnknown_0203935C\n\ + movs r1, 0\n\ + ldrsh r0, [r0, r1]\n\ + cmp r0, 0\n\ + beq _081454FC\n\ + adds r0, r5, 0\n\ + bl DestroySprite\n\ + b _081456A6\n\ + .align 2, 0\n\ +_081454F8: .4byte gUnknown_0203935C\n\ +_081454FC:\n\ + ldrh r0, [r5, 0x3C]\n\ + adds r0, 0x1\n\ + strh r0, [r5, 0x3C]\n\ + movs r2, 0x2E\n\ + ldrsh r0, [r5, r2]\n\ + cmp r0, 0xA\n\ + bhi _08145544\n\ + lsls r0, 2\n\ + ldr r1, _08145514 @ =_08145518\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_08145514: .4byte _08145518\n\ + .align 2, 0\n\ +_08145518:\n\ + .4byte _08145544\n\ + .4byte _0814559E\n\ + .4byte _08145620\n\ + .4byte _08145660\n\ + .4byte _08145544\n\ + .4byte _08145544\n\ + .4byte _08145544\n\ + .4byte _08145544\n\ + .4byte _08145544\n\ + .4byte _08145544\n\ + .4byte _08145696\n\ +_08145544:\n\ + ldrb r1, [r5, 0x1]\n\ + movs r0, 0x4\n\ + negs r0, r0\n\ + ands r0, r1\n\ + movs r1, 0x1\n\ + orrs r0, r1\n\ + strb r0, [r5, 0x1]\n\ + movs r0, 0x30\n\ + ldrsh r1, [r5, r0]\n\ + movs r0, 0x1F\n\ + ands r1, r0\n\ + lsls r1, 1\n\ + ldrb r2, [r5, 0x3]\n\ + movs r0, 0x3F\n\ + negs r0, r0\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strb r0, [r5, 0x3]\n\ + movs r0, 0x10\n\ + strh r0, [r5, 0x32]\n\ + ldrh r4, [r5, 0x30]\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + movs r0, 0x80\n\ + lsls r0, 9\n\ + movs r1, 0x10\n\ + bl __divsi3\n\ + adds r1, r0, 0\n\ + str r1, [sp]\n\ + adds r0, r4, 0\n\ + movs r2, 0\n\ + movs r3, 0\n\ + bl SetOamMatrix\n\ + adds r2, r5, 0\n\ + adds r2, 0x3E\n\ + ldrb r1, [r2]\n\ + movs r0, 0x5\n\ + negs r0, r0\n\ + ands r0, r1\n\ + strb r0, [r2]\n\ + movs r0, 0x1\n\ + strh r0, [r5, 0x2E]\n\ + b _081456A6\n\ +_0814559E:\n\ + ldrh r1, [r5, 0x32]\n\ + movs r2, 0x32\n\ + ldrsh r0, [r5, r2]\n\ + cmp r0, 0xFF\n\ + bgt _081455D4\n\ + adds r0, r1, 0\n\ + adds r0, 0x8\n\ + strh r0, [r5, 0x32]\n\ + ldrh r4, [r5, 0x30]\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + movs r0, 0x32\n\ + ldrsh r1, [r5, r0]\n\ + movs r0, 0x80\n\ + lsls r0, 9\n\ + bl __divsi3\n\ + adds r1, r0, 0\n\ + lsls r1, 16\n\ + lsrs r1, 16\n\ + str r1, [sp]\n\ + adds r0, r4, 0\n\ + movs r2, 0\n\ + movs r3, 0\n\ + bl SetOamMatrix\n\ + b _081455DA\n\ +_081455D4:\n\ + ldrh r0, [r5, 0x2E]\n\ + adds r0, 0x1\n\ + strh r0, [r5, 0x2E]\n\ +_081455DA:\n\ + movs r2, 0x30\n\ + ldrsh r1, [r5, r2]\n\ + cmp r1, 0x2\n\ + beq _081456A6\n\ + cmp r1, 0x2\n\ + bgt _081455EC\n\ + cmp r1, 0x1\n\ + beq _081455F2\n\ + b _081456A6\n\ +_081455EC:\n\ + cmp r1, 0x3\n\ + beq _0814560A\n\ + b _081456A6\n\ +_081455F2:\n\ + ldrh r1, [r5, 0x3C]\n\ + movs r0, 0x3\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08145602\n\ + ldrh r0, [r5, 0x22]\n\ + adds r0, 0x1\n\ + strh r0, [r5, 0x22]\n\ +_08145602:\n\ + ldrh r0, [r5, 0x20]\n\ + subs r0, 0x2\n\ + strh r0, [r5, 0x20]\n\ + b _081456A6\n\ +_0814560A:\n\ + ldrh r0, [r5, 0x3C]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _08145618\n\ + ldrh r0, [r5, 0x22]\n\ + adds r0, 0x1\n\ + strh r0, [r5, 0x22]\n\ +_08145618:\n\ + ldrh r0, [r5, 0x20]\n\ + adds r0, 0x2\n\ + strh r0, [r5, 0x20]\n\ + b _081456A6\n\ +_08145620:\n\ + ldrh r1, [r5, 0x34]\n\ + movs r2, 0x34\n\ + ldrsh r0, [r5, r2]\n\ + cmp r0, 0\n\ + beq _08145630\n\ + subs r0, r1, 0x1\n\ + strh r0, [r5, 0x34]\n\ + b _081456A6\n\ +_08145630:\n\ + ldr r1, _0814565C @ =REG_BLDCNT\n\ + movs r2, 0xF4\n\ + lsls r2, 4\n\ + adds r0, r2, 0\n\ + strh r0, [r1]\n\ + adds r1, 0x2\n\ + movs r0, 0x10\n\ + strh r0, [r1]\n\ + ldrb r1, [r5, 0x1]\n\ + movs r0, 0xD\n\ + negs r0, r0\n\ + ands r0, r1\n\ + movs r1, 0x4\n\ + orrs r0, r1\n\ + strb r0, [r5, 0x1]\n\ + movs r0, 0x10\n\ + strh r0, [r5, 0x34]\n\ + ldrh r0, [r5, 0x2E]\n\ + adds r0, 0x1\n\ + strh r0, [r5, 0x2E]\n\ + b _081456A6\n\ + .align 2, 0\n\ +_0814565C: .4byte REG_BLDCNT\n\ +_08145660:\n\ + ldrh r1, [r5, 0x34]\n\ + movs r2, 0x34\n\ + ldrsh r0, [r5, r2]\n\ + cmp r0, 0\n\ + beq _08145684\n\ + subs r1, 0x1\n\ + strh r1, [r5, 0x34]\n\ + ldr r3, _08145680 @ =REG_BLDALPHA\n\ + movs r0, 0x34\n\ + ldrsh r2, [r5, r0]\n\ + movs r0, 0x10\n\ + subs r0, r2\n\ + lsls r0, 8\n\ + adds r1, r0\n\ + strh r1, [r3]\n\ + b _081456A6\n\ + .align 2, 0\n\ +_08145680: .4byte REG_BLDALPHA\n\ +_08145684:\n\ + adds r2, r5, 0\n\ + adds r2, 0x3E\n\ + ldrb r0, [r2]\n\ + movs r1, 0x4\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + movs r0, 0xA\n\ + strh r0, [r5, 0x2E]\n\ + b _081456A6\n\ +_08145696:\n\ + ldr r0, _081456B0 @ =REG_BLDCNT\n\ + movs r1, 0\n\ + strh r1, [r0]\n\ + adds r0, 0x2\n\ + strh r1, [r0]\n\ + adds r0, r5, 0\n\ + bl DestroySprite\n\ +_081456A6:\n\ + add sp, 0x4\n\ + pop {r4,r5}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_081456B0: .4byte REG_BLDCNT\n\ + .syntax divided\n"); +} + +#ifdef NONMATCHING +u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3) { + u32 species; + u32 personality; + void *palette; + u8 spriteId; + u8 spriteId2; + + species = NationalPokedexNumToSpecies(nationalNum); + switch (species) { + case SPECIES_UNOWN: + personality = gSaveBlock2.pokedex.unownPersonality; + break; + + case SPECIES_SPINDA: + personality = gSaveBlock2.pokedex.spindaPersonality; + break; + + default: + personality = 0; + break; + } + + LoadSpecialPokePic( + &gMonFrontPicTable[species], + gMonFrontPicCoords[species].x, + gMonFrontPicCoords[species].y, + 0x2000000, + gUnknown_0840B5A0[arg3], + species, + personality, + 1 + ); + + palette = species_and_otid_get_pal(species, 0, 0xFFFF); + LoadCompressedPalette(palette, 0x100 + (arg3 * 16), 0x20); + sub_8143648(arg3, arg3); + + spriteId = CreateSprite(&gUnknown_02024E8C, x, y, 0); + gSprites[spriteId].oam.paletteNum = arg3; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data1 = arg3 + 1; + gSprites[spriteId].invisible = TRUE; + gSprites[spriteId].callback = spritecb_81454E0; + + spriteId2 = CreateSprite(&gSpriteTemplate_840CAEC, gSprites[spriteId].pos1.x, gSprites[spriteId].pos1.y, 1); + gSprites[spriteId2].data0 = spriteId; + + StartSpriteAnimIfDifferent(&gSprites[spriteId2], arg3); + + return spriteId; +} +#else +__attribute__((naked)) +u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3) { + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x14\n\ + lsls r0, 16\n\ + lsrs r6, r0, 16\n\ + lsls r1, 16\n\ + lsrs r1, 16\n\ + mov r10, r1\n\ + lsls r2, 16\n\ + lsrs r2, 16\n\ + str r2, [sp, 0x10]\n\ + lsls r3, 16\n\ + lsrs r3, 16\n\ + mov r9, r3\n\ + adds r0, r6, 0\n\ + bl NationalPokedexNumToSpecies\n\ + adds r6, r0, 0\n\ + cmp r6, 0xC9\n\ + beq _081456F8\n\ + movs r0, 0x9A\n\ + lsls r0, 1\n\ + cmp r6, r0\n\ + beq _081456EE\n\ + movs r7, 0\n\ + b _081456FC\n\ +_081456EE:\n\ + ldr r0, _081456F4 @ =gSaveBlock2\n\ + ldr r7, [r0, 0x20]\n\ + b _081456FC\n\ + .align 2, 0\n\ +_081456F4: .4byte gSaveBlock2\n\ +_081456F8:\n\ + ldr r0, _081457E8 @ =gSaveBlock2\n\ + ldr r7, [r0, 0x1C]\n\ +_081456FC:\n\ + lsls r0, r6, 3\n\ + ldr r1, _081457EC @ =gMonFrontPicTable\n\ + adds r0, r1\n\ + ldr r1, _081457F0 @ =gMonFrontPicCoords\n\ + lsls r2, r6, 2\n\ + adds r2, r1\n\ + ldrb r1, [r2]\n\ + ldrb r2, [r2, 0x1]\n\ + movs r3, 0x80\n\ + lsls r3, 18\n\ + ldr r4, _081457F4 @ =gUnknown_0840B5A0\n\ + mov r8, r4\n\ + mov r5, r9\n\ + lsls r4, r5, 2\n\ + add r4, r8\n\ + ldr r4, [r4]\n\ + str r4, [sp]\n\ + str r6, [sp, 0x4]\n\ + str r7, [sp, 0x8]\n\ + movs r4, 0x1\n\ + str r4, [sp, 0xC]\n\ + bl LoadSpecialPokePic\n\ + ldr r2, _081457F8 @ =0x0000ffff\n\ + adds r0, r6, 0\n\ + movs r1, 0\n\ + bl species_and_otid_get_pal\n\ + lsls r5, 4\n\ + mov r8, r5\n\ + movs r1, 0x80\n\ + lsls r1, 1\n\ + add r1, r8\n\ + lsls r1, 16\n\ + lsrs r1, 16\n\ + movs r2, 0x20\n\ + bl LoadCompressedPalette\n\ + mov r7, r9\n\ + lsls r6, r7, 24\n\ + lsrs r6, 24\n\ + mov r0, r9\n\ + adds r1, r6, 0\n\ + bl sub_8143648\n\ + ldr r0, _081457FC @ =gUnknown_02024E8C\n\ + mov r2, r10\n\ + lsls r1, r2, 16\n\ + asrs r1, 16\n\ + ldr r3, [sp, 0x10]\n\ + lsls r2, r3, 16\n\ + asrs r2, 16\n\ + movs r3, 0\n\ + bl CreateSprite\n\ + adds r4, r0, 0\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + ldr r5, _08145800 @ =gSprites\n\ + lsls r2, r4, 4\n\ + adds r2, r4\n\ + lsls r2, 2\n\ + adds r3, r2, r5\n\ + ldrb r1, [r3, 0x5]\n\ + movs r0, 0xF\n\ + ands r0, r1\n\ + mov r7, r8\n\ + orrs r0, r7\n\ + movs r1, 0xD\n\ + negs r1, r1\n\ + ands r0, r1\n\ + movs r1, 0x4\n\ + orrs r0, r1\n\ + strb r0, [r3, 0x5]\n\ + mov r0, r9\n\ + adds r0, 0x1\n\ + strh r0, [r3, 0x30]\n\ + movs r0, 0x3E\n\ + adds r0, r3\n\ + mov r8, r0\n\ + ldrb r0, [r0]\n\ + orrs r0, r1\n\ + mov r1, r8\n\ + strb r0, [r1]\n\ + adds r0, r5, 0\n\ + adds r0, 0x1C\n\ + adds r2, r0\n\ + ldr r0, _08145804 @ =spritecb_81454E0\n\ + str r0, [r2]\n\ + ldr r0, _08145808 @ =gSpriteTemplate_840CAEC\n\ + movs r2, 0x20\n\ + ldrsh r1, [r3, r2]\n\ + movs r7, 0x22\n\ + ldrsh r2, [r3, r7]\n\ + movs r3, 0x1\n\ + bl CreateSprite\n\ + adds r1, r0, 0\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r5\n\ + strh r4, [r0, 0x2E]\n\ + adds r1, r6, 0\n\ + bl StartSpriteAnimIfDifferent\n\ + adds r0, r4, 0\n\ + add sp, 0x14\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_081457E8: .4byte gSaveBlock2\n\ +_081457EC: .4byte gMonFrontPicTable\n\ +_081457F0: .4byte gMonFrontPicCoords\n\ +_081457F4: .4byte gUnknown_0840B5A0\n\ +_081457F8: .4byte 0x0000ffff\n\ +_081457FC: .4byte gUnknown_02024E8C\n\ +_08145800: .4byte gSprites\n\ +_08145804: .4byte spritecb_81454E0\n\ +_08145808: .4byte gSpriteTemplate_840CAEC\n\ + .syntax divided\n"); +} +#endif + +void spritecb_814580C(struct Sprite *sprite) { + if (gSprites[sprite->data0].data0 == 10 || gUnknown_0203935C) + { + DestroySprite(sprite); + return; + } + + sprite->invisible = gSprites[sprite->data0].invisible; + sprite->oam.objMode = gSprites[sprite->data0].oam.objMode; + sprite->oam.affineMode = gSprites[sprite->data0].oam.affineMode; + sprite->oam.matrixNum = gSprites[sprite->data0].oam.matrixNum; + sprite->pos1.x = gSprites[sprite->data0].pos1.x; + sprite->pos1.y = gSprites[sprite->data0].pos1.y; +} + +__attribute__((naked)) +void sub_81458DC(void) { + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + ldr r7, _0814597C @ =0x0201c000\n\ + ldr r0, _08145980 @ =0x00004023\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + bl GetStarterPokemon\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + bl SpeciesToNationalPokedexNum\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r10, r0\n\ + movs r4, 0x1\n\ + movs r5, 0\n\ + ldr r0, _08145984 @ =0x00000181\n\ + mov r8, r0\n\ +_0814590E:\n\ + adds r0, r4, 0\n\ + movs r1, 0x1\n\ + bl sub_8090D90\n\ + lsls r0, 24\n\ + adds r6, r7, 0\n\ + adds r6, 0x90\n\ + cmp r0, 0\n\ + beq _0814592C\n\ + lsls r0, r5, 1\n\ + adds r0, r6, r0\n\ + strh r4, [r0]\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ +_0814592C:\n\ + adds r0, r4, 0x1\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + cmp r4, r8\n\ + bls _0814590E\n\ + adds r4, r5, 0\n\ + ldr r0, _08145984 @ =0x00000181\n\ + lsls r1, r4, 16\n\ + mov r9, r1\n\ + movs r2, 0x8E\n\ + adds r2, r7\n\ + mov r8, r2\n\ + adds r1, r7, 0\n\ + adds r1, 0x86\n\ + str r1, [sp]\n\ + cmp r4, r0\n\ + bhi _08145964\n\ + adds r1, r6, 0\n\ + movs r3, 0\n\ + adds r2, r0, 0\n\ +_08145954:\n\ + lsls r0, r4, 1\n\ + adds r0, r1, r0\n\ + strh r3, [r0]\n\ + adds r0, r4, 0x1\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + cmp r4, r2\n\ + bls _08145954\n\ +_08145964:\n\ + movs r2, 0xE5\n\ + lsls r2, 2\n\ + adds r0, r7, r2\n\ + strh r5, [r0]\n\ + mov r1, r9\n\ + lsrs r0, r1, 16\n\ + cmp r0, 0x43\n\ + bhi _08145988\n\ + mov r2, r8\n\ + strh r5, [r2]\n\ + b _0814598E\n\ + .align 2, 0\n\ +_0814597C: .4byte 0x0201c000\n\ +_08145980: .4byte 0x00004023\n\ +_08145984: .4byte 0x00000181\n\ +_08145988:\n\ + movs r0, 0x44\n\ + mov r1, r8\n\ + strh r0, [r1]\n\ +_0814598E:\n\ + movs r5, 0\n\ + movs r2, 0xE5\n\ + lsls r2, 2\n\ + adds r4, r7, r2\n\ + mov r9, r5\n\ + b _0814599E\n\ +_0814599A:\n\ + cmp r5, 0x43\n\ + bhi _081459EE\n\ +_0814599E:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + ldrh r1, [r4]\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + lsls r1, r5, 1\n\ + adds r1, r7, r1\n\ + lsls r0, r2, 1\n\ + adds r3, r6, r0\n\ + ldrh r0, [r3]\n\ + strh r0, [r1]\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + mov r0, r9\n\ + strh r0, [r3]\n\ + ldrh r0, [r4]\n\ + subs r0, 0x1\n\ + strh r0, [r4]\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r2, r0\n\ + beq _081459E8\n\ + ldrh r0, [r4]\n\ + lsls r0, 1\n\ + adds r0, r6, r0\n\ + ldrh r0, [r0]\n\ + strh r0, [r3]\n\ + ldrh r0, [r4]\n\ + lsls r0, 1\n\ + adds r0, r6, r0\n\ + mov r1, r9\n\ + strh r1, [r0]\n\ +_081459E8:\n\ + ldrh r0, [r4]\n\ + cmp r0, 0\n\ + bne _0814599A\n\ +_081459EE:\n\ + mov r2, r8\n\ + ldrh r0, [r2]\n\ + cmp r0, 0x43\n\ + bhi _08145A26\n\ + adds r5, r0, 0\n\ + movs r2, 0\n\ + cmp r5, 0x43\n\ + bhi _08145A5C\n\ + mov r3, r8\n\ +_08145A00:\n\ + lsls r1, r5, 1\n\ + adds r1, r7, r1\n\ + lsls r0, r2, 1\n\ + adds r0, r7, r0\n\ + ldrh r0, [r0]\n\ + strh r0, [r1]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + ldrh r0, [r3]\n\ + cmp r2, r0\n\ + bne _08145A1A\n\ + movs r2, 0\n\ +_08145A1A:\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + cmp r5, 0x43\n\ + bls _08145A00\n\ + b _08145A5C\n\ +_08145A26:\n\ + movs r4, 0\n\ + ldrh r0, [r7]\n\ + cmp r0, r10\n\ + beq _08145A42\n\ +_08145A2E:\n\ + adds r0, r4, 0x1\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + lsls r0, r4, 1\n\ + adds r0, r7, r0\n\ + ldrh r0, [r0]\n\ + cmp r0, r10\n\ + beq _08145A42\n\ + cmp r4, 0x43\n\ + bls _08145A2E\n\ +_08145A42:\n\ + mov r1, r8\n\ + ldrh r0, [r1]\n\ + subs r0, 0x1\n\ + cmp r4, r0\n\ + bge _08145A5C\n\ + lsls r0, r4, 1\n\ + adds r0, r7, r0\n\ + ldr r2, [sp]\n\ + ldrh r1, [r2]\n\ + strh r1, [r0]\n\ + mov r0, r10\n\ + strh r0, [r2]\n\ + b _08145A62\n\ +_08145A5C:\n\ + mov r2, r10\n\ + ldr r1, [sp]\n\ + strh r2, [r1]\n\ +_08145A62:\n\ + movs r0, 0x44\n\ + mov r1, r8\n\ + strh r0, [r1]\n\ + add sp, 0x4\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} -- cgit v1.2.3 From 3f7686b2e9524ef9dca90c96db02add1410d585d Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 16 Jan 2017 20:08:06 -0600 Subject: fix some nonmatching functions in credits.c --- src/credits.c | 644 ++++++++-------------------------------------------------- 1 file changed, 85 insertions(+), 559 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index d6eea4cac..e16702051 100644 --- a/src/credits.c +++ b/src/credits.c @@ -150,6 +150,13 @@ struct CreditsEntry { u8 *text; }; +extern u8 unk_2000000[]; + +#define EWRAM_1F800 ((u16 *)(unk_2000000 + 0x1F800)) +#define HALL_OF_FAME_SHEET_0 ((u8 *)(unk_2000000 + 0x1E000)) +#define HALL_OF_FAME_SHEET_1 ((u8 *)(unk_2000000 + 0x1E800)) +#define HALL_OF_FAME_SHEET_2 ((u8 *)(unk_2000000 + 0x1F000)) + extern struct Unk201C000 unk_201C000; extern struct HallOfFame gHallOfFame; @@ -168,7 +175,6 @@ extern u16 gUnknown_02039358; extern u16 gUnknown_0203935A; extern s16 gUnknown_0203935C; - extern u8 gReservedSpritePaletteCount; // data/data2 @@ -177,7 +183,7 @@ extern struct SpriteSheet gMonFrontPicTable[]; // data/starter_choose extern u16 gBirchBagGrassPal[32]; -extern u8 gBirchBagTilemap[]; +extern u8 gBirchGrassTilemap[]; extern u8 gBirchHelpGfx[]; // data/hall_of_fame @@ -186,7 +192,11 @@ extern void *gUnknown_0840B5A0[]; // data/credits extern u16 gUnknown_0840B7BC[32]; extern u16 gUnknown_0840B7FC[32]; +extern u8 gUnknown_0840B83C[]; +extern u8 gUnknown_0840B84B[]; extern u8 gUnknown_0840B85A[]; +extern u8 gUnknown_0840B869[]; +extern u8 gUnknown_0840B878[]; extern struct CreditsEntry *gCreditsEntryPointerTable[][5]; extern u8 gUnknown_0840CA00[][2]; extern struct SpriteSheet gUnknown_0840CAA0; @@ -423,36 +433,33 @@ static void task_a_8143CC0(u8 taskIdA) { gTasks[taskIdA].func = task_a_8143D04; } -#ifdef NONMATCHING -void task_a_8143D04(u8 taskIdA) { - switch (gMain.state) { +void task_a_8143D04(u8 taskIdA) +{ + switch (gMain.state) + { default: - case 0: { + case 0: + { u16 i; ResetSpriteData(); FreeAllSpritePalettes(); gReservedSpritePaletteCount = 8; LZ77UnCompVram(&gBirchHelpGfx, (void *) VRAM); - LZ77UnCompVram(&gBirchBagTilemap, (void *) (VRAM + 0x3800)); - LoadPalette(gBirchBagGrassPal + 2, 1, 31 * 2); - - for (i = 0; i < 0x800; i++) { - gHallOfFame.sheet0[i] = 0x11; - } - - for (i = 0; i < 0x800; i++) { - gHallOfFame.sheet1[i] = 0x22; - } - - for (i = 0; i < 0x800; i++) { - gHallOfFame.sheet2[i] = 0x33; - } - - unk_201f800[0] = 0; - unk_201f800[1] = 0x53FF; // light yellow - unk_201f800[2] = 0x529F; // light red - unk_201f800[3] = 0x7E94; // light blue + LZ77UnCompVram(&gBirchGrassTilemap, (void *) (VRAM + 0x3800)); + LoadPalette(gBirchBagGrassPal + 1, 1, 31 * 2); + + for (i = 0; i < 0x800; i++) + HALL_OF_FAME_SHEET_0[i] = 0x11; + for (i = 0; i < 0x800; i++) + HALL_OF_FAME_SHEET_1[i] = 0x22; + for (i = 0; i < 0x800; i++) + HALL_OF_FAME_SHEET_2[i] = 0x33; + + EWRAM_1F800[0] = 0; + EWRAM_1F800[1] = 0x53FF; // light yellow + EWRAM_1F800[2] = 0x529F; // light red + EWRAM_1F800[3] = 0x7E94; // light blue LoadSpriteSheet(&gUnknown_0840CAA0); LoadSpritePalette(&gUnknown_0840CAB0); @@ -460,8 +467,7 @@ void task_a_8143D04(u8 taskIdA) { gMain.state += 1; break; } - - case 1: { + case 1: gTasks[taskIdA].data[TDA_TASK_D_ID] = CreateTask(task_d_8144514, 0); gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_STATE] = 1; gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_TASK_A_ID] = taskIdA; @@ -478,210 +484,8 @@ void task_a_8143D04(u8 taskIdA) { gTasks[taskIdA].func = task_a_8143B38; break; } - } -} -#else -__attribute__((naked)) -void task_a_8143D04(u8 taskId) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6,r7}\n\ - sub sp, 0x4\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - ldr r0, _08143DC8 @ =gMain\n\ - ldr r1, _08143DCC @ =0x0000043c\n\ - adds r1, r0\n\ - mov r8, r1\n\ - ldrb r7, [r1]\n\ - cmp r7, 0\n\ - beq _08143D24\n\ - cmp r7, 0x1\n\ - beq _08143E0C\n\ -_08143D24:\n\ - bl ResetSpriteData\n\ - bl FreeAllSpritePalettes\n\ - ldr r1, _08143DD0 @ =gReservedSpritePaletteCount\n\ - movs r0, 0x8\n\ - strb r0, [r1]\n\ - ldr r0, _08143DD4 @ =gBirchHelpGfx\n\ - movs r1, 0xC0\n\ - lsls r1, 19\n\ - bl LZ77UnCompVram\n\ - ldr r0, _08143DD8 @ =gBirchGrassTilemap\n\ - ldr r1, _08143DDC @ =0x06003800\n\ - bl LZ77UnCompVram\n\ - ldr r0, _08143DE0 @ =gBirchBagGrassPal + 2\n\ - movs r1, 0x1\n\ - movs r2, 0x3E\n\ - bl LoadPalette\n\ - movs r1, 0\n\ - ldr r4, _08143DE4 @ =0x0201e000\n\ - movs r3, 0x11\n\ - ldr r2, _08143DE8 @ =0x000007ff\n\ -_08143D56:\n\ - adds r0, r1, r4\n\ - strb r3, [r0]\n\ - adds r0, r1, 0x1\n\ - lsls r0, 16\n\ - lsrs r1, r0, 16\n\ - cmp r1, r2\n\ - bls _08143D56\n\ - movs r1, 0\n\ - ldr r2, _08143DEC @ =0x0201f800\n\ - ldr r6, _08143DF0 @ =gUnknown_0840CAA0\n\ - ldr r0, _08143DF4 @ =0xfffff000\n\ - adds r5, r2, r0\n\ - movs r4, 0x22\n\ - ldr r3, _08143DE8 @ =0x000007ff\n\ -_08143D72:\n\ - adds r0, r1, r5\n\ - strb r4, [r0]\n\ - adds r0, r1, 0x1\n\ - lsls r0, 16\n\ - lsrs r1, r0, 16\n\ - cmp r1, r3\n\ - bls _08143D72\n\ - movs r1, 0\n\ - ldr r5, _08143DF8 @ =0x0201f000\n\ - movs r4, 0x33\n\ - ldr r3, _08143DE8 @ =0x000007ff\n\ -_08143D88:\n\ - adds r0, r1, r5\n\ - strb r4, [r0]\n\ - adds r0, r1, 0x1\n\ - lsls r0, 16\n\ - lsrs r1, r0, 16\n\ - cmp r1, r3\n\ - bls _08143D88\n\ - movs r0, 0\n\ - strh r0, [r2]\n\ - ldr r1, _08143DFC @ =0x000053ff\n\ - adds r0, r1, 0\n\ - strh r0, [r2, 0x2]\n\ - ldr r1, _08143E00 @ =0x0000529f\n\ - adds r0, r1, 0\n\ - strh r0, [r2, 0x4]\n\ - ldr r1, _08143E04 @ =0x00007e94\n\ - adds r0, r1, 0\n\ - strh r0, [r2, 0x6]\n\ - adds r0, r6, 0\n\ - bl LoadSpriteSheet\n\ - ldr r0, _08143E08 @ =gUnknown_0840CAB0\n\ - bl LoadSpritePalette\n\ - ldr r1, _08143DC8 @ =gMain\n\ - ldr r2, _08143DCC @ =0x0000043c\n\ - adds r1, r2\n\ - ldrb r0, [r1]\n\ - adds r0, 0x1\n\ - strb r0, [r1]\n\ - b _08143E90\n\ - .align 2, 0\n\ -_08143DC8: .4byte gMain\n\ -_08143DCC: .4byte 0x0000043c\n\ -_08143DD0: .4byte gReservedSpritePaletteCount\n\ -_08143DD4: .4byte gBirchHelpGfx\n\ -_08143DD8: .4byte gBirchGrassTilemap\n\ -_08143DDC: .4byte 0x06003800\n\ -_08143DE0: .4byte gBirchBagGrassPal + 2\n\ -_08143DE4: .4byte 0x0201e000\n\ -_08143DE8: .4byte 0x000007ff\n\ -_08143DEC: .4byte 0x0201f800\n\ -_08143DF0: .4byte gUnknown_0840CAA0\n\ -_08143DF4: .4byte 0xfffff000\n\ -_08143DF8: .4byte 0x0201f000\n\ -_08143DFC: .4byte 0x000053ff\n\ -_08143E00: .4byte 0x0000529f\n\ -_08143E04: .4byte 0x00007e94\n\ -_08143E08: .4byte gUnknown_0840CAB0\n\ -_08143E0C:\n\ - ldr r0, _08143EA0 @ =task_d_8144514\n\ - movs r1, 0\n\ - bl CreateTask\n\ - ldr r2, _08143EA4 @ =gTasks\n\ - lsls r4, r6, 2\n\ - adds r4, r6\n\ - lsls r4, 3\n\ - adds r4, r2\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - movs r1, 0\n\ - mov r9, r1\n\ - movs r5, 0\n\ - strh r0, [r4, 0xE]\n\ - movs r0, 0xE\n\ - ldrsh r1, [r4, r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r0, 3\n\ - adds r0, r2\n\ - strh r7, [r0, 0x8]\n\ - movs r0, 0xE\n\ - ldrsh r1, [r4, r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r0, 3\n\ - adds r0, r2\n\ - strh r6, [r0, 0xA]\n\ - movs r0, 0xE\n\ - ldrsh r1, [r4, r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r0, 3\n\ - adds r0, r2\n\ - ldrh r1, [r4, 0x16]\n\ - strh r1, [r0, 0xC]\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - str r5, [sp]\n\ - movs r1, 0\n\ - movs r2, 0x10\n\ - movs r3, 0\n\ - bl BeginNormalPaletteFade\n\ - ldr r0, _08143EA8 @ =REG_BG3HOFS\n\ - strh r5, [r0]\n\ - ldr r1, _08143EAC @ =REG_BG3VOFS\n\ - movs r0, 0x20\n\ - strh r0, [r1]\n\ - subs r1, 0x10\n\ - ldr r2, _08143EB0 @ =0x00000703\n\ - adds r0, r2, 0\n\ - strh r0, [r1]\n\ - subs r1, 0xE\n\ - movs r2, 0xCA\n\ - lsls r2, 5\n\ - adds r0, r2, 0\n\ - strh r0, [r1]\n\ - mov r1, r9\n\ - mov r0, r8\n\ - strb r1, [r0]\n\ - ldr r0, _08143EB4 @ =gUnknown_0203935C\n\ - strh r5, [r0]\n\ - ldr r0, _08143EB8 @ =sub_8143B38\n\ - str r0, [r4]\n\ -_08143E90:\n\ - add sp, 0x4\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08143EA0: .4byte task_d_8144514\n\ -_08143EA4: .4byte gTasks\n\ -_08143EA8: .4byte 0x4000000 + 0x1c\n\ -_08143EAC: .4byte 0x4000000 + 0x1e\n\ -_08143EB0: .4byte 0x00000703\n\ -_08143EB4: .4byte gUnknown_0203935C\n\ -_08143EB8: .4byte task_a_8143B38\n\ - .syntax divided\n"); } -#endif - static void task_a_8143EBC(u8 taskIdA) { if (gTasks[taskIdA].data[TDA_12]) { @@ -1006,264 +810,64 @@ static u8 sub_8144454(u8 page, u8 taskIdA) { #define UNK_DEFINE_44 (0x44) -#ifdef NONMATCHING -void task_d_8144514(u8 taskIdD) { - u8 local1; +struct UnknownStruct +{ + u16 unk0[0x44]; + u16 unk88; + u16 unk8A; + u16 unk8C; + u16 unk8E; +}; + +#define EWRAM_1C000 (*(struct UnknownStruct *)(unk_2000000 + 0x1C000)) - switch (gTasks[taskIdD].data[TDD_STATE]) +extern void task_a_8143B68(u8); + +void task_d_8144514(u8 taskId) +{ + struct UnknownStruct *r6 = &EWRAM_1C000; + u8 r2; + + switch (gTasks[taskId].data[TDD_STATE]) { case 0: break; - case 1: - if (unk_201C000.var_8A == 0 && gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14]) - { + if (r6->unk8A == 0 && gTasks[gTasks[taskId].data[TDD_TASK_A_ID]].data[14] == 0) break; - } - - gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14] = 0; - gTasks[taskIdD].data[TDD_STATE] += 1; - + gTasks[gTasks[taskId].data[TDD_TASK_A_ID]].data[TDA_14] = 0; + gTasks[taskId].data[TDD_STATE]++; break; - case 2: - if (unk_201C000.var_88 == UNK_DEFINE_44) - { + if (r6->unk88 == 68 || gTasks[gTasks[taskId].data[TDD_TASK_A_ID]].func != task_a_8143B68) break; - } - - if (gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != task_a_8143B68) + r2 = sub_81456B4(r6->unk0[r6->unk8C], gUnknown_0840CA00[r6->unk8A][0], gUnknown_0840CA00[r6->unk8A][1], r6->unk8A); + if (r6->unk8C < r6->unk8E - 1) { - break; - } - - local1 = sub_81456B4( - unk_201C000.var_00[unk_201C000.var_8C], - gUnknown_0840CA00[unk_201C000.var_8A][0], - gUnknown_0840CA00[unk_201C000.var_8A][1], - unk_201C000.var_8A - ); - - if (unk_201C000.var_8C > unk_201C000.var_8E - 1) - { - unk_201C000.var_8C += 1; - gSprites[local1].data3 = 50; + r6->unk8C++; + gSprites[r2].data3 = 50; } else { - unk_201C000.var_8C = 0; - gSprites[local1].data3 = 512; - } - - unk_201C000.var_88 += 1; - - if (unk_201C000.var_8A == 2) - { - unk_201C000.var_8A = 0; + r6->unk8C = 0; + gSprites[r2].data3 = 512; } + r6->unk88++; + if (r6->unk8A == 2) + r6->unk8A = 0; else - { - unk_201C000.var_8A += 1; - } - - gTasks[taskIdD].data[TDD_3] = 50; - gTasks[taskIdD].data[TDD_STATE] += 1; + r6->unk8A++; + gTasks[taskId].data[TDD_3] = 50; + gTasks[taskId].data[TDD_STATE]++; break; - case 3: - if (gTasks[taskIdD].data[TDD_3] != 0) - { - gTasks[taskIdD].data[TDD_3] -= 1; - break; - } - - gTasks[taskIdD].data[TDD_STATE] = 1; + if (gTasks[taskId].data[TDD_3] != 0) + gTasks[taskId].data[TDD_3]--; + else + gTasks[taskId].data[TDD_STATE] = 1; break; } } -#else -__attribute__((naked)) -void task_d_8144514(u8 taskIdD) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6,r7}\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r8, r0\n\ - ldr r6, _08144548 @ =0x0201c000\n\ - ldr r3, _0814454C @ =gTasks\n\ - lsls r0, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r2, r0, r3\n\ - movs r1, 0x8\n\ - ldrsh r0, [r2, r1]\n\ - cmp r0, 0x1\n\ - beq _08144550\n\ - cmp r0, 0x1\n\ - bgt _0814453C\n\ - b _08144658\n\ -_0814453C:\n\ - cmp r0, 0x2\n\ - beq _08144584\n\ - cmp r0, 0x3\n\ - bne _08144546\n\ - b _08144644\n\ -_08144546:\n\ - b _08144658\n\ - .align 2, 0\n\ -_08144548: .4byte 0x0201c000\n\ -_0814454C: .4byte gTasks\n\ -_08144550:\n\ - adds r0, r6, 0\n\ - adds r0, 0x8A\n\ - ldrh r0, [r0]\n\ - cmp r0, 0\n\ - bne _0814456E\n\ - movs r4, 0xA\n\ - ldrsh r0, [r2, r4]\n\ - lsls r1, r0, 2\n\ - adds r1, r0\n\ - lsls r1, 3\n\ - adds r1, r3\n\ - movs r4, 0x24\n\ - ldrsh r0, [r1, r4]\n\ - cmp r0, 0\n\ - beq _08144658\n\ -_0814456E:\n\ - movs r0, 0xA\n\ - ldrsh r1, [r2, r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r0, 3\n\ - adds r0, r3\n\ - movs r1, 0\n\ - strh r1, [r0, 0x24]\n\ - ldrh r0, [r2, 0x8]\n\ - adds r0, 0x1\n\ - b _08144656\n\ -_08144584:\n\ - adds r0, r6, 0\n\ - adds r0, 0x88\n\ - ldrh r1, [r0]\n\ - mov r9, r0\n\ - cmp r1, 0x44\n\ - beq _08144658\n\ - movs r4, 0xA\n\ - ldrsh r1, [r2, r4]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r0, 3\n\ - adds r0, r3\n\ - ldr r1, [r0]\n\ - ldr r0, _081445EC @ =sub_8143B68\n\ - cmp r1, r0\n\ - bne _08144658\n\ - adds r7, r6, 0\n\ - adds r7, 0x8C\n\ - ldrh r0, [r7]\n\ - lsls r0, 1\n\ - adds r0, r6\n\ - ldrh r0, [r0]\n\ - ldr r4, _081445F0 @ =gUnknown_0840CA00\n\ - adds r5, r6, 0\n\ - adds r5, 0x8A\n\ - ldrh r3, [r5]\n\ - lsls r2, r3, 1\n\ - adds r1, r2, r4\n\ - ldrb r1, [r1]\n\ - adds r4, 0x1\n\ - adds r2, r4\n\ - ldrb r2, [r2]\n\ - bl sub_81456B4\n\ - lsls r0, 24\n\ - lsrs r2, r0, 24\n\ - ldrh r1, [r7]\n\ - adds r0, r6, 0\n\ - adds r0, 0x8E\n\ - ldrh r0, [r0]\n\ - subs r0, 0x1\n\ - cmp r1, r0\n\ - bge _081445F8\n\ - adds r0, r1, 0x1\n\ - strh r0, [r7]\n\ - ldr r1, _081445F4 @ =gSprites\n\ - lsls r0, r2, 4\n\ - adds r0, r2\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - movs r1, 0x32\n\ - b _0814460A\n\ - .align 2, 0\n\ -_081445EC: .4byte task_a_8143B68\n\ -_081445F0: .4byte gUnknown_0840CA00\n\ -_081445F4: .4byte gSprites\n\ -_081445F8:\n\ - movs r0, 0\n\ - strh r0, [r7]\n\ - ldr r1, _08144620 @ =gSprites\n\ - lsls r0, r2, 4\n\ - adds r0, r2\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - movs r1, 0x80\n\ - lsls r1, 2\n\ -_0814460A:\n\ - strh r1, [r0, 0x34]\n\ - mov r1, r9\n\ - ldrh r0, [r1]\n\ - adds r0, 0x1\n\ - strh r0, [r1]\n\ - ldrh r0, [r5]\n\ - cmp r0, 0x2\n\ - bne _08144624\n\ - movs r0, 0\n\ - b _08144626\n\ - .align 2, 0\n\ -_08144620: .4byte gSprites\n\ -_08144624:\n\ - adds r0, 0x1\n\ -_08144626:\n\ - strh r0, [r5]\n\ - ldr r0, _08144640 @ =gTasks\n\ - mov r2, r8\n\ - lsls r1, r2, 2\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - movs r0, 0x32\n\ - strh r0, [r1, 0xE]\n\ - ldrh r0, [r1, 0x8]\n\ - adds r0, 0x1\n\ - strh r0, [r1, 0x8]\n\ - b _08144658\n\ - .align 2, 0\n\ -_08144640: .4byte gTasks\n\ -_08144644:\n\ - ldrh r1, [r2, 0xE]\n\ - movs r3, 0xE\n\ - ldrsh r0, [r2, r3]\n\ - cmp r0, 0\n\ - beq _08144654\n\ - subs r0, r1, 0x1\n\ - strh r0, [r2, 0xE]\n\ - b _08144658\n\ -_08144654:\n\ - movs r0, 0x1\n\ -_08144656:\n\ - strh r0, [r2, 0x8]\n\ -_08144658:\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} -#endif __attribute__((naked)) void task_c_8144664(u8 taskIdC) { @@ -1982,7 +1586,7 @@ u16 sub_8145208(u8 arg0) { } __attribute__((naked)) -void sub_814524C(int arg0, u8 arg1, u8 arg2, u16 arg3, int arg4) { +void sub_814524C(void *arg0, u8 arg1, u8 arg2, u16 arg3, int arg4) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ mov r7, r10\n\ @@ -2054,100 +1658,22 @@ _0814528C:\n\ .syntax divided\n"); } -#ifdef NONMATCHING -void sub_81452D0(u16 arg0, u16 arg1) { +void sub_81452D0(u16 arg0, u16 arg1) +{ u16 i; - - + u16 foo = arg1 / 16; + u16 bar = foo * 4096; + for (i = 0; i < 0x400; i ++) - { - (u16 *) (VRAM + ) - } - sub_814524C(&gUnknown_0840B85A, 7, 7, arg0, arg1); - sub_814524C(&gUnknown_0840B869, 11, 7, arg0, arg1); - sub_814524C(&gUnknown_0840B878, 15, 7, arg0, arg1); - sub_814524C(&gUnknown_0840B85A, 19, 7, arg0, arg1); + ((u16 *)(VRAM + arg0))[i] = bar + 1; + + sub_814524C(&gUnknown_0840B83C, 3, 7, arg0, arg1); + sub_814524C(&gUnknown_0840B84B, 7, 7, arg0, arg1); + sub_814524C(&gUnknown_0840B85A, 11, 7, arg0, arg1); + sub_814524C(&gUnknown_0840B85A, 16, 7, arg0, arg1); + sub_814524C(&gUnknown_0840B869, 20, 7, arg0, arg1); + sub_814524C(&gUnknown_0840B878, 24, 7, arg0, arg1); } -#else -__attribute__((naked)) -void sub_81452D0(u16 arg0, u16 arg1) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - sub sp, 0x4\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - lsls r1, 16\n\ - lsrs r6, r1, 16\n\ - lsrs r1, 20\n\ - lsls r1, 28\n\ - lsrs r1, 16\n\ - movs r2, 0\n\ - ldr r7, _08145360 @ =gUnknown_0840B83C\n\ - movs r4, 0xC0\n\ - lsls r4, 19\n\ - adds r1, 0x1\n\ - ldr r3, _08145364 @ =0x000003ff\n\ -_081452EE:\n\ - lsls r0, r2, 1\n\ - adds r0, r5\n\ - adds r0, r4\n\ - strh r1, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, r3\n\ - bls _081452EE\n\ - str r6, [sp]\n\ - adds r0, r7, 0\n\ - movs r1, 0x3\n\ - movs r2, 0x7\n\ - adds r3, r5, 0\n\ - bl sub_814524C\n\ - ldr r0, _08145368 @ =gUnknown_0840B84B\n\ - str r6, [sp]\n\ - movs r1, 0x7\n\ - movs r2, 0x7\n\ - adds r3, r5, 0\n\ - bl sub_814524C\n\ - ldr r4, _0814536C @ =gUnknown_0840B85A\n\ - str r6, [sp]\n\ - adds r0, r4, 0\n\ - movs r1, 0xB\n\ - movs r2, 0x7\n\ - adds r3, r5, 0\n\ - bl sub_814524C\n\ - str r6, [sp]\n\ - adds r0, r4, 0\n\ - movs r1, 0x10\n\ - movs r2, 0x7\n\ - adds r3, r5, 0\n\ - bl sub_814524C\n\ - ldr r0, _08145370 @ =gUnknown_0840B869\n\ - str r6, [sp]\n\ - movs r1, 0x14\n\ - movs r2, 0x7\n\ - adds r3, r5, 0\n\ - bl sub_814524C\n\ - ldr r0, _08145374 @ =gUnknown_0840B878\n\ - str r6, [sp]\n\ - movs r1, 0x18\n\ - movs r2, 0x7\n\ - adds r3, r5, 0\n\ - bl sub_814524C\n\ - add sp, 0x4\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08145360: .4byte gUnknown_0840B83C\n\ -_08145364: .4byte 0x000003ff\n\ -_08145368: .4byte gUnknown_0840B84B\n\ -_0814536C: .4byte gUnknown_0840B85A\n\ -_08145370: .4byte gUnknown_0840B869\n\ -_08145374: .4byte gUnknown_0840B878\n\ - .syntax divided\n"); -} -#endif static void spritecb_player_8145378(struct Sprite *sprite) { if (gUnknown_0203935C != 0) -- cgit v1.2.3 From d39b98c265db6c1c6be33d8a873f39f19d1bee89 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Tue, 17 Jan 2017 13:10:14 +0100 Subject: Clean up credits.c --- src/credits.c | 96 ++++++++++++++++++++++------------------------------------- 1 file changed, 35 insertions(+), 61 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index e16702051..52aeffbbf 100644 --- a/src/credits.c +++ b/src/credits.c @@ -7,10 +7,12 @@ #include "palette.h" #include "songs.h" #include "sound.h" -#include "species.h" -#include "sprite.h" -#include "task.h" -#include "text.h" + +asm(".set REG_BASE, 0x4000000"); +asm(".set OFFSET_REG_BLDCNT, 0x50"); +asm(".set OFFSET_REG_BLDALPHA, 0x52"); +asm(".set REG_BLDCNT, REG_BASE + OFFSET_REG_BLDCNT"); +asm(".set REG_BLDALPHA, REG_BASE + OFFSET_REG_BLDALPHA"); u32 NationalPokedexNumToSpecies(u16 nationalNum); @@ -18,19 +20,8 @@ struct MonCoords { u8 x, y; }; - extern void *species_and_otid_get_pal(u32, u16, u16); -asm(".set REG_BASE, 0x4000000"); -asm(".set OFFSET_REG_BG3HOFS, 0x1c"); -asm(".set OFFSET_REG_BG3VOFS, 0x1e"); -asm(".set OFFSET_REG_BLDCNT, 0x50"); -asm(".set OFFSET_REG_BLDALPHA, 0x52"); -asm(".set REG_BG3HOFS, REG_BASE + OFFSET_REG_BG3HOFS"); -asm(".set REG_BG3VOFS, REG_BASE + OFFSET_REG_BG3VOFS"); -asm(".set REG_BLDCNT, REG_BASE + OFFSET_REG_BLDCNT"); -asm(".set REG_BLDALPHA, REG_BASE + OFFSET_REG_BLDALPHA"); - enum { PAGE_TITLE, PAGE_DIRECTOR, @@ -132,17 +123,12 @@ enum { }; struct Unk201C000 { - u8 pad_00[0x88]; - u16 var_88; - u16 var_8A; - u16 var_8C; - u16 var_8E; -}; - -struct HallOfFame { - u8 sheet0[0x800]; - u8 sheet1[0x800]; - u8 sheet2[0x800]; + u16 unk0[8]; + u8 pad_10[0x78]; + u16 unk88; + u16 unk8A; + u16 unk8C; + u16 unk8E; }; struct CreditsEntry { @@ -170,7 +156,6 @@ extern s16 gUnknown_02039320; extern u16 gUnknown_02039322; // TASK A extern u8 gUnknown_02039324; extern u8 gUnknown_02039325; - extern u16 gUnknown_02039358; extern u16 gUnknown_0203935A; extern s16 gUnknown_0203935C; @@ -233,11 +218,11 @@ static void task_a_8144114(u8 taskIdA); static void sub_8144130(void); static void task_b_81441B8(u8 taskIdB); static u8 sub_8144454(u8 page, u8 taskIdA); -void task_d_8144514(u8 taskIdD); +static void task_d_8144514(u8 taskIdD); static bool8 sub_8144ECC(u8 data, u8 taskIdA); static void sub_81450AC(u8 taskIdA); void sub_8145128(u16, u16, u16); -void sub_81452D0(u16 arg0, u16 arg1); +static void sub_81452D0(u16 arg0, u16 arg1); static void spritecb_player_8145378(struct Sprite *sprite); static void spritecb_rival_8145420(struct Sprite *sprite); u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3); @@ -339,9 +324,9 @@ void sub_81439D0(void) { sub_81458DC(); - c000->var_88 = 0; - c000->var_8A = 0; - c000->var_8C = 0; + c000->unk88 = 0; + c000->unk8A = 0; + c000->unk8C = 0; gUnknown_02039322 = taskIdA; } @@ -455,7 +440,7 @@ void task_a_8143D04(u8 taskIdA) HALL_OF_FAME_SHEET_1[i] = 0x22; for (i = 0; i < 0x800; i++) HALL_OF_FAME_SHEET_2[i] = 0x33; - + EWRAM_1F800[0] = 0; EWRAM_1F800[1] = 0x53FF; // light yellow EWRAM_1F800[2] = 0x529F; // light red @@ -810,36 +795,25 @@ static u8 sub_8144454(u8 page, u8 taskIdA) { #define UNK_DEFINE_44 (0x44) -struct UnknownStruct -{ - u16 unk0[0x44]; - u16 unk88; - u16 unk8A; - u16 unk8C; - u16 unk8E; -}; - -#define EWRAM_1C000 (*(struct UnknownStruct *)(unk_2000000 + 0x1C000)) +#define EWRAM_1C000 (*(struct Unk201C000 *)(unk_2000000 + 0x1C000)) -extern void task_a_8143B68(u8); - -void task_d_8144514(u8 taskId) +static void task_d_8144514(u8 taskIdD) { - struct UnknownStruct *r6 = &EWRAM_1C000; + struct Unk201C000 *r6 = &EWRAM_1C000; u8 r2; - - switch (gTasks[taskId].data[TDD_STATE]) + + switch (gTasks[taskIdD].data[TDD_STATE]) { case 0: break; case 1: - if (r6->unk8A == 0 && gTasks[gTasks[taskId].data[TDD_TASK_A_ID]].data[14] == 0) + if (r6->unk8A == 0 && gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14] == 0) break; - gTasks[gTasks[taskId].data[TDD_TASK_A_ID]].data[TDA_14] = 0; - gTasks[taskId].data[TDD_STATE]++; + gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14] = 0; + gTasks[taskIdD].data[TDD_STATE]++; break; case 2: - if (r6->unk88 == 68 || gTasks[gTasks[taskId].data[TDD_TASK_A_ID]].func != task_a_8143B68) + if (r6->unk88 == UNK_DEFINE_44 || gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != task_a_8143B68) break; r2 = sub_81456B4(r6->unk0[r6->unk8C], gUnknown_0840CA00[r6->unk8A][0], gUnknown_0840CA00[r6->unk8A][1], r6->unk8A); if (r6->unk8C < r6->unk8E - 1) @@ -857,14 +831,14 @@ void task_d_8144514(u8 taskId) r6->unk8A = 0; else r6->unk8A++; - gTasks[taskId].data[TDD_3] = 50; - gTasks[taskId].data[TDD_STATE]++; + gTasks[taskIdD].data[TDD_3] = 50; + gTasks[taskIdD].data[TDD_STATE]++; break; case 3: - if (gTasks[taskId].data[TDD_3] != 0) - gTasks[taskId].data[TDD_3]--; + if (gTasks[taskIdD].data[TDD_3] != 0) + gTasks[taskIdD].data[TDD_3]--; else - gTasks[taskId].data[TDD_STATE] = 1; + gTasks[taskIdD].data[TDD_STATE] = 1; break; } } @@ -1658,15 +1632,15 @@ _0814528C:\n\ .syntax divided\n"); } -void sub_81452D0(u16 arg0, u16 arg1) +static void sub_81452D0(u16 arg0, u16 arg1) { u16 i; u16 foo = arg1 / 16; u16 bar = foo * 4096; - + for (i = 0; i < 0x400; i ++) ((u16 *)(VRAM + arg0))[i] = bar + 1; - + sub_814524C(&gUnknown_0840B83C, 3, 7, arg0, arg1); sub_814524C(&gUnknown_0840B84B, 7, 7, arg0, arg1); sub_814524C(&gUnknown_0840B85A, 11, 7, arg0, arg1); -- cgit v1.2.3 From bcaab977727ded65c9eeaef9dbef9e9441d26fb7 Mon Sep 17 00:00:00 2001 From: YamaArashi Date: Sat, 21 Jan 2017 16:48:06 -0800 Subject: formatting --- src/credits.c | 165 ++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 102 insertions(+), 63 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index 52aeffbbf..eb8f45374 100644 --- a/src/credits.c +++ b/src/credits.c @@ -16,13 +16,15 @@ asm(".set REG_BLDALPHA, REG_BASE + OFFSET_REG_BLDALPHA"); u32 NationalPokedexNumToSpecies(u16 nationalNum); -struct MonCoords { +struct MonCoords +{ u8 x, y; }; extern void *species_and_otid_get_pal(u32, u16, u16); -enum { +enum +{ PAGE_TITLE, PAGE_DIRECTOR, PAGE_ART_DIRECTOR, @@ -84,7 +86,8 @@ enum { #define COLOR_DARK_GREEN 0x1967 #define COLOR_LIGHT_GREEN 0x328D -enum { +enum +{ TDA_0 = 0, TDA_TASK_C_ID = 1, TDA_TASK_E_ID = 2, @@ -122,7 +125,8 @@ enum { TDE_TASK_A_ID = 2, }; -struct Unk201C000 { +struct Unk201C000 +{ u16 unk0[8]; u8 pad_10[0x78]; u16 unk88; @@ -131,7 +135,8 @@ struct Unk201C000 { u16 unk8E; }; -struct CreditsEntry { +struct CreditsEntry +{ u8 var_0; u8 *text; }; @@ -228,13 +233,15 @@ static void spritecb_rival_8145420(struct Sprite *sprite); u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3); void sub_81458DC(void); -static void vblank_8143948(void) { +static void vblank_8143948(void) +{ LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -static void sub_814395C(void) { +static void sub_814395C(void) +{ RunTasks(); AnimateSprites(); BuildOamBuffer(); @@ -263,7 +270,8 @@ static void sub_814395C(void) { gUnknown_02039325 = 1; } -void sub_81439D0(void) { +void sub_81439D0(void) +{ u8 taskIdA; s16 taskIdC; u8 taskIdB; @@ -297,7 +305,7 @@ void sub_81439D0(void) { InitMenuWindow(&gWindowConfig_81E7208); LoadPalette(&gUnknown_0840B7BC, 0x80, sizeof(gUnknown_0840B7BC)); - CpuCopy16(&gUnknown_0840B7FC, (void *) (VRAM + 0xBEE0), sizeof(gUnknown_0840B7FC)); + CpuCopy16(&gUnknown_0840B7FC, (void *)(VRAM + 0xBEE0), sizeof(gUnknown_0840B7FC)); REG_BG0VOFS = 0xFFFC; @@ -331,7 +339,8 @@ void sub_81439D0(void) { gUnknown_02039322 = taskIdA; } -static void task_a_8143B38(u8 taskIdA) { +static void task_a_8143B38(u8 taskIdA) +{ if (gPaletteFade.active) { return; @@ -340,7 +349,8 @@ static void task_a_8143B38(u8 taskIdA) { gTasks[taskIdA].func = task_a_8143B68; } -static void task_a_8143B68(u8 taskIdA) { +static void task_a_8143B68(u8 taskIdA) +{ u16 data11; if (gTasks[taskIdA].data[TDA_4]) @@ -374,7 +384,8 @@ static void task_a_8143B68(u8 taskIdA) { } } -static void task_a_8143BFC(u8 taskIdA) { +static void task_a_8143BFC(u8 taskIdA) +{ if (gPaletteFade.active) { return; @@ -385,7 +396,8 @@ static void task_a_8143BFC(u8 taskIdA) { gTasks[taskIdA].func = task_a_80C9BFC; } -static void task_a_80C9BFC(u8 taskIdA) { +static void task_a_80C9BFC(u8 taskIdA) +{ u16 backup; SetVBlankCallback(NULL); @@ -407,7 +419,8 @@ static void task_a_80C9BFC(u8 taskIdA) { gTasks[taskIdA].func = task_a_8143B38; } -static void task_a_8143CC0(u8 taskIdA) { +static void task_a_8143CC0(u8 taskIdA) +{ if (gPaletteFade.active) { return; @@ -430,8 +443,8 @@ void task_a_8143D04(u8 taskIdA) ResetSpriteData(); FreeAllSpritePalettes(); gReservedSpritePaletteCount = 8; - LZ77UnCompVram(&gBirchHelpGfx, (void *) VRAM); - LZ77UnCompVram(&gBirchGrassTilemap, (void *) (VRAM + 0x3800)); + LZ77UnCompVram(&gBirchHelpGfx, (void *)VRAM); + LZ77UnCompVram(&gBirchGrassTilemap, (void *)(VRAM + 0x3800)); LoadPalette(gBirchBagGrassPal + 1, 1, 31 * 2); for (i = 0; i < 0x800; i++) @@ -471,7 +484,8 @@ void task_a_8143D04(u8 taskIdA) } } -static void task_a_8143EBC(u8 taskIdA) { +static void task_a_8143EBC(u8 taskIdA) +{ if (gTasks[taskIdA].data[TDA_12]) { gTasks[taskIdA].data[TDA_12] -= 1; @@ -482,7 +496,8 @@ static void task_a_8143EBC(u8 taskIdA) { gTasks[taskIdA].func = task_a_8143F04; } -static void task_a_8143F04(u8 taskIdA) { +static void task_a_8143F04(u8 taskIdA) +{ if (gPaletteFade.active) { return; @@ -492,7 +507,8 @@ static void task_a_8143F04(u8 taskIdA) { gTasks[taskIdA].func = task_a_8143F3C; } -static void task_a_8143F3C(u8 taskIdA) { +static void task_a_8143F3C(u8 taskIdA) +{ u16 backup; sub_8144130(); @@ -514,7 +530,8 @@ static void task_a_8143F3C(u8 taskIdA) { gTasks[taskIdA].func = task_a_8143FDC; } -static void task_a_8143FDC(u8 taskIdA) { +static void task_a_8143FDC(u8 taskIdA) +{ if (gTasks[taskIdA].data[TDA_0]) { gTasks[taskIdA].data[TDA_0] -= 1; @@ -525,7 +542,8 @@ static void task_a_8143FDC(u8 taskIdA) { gTasks[taskIdA].func = task_a_8144024; } -static void task_a_8144024(u8 taskIdA) { +static void task_a_8144024(u8 taskIdA) +{ if (gPaletteFade.active) { return; @@ -538,7 +556,8 @@ static void task_a_8144024(u8 taskIdA) { gTasks[taskIdA].func = task_a_8144080; } -static void task_a_8144080(u8 taskIdA) { +static void task_a_8144080(u8 taskIdA) +{ if (gPaletteFade.active) { return; @@ -573,7 +592,8 @@ static void task_a_8144080(u8 taskIdA) { gTasks[taskIdA].data[TDA_0] -= 1; } -static void task_a_8144114(u8 taskIdA) { +static void task_a_8144114(u8 taskIdA) +{ if (gPaletteFade.active) { return; @@ -582,7 +602,8 @@ static void task_a_8144114(u8 taskIdA) { SoftReset(0xFF); } -static void sub_8144130(void) { +static void sub_8144130(void) +{ REG_DISPCNT = 0; REG_BG3HOFS = 0; @@ -598,12 +619,13 @@ 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 task_b_81441B8(u8 taskIdB) { +static void task_b_81441B8(u8 taskIdB) +{ u16 i; switch (gTasks[taskIdB].data[TDB_0]) @@ -645,7 +667,7 @@ static void task_b_81441B8(u8 taskIdB) { for (i = 0; i < 5; i++) { sub_8072BD8(gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text, 0, - 9 + i * 2, 240); + 9 + i * 2, 240); } gTasks[taskIdB].data[TDB_CURRENT_PAGE] += 1; @@ -691,7 +713,7 @@ static void task_b_81441B8(u8 taskIdB) { return; } - if (sub_8144454((u8) gTasks[taskIdB].data[TDB_CURRENT_PAGE], (u8) gTasks[taskIdB].data[TDB_TASK_A_ID])) + if (sub_8144454((u8)gTasks[taskIdB].data[TDB_CURRENT_PAGE], (u8)gTasks[taskIdB].data[TDB_TASK_A_ID])) { gTasks[taskIdB].data[TDB_0] += 1; return; @@ -729,7 +751,8 @@ static void task_b_81441B8(u8 taskIdB) { #define LAST_PAGE (PAGE_TEXT_EDITOR) -static u8 sub_8144454(u8 page, u8 taskIdA) { +static u8 sub_8144454(u8 page, u8 taskIdA) +{ // Starts with bike + ocean + morning if (page == PAGE_PROGRAMMERS_1) @@ -844,7 +867,8 @@ static void task_d_8144514(u8 taskIdD) } __attribute__((naked)) -void task_c_8144664(u8 taskIdC) { +void task_c_8144664(u8 taskIdC) +{ asm(".syntax unified\n\ push {r4-r7,lr}\n\ lsls r0, 24\n\ @@ -1171,7 +1195,8 @@ _0814492C:\n\ #define UNK_DEF_1F3 (499) -void task_e_8144934(u8 taskIdE) { +void task_e_8144934(u8 taskIdE) +{ s16 taskIdC; switch (gTasks[taskIdE].data[TDE_0]) @@ -1201,7 +1226,7 @@ void task_e_8144934(u8 taskIdE) { taskIdC = gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_C_ID]; // Floor to multiple of 128 - if ((gTasks[taskIdC].data[TDC_5] & - 128) == 640) + if ((gTasks[taskIdC].data[TDC_5] & -128) == 640) { gTasks[taskIdC].data[TDC_0] = 1; gTasks[taskIdE].data[TDE_1] = 0x7FFF; @@ -1236,7 +1261,8 @@ void task_e_8144934(u8 taskIdE) { #define UNK_DEFINE_45 (0x45) -static void sub_8144A68(u8 data, u8 taskIdA) { +static void sub_8144A68(u8 data, u8 taskIdA) +{ switch (data) { case 0: @@ -1279,7 +1305,7 @@ static void sub_8144A68(u8 data, u8 taskIdA) { gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0; gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0; gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120; - gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = - 32; + gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = -32; gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46; gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46; gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data0 = 0; @@ -1318,7 +1344,8 @@ static void sub_8144A68(u8 data, u8 taskIdA) { } } -static bool8 sub_8144ECC(u8 data, u8 taskIdA) { +static bool8 sub_8144ECC(u8 data, u8 taskIdA) +{ u8 spriteId; switch (gMain.state) @@ -1395,7 +1422,8 @@ static bool8 sub_8144ECC(u8 data, u8 taskIdA) { return FALSE; } -static void sub_81450AC(u8 taskIdA) { +static void sub_81450AC(u8 taskIdA) +{ if (gTasks[taskIdA].data[TDA_0] != 0) { DestroyTask(gTasks[taskIdA].data[TDA_0]); @@ -1424,7 +1452,8 @@ static void sub_81450AC(u8 taskIdA) { } __attribute__((naked)) -void sub_8145128(u16 arg0, u16 arg1, u16 arg2) { +void sub_8145128(u16 arg0, u16 arg1, u16 arg2) +{ asm(".syntax unified\n\ push {r4-r7,lr}\n\ adds r3, r0, 0\n\ @@ -1537,7 +1566,8 @@ _08145204: .4byte 0x06000348\n\ .syntax divided\n"); } -u16 sub_8145208(u8 arg0) { +u16 sub_8145208(u8 arg0) +{ u16 out = (arg0 & 0x3F) + 80; @@ -1560,7 +1590,8 @@ u16 sub_8145208(u8 arg0) { } __attribute__((naked)) -void sub_814524C(void *arg0, u8 arg1, u8 arg2, u16 arg3, int arg4) { +void sub_814524C(void *arg0, u8 arg1, u8 arg2, u16 arg3, int arg4) +{ asm(".syntax unified\n\ push {r4-r7,lr}\n\ mov r7, r10\n\ @@ -1638,7 +1669,7 @@ static void sub_81452D0(u16 arg0, u16 arg1) u16 foo = arg1 / 16; u16 bar = foo * 4096; - for (i = 0; i < 0x400; i ++) + for (i = 0; i < 0x400; i++) ((u16 *)(VRAM + arg0))[i] = bar + 1; sub_814524C(&gUnknown_0840B83C, 3, 7, arg0, arg1); @@ -1649,7 +1680,8 @@ static void sub_81452D0(u16 arg0, u16 arg1) sub_814524C(&gUnknown_0840B878, 24, 7, arg0, arg1); } -static void spritecb_player_8145378(struct Sprite *sprite) { +static void spritecb_player_8145378(struct Sprite *sprite) +{ if (gUnknown_0203935C != 0) { DestroySprite(sprite); @@ -1664,7 +1696,7 @@ static void spritecb_player_8145378(struct Sprite *sprite) { case 1: StartSpriteAnimIfDifferent(sprite, 1); - if (sprite->pos1.x > - 32) + if (sprite->pos1.x > -32) { sprite->pos1.x -= 1; } @@ -1688,7 +1720,7 @@ static void spritecb_player_8145378(struct Sprite *sprite) { case 5: StartSpriteAnimIfDifferent(sprite, 0); - if (sprite->pos1.x > - 32) + if (sprite->pos1.x > -32) { sprite->pos1.x -= 1; } @@ -1696,7 +1728,8 @@ static void spritecb_player_8145378(struct Sprite *sprite) { } } -static void spritecb_rival_8145420(struct Sprite *sprite) { +static void spritecb_rival_8145420(struct Sprite *sprite) +{ if (gUnknown_0203935C != 0) { DestroySprite(sprite); @@ -1720,12 +1753,12 @@ static void spritecb_rival_8145420(struct Sprite *sprite) { StartSpriteAnimIfDifferent(sprite, 2); } - if (sprite->pos1.x > - 32) + if (sprite->pos1.x > -32) { sprite->pos1.x -= 2; } - sprite->pos2.y = - gUnknown_0203935A; + sprite->pos2.y = -gUnknown_0203935A; break; case 2: @@ -1741,7 +1774,7 @@ static void spritecb_rival_8145420(struct Sprite *sprite) { case 3: StartSpriteAnimIfDifferent(sprite, 0); - if (sprite->pos1.x > - 32) + if (sprite->pos1.x > -32) { sprite->pos1.x -= 1; } @@ -1752,7 +1785,8 @@ static void spritecb_rival_8145420(struct Sprite *sprite) { } __attribute__((naked)) -void spritecb_81454E0(struct Sprite *sprite) { +void spritecb_81454E0(struct Sprite *sprite) +{ asm(".syntax unified\n\ push {r4,r5,lr}\n\ sub sp, 0x4\n\ @@ -1991,7 +2025,8 @@ _081456B0: .4byte REG_BLDCNT\n\ } #ifdef NONMATCHING -u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3) { +u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3) +{ u32 species; u32 personality; void *palette; @@ -1999,7 +2034,8 @@ u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3) { u8 spriteId2; species = NationalPokedexNumToSpecies(nationalNum); - switch (species) { + switch (species) + { case SPECIES_UNOWN: personality = gSaveBlock2.pokedex.unownPersonality; break; @@ -2014,14 +2050,14 @@ u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3) { } LoadSpecialPokePic( - &gMonFrontPicTable[species], - gMonFrontPicCoords[species].x, - gMonFrontPicCoords[species].y, - 0x2000000, - gUnknown_0840B5A0[arg3], - species, - personality, - 1 + &gMonFrontPicTable[species], + gMonFrontPicCoords[species].x, + gMonFrontPicCoords[species].y, + 0x2000000, + gUnknown_0840B5A0[arg3], + species, + personality, + 1 ); palette = species_and_otid_get_pal(species, 0, 0xFFFF); @@ -2044,7 +2080,8 @@ u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3) { } #else __attribute__((naked)) -u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3) { +u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3) +{ asm(".syntax unified\n\ push {r4-r7,lr}\n\ mov r7, r10\n\ @@ -2208,7 +2245,8 @@ _08145808: .4byte gSpriteTemplate_840CAEC\n\ } #endif -void spritecb_814580C(struct Sprite *sprite) { +void spritecb_814580C(struct Sprite *sprite) +{ if (gSprites[sprite->data0].data0 == 10 || gUnknown_0203935C) { DestroySprite(sprite); @@ -2224,7 +2262,8 @@ void spritecb_814580C(struct Sprite *sprite) { } __attribute__((naked)) -void sub_81458DC(void) { +void sub_81458DC(void) +{ asm(".syntax unified\n\ push {r4-r7,lr}\n\ mov r7, r10\n\ -- cgit v1.2.3 From b9ff56bd89ac11a9b40b34f834dcf7a5be4d90a6 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Fri, 27 Jan 2017 13:06:20 -0500 Subject: define more data in C (#219) * define some graphics data in C * define wild pokemon in C * use less #ifdefs * define data in berry.c --- src/credits.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index eb8f45374..e0e662904 100644 --- a/src/credits.c +++ b/src/credits.c @@ -180,8 +180,8 @@ extern u8 gBirchHelpGfx[]; extern void *gUnknown_0840B5A0[]; // data/credits -extern u16 gUnknown_0840B7BC[32]; -extern u16 gUnknown_0840B7FC[32]; +const u16 gUnknown_0840B7BC[] = INCBIN_U16("graphics/credits/palette_1.gbapal"); +const u8 gUnknown_0840B7FC[] = INCBIN_U8("graphics/credits/ampersand.4bpp"); extern u8 gUnknown_0840B83C[]; extern u8 gUnknown_0840B84B[]; extern u8 gUnknown_0840B85A[]; @@ -191,8 +191,8 @@ extern struct CreditsEntry *gCreditsEntryPointerTable[][5]; extern u8 gUnknown_0840CA00[][2]; extern struct SpriteSheet gUnknown_0840CAA0; extern struct SpritePalette gUnknown_0840CAB0; -extern union AnimCmd *gSpriteAnimTable_0840CA54[]; -extern union AnimCmd *gSpriteAnimTable_0840CA94[]; +extern const union AnimCmd *const gSpriteAnimTable_0840CA54[]; +extern const union AnimCmd *const gSpriteAnimTable_0840CA94[]; extern struct SpriteTemplate gSpriteTemplate_840CAEC; // data/intro_credits_graphics -- cgit v1.2.3 From ed8f49d5e1418309cbc4f705a242d073258c8639 Mon Sep 17 00:00:00 2001 From: YamaArashi Date: Sat, 28 Jan 2017 13:51:14 -0800 Subject: tabs to spaces --- src/credits.c | 1996 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 998 insertions(+), 998 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index e0e662904..7685a033d 100644 --- a/src/credits.c +++ b/src/credits.c @@ -870,326 +870,326 @@ __attribute__((naked)) void task_c_8144664(u8 taskIdC) { asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - ldr r1, _0814468C @ =gTasks\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r2, 0x8\n\ - ldrsh r0, [r0, r2]\n\ - adds r6, r1, 0\n\ - cmp r0, 0x32\n\ - bls _08144680\n\ - b _0814492C\n\ + push {r4-r7,lr}\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + ldr r1, _0814468C @ =gTasks\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r2, 0x8\n\ + ldrsh r0, [r0, r2]\n\ + adds r6, r1, 0\n\ + cmp r0, 0x32\n\ + bls _08144680\n\ + b _0814492C\n\ _08144680:\n\ - lsls r0, 2\n\ - ldr r1, _08144690 @ =_08144694\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ + lsls r0, 2\n\ + ldr r1, _08144690 @ =_08144694\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ _0814468C: .4byte gTasks\n\ _08144690: .4byte _08144694\n\ - .align 2, 0\n\ + .align 2, 0\n\ _08144694:\n\ - .4byte _08144760\n\ - .4byte _08144784\n\ - .4byte _081447D8\n\ - .4byte _081447F0\n\ - .4byte _0814482C\n\ - .4byte _08144850\n\ - .4byte _0814489C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _081448A8\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _081448C8\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _081448EC\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _08144920\n\ + .4byte _08144760\n\ + .4byte _08144784\n\ + .4byte _081447D8\n\ + .4byte _081447F0\n\ + .4byte _0814482C\n\ + .4byte _08144850\n\ + .4byte _0814489C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _081448A8\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _081448C8\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _081448EC\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _0814492C\n\ + .4byte _08144920\n\ _08144760:\n\ - lsls r4, r5, 2\n\ - adds r4, r5\n\ - lsls r4, 3\n\ - adds r4, r6\n\ - ldrh r0, [r4, 0x12]\n\ - lsls r0, 16\n\ - asrs r0, 17\n\ - movs r1, 0x7F\n\ - ands r0, r1\n\ - movs r1, 0xC\n\ - bl Sin\n\ - ldr r1, _08144780 @ =gUnknown_0203935A\n\ - strh r0, [r1]\n\ - b _081447A8\n\ - .align 2, 0\n\ + lsls r4, r5, 2\n\ + adds r4, r5\n\ + lsls r4, 3\n\ + adds r4, r6\n\ + ldrh r0, [r4, 0x12]\n\ + lsls r0, 16\n\ + asrs r0, 17\n\ + movs r1, 0x7F\n\ + ands r0, r1\n\ + movs r1, 0xC\n\ + bl Sin\n\ + ldr r1, _08144780 @ =gUnknown_0203935A\n\ + strh r0, [r1]\n\ + b _081447A8\n\ + .align 2, 0\n\ _08144780: .4byte gUnknown_0203935A\n\ _08144784:\n\ - ldr r7, _081447B0 @ =gUnknown_0203935A\n\ - movs r3, 0\n\ - ldrsh r4, [r7, r3]\n\ - cmp r4, 0\n\ - beq _081447B4\n\ - lsls r4, r5, 2\n\ - adds r4, r5\n\ - lsls r4, 3\n\ - adds r4, r6\n\ - ldrh r0, [r4, 0x12]\n\ - lsls r0, 16\n\ - asrs r0, 17\n\ - movs r1, 0x7F\n\ - ands r0, r1\n\ - movs r1, 0xC\n\ - bl Sin\n\ - strh r0, [r7]\n\ + ldr r7, _081447B0 @ =gUnknown_0203935A\n\ + movs r3, 0\n\ + ldrsh r4, [r7, r3]\n\ + cmp r4, 0\n\ + beq _081447B4\n\ + lsls r4, r5, 2\n\ + adds r4, r5\n\ + lsls r4, 3\n\ + adds r4, r6\n\ + ldrh r0, [r4, 0x12]\n\ + lsls r0, 16\n\ + asrs r0, 17\n\ + movs r1, 0x7F\n\ + ands r0, r1\n\ + movs r1, 0xC\n\ + bl Sin\n\ + strh r0, [r7]\n\ _081447A8:\n\ - ldrh r0, [r4, 0x12]\n\ - adds r0, 0x1\n\ - strh r0, [r4, 0x12]\n\ - b _0814492C\n\ - .align 2, 0\n\ + ldrh r0, [r4, 0x12]\n\ + adds r0, 0x1\n\ + strh r0, [r4, 0x12]\n\ + b _0814492C\n\ + .align 2, 0\n\ _081447B0: .4byte gUnknown_0203935A\n\ _081447B4:\n\ - ldr r3, _081447D4 @ =gSprites\n\ - lsls r1, r5, 2\n\ - adds r1, r5\n\ - lsls r1, 3\n\ - adds r1, r6\n\ - movs r0, 0xC\n\ - ldrsh r2, [r1, r0]\n\ - lsls r0, r2, 4\n\ - adds r0, r2\n\ - lsls r0, 2\n\ - adds r0, r3\n\ - movs r2, 0x2\n\ - strh r2, [r0, 0x2E]\n\ - strh r4, [r1, 0x12]\n\ - b _08144848\n\ - .align 2, 0\n\ + ldr r3, _081447D4 @ =gSprites\n\ + lsls r1, r5, 2\n\ + adds r1, r5\n\ + lsls r1, 3\n\ + adds r1, r6\n\ + movs r0, 0xC\n\ + ldrsh r2, [r1, r0]\n\ + lsls r0, r2, 4\n\ + adds r0, r2\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + movs r2, 0x2\n\ + strh r2, [r0, 0x2E]\n\ + strh r4, [r1, 0x12]\n\ + b _08144848\n\ + .align 2, 0\n\ _081447D4: .4byte gSprites\n\ _081447D8:\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r1, r0, r6\n\ - ldrh r2, [r1, 0x12]\n\ - movs r3, 0x12\n\ - ldrsh r0, [r1, r3]\n\ - cmp r0, 0x3F\n\ - bgt _08144848\n\ - adds r0, r2, 0x1\n\ - strh r0, [r1, 0x12]\n\ - b _08144866\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r1, r0, r6\n\ + ldrh r2, [r1, 0x12]\n\ + movs r3, 0x12\n\ + ldrsh r0, [r1, r3]\n\ + cmp r0, 0x3F\n\ + bgt _08144848\n\ + adds r0, r2, 0x1\n\ + strh r0, [r1, 0x12]\n\ + b _08144866\n\ _081447F0:\n\ - ldr r3, _08144828 @ =gSprites\n\ - lsls r2, r5, 2\n\ - adds r2, r5\n\ - lsls r2, 3\n\ - adds r2, r6\n\ - movs r0, 0xC\n\ - ldrsh r1, [r2, r0]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r3\n\ - movs r1, 0x3\n\ - strh r1, [r0, 0x2E]\n\ - movs r0, 0xE\n\ - ldrsh r1, [r2, r0]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r3\n\ - movs r1, 0x1\n\ - strh r1, [r0, 0x2E]\n\ - movs r0, 0x78\n\ - strh r0, [r2, 0x10]\n\ - ldrh r0, [r2, 0x8]\n\ - adds r0, 0x1\n\ - strh r0, [r2, 0x8]\n\ - b _0814492C\n\ - .align 2, 0\n\ + ldr r3, _08144828 @ =gSprites\n\ + lsls r2, r5, 2\n\ + adds r2, r5\n\ + lsls r2, 3\n\ + adds r2, r6\n\ + movs r0, 0xC\n\ + ldrsh r1, [r2, r0]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + movs r1, 0x3\n\ + strh r1, [r0, 0x2E]\n\ + movs r0, 0xE\n\ + ldrsh r1, [r2, r0]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + movs r1, 0x1\n\ + strh r1, [r0, 0x2E]\n\ + movs r0, 0x78\n\ + strh r0, [r2, 0x10]\n\ + ldrh r0, [r2, 0x8]\n\ + adds r0, 0x1\n\ + strh r0, [r2, 0x8]\n\ + b _0814492C\n\ + .align 2, 0\n\ _08144828: .4byte gSprites\n\ _0814482C:\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r1, r0, r6\n\ - ldrh r2, [r1, 0x10]\n\ - movs r3, 0x10\n\ - ldrsh r0, [r1, r3]\n\ - cmp r0, 0\n\ - beq _08144844\n\ - subs r0, r2, 0x1\n\ - strh r0, [r1, 0x10]\n\ - b _0814492C\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r1, r0, r6\n\ + ldrh r2, [r1, 0x10]\n\ + movs r3, 0x10\n\ + ldrsh r0, [r1, r3]\n\ + cmp r0, 0\n\ + beq _08144844\n\ + subs r0, r2, 0x1\n\ + strh r0, [r1, 0x10]\n\ + b _0814492C\n\ _08144844:\n\ - movs r0, 0x40\n\ - strh r0, [r1, 0x12]\n\ + movs r0, 0x40\n\ + strh r0, [r1, 0x12]\n\ _08144848:\n\ - ldrh r0, [r1, 0x8]\n\ - adds r0, 0x1\n\ - strh r0, [r1, 0x8]\n\ - b _0814492C\n\ + ldrh r0, [r1, 0x8]\n\ + adds r0, 0x1\n\ + strh r0, [r1, 0x8]\n\ + b _0814492C\n\ _08144850:\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r4, r0, r6\n\ - ldrh r1, [r4, 0x12]\n\ - movs r2, 0x12\n\ - ldrsh r0, [r4, r2]\n\ - cmp r0, 0\n\ - ble _0814487C\n\ - subs r0, r1, 0x1\n\ - strh r0, [r4, 0x12]\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r4, r0, r6\n\ + ldrh r1, [r4, 0x12]\n\ + movs r2, 0x12\n\ + ldrsh r0, [r4, r2]\n\ + cmp r0, 0\n\ + ble _0814487C\n\ + subs r0, r1, 0x1\n\ + strh r0, [r4, 0x12]\n\ _08144866:\n\ - movs r1, 0x7F\n\ - ands r0, r1\n\ - movs r1, 0x14\n\ - bl Sin\n\ - ldr r1, _08144878 @ =gUnknown_0203935A\n\ - strh r0, [r1]\n\ - b _0814492C\n\ - .align 2, 0\n\ + movs r1, 0x7F\n\ + ands r0, r1\n\ + movs r1, 0x14\n\ + bl Sin\n\ + ldr r1, _08144878 @ =gUnknown_0203935A\n\ + strh r0, [r1]\n\ + b _0814492C\n\ + .align 2, 0\n\ _08144878: .4byte gUnknown_0203935A\n\ _0814487C:\n\ - ldr r2, _08144898 @ =gSprites\n\ - movs r3, 0xC\n\ - ldrsh r1, [r4, r3]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r2\n\ - movs r1, 0x1\n\ - strh r1, [r0, 0x2E]\n\ - ldrh r0, [r4, 0x8]\n\ - adds r0, 0x1\n\ - strh r0, [r4, 0x8]\n\ - b _0814492C\n\ - .align 2, 0\n\ + ldr r2, _08144898 @ =gSprites\n\ + movs r3, 0xC\n\ + ldrsh r1, [r4, r3]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + movs r1, 0x1\n\ + strh r1, [r0, 0x2E]\n\ + ldrh r0, [r4, 0x8]\n\ + adds r0, 0x1\n\ + strh r0, [r4, 0x8]\n\ + b _0814492C\n\ + .align 2, 0\n\ _08144898: .4byte gSprites\n\ _0814489C:\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r0, r6\n\ - movs r1, 0x32\n\ - b _0814492A\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r0, r6\n\ + movs r1, 0x32\n\ + b _0814492A\n\ _081448A8:\n\ - ldr r3, _081448C4 @ =gSprites\n\ - lsls r1, r5, 2\n\ - adds r1, r5\n\ - lsls r1, 3\n\ - adds r1, r6\n\ - movs r0, 0xE\n\ - ldrsh r2, [r1, r0]\n\ - lsls r0, r2, 4\n\ - adds r0, r2\n\ - lsls r0, 2\n\ - adds r0, r3\n\ - movs r2, 0x2\n\ - b _081448E0\n\ - .align 2, 0\n\ + ldr r3, _081448C4 @ =gSprites\n\ + lsls r1, r5, 2\n\ + adds r1, r5\n\ + lsls r1, 3\n\ + adds r1, r6\n\ + movs r0, 0xE\n\ + ldrsh r2, [r1, r0]\n\ + lsls r0, r2, 4\n\ + adds r0, r2\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + movs r2, 0x2\n\ + b _081448E0\n\ + .align 2, 0\n\ _081448C4: .4byte gSprites\n\ _081448C8:\n\ - ldr r3, _081448E8 @ =gSprites\n\ - lsls r1, r5, 2\n\ - adds r1, r5\n\ - lsls r1, 3\n\ - adds r1, r6\n\ - movs r0, 0xC\n\ - ldrsh r2, [r1, r0]\n\ - lsls r0, r2, 4\n\ - adds r0, r2\n\ - lsls r0, 2\n\ - adds r0, r3\n\ - movs r2, 0x4\n\ + ldr r3, _081448E8 @ =gSprites\n\ + lsls r1, r5, 2\n\ + adds r1, r5\n\ + lsls r1, 3\n\ + adds r1, r6\n\ + movs r0, 0xC\n\ + ldrsh r2, [r1, r0]\n\ + lsls r0, r2, 4\n\ + adds r0, r2\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + movs r2, 0x4\n\ _081448E0:\n\ - strh r2, [r0, 0x2E]\n\ - movs r0, 0x32\n\ - strh r0, [r1, 0x8]\n\ - b _0814492C\n\ - .align 2, 0\n\ + strh r2, [r0, 0x2E]\n\ + movs r0, 0x32\n\ + strh r0, [r1, 0x8]\n\ + b _0814492C\n\ + .align 2, 0\n\ _081448E8: .4byte gSprites\n\ _081448EC:\n\ - ldr r3, _0814491C @ =gSprites\n\ - lsls r2, r5, 2\n\ - adds r2, r5\n\ - lsls r2, 3\n\ - adds r2, r6\n\ - movs r0, 0xC\n\ - ldrsh r1, [r2, r0]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r3\n\ - movs r1, 0x5\n\ - strh r1, [r0, 0x2E]\n\ - movs r0, 0xE\n\ - ldrsh r1, [r2, r0]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r3\n\ - movs r1, 0x3\n\ - strh r1, [r0, 0x2E]\n\ - movs r0, 0x32\n\ - strh r0, [r2, 0x8]\n\ - b _0814492C\n\ - .align 2, 0\n\ + ldr r3, _0814491C @ =gSprites\n\ + lsls r2, r5, 2\n\ + adds r2, r5\n\ + lsls r2, 3\n\ + adds r2, r6\n\ + movs r0, 0xC\n\ + ldrsh r1, [r2, r0]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + movs r1, 0x5\n\ + strh r1, [r0, 0x2E]\n\ + movs r0, 0xE\n\ + ldrsh r1, [r2, r0]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + movs r1, 0x3\n\ + strh r1, [r0, 0x2E]\n\ + movs r0, 0x32\n\ + strh r0, [r2, 0x8]\n\ + b _0814492C\n\ + .align 2, 0\n\ _0814491C: .4byte gSprites\n\ _08144920:\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r0, r6\n\ - movs r1, 0\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r0, r6\n\ + movs r1, 0\n\ _0814492A:\n\ - strh r1, [r0, 0x8]\n\ + strh r1, [r0, 0x8]\n\ _0814492C:\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ .syntax divided\n"); } @@ -1455,107 +1455,107 @@ __attribute__((naked)) void sub_8145128(u16 arg0, u16 arg1, u16 arg2) { asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - adds r3, r0, 0\n\ - adds r4, r2, 0\n\ - lsls r3, 16\n\ - lsrs r3, 16\n\ - lsls r1, 16\n\ - lsrs r7, r1, 16\n\ - lsls r4, 16\n\ - lsrs r5, r4, 16\n\ - ldr r0, _081451EC @ =gCreditsCopyrightEnd_Gfx\n\ - movs r6, 0xC0\n\ - lsls r6, 19\n\ - adds r3, r6\n\ - adds r1, r3, 0\n\ - bl LZ77UnCompVram\n\ - ldr r0, _081451F0 @ =gIntroCopyright_Pal\n\ - adds r1, r5, 0\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - lsrs r4, 20\n\ - lsls r4, 28\n\ - lsrs r4, 16\n\ - movs r2, 0\n\ - adds r1, r4, 0x1\n\ - ldr r3, _081451F4 @ =0x000003ff\n\ + push {r4-r7,lr}\n\ + adds r3, r0, 0\n\ + adds r4, r2, 0\n\ + lsls r3, 16\n\ + lsrs r3, 16\n\ + lsls r1, 16\n\ + lsrs r7, r1, 16\n\ + lsls r4, 16\n\ + lsrs r5, r4, 16\n\ + ldr r0, _081451EC @ =gCreditsCopyrightEnd_Gfx\n\ + movs r6, 0xC0\n\ + lsls r6, 19\n\ + adds r3, r6\n\ + adds r1, r3, 0\n\ + bl LZ77UnCompVram\n\ + ldr r0, _081451F0 @ =gIntroCopyright_Pal\n\ + adds r1, r5, 0\n\ + movs r2, 0x20\n\ + bl LoadPalette\n\ + lsrs r4, 20\n\ + lsls r4, 28\n\ + lsrs r4, 16\n\ + movs r2, 0\n\ + adds r1, r4, 0x1\n\ + ldr r3, _081451F4 @ =0x000003ff\n\ _0814515E:\n\ - lsls r0, r2, 1\n\ - adds r0, r7\n\ - adds r0, r6\n\ - strh r1, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, r3\n\ - bls _0814515E\n\ - movs r2, 0\n\ - adds r0, r4, 0x2\n\ - adds r6, r4, 0\n\ - adds r6, 0x17\n\ - movs r1, 0x2B\n\ - adds r1, r4\n\ - mov r12, r1\n\ - adds r4, 0x42\n\ - ldr r5, _081451F8 @ =0x060001c8\n\ - adds r3, r0, 0\n\ + lsls r0, r2, 1\n\ + adds r0, r7\n\ + adds r0, r6\n\ + strh r1, [r0]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + cmp r2, r3\n\ + bls _0814515E\n\ + movs r2, 0\n\ + adds r0, r4, 0x2\n\ + adds r6, r4, 0\n\ + adds r6, 0x17\n\ + movs r1, 0x2B\n\ + adds r1, r4\n\ + mov r12, r1\n\ + adds r4, 0x42\n\ + ldr r5, _081451F8 @ =0x060001c8\n\ + adds r3, r0, 0\n\ _08145184:\n\ - lsls r0, r2, 1\n\ - adds r0, r7\n\ - adds r0, r5\n\ - adds r1, r2, r3\n\ - strh r1, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0x14\n\ - bls _08145184\n\ - movs r2, 0\n\ - ldr r5, _081451FC @ =0x06000248\n\ - adds r3, r6, 0\n\ + lsls r0, r2, 1\n\ + adds r0, r7\n\ + adds r0, r5\n\ + adds r1, r2, r3\n\ + strh r1, [r0]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + cmp r2, 0x14\n\ + bls _08145184\n\ + movs r2, 0\n\ + ldr r5, _081451FC @ =0x06000248\n\ + adds r3, r6, 0\n\ _0814519E:\n\ - lsls r0, r2, 1\n\ - adds r0, r7\n\ - adds r0, r5\n\ - adds r1, r2, r3\n\ - strh r1, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0x13\n\ - bls _0814519E\n\ - movs r2, 0\n\ - ldr r5, _08145200 @ =0x060002c8\n\ - mov r3, r12\n\ + lsls r0, r2, 1\n\ + adds r0, r7\n\ + adds r0, r5\n\ + adds r1, r2, r3\n\ + strh r1, [r0]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + cmp r2, 0x13\n\ + bls _0814519E\n\ + movs r2, 0\n\ + ldr r5, _08145200 @ =0x060002c8\n\ + mov r3, r12\n\ _081451B8:\n\ - lsls r0, r2, 1\n\ - adds r0, r7\n\ - adds r0, r5\n\ - adds r1, r2, r3\n\ - strh r1, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0x16\n\ - bls _081451B8\n\ - movs r2, 0\n\ - ldr r3, _08145204 @ =0x06000348\n\ + lsls r0, r2, 1\n\ + adds r0, r7\n\ + adds r0, r5\n\ + adds r1, r2, r3\n\ + strh r1, [r0]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + cmp r2, 0x16\n\ + bls _081451B8\n\ + movs r2, 0\n\ + ldr r3, _08145204 @ =0x06000348\n\ _081451D0:\n\ - lsls r0, r2, 1\n\ - adds r0, r7\n\ - adds r0, r3\n\ - adds r1, r2, r4\n\ - strh r1, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0xB\n\ - bls _081451D0\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ + lsls r0, r2, 1\n\ + adds r0, r7\n\ + adds r0, r3\n\ + adds r1, r2, r4\n\ + strh r1, [r0]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + cmp r2, 0xB\n\ + bls _081451D0\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ _081451EC: .4byte gCreditsCopyrightEnd_Gfx\n\ _081451F0: .4byte gIntroCopyright_Pal\n\ _081451F4: .4byte 0x000003ff\n\ @@ -1593,73 +1593,73 @@ __attribute__((naked)) void sub_814524C(void *arg0, u8 arg1, u8 arg2, u16 arg3, int arg4) { asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0xC\n\ - str r0, [sp]\n\ - ldr r0, [sp, 0x2C]\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - mov r10, r1\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - str r2, [sp, 0x4]\n\ - lsls r3, 16\n\ - lsrs r3, 16\n\ - str r3, [sp, 0x8]\n\ - lsls r0, 16\n\ - lsrs r0, 20\n\ - lsls r0, 28\n\ - lsrs r0, 16\n\ - mov r9, r0\n\ - movs r5, 0\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0xC\n\ + str r0, [sp]\n\ + ldr r0, [sp, 0x2C]\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + mov r10, r1\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + str r2, [sp, 0x4]\n\ + lsls r3, 16\n\ + lsrs r3, 16\n\ + str r3, [sp, 0x8]\n\ + lsls r0, 16\n\ + lsrs r0, 20\n\ + lsls r0, 28\n\ + lsrs r0, 16\n\ + mov r9, r0\n\ + movs r5, 0\n\ _0814527A:\n\ - movs r4, 0\n\ - lsls r7, r5, 1\n\ - ldr r1, [sp, 0x4]\n\ - adds r0, r1, r5\n\ - adds r2, r5, 0x1\n\ - mov r8, r2\n\ - lsls r0, 6\n\ - ldr r1, [sp, 0x8]\n\ - adds r6, r0, r1\n\ + movs r4, 0\n\ + lsls r7, r5, 1\n\ + ldr r1, [sp, 0x4]\n\ + adds r0, r1, r5\n\ + adds r2, r5, 0x1\n\ + mov r8, r2\n\ + lsls r0, 6\n\ + ldr r1, [sp, 0x8]\n\ + adds r6, r0, r1\n\ _0814528C:\n\ - adds r0, r7, r5\n\ - adds r0, r4\n\ - ldr r2, [sp]\n\ - adds r0, r2, r0\n\ - ldrb r0, [r0]\n\ - bl sub_8145208\n\ - mov r2, r10\n\ - adds r1, r2, r4\n\ - lsls r1, 1\n\ - adds r1, r6\n\ - movs r2, 0xC0\n\ - lsls r2, 19\n\ - adds r1, r2\n\ - add r0, r9\n\ - strh r0, [r1]\n\ - adds r0, r4, 0x1\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - cmp r4, 0x2\n\ - bls _0814528C\n\ - mov r1, r8\n\ - lsls r0, r1, 24\n\ - lsrs r5, r0, 24\n\ - cmp r5, 0x4\n\ - bls _0814527A\n\ - add sp, 0xC\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ + adds r0, r7, r5\n\ + adds r0, r4\n\ + ldr r2, [sp]\n\ + adds r0, r2, r0\n\ + ldrb r0, [r0]\n\ + bl sub_8145208\n\ + mov r2, r10\n\ + adds r1, r2, r4\n\ + lsls r1, 1\n\ + adds r1, r6\n\ + movs r2, 0xC0\n\ + lsls r2, 19\n\ + adds r1, r2\n\ + add r0, r9\n\ + strh r0, [r1]\n\ + adds r0, r4, 0x1\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, 0x2\n\ + bls _0814528C\n\ + mov r1, r8\n\ + lsls r0, r1, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0x4\n\ + bls _0814527A\n\ + add sp, 0xC\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ .syntax divided\n"); } @@ -1788,238 +1788,238 @@ __attribute__((naked)) void spritecb_81454E0(struct Sprite *sprite) { asm(".syntax unified\n\ - push {r4,r5,lr}\n\ - sub sp, 0x4\n\ - adds r5, r0, 0\n\ - ldr r0, _081454F8 @ =gUnknown_0203935C\n\ - movs r1, 0\n\ - ldrsh r0, [r0, r1]\n\ - cmp r0, 0\n\ - beq _081454FC\n\ - adds r0, r5, 0\n\ - bl DestroySprite\n\ - b _081456A6\n\ - .align 2, 0\n\ + push {r4,r5,lr}\n\ + sub sp, 0x4\n\ + adds r5, r0, 0\n\ + ldr r0, _081454F8 @ =gUnknown_0203935C\n\ + movs r1, 0\n\ + ldrsh r0, [r0, r1]\n\ + cmp r0, 0\n\ + beq _081454FC\n\ + adds r0, r5, 0\n\ + bl DestroySprite\n\ + b _081456A6\n\ + .align 2, 0\n\ _081454F8: .4byte gUnknown_0203935C\n\ _081454FC:\n\ - ldrh r0, [r5, 0x3C]\n\ - adds r0, 0x1\n\ - strh r0, [r5, 0x3C]\n\ - movs r2, 0x2E\n\ - ldrsh r0, [r5, r2]\n\ - cmp r0, 0xA\n\ - bhi _08145544\n\ - lsls r0, 2\n\ - ldr r1, _08145514 @ =_08145518\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ + ldrh r0, [r5, 0x3C]\n\ + adds r0, 0x1\n\ + strh r0, [r5, 0x3C]\n\ + movs r2, 0x2E\n\ + ldrsh r0, [r5, r2]\n\ + cmp r0, 0xA\n\ + bhi _08145544\n\ + lsls r0, 2\n\ + ldr r1, _08145514 @ =_08145518\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ _08145514: .4byte _08145518\n\ - .align 2, 0\n\ + .align 2, 0\n\ _08145518:\n\ - .4byte _08145544\n\ - .4byte _0814559E\n\ - .4byte _08145620\n\ - .4byte _08145660\n\ - .4byte _08145544\n\ - .4byte _08145544\n\ - .4byte _08145544\n\ - .4byte _08145544\n\ - .4byte _08145544\n\ - .4byte _08145544\n\ - .4byte _08145696\n\ + .4byte _08145544\n\ + .4byte _0814559E\n\ + .4byte _08145620\n\ + .4byte _08145660\n\ + .4byte _08145544\n\ + .4byte _08145544\n\ + .4byte _08145544\n\ + .4byte _08145544\n\ + .4byte _08145544\n\ + .4byte _08145544\n\ + .4byte _08145696\n\ _08145544:\n\ - ldrb r1, [r5, 0x1]\n\ - movs r0, 0x4\n\ - negs r0, r0\n\ - ands r0, r1\n\ - movs r1, 0x1\n\ - orrs r0, r1\n\ - strb r0, [r5, 0x1]\n\ - movs r0, 0x30\n\ - ldrsh r1, [r5, r0]\n\ - movs r0, 0x1F\n\ - ands r1, r0\n\ - lsls r1, 1\n\ - ldrb r2, [r5, 0x3]\n\ - movs r0, 0x3F\n\ - negs r0, r0\n\ - ands r0, r2\n\ - orrs r0, r1\n\ - strb r0, [r5, 0x3]\n\ - movs r0, 0x10\n\ - strh r0, [r5, 0x32]\n\ - ldrh r4, [r5, 0x30]\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - movs r0, 0x80\n\ - lsls r0, 9\n\ - movs r1, 0x10\n\ - bl __divsi3\n\ - adds r1, r0, 0\n\ - str r1, [sp]\n\ - adds r0, r4, 0\n\ - movs r2, 0\n\ - movs r3, 0\n\ - bl SetOamMatrix\n\ - adds r2, r5, 0\n\ - adds r2, 0x3E\n\ - ldrb r1, [r2]\n\ - movs r0, 0x5\n\ - negs r0, r0\n\ - ands r0, r1\n\ - strb r0, [r2]\n\ - movs r0, 0x1\n\ - strh r0, [r5, 0x2E]\n\ - b _081456A6\n\ + ldrb r1, [r5, 0x1]\n\ + movs r0, 0x4\n\ + negs r0, r0\n\ + ands r0, r1\n\ + movs r1, 0x1\n\ + orrs r0, r1\n\ + strb r0, [r5, 0x1]\n\ + movs r0, 0x30\n\ + ldrsh r1, [r5, r0]\n\ + movs r0, 0x1F\n\ + ands r1, r0\n\ + lsls r1, 1\n\ + ldrb r2, [r5, 0x3]\n\ + movs r0, 0x3F\n\ + negs r0, r0\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strb r0, [r5, 0x3]\n\ + movs r0, 0x10\n\ + strh r0, [r5, 0x32]\n\ + ldrh r4, [r5, 0x30]\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + movs r0, 0x80\n\ + lsls r0, 9\n\ + movs r1, 0x10\n\ + bl __divsi3\n\ + adds r1, r0, 0\n\ + str r1, [sp]\n\ + adds r0, r4, 0\n\ + movs r2, 0\n\ + movs r3, 0\n\ + bl SetOamMatrix\n\ + adds r2, r5, 0\n\ + adds r2, 0x3E\n\ + ldrb r1, [r2]\n\ + movs r0, 0x5\n\ + negs r0, r0\n\ + ands r0, r1\n\ + strb r0, [r2]\n\ + movs r0, 0x1\n\ + strh r0, [r5, 0x2E]\n\ + b _081456A6\n\ _0814559E:\n\ - ldrh r1, [r5, 0x32]\n\ - movs r2, 0x32\n\ - ldrsh r0, [r5, r2]\n\ - cmp r0, 0xFF\n\ - bgt _081455D4\n\ - adds r0, r1, 0\n\ - adds r0, 0x8\n\ - strh r0, [r5, 0x32]\n\ - ldrh r4, [r5, 0x30]\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - movs r0, 0x32\n\ - ldrsh r1, [r5, r0]\n\ - movs r0, 0x80\n\ - lsls r0, 9\n\ - bl __divsi3\n\ - adds r1, r0, 0\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - str r1, [sp]\n\ - adds r0, r4, 0\n\ - movs r2, 0\n\ - movs r3, 0\n\ - bl SetOamMatrix\n\ - b _081455DA\n\ + ldrh r1, [r5, 0x32]\n\ + movs r2, 0x32\n\ + ldrsh r0, [r5, r2]\n\ + cmp r0, 0xFF\n\ + bgt _081455D4\n\ + adds r0, r1, 0\n\ + adds r0, 0x8\n\ + strh r0, [r5, 0x32]\n\ + ldrh r4, [r5, 0x30]\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + movs r0, 0x32\n\ + ldrsh r1, [r5, r0]\n\ + movs r0, 0x80\n\ + lsls r0, 9\n\ + bl __divsi3\n\ + adds r1, r0, 0\n\ + lsls r1, 16\n\ + lsrs r1, 16\n\ + str r1, [sp]\n\ + adds r0, r4, 0\n\ + movs r2, 0\n\ + movs r3, 0\n\ + bl SetOamMatrix\n\ + b _081455DA\n\ _081455D4:\n\ - ldrh r0, [r5, 0x2E]\n\ - adds r0, 0x1\n\ - strh r0, [r5, 0x2E]\n\ + ldrh r0, [r5, 0x2E]\n\ + adds r0, 0x1\n\ + strh r0, [r5, 0x2E]\n\ _081455DA:\n\ - movs r2, 0x30\n\ - ldrsh r1, [r5, r2]\n\ - cmp r1, 0x2\n\ - beq _081456A6\n\ - cmp r1, 0x2\n\ - bgt _081455EC\n\ - cmp r1, 0x1\n\ - beq _081455F2\n\ - b _081456A6\n\ + movs r2, 0x30\n\ + ldrsh r1, [r5, r2]\n\ + cmp r1, 0x2\n\ + beq _081456A6\n\ + cmp r1, 0x2\n\ + bgt _081455EC\n\ + cmp r1, 0x1\n\ + beq _081455F2\n\ + b _081456A6\n\ _081455EC:\n\ - cmp r1, 0x3\n\ - beq _0814560A\n\ - b _081456A6\n\ + cmp r1, 0x3\n\ + beq _0814560A\n\ + b _081456A6\n\ _081455F2:\n\ - ldrh r1, [r5, 0x3C]\n\ - movs r0, 0x3\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08145602\n\ - ldrh r0, [r5, 0x22]\n\ - adds r0, 0x1\n\ - strh r0, [r5, 0x22]\n\ + ldrh r1, [r5, 0x3C]\n\ + movs r0, 0x3\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08145602\n\ + ldrh r0, [r5, 0x22]\n\ + adds r0, 0x1\n\ + strh r0, [r5, 0x22]\n\ _08145602:\n\ - ldrh r0, [r5, 0x20]\n\ - subs r0, 0x2\n\ - strh r0, [r5, 0x20]\n\ - b _081456A6\n\ + ldrh r0, [r5, 0x20]\n\ + subs r0, 0x2\n\ + strh r0, [r5, 0x20]\n\ + b _081456A6\n\ _0814560A:\n\ - ldrh r0, [r5, 0x3C]\n\ - ands r1, r0\n\ - cmp r1, 0\n\ - bne _08145618\n\ - ldrh r0, [r5, 0x22]\n\ - adds r0, 0x1\n\ - strh r0, [r5, 0x22]\n\ + ldrh r0, [r5, 0x3C]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _08145618\n\ + ldrh r0, [r5, 0x22]\n\ + adds r0, 0x1\n\ + strh r0, [r5, 0x22]\n\ _08145618:\n\ - ldrh r0, [r5, 0x20]\n\ - adds r0, 0x2\n\ - strh r0, [r5, 0x20]\n\ - b _081456A6\n\ + ldrh r0, [r5, 0x20]\n\ + adds r0, 0x2\n\ + strh r0, [r5, 0x20]\n\ + b _081456A6\n\ _08145620:\n\ - ldrh r1, [r5, 0x34]\n\ - movs r2, 0x34\n\ - ldrsh r0, [r5, r2]\n\ - cmp r0, 0\n\ - beq _08145630\n\ - subs r0, r1, 0x1\n\ - strh r0, [r5, 0x34]\n\ - b _081456A6\n\ + ldrh r1, [r5, 0x34]\n\ + movs r2, 0x34\n\ + ldrsh r0, [r5, r2]\n\ + cmp r0, 0\n\ + beq _08145630\n\ + subs r0, r1, 0x1\n\ + strh r0, [r5, 0x34]\n\ + b _081456A6\n\ _08145630:\n\ - ldr r1, _0814565C @ =REG_BLDCNT\n\ - movs r2, 0xF4\n\ - lsls r2, 4\n\ - adds r0, r2, 0\n\ - strh r0, [r1]\n\ - adds r1, 0x2\n\ - movs r0, 0x10\n\ - strh r0, [r1]\n\ - ldrb r1, [r5, 0x1]\n\ - movs r0, 0xD\n\ - negs r0, r0\n\ - ands r0, r1\n\ - movs r1, 0x4\n\ - orrs r0, r1\n\ - strb r0, [r5, 0x1]\n\ - movs r0, 0x10\n\ - strh r0, [r5, 0x34]\n\ - ldrh r0, [r5, 0x2E]\n\ - adds r0, 0x1\n\ - strh r0, [r5, 0x2E]\n\ - b _081456A6\n\ - .align 2, 0\n\ + ldr r1, _0814565C @ =REG_BLDCNT\n\ + movs r2, 0xF4\n\ + lsls r2, 4\n\ + adds r0, r2, 0\n\ + strh r0, [r1]\n\ + adds r1, 0x2\n\ + movs r0, 0x10\n\ + strh r0, [r1]\n\ + ldrb r1, [r5, 0x1]\n\ + movs r0, 0xD\n\ + negs r0, r0\n\ + ands r0, r1\n\ + movs r1, 0x4\n\ + orrs r0, r1\n\ + strb r0, [r5, 0x1]\n\ + movs r0, 0x10\n\ + strh r0, [r5, 0x34]\n\ + ldrh r0, [r5, 0x2E]\n\ + adds r0, 0x1\n\ + strh r0, [r5, 0x2E]\n\ + b _081456A6\n\ + .align 2, 0\n\ _0814565C: .4byte REG_BLDCNT\n\ _08145660:\n\ - ldrh r1, [r5, 0x34]\n\ - movs r2, 0x34\n\ - ldrsh r0, [r5, r2]\n\ - cmp r0, 0\n\ - beq _08145684\n\ - subs r1, 0x1\n\ - strh r1, [r5, 0x34]\n\ - ldr r3, _08145680 @ =REG_BLDALPHA\n\ - movs r0, 0x34\n\ - ldrsh r2, [r5, r0]\n\ - movs r0, 0x10\n\ - subs r0, r2\n\ - lsls r0, 8\n\ - adds r1, r0\n\ - strh r1, [r3]\n\ - b _081456A6\n\ - .align 2, 0\n\ + ldrh r1, [r5, 0x34]\n\ + movs r2, 0x34\n\ + ldrsh r0, [r5, r2]\n\ + cmp r0, 0\n\ + beq _08145684\n\ + subs r1, 0x1\n\ + strh r1, [r5, 0x34]\n\ + ldr r3, _08145680 @ =REG_BLDALPHA\n\ + movs r0, 0x34\n\ + ldrsh r2, [r5, r0]\n\ + movs r0, 0x10\n\ + subs r0, r2\n\ + lsls r0, 8\n\ + adds r1, r0\n\ + strh r1, [r3]\n\ + b _081456A6\n\ + .align 2, 0\n\ _08145680: .4byte REG_BLDALPHA\n\ _08145684:\n\ - adds r2, r5, 0\n\ - adds r2, 0x3E\n\ - ldrb r0, [r2]\n\ - movs r1, 0x4\n\ - orrs r0, r1\n\ - strb r0, [r2]\n\ - movs r0, 0xA\n\ - strh r0, [r5, 0x2E]\n\ - b _081456A6\n\ + adds r2, r5, 0\n\ + adds r2, 0x3E\n\ + ldrb r0, [r2]\n\ + movs r1, 0x4\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + movs r0, 0xA\n\ + strh r0, [r5, 0x2E]\n\ + b _081456A6\n\ _08145696:\n\ - ldr r0, _081456B0 @ =REG_BLDCNT\n\ - movs r1, 0\n\ - strh r1, [r0]\n\ - adds r0, 0x2\n\ - strh r1, [r0]\n\ - adds r0, r5, 0\n\ - bl DestroySprite\n\ + ldr r0, _081456B0 @ =REG_BLDCNT\n\ + movs r1, 0\n\ + strh r1, [r0]\n\ + adds r0, 0x2\n\ + strh r1, [r0]\n\ + adds r0, r5, 0\n\ + bl DestroySprite\n\ _081456A6:\n\ - add sp, 0x4\n\ - pop {r4,r5}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ + add sp, 0x4\n\ + pop {r4,r5}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ _081456B0: .4byte REG_BLDCNT\n\ .syntax divided\n"); } @@ -2083,155 +2083,155 @@ __attribute__((naked)) u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3) { asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x14\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - mov r10, r1\n\ - lsls r2, 16\n\ - lsrs r2, 16\n\ - str r2, [sp, 0x10]\n\ - lsls r3, 16\n\ - lsrs r3, 16\n\ - mov r9, r3\n\ - adds r0, r6, 0\n\ - bl NationalPokedexNumToSpecies\n\ - adds r6, r0, 0\n\ - cmp r6, 0xC9\n\ - beq _081456F8\n\ - movs r0, 0x9A\n\ - lsls r0, 1\n\ - cmp r6, r0\n\ - beq _081456EE\n\ - movs r7, 0\n\ - b _081456FC\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x14\n\ + lsls r0, 16\n\ + lsrs r6, r0, 16\n\ + lsls r1, 16\n\ + lsrs r1, 16\n\ + mov r10, r1\n\ + lsls r2, 16\n\ + lsrs r2, 16\n\ + str r2, [sp, 0x10]\n\ + lsls r3, 16\n\ + lsrs r3, 16\n\ + mov r9, r3\n\ + adds r0, r6, 0\n\ + bl NationalPokedexNumToSpecies\n\ + adds r6, r0, 0\n\ + cmp r6, 0xC9\n\ + beq _081456F8\n\ + movs r0, 0x9A\n\ + lsls r0, 1\n\ + cmp r6, r0\n\ + beq _081456EE\n\ + movs r7, 0\n\ + b _081456FC\n\ _081456EE:\n\ - ldr r0, _081456F4 @ =gSaveBlock2\n\ - ldr r7, [r0, 0x20]\n\ - b _081456FC\n\ - .align 2, 0\n\ + ldr r0, _081456F4 @ =gSaveBlock2\n\ + ldr r7, [r0, 0x20]\n\ + b _081456FC\n\ + .align 2, 0\n\ _081456F4: .4byte gSaveBlock2\n\ _081456F8:\n\ - ldr r0, _081457E8 @ =gSaveBlock2\n\ - ldr r7, [r0, 0x1C]\n\ + ldr r0, _081457E8 @ =gSaveBlock2\n\ + ldr r7, [r0, 0x1C]\n\ _081456FC:\n\ - lsls r0, r6, 3\n\ - ldr r1, _081457EC @ =gMonFrontPicTable\n\ - adds r0, r1\n\ - ldr r1, _081457F0 @ =gMonFrontPicCoords\n\ - lsls r2, r6, 2\n\ - adds r2, r1\n\ - ldrb r1, [r2]\n\ - ldrb r2, [r2, 0x1]\n\ - movs r3, 0x80\n\ - lsls r3, 18\n\ - ldr r4, _081457F4 @ =gUnknown_0840B5A0\n\ - mov r8, r4\n\ - mov r5, r9\n\ - lsls r4, r5, 2\n\ - add r4, r8\n\ - ldr r4, [r4]\n\ - str r4, [sp]\n\ - str r6, [sp, 0x4]\n\ - str r7, [sp, 0x8]\n\ - movs r4, 0x1\n\ - str r4, [sp, 0xC]\n\ - bl LoadSpecialPokePic\n\ - ldr r2, _081457F8 @ =0x0000ffff\n\ - adds r0, r6, 0\n\ - movs r1, 0\n\ - bl species_and_otid_get_pal\n\ - lsls r5, 4\n\ - mov r8, r5\n\ - movs r1, 0x80\n\ - lsls r1, 1\n\ - add r1, r8\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - movs r2, 0x20\n\ - bl LoadCompressedPalette\n\ - mov r7, r9\n\ - lsls r6, r7, 24\n\ - lsrs r6, 24\n\ - mov r0, r9\n\ - adds r1, r6, 0\n\ - bl sub_8143648\n\ - ldr r0, _081457FC @ =gUnknown_02024E8C\n\ - mov r2, r10\n\ - lsls r1, r2, 16\n\ - asrs r1, 16\n\ - ldr r3, [sp, 0x10]\n\ - lsls r2, r3, 16\n\ - asrs r2, 16\n\ - movs r3, 0\n\ - bl CreateSprite\n\ - adds r4, r0, 0\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - ldr r5, _08145800 @ =gSprites\n\ - lsls r2, r4, 4\n\ - adds r2, r4\n\ - lsls r2, 2\n\ - adds r3, r2, r5\n\ - ldrb r1, [r3, 0x5]\n\ - movs r0, 0xF\n\ - ands r0, r1\n\ - mov r7, r8\n\ - orrs r0, r7\n\ - movs r1, 0xD\n\ - negs r1, r1\n\ - ands r0, r1\n\ - movs r1, 0x4\n\ - orrs r0, r1\n\ - strb r0, [r3, 0x5]\n\ - mov r0, r9\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0x30]\n\ - movs r0, 0x3E\n\ - adds r0, r3\n\ - mov r8, r0\n\ - ldrb r0, [r0]\n\ - orrs r0, r1\n\ - mov r1, r8\n\ - strb r0, [r1]\n\ - adds r0, r5, 0\n\ - adds r0, 0x1C\n\ - adds r2, r0\n\ - ldr r0, _08145804 @ =spritecb_81454E0\n\ - str r0, [r2]\n\ - ldr r0, _08145808 @ =gSpriteTemplate_840CAEC\n\ - movs r2, 0x20\n\ - ldrsh r1, [r3, r2]\n\ - movs r7, 0x22\n\ - ldrsh r2, [r3, r7]\n\ - movs r3, 0x1\n\ - bl CreateSprite\n\ - adds r1, r0, 0\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r5\n\ - strh r4, [r0, 0x2E]\n\ - adds r1, r6, 0\n\ - bl StartSpriteAnimIfDifferent\n\ - adds r0, r4, 0\n\ - add sp, 0x14\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ + lsls r0, r6, 3\n\ + ldr r1, _081457EC @ =gMonFrontPicTable\n\ + adds r0, r1\n\ + ldr r1, _081457F0 @ =gMonFrontPicCoords\n\ + lsls r2, r6, 2\n\ + adds r2, r1\n\ + ldrb r1, [r2]\n\ + ldrb r2, [r2, 0x1]\n\ + movs r3, 0x80\n\ + lsls r3, 18\n\ + ldr r4, _081457F4 @ =gUnknown_0840B5A0\n\ + mov r8, r4\n\ + mov r5, r9\n\ + lsls r4, r5, 2\n\ + add r4, r8\n\ + ldr r4, [r4]\n\ + str r4, [sp]\n\ + str r6, [sp, 0x4]\n\ + str r7, [sp, 0x8]\n\ + movs r4, 0x1\n\ + str r4, [sp, 0xC]\n\ + bl LoadSpecialPokePic\n\ + ldr r2, _081457F8 @ =0x0000ffff\n\ + adds r0, r6, 0\n\ + movs r1, 0\n\ + bl species_and_otid_get_pal\n\ + lsls r5, 4\n\ + mov r8, r5\n\ + movs r1, 0x80\n\ + lsls r1, 1\n\ + add r1, r8\n\ + lsls r1, 16\n\ + lsrs r1, 16\n\ + movs r2, 0x20\n\ + bl LoadCompressedPalette\n\ + mov r7, r9\n\ + lsls r6, r7, 24\n\ + lsrs r6, 24\n\ + mov r0, r9\n\ + adds r1, r6, 0\n\ + bl sub_8143648\n\ + ldr r0, _081457FC @ =gUnknown_02024E8C\n\ + mov r2, r10\n\ + lsls r1, r2, 16\n\ + asrs r1, 16\n\ + ldr r3, [sp, 0x10]\n\ + lsls r2, r3, 16\n\ + asrs r2, 16\n\ + movs r3, 0\n\ + bl CreateSprite\n\ + adds r4, r0, 0\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + ldr r5, _08145800 @ =gSprites\n\ + lsls r2, r4, 4\n\ + adds r2, r4\n\ + lsls r2, 2\n\ + adds r3, r2, r5\n\ + ldrb r1, [r3, 0x5]\n\ + movs r0, 0xF\n\ + ands r0, r1\n\ + mov r7, r8\n\ + orrs r0, r7\n\ + movs r1, 0xD\n\ + negs r1, r1\n\ + ands r0, r1\n\ + movs r1, 0x4\n\ + orrs r0, r1\n\ + strb r0, [r3, 0x5]\n\ + mov r0, r9\n\ + adds r0, 0x1\n\ + strh r0, [r3, 0x30]\n\ + movs r0, 0x3E\n\ + adds r0, r3\n\ + mov r8, r0\n\ + ldrb r0, [r0]\n\ + orrs r0, r1\n\ + mov r1, r8\n\ + strb r0, [r1]\n\ + adds r0, r5, 0\n\ + adds r0, 0x1C\n\ + adds r2, r0\n\ + ldr r0, _08145804 @ =spritecb_81454E0\n\ + str r0, [r2]\n\ + ldr r0, _08145808 @ =gSpriteTemplate_840CAEC\n\ + movs r2, 0x20\n\ + ldrsh r1, [r3, r2]\n\ + movs r7, 0x22\n\ + ldrsh r2, [r3, r7]\n\ + movs r3, 0x1\n\ + bl CreateSprite\n\ + adds r1, r0, 0\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r5\n\ + strh r4, [r0, 0x2E]\n\ + adds r1, r6, 0\n\ + bl StartSpriteAnimIfDifferent\n\ + adds r0, r4, 0\n\ + add sp, 0x14\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ _081457E8: .4byte gSaveBlock2\n\ _081457EC: .4byte gMonFrontPicTable\n\ _081457F0: .4byte gMonFrontPicCoords\n\ @@ -2265,219 +2265,219 @@ __attribute__((naked)) void sub_81458DC(void) { asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x4\n\ - ldr r7, _0814597C @ =0x0201c000\n\ - ldr r0, _08145980 @ =0x00004023\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - bl GetStarterPokemon\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - bl SpeciesToNationalPokedexNum\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r10, r0\n\ - movs r4, 0x1\n\ - movs r5, 0\n\ - ldr r0, _08145984 @ =0x00000181\n\ - mov r8, r0\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + ldr r7, _0814597C @ =0x0201c000\n\ + ldr r0, _08145980 @ =0x00004023\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + bl GetStarterPokemon\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + bl SpeciesToNationalPokedexNum\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r10, r0\n\ + movs r4, 0x1\n\ + movs r5, 0\n\ + ldr r0, _08145984 @ =0x00000181\n\ + mov r8, r0\n\ _0814590E:\n\ - adds r0, r4, 0\n\ - movs r1, 0x1\n\ - bl sub_8090D90\n\ - lsls r0, 24\n\ - adds r6, r7, 0\n\ - adds r6, 0x90\n\ - cmp r0, 0\n\ - beq _0814592C\n\ - lsls r0, r5, 1\n\ - adds r0, r6, r0\n\ - strh r4, [r0]\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ + adds r0, r4, 0\n\ + movs r1, 0x1\n\ + bl sub_8090D90\n\ + lsls r0, 24\n\ + adds r6, r7, 0\n\ + adds r6, 0x90\n\ + cmp r0, 0\n\ + beq _0814592C\n\ + lsls r0, r5, 1\n\ + adds r0, r6, r0\n\ + strh r4, [r0]\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ _0814592C:\n\ - adds r0, r4, 0x1\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - cmp r4, r8\n\ - bls _0814590E\n\ - adds r4, r5, 0\n\ - ldr r0, _08145984 @ =0x00000181\n\ - lsls r1, r4, 16\n\ - mov r9, r1\n\ - movs r2, 0x8E\n\ - adds r2, r7\n\ - mov r8, r2\n\ - adds r1, r7, 0\n\ - adds r1, 0x86\n\ - str r1, [sp]\n\ - cmp r4, r0\n\ - bhi _08145964\n\ - adds r1, r6, 0\n\ - movs r3, 0\n\ - adds r2, r0, 0\n\ + adds r0, r4, 0x1\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + cmp r4, r8\n\ + bls _0814590E\n\ + adds r4, r5, 0\n\ + ldr r0, _08145984 @ =0x00000181\n\ + lsls r1, r4, 16\n\ + mov r9, r1\n\ + movs r2, 0x8E\n\ + adds r2, r7\n\ + mov r8, r2\n\ + adds r1, r7, 0\n\ + adds r1, 0x86\n\ + str r1, [sp]\n\ + cmp r4, r0\n\ + bhi _08145964\n\ + adds r1, r6, 0\n\ + movs r3, 0\n\ + adds r2, r0, 0\n\ _08145954:\n\ - lsls r0, r4, 1\n\ - adds r0, r1, r0\n\ - strh r3, [r0]\n\ - adds r0, r4, 0x1\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - cmp r4, r2\n\ - bls _08145954\n\ + lsls r0, r4, 1\n\ + adds r0, r1, r0\n\ + strh r3, [r0]\n\ + adds r0, r4, 0x1\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + cmp r4, r2\n\ + bls _08145954\n\ _08145964:\n\ - movs r2, 0xE5\n\ - lsls r2, 2\n\ - adds r0, r7, r2\n\ - strh r5, [r0]\n\ - mov r1, r9\n\ - lsrs r0, r1, 16\n\ - cmp r0, 0x43\n\ - bhi _08145988\n\ - mov r2, r8\n\ - strh r5, [r2]\n\ - b _0814598E\n\ - .align 2, 0\n\ + movs r2, 0xE5\n\ + lsls r2, 2\n\ + adds r0, r7, r2\n\ + strh r5, [r0]\n\ + mov r1, r9\n\ + lsrs r0, r1, 16\n\ + cmp r0, 0x43\n\ + bhi _08145988\n\ + mov r2, r8\n\ + strh r5, [r2]\n\ + b _0814598E\n\ + .align 2, 0\n\ _0814597C: .4byte 0x0201c000\n\ _08145980: .4byte 0x00004023\n\ _08145984: .4byte 0x00000181\n\ _08145988:\n\ - movs r0, 0x44\n\ - mov r1, r8\n\ - strh r0, [r1]\n\ + movs r0, 0x44\n\ + mov r1, r8\n\ + strh r0, [r1]\n\ _0814598E:\n\ - movs r5, 0\n\ - movs r2, 0xE5\n\ - lsls r2, 2\n\ - adds r4, r7, r2\n\ - mov r9, r5\n\ - b _0814599E\n\ + movs r5, 0\n\ + movs r2, 0xE5\n\ + lsls r2, 2\n\ + adds r4, r7, r2\n\ + mov r9, r5\n\ + b _0814599E\n\ _0814599A:\n\ - cmp r5, 0x43\n\ - bhi _081459EE\n\ + cmp r5, 0x43\n\ + bhi _081459EE\n\ _0814599E:\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - ldrh r1, [r4]\n\ - bl __umodsi3\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - lsls r1, r5, 1\n\ - adds r1, r7, r1\n\ - lsls r0, r2, 1\n\ - adds r3, r6, r0\n\ - ldrh r0, [r3]\n\ - strh r0, [r1]\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - mov r0, r9\n\ - strh r0, [r3]\n\ - ldrh r0, [r4]\n\ - subs r0, 0x1\n\ - strh r0, [r4]\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r2, r0\n\ - beq _081459E8\n\ - ldrh r0, [r4]\n\ - lsls r0, 1\n\ - adds r0, r6, r0\n\ - ldrh r0, [r0]\n\ - strh r0, [r3]\n\ - ldrh r0, [r4]\n\ - lsls r0, 1\n\ - adds r0, r6, r0\n\ - mov r1, r9\n\ - strh r1, [r0]\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + ldrh r1, [r4]\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + lsls r1, r5, 1\n\ + adds r1, r7, r1\n\ + lsls r0, r2, 1\n\ + adds r3, r6, r0\n\ + ldrh r0, [r3]\n\ + strh r0, [r1]\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + mov r0, r9\n\ + strh r0, [r3]\n\ + ldrh r0, [r4]\n\ + subs r0, 0x1\n\ + strh r0, [r4]\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r2, r0\n\ + beq _081459E8\n\ + ldrh r0, [r4]\n\ + lsls r0, 1\n\ + adds r0, r6, r0\n\ + ldrh r0, [r0]\n\ + strh r0, [r3]\n\ + ldrh r0, [r4]\n\ + lsls r0, 1\n\ + adds r0, r6, r0\n\ + mov r1, r9\n\ + strh r1, [r0]\n\ _081459E8:\n\ - ldrh r0, [r4]\n\ - cmp r0, 0\n\ - bne _0814599A\n\ + ldrh r0, [r4]\n\ + cmp r0, 0\n\ + bne _0814599A\n\ _081459EE:\n\ - mov r2, r8\n\ - ldrh r0, [r2]\n\ - cmp r0, 0x43\n\ - bhi _08145A26\n\ - adds r5, r0, 0\n\ - movs r2, 0\n\ - cmp r5, 0x43\n\ - bhi _08145A5C\n\ - mov r3, r8\n\ + mov r2, r8\n\ + ldrh r0, [r2]\n\ + cmp r0, 0x43\n\ + bhi _08145A26\n\ + adds r5, r0, 0\n\ + movs r2, 0\n\ + cmp r5, 0x43\n\ + bhi _08145A5C\n\ + mov r3, r8\n\ _08145A00:\n\ - lsls r1, r5, 1\n\ - adds r1, r7, r1\n\ - lsls r0, r2, 1\n\ - adds r0, r7, r0\n\ - ldrh r0, [r0]\n\ - strh r0, [r1]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - ldrh r0, [r3]\n\ - cmp r2, r0\n\ - bne _08145A1A\n\ - movs r2, 0\n\ + lsls r1, r5, 1\n\ + adds r1, r7, r1\n\ + lsls r0, r2, 1\n\ + adds r0, r7, r0\n\ + ldrh r0, [r0]\n\ + strh r0, [r1]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + ldrh r0, [r3]\n\ + cmp r2, r0\n\ + bne _08145A1A\n\ + movs r2, 0\n\ _08145A1A:\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - cmp r5, 0x43\n\ - bls _08145A00\n\ - b _08145A5C\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + cmp r5, 0x43\n\ + bls _08145A00\n\ + b _08145A5C\n\ _08145A26:\n\ - movs r4, 0\n\ - ldrh r0, [r7]\n\ - cmp r0, r10\n\ - beq _08145A42\n\ + movs r4, 0\n\ + ldrh r0, [r7]\n\ + cmp r0, r10\n\ + beq _08145A42\n\ _08145A2E:\n\ - adds r0, r4, 0x1\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - lsls r0, r4, 1\n\ - adds r0, r7, r0\n\ - ldrh r0, [r0]\n\ - cmp r0, r10\n\ - beq _08145A42\n\ - cmp r4, 0x43\n\ - bls _08145A2E\n\ + adds r0, r4, 0x1\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + lsls r0, r4, 1\n\ + adds r0, r7, r0\n\ + ldrh r0, [r0]\n\ + cmp r0, r10\n\ + beq _08145A42\n\ + cmp r4, 0x43\n\ + bls _08145A2E\n\ _08145A42:\n\ - mov r1, r8\n\ - ldrh r0, [r1]\n\ - subs r0, 0x1\n\ - cmp r4, r0\n\ - bge _08145A5C\n\ - lsls r0, r4, 1\n\ - adds r0, r7, r0\n\ - ldr r2, [sp]\n\ - ldrh r1, [r2]\n\ - strh r1, [r0]\n\ - mov r0, r10\n\ - strh r0, [r2]\n\ - b _08145A62\n\ + mov r1, r8\n\ + ldrh r0, [r1]\n\ + subs r0, 0x1\n\ + cmp r4, r0\n\ + bge _08145A5C\n\ + lsls r0, r4, 1\n\ + adds r0, r7, r0\n\ + ldr r2, [sp]\n\ + ldrh r1, [r2]\n\ + strh r1, [r0]\n\ + mov r0, r10\n\ + strh r0, [r2]\n\ + b _08145A62\n\ _08145A5C:\n\ - mov r2, r10\n\ - ldr r1, [sp]\n\ - strh r2, [r1]\n\ + mov r2, r10\n\ + ldr r1, [sp]\n\ + strh r2, [r1]\n\ _08145A62:\n\ - movs r0, 0x44\n\ - mov r1, r8\n\ - strh r0, [r1]\n\ - add sp, 0x4\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ + movs r0, 0x44\n\ + mov r1, r8\n\ + strh r0, [r1]\n\ + add sp, 0x4\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ .syntax divided\n"); } -- cgit v1.2.3 From a83ced6d98f301f4aade1c571d8c0cc9e43d0450 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Mon, 8 May 2017 23:13:46 -0500 Subject: fix some nonmatching functions (#284) * fix some nonmatching functions * delete trailing whitespace --- src/credits.c | 424 ++++++++++++---------------------------------------------- 1 file changed, 89 insertions(+), 335 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index 7685a033d..17d3507aa 100644 --- a/src/credits.c +++ b/src/credits.c @@ -7,6 +7,7 @@ #include "palette.h" #include "songs.h" #include "sound.h" +#include "trig.h" asm(".set REG_BASE, 0x4000000"); asm(".set OFFSET_REG_BLDCNT, 0x50"); @@ -141,14 +142,13 @@ struct CreditsEntry u8 *text; }; -extern u8 unk_2000000[]; +extern u8 ewram[]; -#define EWRAM_1F800 ((u16 *)(unk_2000000 + 0x1F800)) -#define HALL_OF_FAME_SHEET_0 ((u8 *)(unk_2000000 + 0x1E000)) -#define HALL_OF_FAME_SHEET_1 ((u8 *)(unk_2000000 + 0x1E800)) -#define HALL_OF_FAME_SHEET_2 ((u8 *)(unk_2000000 + 0x1F000)) - -extern struct Unk201C000 unk_201C000; +#define EWRAM_1F800 ((u16 *)(ewram + 0x1F800)) +#define HALL_OF_FAME_SHEET_0 ((u8 *)(ewram + 0x1E000)) +#define HALL_OF_FAME_SHEET_1 ((u8 *)(ewram + 0x1E800)) +#define HALL_OF_FAME_SHEET_2 ((u8 *)(ewram + 0x1F000)) +#define ewram1c000 (*(struct Unk201C000 *)(ewram + 0x1C000)) extern struct HallOfFame gHallOfFame; extern u8 unk_201e800[0x800]; @@ -162,7 +162,7 @@ extern u16 gUnknown_02039322; // TASK A extern u8 gUnknown_02039324; extern u8 gUnknown_02039325; extern u16 gUnknown_02039358; -extern u16 gUnknown_0203935A; +extern s16 gUnknown_0203935A; extern s16 gUnknown_0203935C; extern u8 gReservedSpritePaletteCount; @@ -328,7 +328,7 @@ void sub_81439D0(void) SetMainCallback2(sub_814395C); gUnknown_02039325 = 0; - c000 = &unk_201C000; + c000 = &ewram1c000; sub_81458DC(); @@ -818,11 +818,9 @@ static u8 sub_8144454(u8 page, u8 taskIdA) #define UNK_DEFINE_44 (0x44) -#define EWRAM_1C000 (*(struct Unk201C000 *)(unk_2000000 + 0x1C000)) - static void task_d_8144514(u8 taskIdD) { - struct Unk201C000 *r6 = &EWRAM_1C000; + struct Unk201C000 *r6 = &ewram1c000; u8 r2; switch (gTasks[taskIdD].data[TDD_STATE]) @@ -866,331 +864,87 @@ static void task_d_8144514(u8 taskIdD) } } -__attribute__((naked)) void task_c_8144664(u8 taskIdC) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - ldr r1, _0814468C @ =gTasks\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r2, 0x8\n\ - ldrsh r0, [r0, r2]\n\ - adds r6, r1, 0\n\ - cmp r0, 0x32\n\ - bls _08144680\n\ - b _0814492C\n\ -_08144680:\n\ - lsls r0, 2\n\ - ldr r1, _08144690 @ =_08144694\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_0814468C: .4byte gTasks\n\ -_08144690: .4byte _08144694\n\ - .align 2, 0\n\ -_08144694:\n\ - .4byte _08144760\n\ - .4byte _08144784\n\ - .4byte _081447D8\n\ - .4byte _081447F0\n\ - .4byte _0814482C\n\ - .4byte _08144850\n\ - .4byte _0814489C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _081448A8\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _081448C8\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _081448EC\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _0814492C\n\ - .4byte _08144920\n\ -_08144760:\n\ - lsls r4, r5, 2\n\ - adds r4, r5\n\ - lsls r4, 3\n\ - adds r4, r6\n\ - ldrh r0, [r4, 0x12]\n\ - lsls r0, 16\n\ - asrs r0, 17\n\ - movs r1, 0x7F\n\ - ands r0, r1\n\ - movs r1, 0xC\n\ - bl Sin\n\ - ldr r1, _08144780 @ =gUnknown_0203935A\n\ - strh r0, [r1]\n\ - b _081447A8\n\ - .align 2, 0\n\ -_08144780: .4byte gUnknown_0203935A\n\ -_08144784:\n\ - ldr r7, _081447B0 @ =gUnknown_0203935A\n\ - movs r3, 0\n\ - ldrsh r4, [r7, r3]\n\ - cmp r4, 0\n\ - beq _081447B4\n\ - lsls r4, r5, 2\n\ - adds r4, r5\n\ - lsls r4, 3\n\ - adds r4, r6\n\ - ldrh r0, [r4, 0x12]\n\ - lsls r0, 16\n\ - asrs r0, 17\n\ - movs r1, 0x7F\n\ - ands r0, r1\n\ - movs r1, 0xC\n\ - bl Sin\n\ - strh r0, [r7]\n\ -_081447A8:\n\ - ldrh r0, [r4, 0x12]\n\ - adds r0, 0x1\n\ - strh r0, [r4, 0x12]\n\ - b _0814492C\n\ - .align 2, 0\n\ -_081447B0: .4byte gUnknown_0203935A\n\ -_081447B4:\n\ - ldr r3, _081447D4 @ =gSprites\n\ - lsls r1, r5, 2\n\ - adds r1, r5\n\ - lsls r1, 3\n\ - adds r1, r6\n\ - movs r0, 0xC\n\ - ldrsh r2, [r1, r0]\n\ - lsls r0, r2, 4\n\ - adds r0, r2\n\ - lsls r0, 2\n\ - adds r0, r3\n\ - movs r2, 0x2\n\ - strh r2, [r0, 0x2E]\n\ - strh r4, [r1, 0x12]\n\ - b _08144848\n\ - .align 2, 0\n\ -_081447D4: .4byte gSprites\n\ -_081447D8:\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r1, r0, r6\n\ - ldrh r2, [r1, 0x12]\n\ - movs r3, 0x12\n\ - ldrsh r0, [r1, r3]\n\ - cmp r0, 0x3F\n\ - bgt _08144848\n\ - adds r0, r2, 0x1\n\ - strh r0, [r1, 0x12]\n\ - b _08144866\n\ -_081447F0:\n\ - ldr r3, _08144828 @ =gSprites\n\ - lsls r2, r5, 2\n\ - adds r2, r5\n\ - lsls r2, 3\n\ - adds r2, r6\n\ - movs r0, 0xC\n\ - ldrsh r1, [r2, r0]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r3\n\ - movs r1, 0x3\n\ - strh r1, [r0, 0x2E]\n\ - movs r0, 0xE\n\ - ldrsh r1, [r2, r0]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r3\n\ - movs r1, 0x1\n\ - strh r1, [r0, 0x2E]\n\ - movs r0, 0x78\n\ - strh r0, [r2, 0x10]\n\ - ldrh r0, [r2, 0x8]\n\ - adds r0, 0x1\n\ - strh r0, [r2, 0x8]\n\ - b _0814492C\n\ - .align 2, 0\n\ -_08144828: .4byte gSprites\n\ -_0814482C:\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r1, r0, r6\n\ - ldrh r2, [r1, 0x10]\n\ - movs r3, 0x10\n\ - ldrsh r0, [r1, r3]\n\ - cmp r0, 0\n\ - beq _08144844\n\ - subs r0, r2, 0x1\n\ - strh r0, [r1, 0x10]\n\ - b _0814492C\n\ -_08144844:\n\ - movs r0, 0x40\n\ - strh r0, [r1, 0x12]\n\ -_08144848:\n\ - ldrh r0, [r1, 0x8]\n\ - adds r0, 0x1\n\ - strh r0, [r1, 0x8]\n\ - b _0814492C\n\ -_08144850:\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r4, r0, r6\n\ - ldrh r1, [r4, 0x12]\n\ - movs r2, 0x12\n\ - ldrsh r0, [r4, r2]\n\ - cmp r0, 0\n\ - ble _0814487C\n\ - subs r0, r1, 0x1\n\ - strh r0, [r4, 0x12]\n\ -_08144866:\n\ - movs r1, 0x7F\n\ - ands r0, r1\n\ - movs r1, 0x14\n\ - bl Sin\n\ - ldr r1, _08144878 @ =gUnknown_0203935A\n\ - strh r0, [r1]\n\ - b _0814492C\n\ - .align 2, 0\n\ -_08144878: .4byte gUnknown_0203935A\n\ -_0814487C:\n\ - ldr r2, _08144898 @ =gSprites\n\ - movs r3, 0xC\n\ - ldrsh r1, [r4, r3]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r2\n\ - movs r1, 0x1\n\ - strh r1, [r0, 0x2E]\n\ - ldrh r0, [r4, 0x8]\n\ - adds r0, 0x1\n\ - strh r0, [r4, 0x8]\n\ - b _0814492C\n\ - .align 2, 0\n\ -_08144898: .4byte gSprites\n\ -_0814489C:\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r0, r6\n\ - movs r1, 0x32\n\ - b _0814492A\n\ -_081448A8:\n\ - ldr r3, _081448C4 @ =gSprites\n\ - lsls r1, r5, 2\n\ - adds r1, r5\n\ - lsls r1, 3\n\ - adds r1, r6\n\ - movs r0, 0xE\n\ - ldrsh r2, [r1, r0]\n\ - lsls r0, r2, 4\n\ - adds r0, r2\n\ - lsls r0, 2\n\ - adds r0, r3\n\ - movs r2, 0x2\n\ - b _081448E0\n\ - .align 2, 0\n\ -_081448C4: .4byte gSprites\n\ -_081448C8:\n\ - ldr r3, _081448E8 @ =gSprites\n\ - lsls r1, r5, 2\n\ - adds r1, r5\n\ - lsls r1, 3\n\ - adds r1, r6\n\ - movs r0, 0xC\n\ - ldrsh r2, [r1, r0]\n\ - lsls r0, r2, 4\n\ - adds r0, r2\n\ - lsls r0, 2\n\ - adds r0, r3\n\ - movs r2, 0x4\n\ -_081448E0:\n\ - strh r2, [r0, 0x2E]\n\ - movs r0, 0x32\n\ - strh r0, [r1, 0x8]\n\ - b _0814492C\n\ - .align 2, 0\n\ -_081448E8: .4byte gSprites\n\ -_081448EC:\n\ - ldr r3, _0814491C @ =gSprites\n\ - lsls r2, r5, 2\n\ - adds r2, r5\n\ - lsls r2, 3\n\ - adds r2, r6\n\ - movs r0, 0xC\n\ - ldrsh r1, [r2, r0]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r3\n\ - movs r1, 0x5\n\ - strh r1, [r0, 0x2E]\n\ - movs r0, 0xE\n\ - ldrsh r1, [r2, r0]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r3\n\ - movs r1, 0x3\n\ - strh r1, [r0, 0x2E]\n\ - movs r0, 0x32\n\ - strh r0, [r2, 0x8]\n\ - b _0814492C\n\ - .align 2, 0\n\ -_0814491C: .4byte gSprites\n\ -_08144920:\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r0, r6\n\ - movs r1, 0\n\ -_0814492A:\n\ - strh r1, [r0, 0x8]\n\ -_0814492C:\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); + switch (gTasks[taskIdC].data[0]) + { + case 0: + gUnknown_0203935A = Sin((gTasks[taskIdC].data[5] >> 1) & 0x7F, 12); + gTasks[taskIdC].data[5]++; + break; + case 1: + if (gUnknown_0203935A != 0) + { + gUnknown_0203935A = Sin((gTasks[taskIdC].data[5] >> 1) & 0x7F, 12); + gTasks[taskIdC].data[5]++; + } + else + { + gSprites[gTasks[taskIdC].data[2]].data0 = 2; + gTasks[taskIdC].data[5] = 0; + gTasks[taskIdC].data[0]++; + } + break; + case 2: + if (gTasks[taskIdC].data[5] < 64) + { + gTasks[taskIdC].data[5]++; + gUnknown_0203935A = Sin(gTasks[taskIdC].data[5] & 0x7F, 20); + } + else + { + gTasks[taskIdC].data[0]++; + } + break; + case 3: + gSprites[gTasks[taskIdC].data[2]].data0 = 3; + gSprites[gTasks[taskIdC].data[3]].data0 = 1; + gTasks[taskIdC].data[4] = 120; + gTasks[taskIdC].data[0]++; + break; + case 4: + if (gTasks[taskIdC].data[4] != 0) + { + gTasks[taskIdC].data[4]--; + } + else + { + gTasks[taskIdC].data[5] = 64; + gTasks[taskIdC].data[0]++; + } + break; + case 5: + if (gTasks[taskIdC].data[5] > 0) + { + gTasks[taskIdC].data[5]--; + gUnknown_0203935A = Sin(gTasks[taskIdC].data[5] & 0x7F, 20); + } + else + { + gSprites[gTasks[taskIdC].data[2]].data0 = 1; + gTasks[taskIdC].data[0]++; + } + break; + case 6: + gTasks[taskIdC].data[0] = 50; + break; + case 10: + gSprites[gTasks[taskIdC].data[3]].data0 = 2; + gTasks[taskIdC].data[0] = 50; + break; + case 20: + gSprites[gTasks[taskIdC].data[2]].data0 = 4; + gTasks[taskIdC].data[0] = 50; + break; + case 30: + gSprites[gTasks[taskIdC].data[2]].data0 = 5; + gSprites[gTasks[taskIdC].data[3]].data0 = 3; + gTasks[taskIdC].data[0] = 50; + break; + case 50: + gTasks[taskIdC].data[0] = 0; + break; + } } #define UNK_DEF_1F3 (499) -- cgit v1.2.3 From fbebe08ae94b8e165ba120d71959554765307ce3 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Tue, 9 May 2017 12:52:39 -0500 Subject: use macros to set DISPCNT and BG*CNT registers (#286) * use macros to set DISPCNT and BG*CNT registers * add a few more --- src/credits.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index 17d3507aa..01af78bce 100644 --- a/src/credits.c +++ b/src/credits.c @@ -474,8 +474,8 @@ void task_a_8143D04(u8 taskIdA) BeginNormalPaletteFade(-1, 0, 16, 0, 0); REG_BG3HOFS = 0; REG_BG3VOFS = 32; - REG_BG3CNT = 0x703; - REG_DISPCNT = 0x1940; + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; gMain.state = 0; gUnknown_0203935C = 0; @@ -518,13 +518,13 @@ static void task_a_8143F3C(u8 taskIdA) FreeAllSpritePalettes(); BeginNormalPaletteFade(-1, 8, 16, 0, 0); - REG_BG0CNT = 0x700; + REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; backup = REG_IME; REG_IME = 0; REG_IE |= INTR_FLAG_VBLANK; REG_IME = backup; REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; - REG_DISPCNT = 0x140; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON; gTasks[taskIdA].data[TDA_0] = 0x100; gTasks[taskIdA].func = task_a_8143FDC; -- cgit v1.2.3 From 0354f2cc5ae9771d745e6ffadd4715bdc8ff5221 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 12 May 2017 01:57:43 -0400 Subject: remove unknowns from birch_pc.c --- src/credits.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index 01af78bce..ffb7554ba 100644 --- a/src/credits.c +++ b/src/credits.c @@ -2044,7 +2044,7 @@ void sub_81458DC(void) _0814590E:\n\ adds r0, r4, 0\n\ movs r1, 0x1\n\ - bl sub_8090D90\n\ + bl GetNationalPokedexFlag\n\ lsls r0, 24\n\ adds r6, r7, 0\n\ adds r6, 0x90\n\ -- cgit v1.2.3 From 87e049d371cf17d020c5157c43143a30d1f7a96a Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 12 May 2017 18:16:30 +0200 Subject: Decompile more credits functions --- src/credits.c | 649 +++++++++++++++++++++++++++------------------------------- 1 file changed, 302 insertions(+), 347 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index 01af78bce..68056c9ac 100644 --- a/src/credits.c +++ b/src/credits.c @@ -1,12 +1,17 @@ #include "global.h" #include "asm.h" #include "decompress.h" +#include "event_data.h" #include "m4a.h" #include "main.h" #include "menu.h" #include "palette.h" +#include "pokedex.h" +#include "rng.h" #include "songs.h" #include "sound.h" +#include "species.h" +#include "starter_choose.h" #include "trig.h" asm(".set REG_BASE, 0x4000000"); @@ -104,7 +109,7 @@ enum TDA_TASK_B_ID = 15, // Appears to be responsible for text - TDB_0 = 0, + TDB_0 = 0, TDB_TASK_A_ID = 1, TDB_CURRENT_PAGE = 2, TDB_3 = 3, @@ -126,14 +131,17 @@ enum TDE_TASK_A_ID = 2, }; +#define POKEMON_TILE_COUNT 68 + struct Unk201C000 { - u16 unk0[8]; - u8 pad_10[0x78]; + u16 unk0[POKEMON_TILE_COUNT]; u16 unk88; u16 unk8A; u16 unk8C; u16 unk8E; + u16 unk90[386]; + u16 unk394; }; struct CreditsEntry @@ -227,10 +235,10 @@ static void task_d_8144514(u8 taskIdD); static bool8 sub_8144ECC(u8 data, u8 taskIdA); static void sub_81450AC(u8 taskIdA); void sub_8145128(u16, u16, u16); -static void sub_81452D0(u16 arg0, u16 arg1); +static void sub_81452D0(u16 arg0, u16 palette); static void spritecb_player_8145378(struct Sprite *sprite); static void spritecb_rival_8145420(struct Sprite *sprite); -u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3); +u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 position); void sub_81458DC(void); static void vblank_8143948(void) @@ -666,8 +674,7 @@ static void task_b_81441B8(u8 taskIdB) for (i = 0; i < 5; i++) { - sub_8072BD8(gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text, 0, - 9 + i * 2, 240); + sub_8072BD8(gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text, 0, 9 + i * 2, 240); } gTasks[taskIdB].data[TDB_CURRENT_PAGE] += 1; @@ -816,8 +823,6 @@ static u8 sub_8144454(u8 page, u8 taskIdA) return FALSE; } -#define UNK_DEFINE_44 (0x44) - static void task_d_8144514(u8 taskIdD) { struct Unk201C000 *r6 = &ewram1c000; @@ -834,7 +839,7 @@ static void task_d_8144514(u8 taskIdD) gTasks[taskIdD].data[TDD_STATE]++; break; case 2: - if (r6->unk88 == UNK_DEFINE_44 || gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != task_a_8143B68) + if (r6->unk88 == POKEMON_TILE_COUNT || gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != task_a_8143B68) break; r2 = sub_81456B4(r6->unk0[r6->unk8C], gUnknown_0840CA00[r6->unk8A][0], gUnknown_0840CA00[r6->unk8A][1], r6->unk8A); if (r6->unk8C < r6->unk8E - 1) @@ -1205,6 +1210,50 @@ static void sub_81450AC(u8 taskIdA) gUnknown_0203935C = 1; } +#ifdef NONMATCHING +// Sets up the tilemap for 'misc/end_copyright.png' +void sub_8145128(u16 arg0, u16 arg1, u16 arg2) { + u16 i; + u16 baseTile; + u16 offset0, offset1, offset2, offset3, offset4; + + LZ77UnCompVram(gCreditsCopyrightEnd_Gfx, (void *) (VRAM + arg0)); + LoadPalette(gIntroCopyright_Pal, arg2, sizeof(gIntroCopyright_Pal)); + + baseTile = (arg2 / 16) << 12; + + offset0 = baseTile + 1; + for (i = 0; i < 32 * 32; i++) + { + ((u16 *) (VRAM + arg1))[i] = baseTile + 1; + } + + offset1 = offset0 + 1; + offset2 = offset1 + 21; + offset3 = offset2 + 20; + offset4 = offset3 + 23; + + for (i = 0; i < 21; i++) + { + ((u16 *) (VRAM + arg1))[7 * 32 + 4 + i] = offset1 + i; + } + + for (i = 0; i < 20; i++) + { + ((u16 *) (VRAM + arg1))[9 * 32 + 4 + i] = offset2 + i; + } + + for (i = 0; i < 23; i++) + { + ((u16 *) (VRAM + arg1))[11 * 32 + 4 + i] = offset3 + i; + } + + for (i = 0; i < 12; i++) + { + ((u16 *) (VRAM + arg1))[13 * 32 + 4 + i] = offset4 + i; + } +} +#else __attribute__((naked)) void sub_8145128(u16 arg0, u16 arg1, u16 arg2) { @@ -1319,6 +1368,7 @@ _08145200: .4byte 0x060002c8\n\ _08145204: .4byte 0x06000348\n\ .syntax divided\n"); } +#endif u16 sub_8145208(u8 arg0) { @@ -1332,106 +1382,45 @@ u16 sub_8145208(u8 arg0) if (arg0 & (1 << 7)) { - out |= 0x800; + out |= 1 << 11; } if (arg0 & (1 << 6)) { - out |= 0x400; + out |= 1 << 10; } return out; } -__attribute__((naked)) -void sub_814524C(void *arg0, u8 arg1, u8 arg2, u16 arg3, int arg4) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0xC\n\ - str r0, [sp]\n\ - ldr r0, [sp, 0x2C]\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - mov r10, r1\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - str r2, [sp, 0x4]\n\ - lsls r3, 16\n\ - lsrs r3, 16\n\ - str r3, [sp, 0x8]\n\ - lsls r0, 16\n\ - lsrs r0, 20\n\ - lsls r0, 28\n\ - lsrs r0, 16\n\ - mov r9, r0\n\ - movs r5, 0\n\ -_0814527A:\n\ - movs r4, 0\n\ - lsls r7, r5, 1\n\ - ldr r1, [sp, 0x4]\n\ - adds r0, r1, r5\n\ - adds r2, r5, 0x1\n\ - mov r8, r2\n\ - lsls r0, 6\n\ - ldr r1, [sp, 0x8]\n\ - adds r6, r0, r1\n\ -_0814528C:\n\ - adds r0, r7, r5\n\ - adds r0, r4\n\ - ldr r2, [sp]\n\ - adds r0, r2, r0\n\ - ldrb r0, [r0]\n\ - bl sub_8145208\n\ - mov r2, r10\n\ - adds r1, r2, r4\n\ - lsls r1, 1\n\ - adds r1, r6\n\ - movs r2, 0xC0\n\ - lsls r2, 19\n\ - adds r1, r2\n\ - add r0, r9\n\ - strh r0, [r1]\n\ - adds r0, r4, 0x1\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - cmp r4, 0x2\n\ - bls _0814528C\n\ - mov r1, r8\n\ - lsls r0, r1, 24\n\ - lsrs r5, r0, 24\n\ - cmp r5, 0x4\n\ - bls _0814527A\n\ - add sp, 0xC\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); +void sub_814524C(u8 arg0[], u8 baseX, u8 baseY, u16 arg3, u16 palette) { + u8 y, x; + + const u16 tileOffset = (palette / 16) << 12; + + for (y = 0; y < 5; y++) + { + for (x = 0; x < 3; x++) + { + ((u16 *) (VRAM + arg3 + (baseY + y) * 64))[baseX + x] = tileOffset + sub_8145208(arg0[y * 3 + x]); + } + } } -static void sub_81452D0(u16 arg0, u16 arg1) +static void sub_81452D0(u16 arg0, u16 palette) { - u16 i; - u16 foo = arg1 / 16; - u16 bar = foo * 4096; - - for (i = 0; i < 0x400; i++) - ((u16 *)(VRAM + arg0))[i] = bar + 1; - - sub_814524C(&gUnknown_0840B83C, 3, 7, arg0, arg1); - sub_814524C(&gUnknown_0840B84B, 7, 7, arg0, arg1); - sub_814524C(&gUnknown_0840B85A, 11, 7, arg0, arg1); - sub_814524C(&gUnknown_0840B85A, 16, 7, arg0, arg1); - sub_814524C(&gUnknown_0840B869, 20, 7, arg0, arg1); - sub_814524C(&gUnknown_0840B878, 24, 7, arg0, arg1); + u16 pos; + u16 baseTile = (palette / 16) << 12; + + for (pos = 0; pos < 32 * 32; pos++) + ((u16 *) (VRAM + arg0))[pos] = baseTile + 1; + + sub_814524C(gUnknown_0840B83C, 3, 7, arg0, palette); + sub_814524C(gUnknown_0840B84B, 7, 7, arg0, palette); + sub_814524C(gUnknown_0840B85A, 11, 7, arg0, palette); + sub_814524C(gUnknown_0840B85A, 16, 7, arg0, palette); + sub_814524C(gUnknown_0840B869, 20, 7, arg0, palette); + sub_814524C(gUnknown_0840B878, 24, 7, arg0, palette); } static void spritecb_player_8145378(struct Sprite *sprite) @@ -1538,248 +1527,117 @@ static void spritecb_rival_8145420(struct Sprite *sprite) } } -__attribute__((naked)) -void spritecb_81454E0(struct Sprite *sprite) -{ - asm(".syntax unified\n\ - push {r4,r5,lr}\n\ - sub sp, 0x4\n\ - adds r5, r0, 0\n\ - ldr r0, _081454F8 @ =gUnknown_0203935C\n\ - movs r1, 0\n\ - ldrsh r0, [r0, r1]\n\ - cmp r0, 0\n\ - beq _081454FC\n\ - adds r0, r5, 0\n\ - bl DestroySprite\n\ - b _081456A6\n\ - .align 2, 0\n\ -_081454F8: .4byte gUnknown_0203935C\n\ -_081454FC:\n\ - ldrh r0, [r5, 0x3C]\n\ - adds r0, 0x1\n\ - strh r0, [r5, 0x3C]\n\ - movs r2, 0x2E\n\ - ldrsh r0, [r5, r2]\n\ - cmp r0, 0xA\n\ - bhi _08145544\n\ - lsls r0, 2\n\ - ldr r1, _08145514 @ =_08145518\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_08145514: .4byte _08145518\n\ - .align 2, 0\n\ -_08145518:\n\ - .4byte _08145544\n\ - .4byte _0814559E\n\ - .4byte _08145620\n\ - .4byte _08145660\n\ - .4byte _08145544\n\ - .4byte _08145544\n\ - .4byte _08145544\n\ - .4byte _08145544\n\ - .4byte _08145544\n\ - .4byte _08145544\n\ - .4byte _08145696\n\ -_08145544:\n\ - ldrb r1, [r5, 0x1]\n\ - movs r0, 0x4\n\ - negs r0, r0\n\ - ands r0, r1\n\ - movs r1, 0x1\n\ - orrs r0, r1\n\ - strb r0, [r5, 0x1]\n\ - movs r0, 0x30\n\ - ldrsh r1, [r5, r0]\n\ - movs r0, 0x1F\n\ - ands r1, r0\n\ - lsls r1, 1\n\ - ldrb r2, [r5, 0x3]\n\ - movs r0, 0x3F\n\ - negs r0, r0\n\ - ands r0, r2\n\ - orrs r0, r1\n\ - strb r0, [r5, 0x3]\n\ - movs r0, 0x10\n\ - strh r0, [r5, 0x32]\n\ - ldrh r4, [r5, 0x30]\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - movs r0, 0x80\n\ - lsls r0, 9\n\ - movs r1, 0x10\n\ - bl __divsi3\n\ - adds r1, r0, 0\n\ - str r1, [sp]\n\ - adds r0, r4, 0\n\ - movs r2, 0\n\ - movs r3, 0\n\ - bl SetOamMatrix\n\ - adds r2, r5, 0\n\ - adds r2, 0x3E\n\ - ldrb r1, [r2]\n\ - movs r0, 0x5\n\ - negs r0, r0\n\ - ands r0, r1\n\ - strb r0, [r2]\n\ - movs r0, 0x1\n\ - strh r0, [r5, 0x2E]\n\ - b _081456A6\n\ -_0814559E:\n\ - ldrh r1, [r5, 0x32]\n\ - movs r2, 0x32\n\ - ldrsh r0, [r5, r2]\n\ - cmp r0, 0xFF\n\ - bgt _081455D4\n\ - adds r0, r1, 0\n\ - adds r0, 0x8\n\ - strh r0, [r5, 0x32]\n\ - ldrh r4, [r5, 0x30]\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - movs r0, 0x32\n\ - ldrsh r1, [r5, r0]\n\ - movs r0, 0x80\n\ - lsls r0, 9\n\ - bl __divsi3\n\ - adds r1, r0, 0\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - str r1, [sp]\n\ - adds r0, r4, 0\n\ - movs r2, 0\n\ - movs r3, 0\n\ - bl SetOamMatrix\n\ - b _081455DA\n\ -_081455D4:\n\ - ldrh r0, [r5, 0x2E]\n\ - adds r0, 0x1\n\ - strh r0, [r5, 0x2E]\n\ -_081455DA:\n\ - movs r2, 0x30\n\ - ldrsh r1, [r5, r2]\n\ - cmp r1, 0x2\n\ - beq _081456A6\n\ - cmp r1, 0x2\n\ - bgt _081455EC\n\ - cmp r1, 0x1\n\ - beq _081455F2\n\ - b _081456A6\n\ -_081455EC:\n\ - cmp r1, 0x3\n\ - beq _0814560A\n\ - b _081456A6\n\ -_081455F2:\n\ - ldrh r1, [r5, 0x3C]\n\ - movs r0, 0x3\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08145602\n\ - ldrh r0, [r5, 0x22]\n\ - adds r0, 0x1\n\ - strh r0, [r5, 0x22]\n\ -_08145602:\n\ - ldrh r0, [r5, 0x20]\n\ - subs r0, 0x2\n\ - strh r0, [r5, 0x20]\n\ - b _081456A6\n\ -_0814560A:\n\ - ldrh r0, [r5, 0x3C]\n\ - ands r1, r0\n\ - cmp r1, 0\n\ - bne _08145618\n\ - ldrh r0, [r5, 0x22]\n\ - adds r0, 0x1\n\ - strh r0, [r5, 0x22]\n\ -_08145618:\n\ - ldrh r0, [r5, 0x20]\n\ - adds r0, 0x2\n\ - strh r0, [r5, 0x20]\n\ - b _081456A6\n\ -_08145620:\n\ - ldrh r1, [r5, 0x34]\n\ - movs r2, 0x34\n\ - ldrsh r0, [r5, r2]\n\ - cmp r0, 0\n\ - beq _08145630\n\ - subs r0, r1, 0x1\n\ - strh r0, [r5, 0x34]\n\ - b _081456A6\n\ -_08145630:\n\ - ldr r1, _0814565C @ =REG_BLDCNT\n\ - movs r2, 0xF4\n\ - lsls r2, 4\n\ - adds r0, r2, 0\n\ - strh r0, [r1]\n\ - adds r1, 0x2\n\ - movs r0, 0x10\n\ - strh r0, [r1]\n\ - ldrb r1, [r5, 0x1]\n\ - movs r0, 0xD\n\ - negs r0, r0\n\ - ands r0, r1\n\ - movs r1, 0x4\n\ - orrs r0, r1\n\ - strb r0, [r5, 0x1]\n\ - movs r0, 0x10\n\ - strh r0, [r5, 0x34]\n\ - ldrh r0, [r5, 0x2E]\n\ - adds r0, 0x1\n\ - strh r0, [r5, 0x2E]\n\ - b _081456A6\n\ - .align 2, 0\n\ -_0814565C: .4byte REG_BLDCNT\n\ -_08145660:\n\ - ldrh r1, [r5, 0x34]\n\ - movs r2, 0x34\n\ - ldrsh r0, [r5, r2]\n\ - cmp r0, 0\n\ - beq _08145684\n\ - subs r1, 0x1\n\ - strh r1, [r5, 0x34]\n\ - ldr r3, _08145680 @ =REG_BLDALPHA\n\ - movs r0, 0x34\n\ - ldrsh r2, [r5, r0]\n\ - movs r0, 0x10\n\ - subs r0, r2\n\ - lsls r0, 8\n\ - adds r1, r0\n\ - strh r1, [r3]\n\ - b _081456A6\n\ - .align 2, 0\n\ -_08145680: .4byte REG_BLDALPHA\n\ -_08145684:\n\ - adds r2, r5, 0\n\ - adds r2, 0x3E\n\ - ldrb r0, [r2]\n\ - movs r1, 0x4\n\ - orrs r0, r1\n\ - strb r0, [r2]\n\ - movs r0, 0xA\n\ - strh r0, [r5, 0x2E]\n\ - b _081456A6\n\ -_08145696:\n\ - ldr r0, _081456B0 @ =REG_BLDCNT\n\ - movs r1, 0\n\ - strh r1, [r0]\n\ - adds r0, 0x2\n\ - strh r1, [r0]\n\ - adds r0, r5, 0\n\ - bl DestroySprite\n\ -_081456A6:\n\ - add sp, 0x4\n\ - pop {r4,r5}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_081456B0: .4byte REG_BLDCNT\n\ - .syntax divided\n"); +void spritecb_81454E0(struct Sprite *sprite) { + if (gUnknown_0203935C) + { + DestroySprite(sprite); + return; + } + + sprite->data7 += 1; + switch (sprite->data0) + { + case 0: + default: + sprite->oam.affineMode = 1; + sprite->oam.matrixNum = sprite->data1; + sprite->data2 = 16; + SetOamMatrix(sprite->data1, 0x10000 / sprite->data2, 0, 0, 0x10000 / sprite->data2); + sprite->invisible = FALSE; + sprite->data0 = 1; + break; + + case 1: + if (sprite->data2 < 256) + { + sprite->data2 += 8; + SetOamMatrix(sprite->data1, 0x10000 / sprite->data2, 0, 0, 0x10000 / sprite->data2); + } + else + { + sprite->data0 += 1; + } + switch (sprite->data1) + { + case 1: + if ((sprite->data7 & 3) == 0) + { + sprite->pos1.y += 1; + } + sprite->pos1.x -= 2; + break; + case 2: + break; + case 3: + if ((sprite->data7 & 3) == 0) + { + sprite->pos1.y += 1; + } + sprite->pos1.x += 2; + break; + } + break; + + case 2: + if (sprite->data3 != 0) + { + sprite->data3 -= 1; + } + else + { + REG_BLDCNT = 0xF40; + REG_BLDALPHA = 0x10; + sprite->oam.objMode = 1; + sprite->data3 = 16; + sprite->data0 += 1; + } + break; + + case 3: + if (sprite->data3 != 0) + { + int data3; + vu16 *reg; + + sprite->data3 -= 1; + + reg = ®_BLDALPHA; + data3 = 16 - sprite->data3; + *reg = (data3 << 8) + sprite->data3; + } + else + { + sprite->invisible = TRUE; + sprite->data0 = 10; + } + break; + + case 10: + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + DestroySprite(sprite); + break; + + } } #ifdef NONMATCHING -u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3) +/* +extern struct SpriteFrameImage *gUnknown_0840B69C[]; +extern const union AmimCmd *const gSpriteAnimTable_81E7C64[]; +extern struct SpriteTemplate gUnknown_0840B6B8; + +void sub_8143648(u16 paletteTag, u8 arg1) { + gUnknown_02024E8C = gUnknown_0840B6B8; + gUnknown_02024E8C.paletteTag = paletteTag; + gUnknown_02024E8C.images = gUnknown_0840B69C[arg1]; + gUnknown_02024E8C.anims = (const union AnimCmd *const *) gSpriteAnimTable_81E7C64; +} +*/ + +void sub_8143648(u16 paletteTag, u8 arg1); + +u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 position) { u32 species; u32 personality; @@ -1787,19 +1645,22 @@ u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3) u8 spriteId; u8 spriteId2; + // FIXME: For some reason r0 is copied to r6 before. species = NationalPokedexNumToSpecies(nationalNum); + + switch (species) { - case SPECIES_UNOWN: - personality = gSaveBlock2.pokedex.unownPersonality; + default: + personality = 0; break; case SPECIES_SPINDA: personality = gSaveBlock2.pokedex.spindaPersonality; break; - default: - personality = 0; + case SPECIES_UNOWN: + personality = gSaveBlock2.pokedex.unownPersonality; break; } @@ -1808,27 +1669,27 @@ u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3) gMonFrontPicCoords[species].x, gMonFrontPicCoords[species].y, 0x2000000, - gUnknown_0840B5A0[arg3], + gUnknown_0840B5A0[position], species, personality, 1 ); palette = species_and_otid_get_pal(species, 0, 0xFFFF); - LoadCompressedPalette(palette, 0x100 + (arg3 * 16), 0x20); - sub_8143648(arg3, arg3); + LoadCompressedPalette(palette, 0x100 + (position * 16), 0x20); + sub_8143648(position, position); spriteId = CreateSprite(&gUnknown_02024E8C, x, y, 0); - gSprites[spriteId].oam.paletteNum = arg3; + gSprites[spriteId].oam.paletteNum = position; gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].data1 = arg3 + 1; + gSprites[spriteId].data1 = position + 1; gSprites[spriteId].invisible = TRUE; gSprites[spriteId].callback = spritecb_81454E0; spriteId2 = CreateSprite(&gSpriteTemplate_840CAEC, gSprites[spriteId].pos1.x, gSprites[spriteId].pos1.y, 1); gSprites[spriteId2].data0 = spriteId; - StartSpriteAnimIfDifferent(&gSprites[spriteId2], arg3); + StartSpriteAnimIfDifferent(&gSprites[spriteId2], position); return spriteId; } @@ -2015,6 +1876,99 @@ void spritecb_814580C(struct Sprite *sprite) sprite->pos1.y = gSprites[sprite->data0].pos1.y; } +#ifdef NONMATCHING +void sub_81458DC(void) { + u16 dexNum, seenTypesCount, count, i2; + + struct Unk201C000 *unk201C000 = &ewram1c000; + + const u16 starter = SpeciesToNationalPokedexNum(GetStarterPokemon(VarGet(VAR_FIRST_POKE))); + + dexNum = 1; + seenTypesCount = 0; + for (; dexNum < 386; dexNum++) + { + if (sub_8090D90(dexNum, 1)) + { + unk201C000->unk90[seenTypesCount] = dexNum; + seenTypesCount += 1; + } + } + + count = seenTypesCount; + while (count < 386) + { + unk201C000->unk90[count] = 0; + count += 1; + } + + unk201C000->unk394 = seenTypesCount; + if (unk201C000->unk394 < POKEMON_TILE_COUNT) + { + unk201C000->unk8E = unk201C000->unk394; + } + else + { + unk201C000->unk8E = POKEMON_TILE_COUNT; + } + + for (i2 = 0; i2 < POKEMON_TILE_COUNT;) + { + const u16 r2 = Random() % unk201C000->unk394; + unk201C000->unk0[i2] = unk201C000->unk90[r2]; + i2 += 1; + + unk201C000->unk90[r2] = 0; + unk201C000->unk394 -= 1; + + if (r2 != unk201C000->unk394) + { + unk201C000->unk90[r2] = unk201C000->unk90[unk201C000->unk394]; + unk201C000->unk90[unk201C000->unk394] = 0; + } + + if (unk201C000->unk394 == 0) + { + break; + } + } + + if (unk201C000->unk8E < POKEMON_TILE_COUNT) + { + u16 i; + u16 page; + for (i = unk201C000->unk8E; i < POKEMON_TILE_COUNT; i++) + { + unk201C000->unk0[i] = unk201C000->unk0[page]; + page += 1; + + if (page == unk201C000->unk8E) + { + page = 0; + } + } + } + else + { + u16 starterIndex; + for (starterIndex = 0; starterIndex < POKEMON_TILE_COUNT; starterIndex++) + { + if (unk201C000->unk0[starterIndex] == starter) + { + break; + } + } + + if (starterIndex < unk201C000->unk8E) + { + unk201C000->unk0[starterIndex] = unk201C000->unk0[POKEMON_TILE_COUNT - 1]; + } + } + + unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; + unk201C000->unk8E = POKEMON_TILE_COUNT; +} +#else __attribute__((naked)) void sub_81458DC(void) { @@ -2235,3 +2189,4 @@ _08145A62:\n\ bx r0\n\ .syntax divided\n"); } +#endif -- cgit v1.2.3 From c58711656537134c4fbd2feacd244a269b311cf5 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 12 May 2017 18:21:23 +0200 Subject: Use constants for task C data --- src/credits.c | 68 +++++++++++++++++++++++++++++------------------------------ 1 file changed, 34 insertions(+), 34 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index 68056c9ac..085cf986c 100644 --- a/src/credits.c +++ b/src/credits.c @@ -871,83 +871,83 @@ static void task_d_8144514(u8 taskIdD) void task_c_8144664(u8 taskIdC) { - switch (gTasks[taskIdC].data[0]) + switch (gTasks[taskIdC].data[TDC_0]) { case 0: - gUnknown_0203935A = Sin((gTasks[taskIdC].data[5] >> 1) & 0x7F, 12); - gTasks[taskIdC].data[5]++; + gUnknown_0203935A = Sin((gTasks[taskIdC].data[TDC_5] >> 1) & 0x7F, 12); + gTasks[taskIdC].data[TDC_5]++; break; case 1: if (gUnknown_0203935A != 0) { - gUnknown_0203935A = Sin((gTasks[taskIdC].data[5] >> 1) & 0x7F, 12); - gTasks[taskIdC].data[5]++; + gUnknown_0203935A = Sin((gTasks[taskIdC].data[TDC_5] >> 1) & 0x7F, 12); + gTasks[taskIdC].data[TDC_5]++; } else { - gSprites[gTasks[taskIdC].data[2]].data0 = 2; - gTasks[taskIdC].data[5] = 0; - gTasks[taskIdC].data[0]++; + gSprites[gTasks[taskIdC].data[TDC_2]].data0 = 2; + gTasks[taskIdC].data[TDC_5] = 0; + gTasks[taskIdC].data[TDC_0]++; } break; case 2: - if (gTasks[taskIdC].data[5] < 64) + if (gTasks[taskIdC].data[TDC_5] < 64) { - gTasks[taskIdC].data[5]++; - gUnknown_0203935A = Sin(gTasks[taskIdC].data[5] & 0x7F, 20); + gTasks[taskIdC].data[TDC_5]++; + gUnknown_0203935A = Sin(gTasks[taskIdC].data[TDC_5] & 0x7F, 20); } else { - gTasks[taskIdC].data[0]++; + gTasks[taskIdC].data[TDC_0]++; } break; case 3: - gSprites[gTasks[taskIdC].data[2]].data0 = 3; - gSprites[gTasks[taskIdC].data[3]].data0 = 1; - gTasks[taskIdC].data[4] = 120; - gTasks[taskIdC].data[0]++; + gSprites[gTasks[taskIdC].data[TDC_2]].data0 = 3; + gSprites[gTasks[taskIdC].data[TDC_3]].data0 = 1; + gTasks[taskIdC].data[TDC_4] = 120; + gTasks[taskIdC].data[TDC_0]++; break; case 4: - if (gTasks[taskIdC].data[4] != 0) + if (gTasks[taskIdC].data[TDC_4] != 0) { - gTasks[taskIdC].data[4]--; + gTasks[taskIdC].data[TDC_4]--; } else { - gTasks[taskIdC].data[5] = 64; - gTasks[taskIdC].data[0]++; + gTasks[taskIdC].data[TDC_5] = 64; + gTasks[taskIdC].data[TDC_0]++; } break; case 5: - if (gTasks[taskIdC].data[5] > 0) + if (gTasks[taskIdC].data[TDC_5] > 0) { - gTasks[taskIdC].data[5]--; - gUnknown_0203935A = Sin(gTasks[taskIdC].data[5] & 0x7F, 20); + gTasks[taskIdC].data[TDC_5]--; + gUnknown_0203935A = Sin(gTasks[taskIdC].data[TDC_5] & 0x7F, 20); } else { - gSprites[gTasks[taskIdC].data[2]].data0 = 1; - gTasks[taskIdC].data[0]++; + gSprites[gTasks[taskIdC].data[TDC_2]].data0 = 1; + gTasks[taskIdC].data[TDC_0]++; } break; case 6: - gTasks[taskIdC].data[0] = 50; + gTasks[taskIdC].data[TDC_0] = 50; break; case 10: - gSprites[gTasks[taskIdC].data[3]].data0 = 2; - gTasks[taskIdC].data[0] = 50; + gSprites[gTasks[taskIdC].data[TDC_3]].data0 = 2; + gTasks[taskIdC].data[TDC_0] = 50; break; case 20: - gSprites[gTasks[taskIdC].data[2]].data0 = 4; - gTasks[taskIdC].data[0] = 50; + gSprites[gTasks[taskIdC].data[TDC_2]].data0 = 4; + gTasks[taskIdC].data[TDC_0] = 50; break; case 30: - gSprites[gTasks[taskIdC].data[2]].data0 = 5; - gSprites[gTasks[taskIdC].data[3]].data0 = 3; - gTasks[taskIdC].data[0] = 50; + gSprites[gTasks[taskIdC].data[TDC_2]].data0 = 5; + gSprites[gTasks[taskIdC].data[TDC_3]].data0 = 3; + gTasks[taskIdC].data[TDC_0] = 50; break; case 50: - gTasks[taskIdC].data[0] = 0; + gTasks[taskIdC].data[TDC_0] = 0; break; } } -- cgit v1.2.3 From e093a13a4b0e72f9f150d98bf0df8dab981316c2 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Sun, 14 May 2017 18:34:49 +0200 Subject: Remove last NONMATCHINGs in credits.c --- src/credits.c | 638 ++++------------------------------------------------------ 1 file changed, 44 insertions(+), 594 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index 085cf986c..ca5553c2e 100644 --- a/src/credits.c +++ b/src/credits.c @@ -20,8 +20,6 @@ asm(".set OFFSET_REG_BLDALPHA, 0x52"); asm(".set REG_BLDCNT, REG_BASE + OFFSET_REG_BLDCNT"); asm(".set REG_BLDALPHA, REG_BASE + OFFSET_REG_BLDALPHA"); -u32 NationalPokedexNumToSpecies(u16 nationalNum); - struct MonCoords { u8 x, y; @@ -109,7 +107,7 @@ enum TDA_TASK_B_ID = 15, // Appears to be responsible for text - TDB_0 = 0, + TDB_0 = 0, TDB_TASK_A_ID = 1, TDB_CURRENT_PAGE = 2, TDB_3 = 3, @@ -234,12 +232,12 @@ static u8 sub_8144454(u8 page, u8 taskIdA); static void task_d_8144514(u8 taskIdD); static bool8 sub_8144ECC(u8 data, u8 taskIdA); static void sub_81450AC(u8 taskIdA); -void sub_8145128(u16, u16, u16); +static void sub_8145128(u16, u16, u16); static void sub_81452D0(u16 arg0, u16 palette); static void spritecb_player_8145378(struct Sprite *sprite); static void spritecb_rival_8145420(struct Sprite *sprite); -u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 position); -void sub_81458DC(void); +static u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 position); +static void sub_81458DC(void); static void vblank_8143948(void) { @@ -1210,165 +1208,40 @@ static void sub_81450AC(u8 taskIdA) gUnknown_0203935C = 1; } -#ifdef NONMATCHING -// Sets up the tilemap for 'misc/end_copyright.png' -void sub_8145128(u16 arg0, u16 arg1, u16 arg2) { - u16 i; +static void sub_8145128(u16 arg0, u16 arg1, u16 arg2) { u16 baseTile; - u16 offset0, offset1, offset2, offset3, offset4; + u16 i; LZ77UnCompVram(gCreditsCopyrightEnd_Gfx, (void *) (VRAM + arg0)); LoadPalette(gIntroCopyright_Pal, arg2, sizeof(gIntroCopyright_Pal)); baseTile = (arg2 / 16) << 12; - offset0 = baseTile + 1; for (i = 0; i < 32 * 32; i++) { ((u16 *) (VRAM + arg1))[i] = baseTile + 1; } - offset1 = offset0 + 1; - offset2 = offset1 + 21; - offset3 = offset2 + 20; - offset4 = offset3 + 23; - for (i = 0; i < 21; i++) { - ((u16 *) (VRAM + arg1))[7 * 32 + 4 + i] = offset1 + i; + ((u16 *) (VRAM + arg1))[7 * 32 + 4 + i] = i + 2 + baseTile; } for (i = 0; i < 20; i++) { - ((u16 *) (VRAM + arg1))[9 * 32 + 4 + i] = offset2 + i; + ((u16 *) (VRAM + arg1))[9 * 32 + 4 + i] = i + 23 + baseTile; } for (i = 0; i < 23; i++) { - ((u16 *) (VRAM + arg1))[11 * 32 + 4 + i] = offset3 + i; + ((u16 *) (VRAM + arg1))[11 * 32 + 4 + i] = i + 43 + baseTile; } for (i = 0; i < 12; i++) { - ((u16 *) (VRAM + arg1))[13 * 32 + 4 + i] = offset4 + i; + ((u16 *) (VRAM + arg1))[13 * 32 + 4 + i] = i + 66 + baseTile; } } -#else -__attribute__((naked)) -void sub_8145128(u16 arg0, u16 arg1, u16 arg2) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - adds r3, r0, 0\n\ - adds r4, r2, 0\n\ - lsls r3, 16\n\ - lsrs r3, 16\n\ - lsls r1, 16\n\ - lsrs r7, r1, 16\n\ - lsls r4, 16\n\ - lsrs r5, r4, 16\n\ - ldr r0, _081451EC @ =gCreditsCopyrightEnd_Gfx\n\ - movs r6, 0xC0\n\ - lsls r6, 19\n\ - adds r3, r6\n\ - adds r1, r3, 0\n\ - bl LZ77UnCompVram\n\ - ldr r0, _081451F0 @ =gIntroCopyright_Pal\n\ - adds r1, r5, 0\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - lsrs r4, 20\n\ - lsls r4, 28\n\ - lsrs r4, 16\n\ - movs r2, 0\n\ - adds r1, r4, 0x1\n\ - ldr r3, _081451F4 @ =0x000003ff\n\ -_0814515E:\n\ - lsls r0, r2, 1\n\ - adds r0, r7\n\ - adds r0, r6\n\ - strh r1, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, r3\n\ - bls _0814515E\n\ - movs r2, 0\n\ - adds r0, r4, 0x2\n\ - adds r6, r4, 0\n\ - adds r6, 0x17\n\ - movs r1, 0x2B\n\ - adds r1, r4\n\ - mov r12, r1\n\ - adds r4, 0x42\n\ - ldr r5, _081451F8 @ =0x060001c8\n\ - adds r3, r0, 0\n\ -_08145184:\n\ - lsls r0, r2, 1\n\ - adds r0, r7\n\ - adds r0, r5\n\ - adds r1, r2, r3\n\ - strh r1, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0x14\n\ - bls _08145184\n\ - movs r2, 0\n\ - ldr r5, _081451FC @ =0x06000248\n\ - adds r3, r6, 0\n\ -_0814519E:\n\ - lsls r0, r2, 1\n\ - adds r0, r7\n\ - adds r0, r5\n\ - adds r1, r2, r3\n\ - strh r1, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0x13\n\ - bls _0814519E\n\ - movs r2, 0\n\ - ldr r5, _08145200 @ =0x060002c8\n\ - mov r3, r12\n\ -_081451B8:\n\ - lsls r0, r2, 1\n\ - adds r0, r7\n\ - adds r0, r5\n\ - adds r1, r2, r3\n\ - strh r1, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0x16\n\ - bls _081451B8\n\ - movs r2, 0\n\ - ldr r3, _08145204 @ =0x06000348\n\ -_081451D0:\n\ - lsls r0, r2, 1\n\ - adds r0, r7\n\ - adds r0, r3\n\ - adds r1, r2, r4\n\ - strh r1, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0xB\n\ - bls _081451D0\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_081451EC: .4byte gCreditsCopyrightEnd_Gfx\n\ -_081451F0: .4byte gIntroCopyright_Pal\n\ -_081451F4: .4byte 0x000003ff\n\ -_081451F8: .4byte 0x060001c8\n\ -_081451FC: .4byte 0x06000248\n\ -_08145200: .4byte 0x060002c8\n\ -_08145204: .4byte 0x06000348\n\ - .syntax divided\n"); -} -#endif u16 sub_8145208(u8 arg0) { @@ -1621,33 +1494,14 @@ void spritecb_81454E0(struct Sprite *sprite) { } } -#ifdef NONMATCHING -/* -extern struct SpriteFrameImage *gUnknown_0840B69C[]; -extern const union AmimCmd *const gSpriteAnimTable_81E7C64[]; -extern struct SpriteTemplate gUnknown_0840B6B8; - -void sub_8143648(u16 paletteTag, u8 arg1) { - gUnknown_02024E8C = gUnknown_0840B6B8; - gUnknown_02024E8C.paletteTag = paletteTag; - gUnknown_02024E8C.images = gUnknown_0840B69C[arg1]; - gUnknown_02024E8C.anims = (const union AnimCmd *const *) gSpriteAnimTable_81E7C64; -} -*/ - -void sub_8143648(u16 paletteTag, u8 arg1); - -u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 position) +static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position) { - u32 species; u32 personality; void *palette; u8 spriteId; u8 spriteId2; - // FIXME: For some reason r0 is copied to r6 before. - species = NationalPokedexNumToSpecies(nationalNum); - + species = NationalPokedexNumToSpecies(species); switch (species) { @@ -1693,172 +1547,6 @@ u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 position) return spriteId; } -#else -__attribute__((naked)) -u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x14\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - mov r10, r1\n\ - lsls r2, 16\n\ - lsrs r2, 16\n\ - str r2, [sp, 0x10]\n\ - lsls r3, 16\n\ - lsrs r3, 16\n\ - mov r9, r3\n\ - adds r0, r6, 0\n\ - bl NationalPokedexNumToSpecies\n\ - adds r6, r0, 0\n\ - cmp r6, 0xC9\n\ - beq _081456F8\n\ - movs r0, 0x9A\n\ - lsls r0, 1\n\ - cmp r6, r0\n\ - beq _081456EE\n\ - movs r7, 0\n\ - b _081456FC\n\ -_081456EE:\n\ - ldr r0, _081456F4 @ =gSaveBlock2\n\ - ldr r7, [r0, 0x20]\n\ - b _081456FC\n\ - .align 2, 0\n\ -_081456F4: .4byte gSaveBlock2\n\ -_081456F8:\n\ - ldr r0, _081457E8 @ =gSaveBlock2\n\ - ldr r7, [r0, 0x1C]\n\ -_081456FC:\n\ - lsls r0, r6, 3\n\ - ldr r1, _081457EC @ =gMonFrontPicTable\n\ - adds r0, r1\n\ - ldr r1, _081457F0 @ =gMonFrontPicCoords\n\ - lsls r2, r6, 2\n\ - adds r2, r1\n\ - ldrb r1, [r2]\n\ - ldrb r2, [r2, 0x1]\n\ - movs r3, 0x80\n\ - lsls r3, 18\n\ - ldr r4, _081457F4 @ =gUnknown_0840B5A0\n\ - mov r8, r4\n\ - mov r5, r9\n\ - lsls r4, r5, 2\n\ - add r4, r8\n\ - ldr r4, [r4]\n\ - str r4, [sp]\n\ - str r6, [sp, 0x4]\n\ - str r7, [sp, 0x8]\n\ - movs r4, 0x1\n\ - str r4, [sp, 0xC]\n\ - bl LoadSpecialPokePic\n\ - ldr r2, _081457F8 @ =0x0000ffff\n\ - adds r0, r6, 0\n\ - movs r1, 0\n\ - bl species_and_otid_get_pal\n\ - lsls r5, 4\n\ - mov r8, r5\n\ - movs r1, 0x80\n\ - lsls r1, 1\n\ - add r1, r8\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - movs r2, 0x20\n\ - bl LoadCompressedPalette\n\ - mov r7, r9\n\ - lsls r6, r7, 24\n\ - lsrs r6, 24\n\ - mov r0, r9\n\ - adds r1, r6, 0\n\ - bl sub_8143648\n\ - ldr r0, _081457FC @ =gUnknown_02024E8C\n\ - mov r2, r10\n\ - lsls r1, r2, 16\n\ - asrs r1, 16\n\ - ldr r3, [sp, 0x10]\n\ - lsls r2, r3, 16\n\ - asrs r2, 16\n\ - movs r3, 0\n\ - bl CreateSprite\n\ - adds r4, r0, 0\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - ldr r5, _08145800 @ =gSprites\n\ - lsls r2, r4, 4\n\ - adds r2, r4\n\ - lsls r2, 2\n\ - adds r3, r2, r5\n\ - ldrb r1, [r3, 0x5]\n\ - movs r0, 0xF\n\ - ands r0, r1\n\ - mov r7, r8\n\ - orrs r0, r7\n\ - movs r1, 0xD\n\ - negs r1, r1\n\ - ands r0, r1\n\ - movs r1, 0x4\n\ - orrs r0, r1\n\ - strb r0, [r3, 0x5]\n\ - mov r0, r9\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0x30]\n\ - movs r0, 0x3E\n\ - adds r0, r3\n\ - mov r8, r0\n\ - ldrb r0, [r0]\n\ - orrs r0, r1\n\ - mov r1, r8\n\ - strb r0, [r1]\n\ - adds r0, r5, 0\n\ - adds r0, 0x1C\n\ - adds r2, r0\n\ - ldr r0, _08145804 @ =spritecb_81454E0\n\ - str r0, [r2]\n\ - ldr r0, _08145808 @ =gSpriteTemplate_840CAEC\n\ - movs r2, 0x20\n\ - ldrsh r1, [r3, r2]\n\ - movs r7, 0x22\n\ - ldrsh r2, [r3, r7]\n\ - movs r3, 0x1\n\ - bl CreateSprite\n\ - adds r1, r0, 0\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r5\n\ - strh r4, [r0, 0x2E]\n\ - adds r1, r6, 0\n\ - bl StartSpriteAnimIfDifferent\n\ - adds r0, r4, 0\n\ - add sp, 0x14\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_081457E8: .4byte gSaveBlock2\n\ -_081457EC: .4byte gMonFrontPicTable\n\ -_081457F0: .4byte gMonFrontPicCoords\n\ -_081457F4: .4byte gUnknown_0840B5A0\n\ -_081457F8: .4byte 0x0000ffff\n\ -_081457FC: .4byte gUnknown_02024E8C\n\ -_08145800: .4byte gSprites\n\ -_08145804: .4byte spritecb_81454E0\n\ -_08145808: .4byte gSpriteTemplate_840CAEC\n\ - .syntax divided\n"); -} -#endif void spritecb_814580C(struct Sprite *sprite) { @@ -1876,317 +1564,79 @@ void spritecb_814580C(struct Sprite *sprite) sprite->pos1.y = gSprites[sprite->data0].pos1.y; } -#ifdef NONMATCHING -void sub_81458DC(void) { - u16 dexNum, seenTypesCount, count, i2; - +static void sub_81458DC(void) { struct Unk201C000 *unk201C000 = &ewram1c000; + u16 starter = SpeciesToNationalPokedexNum(GetStarterPokemon(VarGet(VAR_FIRST_POKE))); + u16 seenTypesCount; + u16 page; + u16 dexNum; + u16 j; - const u16 starter = SpeciesToNationalPokedexNum(GetStarterPokemon(VarGet(VAR_FIRST_POKE))); - - dexNum = 1; - seenTypesCount = 0; - for (; dexNum < 386; dexNum++) + for (dexNum = 1, seenTypesCount = 0; dexNum < 386; dexNum++) { if (sub_8090D90(dexNum, 1)) { unk201C000->unk90[seenTypesCount] = dexNum; - seenTypesCount += 1; + seenTypesCount++; } } - count = seenTypesCount; - while (count < 386) + for (dexNum = seenTypesCount; dexNum < 386; dexNum++) { - unk201C000->unk90[count] = 0; - count += 1; + unk201C000->unk90[dexNum] = 0; } unk201C000->unk394 = seenTypesCount; if (unk201C000->unk394 < POKEMON_TILE_COUNT) { - unk201C000->unk8E = unk201C000->unk394; + unk201C000->unk8E = seenTypesCount; } else { unk201C000->unk8E = POKEMON_TILE_COUNT; } - for (i2 = 0; i2 < POKEMON_TILE_COUNT;) + j = 0; + do { - const u16 r2 = Random() % unk201C000->unk394; - unk201C000->unk0[i2] = unk201C000->unk90[r2]; - i2 += 1; + page = Random() % unk201C000->unk394; + unk201C000->unk0[j] = unk201C000->unk90[page]; - unk201C000->unk90[r2] = 0; - unk201C000->unk394 -= 1; - - if (r2 != unk201C000->unk394) + j++; + unk201C000->unk90[page] = 0; + unk201C000->unk394--; + if (page != unk201C000->unk394) { - unk201C000->unk90[r2] = unk201C000->unk90[unk201C000->unk394]; + unk201C000->unk90[page] = unk201C000->unk90[unk201C000->unk394]; unk201C000->unk90[unk201C000->unk394] = 0; } - - if (unk201C000->unk394 == 0) - { - break; - } } + while (unk201C000->unk394 != 0 && j < POKEMON_TILE_COUNT); if (unk201C000->unk8E < POKEMON_TILE_COUNT) { - u16 i; - u16 page; - for (i = unk201C000->unk8E; i < POKEMON_TILE_COUNT; i++) + for (j = unk201C000->unk8E, page = 0; j < POKEMON_TILE_COUNT; j++) { - unk201C000->unk0[i] = unk201C000->unk0[page]; - page += 1; + unk201C000->unk0[j] = unk201C000->unk0[page]; + page++; if (page == unk201C000->unk8E) - { page = 0; - } } + unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; } else { - u16 starterIndex; - for (starterIndex = 0; starterIndex < POKEMON_TILE_COUNT; starterIndex++) - { - if (unk201C000->unk0[starterIndex] == starter) - { - break; - } - } - if (starterIndex < unk201C000->unk8E) + for (dexNum = 0; unk201C000->unk0[dexNum] != starter && dexNum < POKEMON_TILE_COUNT; dexNum++); + + if (dexNum < unk201C000->unk8E - 1) { - unk201C000->unk0[starterIndex] = unk201C000->unk0[POKEMON_TILE_COUNT - 1]; + unk201C000->unk0[dexNum] = unk201C000->unk0[POKEMON_TILE_COUNT - 1]; + unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; } + else + unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; } - - unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; unk201C000->unk8E = POKEMON_TILE_COUNT; } -#else -__attribute__((naked)) -void sub_81458DC(void) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x4\n\ - ldr r7, _0814597C @ =0x0201c000\n\ - ldr r0, _08145980 @ =0x00004023\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - bl GetStarterPokemon\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - bl SpeciesToNationalPokedexNum\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r10, r0\n\ - movs r4, 0x1\n\ - movs r5, 0\n\ - ldr r0, _08145984 @ =0x00000181\n\ - mov r8, r0\n\ -_0814590E:\n\ - adds r0, r4, 0\n\ - movs r1, 0x1\n\ - bl sub_8090D90\n\ - lsls r0, 24\n\ - adds r6, r7, 0\n\ - adds r6, 0x90\n\ - cmp r0, 0\n\ - beq _0814592C\n\ - lsls r0, r5, 1\n\ - adds r0, r6, r0\n\ - strh r4, [r0]\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ -_0814592C:\n\ - adds r0, r4, 0x1\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - cmp r4, r8\n\ - bls _0814590E\n\ - adds r4, r5, 0\n\ - ldr r0, _08145984 @ =0x00000181\n\ - lsls r1, r4, 16\n\ - mov r9, r1\n\ - movs r2, 0x8E\n\ - adds r2, r7\n\ - mov r8, r2\n\ - adds r1, r7, 0\n\ - adds r1, 0x86\n\ - str r1, [sp]\n\ - cmp r4, r0\n\ - bhi _08145964\n\ - adds r1, r6, 0\n\ - movs r3, 0\n\ - adds r2, r0, 0\n\ -_08145954:\n\ - lsls r0, r4, 1\n\ - adds r0, r1, r0\n\ - strh r3, [r0]\n\ - adds r0, r4, 0x1\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - cmp r4, r2\n\ - bls _08145954\n\ -_08145964:\n\ - movs r2, 0xE5\n\ - lsls r2, 2\n\ - adds r0, r7, r2\n\ - strh r5, [r0]\n\ - mov r1, r9\n\ - lsrs r0, r1, 16\n\ - cmp r0, 0x43\n\ - bhi _08145988\n\ - mov r2, r8\n\ - strh r5, [r2]\n\ - b _0814598E\n\ - .align 2, 0\n\ -_0814597C: .4byte 0x0201c000\n\ -_08145980: .4byte 0x00004023\n\ -_08145984: .4byte 0x00000181\n\ -_08145988:\n\ - movs r0, 0x44\n\ - mov r1, r8\n\ - strh r0, [r1]\n\ -_0814598E:\n\ - movs r5, 0\n\ - movs r2, 0xE5\n\ - lsls r2, 2\n\ - adds r4, r7, r2\n\ - mov r9, r5\n\ - b _0814599E\n\ -_0814599A:\n\ - cmp r5, 0x43\n\ - bhi _081459EE\n\ -_0814599E:\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - ldrh r1, [r4]\n\ - bl __umodsi3\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - lsls r1, r5, 1\n\ - adds r1, r7, r1\n\ - lsls r0, r2, 1\n\ - adds r3, r6, r0\n\ - ldrh r0, [r3]\n\ - strh r0, [r1]\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - mov r0, r9\n\ - strh r0, [r3]\n\ - ldrh r0, [r4]\n\ - subs r0, 0x1\n\ - strh r0, [r4]\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r2, r0\n\ - beq _081459E8\n\ - ldrh r0, [r4]\n\ - lsls r0, 1\n\ - adds r0, r6, r0\n\ - ldrh r0, [r0]\n\ - strh r0, [r3]\n\ - ldrh r0, [r4]\n\ - lsls r0, 1\n\ - adds r0, r6, r0\n\ - mov r1, r9\n\ - strh r1, [r0]\n\ -_081459E8:\n\ - ldrh r0, [r4]\n\ - cmp r0, 0\n\ - bne _0814599A\n\ -_081459EE:\n\ - mov r2, r8\n\ - ldrh r0, [r2]\n\ - cmp r0, 0x43\n\ - bhi _08145A26\n\ - adds r5, r0, 0\n\ - movs r2, 0\n\ - cmp r5, 0x43\n\ - bhi _08145A5C\n\ - mov r3, r8\n\ -_08145A00:\n\ - lsls r1, r5, 1\n\ - adds r1, r7, r1\n\ - lsls r0, r2, 1\n\ - adds r0, r7, r0\n\ - ldrh r0, [r0]\n\ - strh r0, [r1]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - ldrh r0, [r3]\n\ - cmp r2, r0\n\ - bne _08145A1A\n\ - movs r2, 0\n\ -_08145A1A:\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - cmp r5, 0x43\n\ - bls _08145A00\n\ - b _08145A5C\n\ -_08145A26:\n\ - movs r4, 0\n\ - ldrh r0, [r7]\n\ - cmp r0, r10\n\ - beq _08145A42\n\ -_08145A2E:\n\ - adds r0, r4, 0x1\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - lsls r0, r4, 1\n\ - adds r0, r7, r0\n\ - ldrh r0, [r0]\n\ - cmp r0, r10\n\ - beq _08145A42\n\ - cmp r4, 0x43\n\ - bls _08145A2E\n\ -_08145A42:\n\ - mov r1, r8\n\ - ldrh r0, [r1]\n\ - subs r0, 0x1\n\ - cmp r4, r0\n\ - bge _08145A5C\n\ - lsls r0, r4, 1\n\ - adds r0, r7, r0\n\ - ldr r2, [sp]\n\ - ldrh r1, [r2]\n\ - strh r1, [r0]\n\ - mov r0, r10\n\ - strh r0, [r2]\n\ - b _08145A62\n\ -_08145A5C:\n\ - mov r2, r10\n\ - ldr r1, [sp]\n\ - strh r2, [r1]\n\ -_08145A62:\n\ - movs r0, 0x44\n\ - mov r1, r8\n\ - strh r0, [r1]\n\ - add sp, 0x4\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} -#endif -- cgit v1.2.3 From 6f2cd1e2da53cb0c4a4f4465d8ad72532050174d Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sun, 21 May 2017 13:25:26 +0200 Subject: Add data2 header --- src/credits.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index ca5553c2e..de1d52361 100644 --- a/src/credits.c +++ b/src/credits.c @@ -1,5 +1,6 @@ #include "global.h" #include "asm.h" +#include "data2.h" #include "decompress.h" #include "event_data.h" #include "m4a.h" @@ -20,11 +21,6 @@ asm(".set OFFSET_REG_BLDALPHA, 0x52"); asm(".set REG_BLDCNT, REG_BASE + OFFSET_REG_BLDCNT"); asm(".set REG_BLDALPHA, REG_BASE + OFFSET_REG_BLDALPHA"); -struct MonCoords -{ - u8 x, y; -}; - extern void *species_and_otid_get_pal(u32, u16, u16); enum @@ -173,10 +169,6 @@ extern s16 gUnknown_0203935C; extern u8 gReservedSpritePaletteCount; -// data/data2 -extern struct MonCoords gMonFrontPicCoords[]; -extern struct SpriteSheet gMonFrontPicTable[]; - // data/starter_choose extern u16 gBirchBagGrassPal[32]; extern u8 gBirchGrassTilemap[]; @@ -1520,8 +1512,8 @@ static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position) LoadSpecialPokePic( &gMonFrontPicTable[species], - gMonFrontPicCoords[species].x, - gMonFrontPicCoords[species].y, + gMonFrontPicCoords[species].coords, + gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[position], species, -- cgit v1.2.3 From 1398206bd5feeea5f04fd26e6a9a28a773125cd6 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Mon, 15 May 2017 20:09:04 +0200 Subject: Make credits match German build --- src/credits.c | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index de1d52361..5af2d1e3c 100644 --- a/src/credits.c +++ b/src/credits.c @@ -70,18 +70,37 @@ enum PAGE_PROGRAMMERS, PAGE_GRAPHIC_DESIGNERS, PAGE_PRODUCT_SUPPORT, + +#if ENGLISH PAGE_ARTWORK, PAGE_TEXT_EDITOR, PAGE_NOA_TESTING, PAGE_BRAILLE_CODE_CHECK_1, PAGE_BRAILLE_CODE_CHECK_2, +#elif GERMAN + PAGE_NOE_TESTING, + PAGE_BRAILLE_CODE_CHECK_1, +#endif + PAGE_SPECIAL_THANKS_4, PAGE_SPECIAL_THANKS_5, PAGE_COUNT }; +#if ENGLISH +#define POKEMON_TILE_COUNT 68 +#define LAST_PAGE (PAGE_TEXT_EDITOR) +#define UNK_DEFINE_45 (0x45) #define UNK_DEFINE_82 (0x82) +#define UNK_DEF_1F3 (499) +#elif GERMAN +#define POKEMON_TILE_COUNT 65 +#define LAST_PAGE (PAGE_NOE_TESTING) +#define UNK_DEFINE_45 (8) +#define UNK_DEFINE_82 (0x8D) +#define UNK_DEF_1F3 (554) +#endif #define COLOR_DARK_GREEN 0x1967 #define COLOR_LIGHT_GREEN 0x328D @@ -125,7 +144,6 @@ enum TDE_TASK_A_ID = 2, }; -#define POKEMON_TILE_COUNT 68 struct Unk201C000 { @@ -746,8 +764,6 @@ static void task_b_81441B8(u8 taskIdB) } } -#define LAST_PAGE (PAGE_TEXT_EDITOR) - static u8 sub_8144454(u8 page, u8 taskIdA) { // Starts with bike + ocean + morning @@ -942,8 +958,6 @@ void task_c_8144664(u8 taskIdC) } } -#define UNK_DEF_1F3 (499) - void task_e_8144934(u8 taskIdE) { s16 taskIdC; @@ -1008,8 +1022,6 @@ void task_e_8144934(u8 taskIdE) } } -#define UNK_DEFINE_45 (0x45) - static void sub_8144A68(u8 data, u8 taskIdA) { switch (data) @@ -1280,12 +1292,19 @@ static void sub_81452D0(u16 arg0, u16 palette) for (pos = 0; pos < 32 * 32; pos++) ((u16 *) (VRAM + arg0))[pos] = baseTile + 1; +#if ENGLISH sub_814524C(gUnknown_0840B83C, 3, 7, arg0, palette); sub_814524C(gUnknown_0840B84B, 7, 7, arg0, palette); sub_814524C(gUnknown_0840B85A, 11, 7, arg0, palette); sub_814524C(gUnknown_0840B85A, 16, 7, arg0, palette); sub_814524C(gUnknown_0840B869, 20, 7, arg0, palette); sub_814524C(gUnknown_0840B878, 24, 7, arg0, palette); +#elif GERMAN + sub_814524C(gUnknown_0840B85A, 7, 7, arg0, palette); + sub_814524C(gUnknown_0840B869, 11, 7, arg0, palette); + sub_814524C(gUnknown_0840B878, 15, 7, arg0, palette); + sub_814524C(gUnknown_0840B85A, 19, 7, arg0, palette); +#endif } static void spritecb_player_8145378(struct Sprite *sprite) -- cgit v1.2.3 From 4d2b22a899c11dfcacfec6889968ab01655a3fe3 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 26 May 2017 14:53:51 +0200 Subject: Add headers --- src/credits.c | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index 5af2d1e3c..247a69dbd 100644 --- a/src/credits.c +++ b/src/credits.c @@ -1,5 +1,7 @@ +#include "task.h" +#include "intro_credits_graphics.h" +#include "hall_of_fame.h" #include "global.h" -#include "asm.h" #include "data2.h" #include "decompress.h" #include "event_data.h" @@ -21,8 +23,6 @@ asm(".set OFFSET_REG_BLDALPHA, 0x52"); asm(".set REG_BLDCNT, REG_BASE + OFFSET_REG_BLDCNT"); asm(".set REG_BLDALPHA, REG_BASE + OFFSET_REG_BLDALPHA"); -extern void *species_and_otid_get_pal(u32, u16, u16); - enum { PAGE_TITLE, @@ -187,11 +187,6 @@ extern s16 gUnknown_0203935C; extern u8 gReservedSpritePaletteCount; -// data/starter_choose -extern u16 gBirchBagGrassPal[32]; -extern u8 gBirchGrassTilemap[]; -extern u8 gBirchHelpGfx[]; - // data/hall_of_fame extern void *gUnknown_0840B5A0[]; @@ -211,14 +206,6 @@ extern const union AnimCmd *const gSpriteAnimTable_0840CA54[]; extern const union AnimCmd *const gSpriteAnimTable_0840CA94[]; extern struct SpriteTemplate gSpriteTemplate_840CAEC; -// data/intro_credits_graphics -extern const struct SpriteSheet gIntro2BrendanSpriteSheet; -extern const struct SpriteSheet gIntro2MaySpriteSheet; -extern const struct SpriteSheet gIntro2BicycleSpriteSheet; -extern const struct SpritePalette gIntro2SpritePalettes[]; -extern const struct SpriteSheet gUnknown_08416E24; -extern const struct SpriteSheet gUnknown_08416E34; - // graphics extern u8 gCreditsCopyrightEnd_Gfx[]; extern u16 gIntroCopyright_Pal[16]; -- cgit v1.2.3 From f26daa3d6954d2db3a7c44b79d319a7a084462c2 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 26 May 2017 15:01:42 +0200 Subject: Sort includes --- src/credits.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index 247a69dbd..e66fbe1e7 100644 --- a/src/credits.c +++ b/src/credits.c @@ -1,10 +1,9 @@ -#include "task.h" -#include "intro_credits_graphics.h" -#include "hall_of_fame.h" #include "global.h" #include "data2.h" #include "decompress.h" #include "event_data.h" +#include "hall_of_fame.h" +#include "intro_credits_graphics.h" #include "m4a.h" #include "main.h" #include "menu.h" @@ -15,6 +14,7 @@ #include "sound.h" #include "species.h" #include "starter_choose.h" +#include "task.h" #include "trig.h" asm(".set REG_BASE, 0x4000000"); -- cgit v1.2.3 From b4aa5dfd4053ed2de5d046f06884376641c6e8b5 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 26 May 2017 16:50:46 +0200 Subject: Make rom match checksum --- src/credits.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index e66fbe1e7..6355a17e9 100644 --- a/src/credits.c +++ b/src/credits.c @@ -448,7 +448,7 @@ void task_a_8143D04(u8 taskIdA) gReservedSpritePaletteCount = 8; LZ77UnCompVram(&gBirchHelpGfx, (void *)VRAM); LZ77UnCompVram(&gBirchGrassTilemap, (void *)(VRAM + 0x3800)); - LoadPalette(gBirchBagGrassPal + 1, 1, 31 * 2); + LoadPalette(gBirchBagGrassPal[0] + 1, 1, 31 * 2); for (i = 0; i < 0x800; i++) HALL_OF_FAME_SHEET_0[i] = 0x11; -- cgit v1.2.3 From e072ddd6fbae8b303de546d0e9bd5ace2ecb20a1 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 19 Jun 2017 13:34:32 -0500 Subject: move data to C and introduce CompressedSpriteSheet and CompressedSpritePalette --- src/credits.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/credits.c') diff --git a/src/credits.c b/src/credits.c index a7d6191e6..8ec126a41 100644 --- a/src/credits.c +++ b/src/credits.c @@ -1495,7 +1495,7 @@ void spritecb_81454E0(struct Sprite *sprite) { static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position) { u32 personality; - const u16 *palette; + const u8 *lzPaletteData; u8 spriteId; u8 spriteId2; @@ -1527,8 +1527,8 @@ static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position) 1 ); - palette = species_and_otid_get_pal(species, 0, 0xFFFF); - LoadCompressedPalette(palette, 0x100 + (position * 16), 0x20); + lzPaletteData = species_and_otid_get_pal(species, 0, 0xFFFF); + LoadCompressedPalette(lzPaletteData, 0x100 + (position * 16), 0x20); sub_8143648(position, position); spriteId = CreateSprite(&gUnknown_02024E8C, x, y, 0); -- cgit v1.2.3