diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/bg.c | 13 | ||||
-rw-r--r-- | src/quest_log.c | 77 |
2 files changed, 83 insertions, 7 deletions
@@ -1067,7 +1067,6 @@ void CopyBgTilemapBufferToVram(u8 bg) void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u8 height) { - void* srcCopy; u16 destX16; u16 destY16; u16 mode; @@ -1077,26 +1076,30 @@ void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u switch (GetBgType(bg)) { case 0: - srcCopy = src; + { + u16 * srcCopy = src; for (destY16 = destY; destY16 < (destY + height); destY16++) { for (destX16 = destX; destX16 < (destX + width); destX16++) { - ((u16*)sGpuBgConfigs2[bg].tilemap)[((destY16 * 0x20) + destX16)] = *((u16*)srcCopy)++; + ((u16*)sGpuBgConfigs2[bg].tilemap)[((destY16 * 0x20) + destX16)] = *(srcCopy)++; } } break; + } case 1: - srcCopy = src; + { + u8 * srcCopy = src; mode = GetBgMetricAffineMode(bg, 0x1); for (destY16 = destY; destY16 < (destY + height); destY16++) { for (destX16 = destX; destX16 < (destX + width); destX16++) { - ((u8*)sGpuBgConfigs2[bg].tilemap)[((destY16 * mode) + destX16)] = *((u8*)srcCopy)++; + ((u8*)sGpuBgConfigs2[bg].tilemap)[((destY16 * mode) + destX16)] = *(srcCopy)++; } } break; + } } } } diff --git a/src/quest_log.c b/src/quest_log.c index 4cf7e6c95..2c98ca377 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -13,6 +13,8 @@ #include "overworld.h" #include "field_fadetransition.h" #include "field_weather.h" +#include "map_obj_80688E4.h" +#include "field_player_avatar.h" #include "item.h" #include "wild_encounter.h" #include "help_system.h" @@ -39,6 +41,8 @@ struct UnkStruct_203AE98 u8 unk_6; }; +extern u16 gUnknown_20371F8[]; + EWRAM_DATA u8 gUnknown_203ADF8 = 0; EWRAM_DATA u8 gUnknown_203ADF9 = 0; EWRAM_DATA u8 gUnknown_203ADFA = 0; @@ -48,6 +52,7 @@ EWRAM_DATA void * gUnknown_203AE04 = NULL; EWRAM_DATA u16 * gUnknown_203AE08 = NULL; EWRAM_DATA void * gUnknown_203AE0C[32] = {NULL}; EWRAM_DATA void (* gUnknown_203AE8C)(void) = 0; +EWRAM_DATA u16 *gUnknown_203AE90 = NULL; EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0}; EWRAM_DATA struct UnkStruct_203AE98 gUnknown_203AE98[32] = {0}; EWRAM_DATA u16 gUnknown_203AF98 = 0; @@ -82,7 +87,10 @@ void sub_8111D10(void); void sub_8111D90(u8); void sub_8111E20(void); void sub_8111E64(s8); +void sub_8111E84(void); bool8 sub_8111F60(void); +void sub_8111F8C(u8); +void sub_8111FCC(u8); void sub_8112364(void); void sub_8112888(u8); void sub_8112940(u8, struct UnkStruct_203AE98 *, u16); @@ -916,7 +924,7 @@ void sub_81118F4(s8 a0) void sub_8111914(void) { - if (!gUnknown_2037AB8.active) + if (!gPaletteFade.active) { ScriptContext2_Enable(); if (++gUnknown_203ADF8 < 4 && gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_000) @@ -985,7 +993,7 @@ void sub_8111A34(u8 taskId) } break; case 1: - if (!gUnknown_2037AB8.active) + if (!gPaletteFade.active) { gUnknown_3005E88 = 0; routine = (void (*)(void)) GetWordTaskArg(taskId, 14); @@ -1158,3 +1166,68 @@ void sub_8111D90(u8 a0) Free(buffer); } } + +void sub_8111E20(void) +{ + ClearWindowTilemap(gUnknown_203ADFE[2]); + FillWindowPixelRect(gUnknown_203ADFE[2], 15, 0, 0, 0xf0, 0x30); + CopyWindowToVram(gUnknown_203ADFE[2], 2); + PutWindowTilemap(gUnknown_203ADFE[1]); + CopyWindowToVram(gUnknown_203ADFE[1], 1); +} + +void sub_8111E64(s8 a0) +{ + fade_screen(1, a0); + gUnknown_203AE8C = sub_8111E84; +} + +void sub_8111E84(void) +{ + if (!gPaletteFade.active) + { + ScriptContext2_Enable(); + for (gUnknown_203ADF8 = gUnknown_203ADF8; gUnknown_203ADF8 < 4; gUnknown_203ADF8++) + { + if (gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_000 == 0) + break; + sub_811175C(gUnknown_203ADF8, gUnknown_203AE98); + } + gUnknown_3005E88 = 0; + sub_8111984(); + } +} + +void sub_8111F14(void) +{ + if (gUnknown_203ADFA == 3) + gUnknown_203AE90 = AllocZeroed(0x200 * sizeof(u16)); +} + +void sub_8111F38(u16 a0, u16 a1) +{ + CpuSet(gUnknown_20371F8 + a0, gUnknown_203AE90 + a0, a1); +} + +bool8 sub_8111F60(void) +{ + LoadPalette(stdpal_get(4), 0xF0, 0x20); + sub_8111070(0); + sub_807DF7C(); + CreateTask(sub_8111F8C, 0xFF); + return TRUE; +} + +void sub_8111F8C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (ScriptContext2_IsEnabled() != TRUE) + { + player_bitmagic(); + sub_805C270(); + sub_805C780(); + ScriptContext2_Enable(); + task->func = sub_8111FCC; + } +} |