{"action":"created","comment":{"url":"https://api.github.com/repos/pret/pokeemerald/pulls/comments/240019183","pull_request_review_id":182959898,"id":240019183,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI0MDAxOTE4Mw==","diff_hunk":"@@ -0,0 +1,2471 @@\n+#include \"global.h\"\n+#include \"event_object_movement.h\"\n+#include \"field_weather.h\"\n+#include \"overworld.h\"\n+#include \"random.h\"\n+#include \"script.h\"\n+#include \"constants/weather.h\"\n+#include \"constants/songs.h\"\n+#include \"sound.h\"\n+#include \"sprite.h\"\n+#include \"task.h\"\n+#include \"trig.h\"\n+#include \"gpu_regs.h\"\n+\n+// This file's functions.\n+void sub_80AC6B4(struct Sprite *);\n+\n+// EWRAM\n+EWRAM_DATA static u8 gUnknown_02038BC4 = 0;\n+EWRAM_DATA static u16 gUnknown_02038BC6 = 0;\n+\n+// CONST\n+const u16 gUnknown_0854C290[] = INCBIN_U16(\"graphics/weather/1.gbapal\");\n+const u16 gUnknown_0854C2B0[] = INCBIN_U16(\"graphics/weather/2.gbapal\");\n+const u8 gWeatherFog2Tiles[] = INCBIN_U8(\"graphics/weather/fog2.4bpp\");\n+const u8 gWeatherFog1Tiles[] = INCBIN_U8(\"graphics/weather/fog1.4bpp\");\n+const u8 gWeatherCloudTiles[] = INCBIN_U8(\"graphics/weather/cloud.4bpp\");\n+const u8 gWeatherSnow1Tiles[] = INCBIN_U8(\"graphics/weather/snow0.4bpp\");\n+const u8 gWeatherSnow2Tiles[] = INCBIN_U8(\"graphics/weather/snow1.4bpp\");\n+const u8 gWeatherBubbleTiles[] = INCBIN_U8(\"graphics/weather/bubble.4bpp\");\n+const u8 gWeatherAshTiles[] = INCBIN_U8(\"graphics/weather/ash.4bpp\");\n+const u8 gWeatherRainTiles[] = INCBIN_U8(\"graphics/weather/rain.4bpp\");\n+const u8 gWeatherSandstormTiles[] = INCBIN_U8(\"graphics/weather/sandstorm.4bpp\");\n+\n+static const struct Coords16 gUnknown_0854FB50[] =\n+{\n+    { 0, 66},\n+    { 5, 73},\n+    {10, 78},\n+};\n+\n+static const struct SpriteSheet sCloudSpriteSheet = {gWeatherCloudTiles, sizeof(gWeatherCloudTiles), 0x1200};\n+\n+static const struct OamData gOamData_839A9DC =\n+{\n+    .y = 0,\n+    .affineMode = 0,\n+    .objMode = 1,\n+    .mosaic = 0,\n+    .bpp = 0,\n+    .shape = 0,\n+    .x = 0,\n+    .matrixNum = 0,\n+    .size = 3,\n+    .tileNum = 0,\n+    .priority = 3,\n+    .paletteNum = 0,\n+    .affineParam = 0,\n+};\n+\n+static const union AnimCmd gSpriteAnim_839A9E4[] =\n+{\n+    ANIMCMD_FRAME(0, 16),\n+    ANIMCMD_END,\n+};\n+\n+static const union AnimCmd *const gSpriteAnimTable_839A9EC[] =\n+{\n+    gSpriteAnim_839A9E4,\n+};\n+\n+static const struct SpriteTemplate sCloudSpriteTemplate =\n+{\n+    .tileTag = 4608,\n+    .paletteTag = 4609,\n+    .oam = &gOamData_839A9DC,\n+    .anims = gSpriteAnimTable_839A9EC,\n+    .images = NULL,\n+    .affineAnims = gDummySpriteAffineAnimTable,\n+    .callback = sub_80AC6B4,\n+};\n+\n+//------------------------------------------------------------------------------\n+// Clouds\n+//------------------------------------------------------------------------------\n+\n+void Clouds_InitVars(void)\n+{\n+    gWeatherPtr->gammaTargetIndex = 0;\n+    gWeatherPtr->gammaStepDelay = 20;\n+    gWeatherPtr->weatherGfxLoaded = FALSE;\n+    gWeatherPtr->initStep = 0;\n+    if (gWeatherPtr->cloudSpritesCreated == FALSE)\n+        Weather_SetBlendCoeffs(0, 16);\n+}\n+\n+void Clouds_InitAll(void)\n+{\n+    Clouds_InitVars();\n+    while (gWeatherPtr->weatherGfxLoaded == FALSE)\n+        Clouds_Main();\n+}\n+\n+void CreateCloudSprites(void);\n+\n+void Clouds_Main(void)\n+{\n+    switch (gWeatherPtr->initStep)\n+    {\n+    case 0:\n+        CreateCloudSprites();\n+        gWeatherPtr->initStep++;\n+        break;\n+    case 1:\n+        Weather_SetTargetBlendCoeffs(12, 8, 1);\n+        gWeatherPtr->initStep++;\n+        break;\n+    case 2:\n+        if (Weather_UpdateBlend())\n+        {\n+            gWeatherPtr->weatherGfxLoaded = TRUE;\n+            gWeatherPtr->initStep++;\n+        }\n+        break;\n+    }\n+}\n+\n+void sub_807E0A0(void);\n+\n+bool8 Clouds_Finish(void)\n+{\n+    switch (gWeatherPtr->finishStep)\n+    {\n+    case 0:\n+        Weather_SetTargetBlendCoeffs(0, 16, 1);\n+        gWeatherPtr->finishStep++;\n+        return TRUE;\n+    case 1:\n+        if (Weather_UpdateBlend())\n+        {\n+            sub_807E0A0();\n+            gWeatherPtr->finishStep++;\n+        }\n+        return TRUE;\n+    }\n+    return FALSE;\n+}\n+\n+//------------------------------------------------------------------------------\n+// Weather 2\n+//------------------------------------------------------------------------------\n+\n+void Weather2_InitVars(void)\n+{\n+    gWeatherPtr->gammaTargetIndex = 0;\n+    gWeatherPtr->gammaStepDelay = 20;\n+}\n+\n+void Weather2_InitAll(void)\n+{\n+    Weather2_InitVars();\n+}\n+\n+void Weather2_Main(void)\n+{\n+}\n+\n+bool8 Weather2_Finish(void)\n+{\n+    return 0;\n+}\n+\n+void CreateCloudSprites(void)\n+{\n+    u16 i;\n+\n+    if (gWeatherPtr->cloudSpritesCreated == TRUE)\n+        return;\n+    LoadSpriteSheet(&sCloudSpriteSheet);\n+    LoadCustomWeatherSpritePalette(gUnknown_0854C290);\n+    for (i = 0; i < 3; i++)\n+    {\n+        u8 spriteId = CreateSprite(&sCloudSpriteTemplate, 0, 0, 0xFF);\n+\n+        if (spriteId != 64)\n+        {\n+            struct Sprite *sprite;\n+\n+            gWeatherPtr->sprites.s1.cloudSprites[i] = &gSprites[spriteId];\n+            sprite = gWeatherPtr->sprites.s1.cloudSprites[i];\n+            sub_8093038(gUnknown_0854FB50[i].x + 7, gUnknown_0854FB50[i].y + 7, &sprite->pos1.x, &sprite->pos1.y);\n+            sprite->coordOffsetEnabled = TRUE;\n+        }\n+        else\n+        {\n+            gWeatherPtr->sprites.s1.cloudSprites[i] = NULL;\n+        }\n+    }\n+    gWeatherPtr->cloudSpritesCreated = TRUE;\n+}\n+\n+void sub_807E0A0(void)\n+{\n+    u16 i;\n+\n+    if (gWeatherPtr->cloudSpritesCreated == FALSE)\n+        return;\n+    for (i = 0; i < 3; i++)\n+    {\n+        if (gWeatherPtr->sprites.s1.cloudSprites[i] != NULL)\n+            DestroySprite(gWeatherPtr->sprites.s1.cloudSprites[i]);\n+    }\n+    FreeSpriteTilesByTag(0x1200);\n+    gWeatherPtr->cloudSpritesCreated = FALSE;\n+}\n+\n+void sub_80AC6B4(struct Sprite *sprite)\n+{\n+    sprite->data[0] = (sprite->data[0] + 1) & 1;\n+    if (sprite->data[0] != 0)\n+        sprite->pos1.x--;\n+}\n+\n+//------------------------------------------------------------------------------\n+// Drought\n+//------------------------------------------------------------------------------\n+\n+void Drought_InitVars(void)\n+{\n+    gWeatherPtr->initStep = 0;\n+    gWeatherPtr->weatherGfxLoaded = FALSE;\n+    gWeatherPtr->gammaTargetIndex = 0;\n+    gWeatherPtr->gammaStepDelay = 0;\n+}\n+\n+void Drought_InitAll(void)\n+{\n+    Drought_InitVars();\n+    while (gWeatherPtr->weatherGfxLoaded == FALSE)\n+        Drought_Main();\n+}\n+\n+void Drought_Main(void)\n+{\n+    switch (gWeatherPtr->initStep)\n+    {\n+    case 0:\n+        if (gWeatherPtr->palProcessingState != WEATHER_PAL_STATE_CHANGING_WEATHER)\n+            gWeatherPtr->initStep++;\n+        break;\n+    case 1:\n+        ResetDroughtWeatherPaletteLoading();\n+        gWeatherPtr->initStep++;\n+        break;\n+    case 2:\n+        if (LoadDroughtWeatherPalettes() == FALSE)\n+            gWeatherPtr->initStep++;\n+        break;\n+    case 3:\n+        sub_80ABFF0();\n+        gWeatherPtr->initStep++;\n+        break;\n+    case 4:\n+        sub_80AC01C();\n+        if (gWeatherPtr->unknown_73C == 6)\n+        {\n+            gWeatherPtr->weatherGfxLoaded = TRUE;\n+            gWeatherPtr->initStep++;\n+        }\n+        break;\n+    default:\n+        sub_80AC01C();\n+        break;\n+    }\n+}\n+\n+bool8 Drought_Finish(void)\n+{\n+    return 0;\n+}\n+\n+void task50_0807B6D4(u8);\n+\n+void sub_80AC81C(void)\n+{\n+    CreateTask(task50_0807B6D4, 0x50);\n+}\n+\n+#define tState      data[0]\n+#define tBlendY     data[1]\n+#define tBlendDelay data[2]\n+#define tWinRange   data[3]\n+\n+void task50_0807B6D4(u8 taskId)\n+{\n+    struct Task *task = &gTasks[taskId];\n+\n+    switch (task->tState)\n+    {\n+    case 0:\n+        task->tBlendY = 0;\n+        task->tBlendDelay = 0;\n+        task->tWinRange = REG_WININ;\n+        SetGpuReg(REG_OFFSET_WININ, WIN_RANGE(63, 63));\n+        SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_EFFECT_LIGHTEN);\n+        SetGpuReg(REG_OFFSET_BLDY, 0);\n+        task->tState++;\n+        // fall through\n+    case 1:\n+        task->tBlendY += 3;\n+        if (task->tBlendY > 16)\n+            task->tBlendY = 16;\n+        SetGpuReg(REG_OFFSET_BLDY, task->tBlendY);\n+        if (task->tBlendY >= 16)\n+            task->tState++;\n+        break;\n+    case 2:\n+        task->tBlendDelay++;\n+        if (task->tBlendDelay > 9)\n+        {\n+            task->tBlendDelay = 0;\n+            task->tBlendY--;\n+            if (task->tBlendY <= 0)\n+            {\n+                task->tBlendY = 0;\n+                task->tState++;\n+            }\n+            SetGpuReg(REG_OFFSET_BLDY, task->tBlendY);\n+        }\n+        break;\n+    case 3:\n+        SetGpuReg(REG_OFFSET_BLDCNT, 0);\n+        SetGpuReg(REG_OFFSET_BLDY, 0);\n+        SetGpuReg(REG_OFFSET_WININ, task->tWinRange);\n+        task->tState++;\n+        break;\n+    case 4:\n+        EnableBothScriptContexts();\n+        DestroyTask(taskId);\n+        break;\n+    }\n+}\n+\n+#undef tState\n+#undef tBlendY\n+#undef tBlendDelay\n+#undef tWinRange\n+\n+//------------------------------------------------------------------------------\n+// Light Rain\n+//------------------------------------------------------------------------------\n+\n+void LightRain_InitVars(void)\n+{\n+    gWeatherPtr->initStep = 0;\n+    gWeatherPtr->weatherGfxLoaded = FALSE;\n+    gWeatherPtr->unknown_6D6 = 0;\n+    gWeatherPtr->unknown_6DB = 8;\n+    gWeatherPtr->unknown_6DC = 0;\n+    gWeatherPtr->unknown_6D9 = 10;\n+    gWeatherPtr->gammaTargetIndex = 3;\n+    gWeatherPtr->gammaStepDelay = 20;\n+    SetRainStrengthFromSoundEffect(SE_T_KOAME);\n+}\n+\n+void LightRain_InitAll(void)\n+{\n+    LightRain_InitVars();\n+    while (gWeatherPtr->weatherGfxLoaded == FALSE)\n+        LightRain_Main();\n+}\n+\n+void LoadRainSpriteSheet(void);\n+u8 CreateRainSprite(void);\n+u8 sub_807E8E8(void);\n+\n+void LightRain_Main(void)\n+{\n+    switch (gWeatherPtr->initStep)\n+    {\n+    case 0:\n+        LoadRainSpriteSheet();\n+        gWeatherPtr->initStep++;\n+        break;\n+    case 1:\n+        if (CreateRainSprite() == 0)\n+            gWeatherPtr->initStep++;\n+        break;\n+    case 2:\n+        if (sub_807E8E8() == FALSE)\n+        {\n+            gWeatherPtr->weatherGfxLoaded = TRUE;\n+            gWeatherPtr->initStep++;\n+        }\n+        break;\n+    }\n+}\n+\n+void DestroyRainSprites(void);\n+\n+bool8 LightRain_Finish(void)\n+{\n+    switch (gWeatherPtr->finishStep)\n+    {\n+    case 0:\n+        if (gWeatherPtr->nextWeather == WEATHER_RAIN_LIGHT\n+         || gWeatherPtr->nextWeather == WEATHER_RAIN_MED\n+         || gWeatherPtr->nextWeather == WEATHER_RAIN_HEAVY)\n+        {\n+            gWeatherPtr->finishStep = 0xFF;\n+            return FALSE;\n+        }\n+        else\n+        {\n+            gWeatherPtr->unknown_6D9 = 0;\n+            gWeatherPtr->finishStep++;\n+        }\n+        // fall through\n+    case 1:\n+        if (sub_807E8E8() == FALSE)\n+        {\n+            DestroyRainSprites();\n+            gWeatherPtr->finishStep++;\n+            return FALSE;\n+        }\n+        return TRUE;\n+    }\n+    return FALSE;\n+}\n+\n+// defined below\n+extern const s16 gUnknown_0839AABC[][2];\n+extern const u16 gUnknown_0839AAC4[][2];\n+\n+void sub_807E4EC(struct Sprite *sprite)\n+{\n+    u32 randVal;\n+    u16 r6;\n+    s32 r4;\n+    s32 r0;\n+\n+    if (sprite->data[1] == 0)\n+        sprite->data[1] = 361;\n+    randVal = sprite->data[1] * 1103515245 + 12345;\n+    sprite->data[1] = ((randVal & 0x7FFF0000) >> 16) % 600;\n+\n+    r6 = gUnknown_0839AAC4[gWeatherPtr->unknown_6DC][0];\n+\n+    r4 = sprite->data[1] % 30;\n+    sprite->data[2] = r4 * 8;  // useless assignment\n+\n+    r0 = sprite->data[1] / 30;\n+    sprite->data[3] = r0 * 8;  // useless assignment\n+\n+    sprite->data[2] = r4;\n+    sprite->data[2] <<= 7;\n+\n+    sprite->data[3] = r0;\n+    sprite->data[3] <<= 7;\n+\n+    sprite->data[2] -= gUnknown_0839AABC[gWeatherPtr->unknown_6DC][0] * r6;\n+    sprite->data[3] -= gUnknown_0839AABC[gWeatherPtr->unknown_6DC][1] * r6;\n+\n+    StartSpriteAnim(sprite, 0);\n+    sprite->data[4] = 0;\n+    sprite->coordOffsetEnabled = FALSE;\n+    sprite->data[0] = r6;\n+}\n+\n+void sub_807E5C0(struct Sprite *sprite)\n+{\n+    if (sprite->data[4] == 0)\n+    {\n+        sprite->data[2] += gUnknown_0839AABC[gWeatherPtr->unknown_6DC][0];\n+        sprite->data[3] += gUnknown_0839AABC[gWeatherPtr->unknown_6DC][1];\n+        sprite->pos1.x = sprite->data[2] >> 4;\n+        sprite->pos1.y = sprite->data[3] >> 4;\n+\n+        if (sprite->data[5] != 0\n+         && (sprite->pos1.x >= -8 && sprite->pos1.x <= 248)\n+         && sprite->pos1.y >= -16 && sprite->pos1.y <= 176)\n+            sprite->invisible = FALSE;\n+        else\n+            sprite->invisible = TRUE;\n+\n+        sprite->data[0]--;\n+        if (sprite->data[0] == 0)\n+        {\n+            StartSpriteAnim(sprite, gWeatherPtr->unknown_6DC + 1);\n+            sprite->data[4] = 1;\n+            sprite->pos1.x -= gSpriteCoordOffsetX;\n+            sprite->pos1.y -= gSpriteCoordOffsetY;\n+            sprite->coordOffsetEnabled = TRUE;\n+        }\n+    }\n+    else if (sprite->animEnded)\n+    {\n+        sprite->invisible = TRUE;\n+        sub_807E4EC(sprite);\n+    }\n+}\n+\n+void sub_807E6C4(struct Sprite *sprite)\n+{\n+    if (sprite->data[0] == 0)\n+    {\n+        sub_807E4EC(sprite);\n+        sprite->callback = sub_807E5C0;\n+    }\n+    else\n+    {\n+        sprite->data[0]--;\n+    }\n+}\n+\n+void sub_807E6F0(struct Sprite *sprite, u16 b)\n+{\n+    u16 r8 = gUnknown_0839AAC4[gWeatherPtr->unknown_6DC][0];\n+    u16 r6 = b / (gUnknown_0839AAC4[gWeatherPtr->unknown_6DC][1] + r8);\n+    u16 r4 = b % (gUnknown_0839AAC4[gWeatherPtr->unknown_6DC][1] + r8);\n+\n+    while (--r6 != 0xFFFF)\n+        sub_807E4EC(sprite);\n+    if (r4 < r8)\n+    {\n+        while (--r4 != 0xFFFF)\n+            sub_807E5C0(sprite);\n+        sprite->data[6] = 0;\n+    }\n+    else\n+    {\n+        sprite->data[0] = r4 - r8;\n+        sprite->invisible = TRUE;\n+        sprite->data[6] = 1;\n+    }\n+}\n+\n+extern const struct SpriteSheet sRainSpriteSheet;  // defined below\n+\n+void LoadRainSpriteSheet(void)\n+{\n+    LoadSpriteSheet(&sRainSpriteSheet);\n+}\n+\n+static const struct Coords16 sRainSpriteCoords[] =\n+{\n+    {  0,   0},\n+    {  0, 160},\n+    {  0,  64},\n+    {144, 224},\n+    {144, 128},\n+    { 32,  32},\n+    { 32, 192},\n+    { 32,  96},\n+    { 72, 128},\n+    { 72,  32},\n+    { 72, 192},\n+    {216,  96},\n+    {216,   0},\n+    {104, 160},\n+    {104,  64},\n+    {104, 224},\n+    {144,   0},\n+    {144, 160},\n+    {144,  64},\n+    { 32, 224},\n+    { 32, 128},\n+    { 72,  32},\n+    { 72, 192},\n+    { 48,  96},\n+};\n+\n+static const struct OamData gOamData_839AA68 =\n+{\n+    .y = 0,\n+    .affineMode = 0,\n+    .objMode = 0,\n+    .mosaic = 0,\n+    .bpp = 0,\n+    .shape = 2,\n+    .x = 0,\n+    .matrixNum = 0,\n+    .size = 2,\n+    .tileNum = 0,\n+    .priority = 1,\n+    .paletteNum = 2,\n+    .affineParam = 0,\n+};\n+\n+static const union AnimCmd gSpriteAnim_839AA70[] =\n+{\n+    ANIMCMD_FRAME(0, 16),\n+    ANIMCMD_JUMP(0),\n+};\n+\n+static const union AnimCmd gSpriteAnim_839AA78[] =\n+{\n+    ANIMCMD_FRAME(8, 3),\n+    ANIMCMD_FRAME(32, 2),\n+    ANIMCMD_FRAME(40, 2),\n+    ANIMCMD_END,\n+};\n+\n+static const union AnimCmd gSpriteAnim_839AA88[] =\n+{\n+    ANIMCMD_FRAME(8, 3),\n+    ANIMCMD_FRAME(16, 3),\n+    ANIMCMD_FRAME(24, 4),\n+    ANIMCMD_END,\n+};\n+\n+static const union AnimCmd *const gSpriteAnimTable_839AA98[] =\n+{\n+    gSpriteAnim_839AA70,\n+    gSpriteAnim_839AA78,\n+    gSpriteAnim_839AA88,\n+};\n+\n+static const struct SpriteTemplate sRainSpriteTemplate =\n+{\n+    .tileTag = 4614,\n+    .paletteTag = 4608,\n+    .oam = &gOamData_839AA68,\n+    .anims = gSpriteAnimTable_839AA98,\n+    .images = NULL,\n+    .affineAnims = gDummySpriteAffineAnimTable,\n+    .callback = sub_807E5C0,\n+};\n+\n+const s16 gUnknown_0839AABC[][2] =\n+{\n+\t{-104, 208},\n+\t{-160, 320},\n+};\n+\n+const u16 gUnknown_0839AAC4[][2] =\n+{\n+    {18, 7},\n+    {12, 10},\n+};\n+\n+static const struct SpriteSheet sRainSpriteSheet = {gWeatherRainTiles, sizeof(gWeatherRainTiles), 0x1206};\n+\n+static const struct OamData gOamData_839AAD4 =\n+{\n+    .y = 0,\n+    .affineMode = 0,\n+    .objMode = 0,\n+    .mosaic = 0,\n+    .bpp = 0,\n+    .shape = 0,\n+    .x = 0,\n+    .matrixNum = 0,\n+    .size = 0,\n+    .tileNum = 0,\n+    .priority = 1,\n+    .paletteNum = 0,\n+    .affineParam = 0,\n+};\n+\n+static const struct SpriteFrameImage gSpriteImageTable_839AADC[] =\n+{\n+    {gWeatherSnow1Tiles, sizeof(gWeatherSnow1Tiles)},\n+    {gWeatherSnow2Tiles, sizeof(gWeatherSnow2Tiles)},\n+};\n+\n+static const union AnimCmd gSpriteAnim_839AAEC[] =\n+{\n+    ANIMCMD_FRAME(0, 16),\n+    ANIMCMD_END,\n+};\n+\n+static const union AnimCmd gSpriteAnim_839AAF4[] =\n+{\n+    ANIMCMD_FRAME(1, 16),\n+    ANIMCMD_END,\n+};\n+\n+static const union AnimCmd *const gSpriteAnimTable_839AAFC[] =\n+{\n+    gSpriteAnim_839AAEC,\n+    gSpriteAnim_839AAF4,\n+};\n+\n+void sub_807ED48(struct Sprite *);\n+static const struct SpriteTemplate sSnowflakeSpriteTemplate =\n+{\n+    .tileTag = 0xFFFF,\n+    .paletteTag = 4608,\n+    .oam = &gOamData_839AAD4,\n+    .anims = gSpriteAnimTable_839AAFC,\n+    .images = gSpriteImageTable_839AADC,\n+    .affineAnims = gDummySpriteAffineAnimTable,\n+    .callback = sub_807ED48,\n+};\n+\n+// unused data\n+static const u16 unusedData_839AB1C[] = {0, 6, 6, 12, 18, 42, 300, 300};\n+\n+static const struct OamData gOamData_839AB2C =\n+{\n+    .y = 0,\n+    .affineMode = 0,\n+    .objMode = 1,\n+    .mosaic = 0,\n+    .bpp = 0,\n+    .shape = 0,\n+    .x = 0,\n+    .matrixNum = 0,\n+    .size = 3,\n+    .tileNum = 0,\n+    .priority = 2,\n+    .paletteNum = 0,\n+    .affineParam = 0,\n+};\n+\n+static const union AnimCmd gSpriteAnim_839AB34[] =\n+{\n+    ANIMCMD_FRAME(0, 16),\n+    ANIMCMD_END,\n+};\n+\n+static const union AnimCmd gSpriteAnim_839AB3C[] =\n+{\n+    ANIMCMD_FRAME(32, 16),\n+    ANIMCMD_END,\n+};\n+\n+static const union AnimCmd gSpriteAnim_839AB44[] =\n+{\n+    ANIMCMD_FRAME(64, 16),\n+    ANIMCMD_END,\n+};\n+\n+static const union AnimCmd gSpriteAnim_839AB4C[] =\n+{\n+    ANIMCMD_FRAME(96, 16),\n+    ANIMCMD_END,\n+};\n+\n+static const union AnimCmd gSpriteAnim_839AB54[] =\n+{\n+    ANIMCMD_FRAME(128, 16),\n+    ANIMCMD_END,\n+};\n+\n+static const union AnimCmd gSpriteAnim_839AB5C[] =\n+{\n+    ANIMCMD_FRAME(160, 16),\n+    ANIMCMD_END,\n+};\n+\n+static const union AnimCmd *const gSpriteAnimTable_839AB64[] =\n+{\n+    gSpriteAnim_839AB34,\n+    gSpriteAnim_839AB3C,\n+    gSpriteAnim_839AB44,\n+    gSpriteAnim_839AB4C,\n+    gSpriteAnim_839AB54,\n+    gSpriteAnim_839AB5C,\n+};\n+\n+static const union AffineAnimCmd gSpriteAffineAnim_839AB7C[] =\n+{\n+    AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),\n+    AFFINEANIMCMD_END,\n+};\n+\n+static const union AffineAnimCmd *const gSpriteAffineAnimTable_839AB8C[] =\n+{\n+    gSpriteAffineAnim_839AB7C,\n+};\n+\n+static void Fog1SpriteCallback(struct Sprite *);\n+static const struct SpriteTemplate sFog1SpriteTemplate =\n+{\n+    .tileTag = 4609,\n+    .paletteTag = 4608,\n+    .oam = &gOamData_839AB2C,\n+    .anims = gSpriteAnimTable_839AB64,\n+    .images = NULL,\n+    .affineAnims = gSpriteAffineAnimTable_839AB8C,\n+    .callback = Fog1SpriteCallback,\n+};\n+\n+bool8 CreateRainSprite(void)\n+{\n+    u8 spriteNum;\n+    u8 spriteId;\n+\n+    if (gWeatherPtr->rainSpriteCount == 24)\n+        return FALSE;\n+\n+    spriteNum = gWeatherPtr->rainSpriteCount;\n+    spriteId = CreateSpriteAtEnd(&sRainSpriteTemplate,\n+      sRainSpriteCoords[spriteNum].x, sRainSpriteCoords[spriteNum].y, 78);\n+    if (spriteId != 64)\n+    {\n+        gSprites[spriteId].data[5] = 0;\n+        gSprites[spriteId].data[1] = spriteNum * 145;\n+        while (gSprites[spriteId].data[1] >= 600)\n+            gSprites[spriteId].data[1] -= 600;\n+        sub_807E4EC(&gSprites[spriteId]);\n+        sub_807E6F0(&gSprites[spriteId], spriteNum * 9);\n+        gSprites[spriteId].invisible = TRUE;\n+        gWeatherPtr->sprites.s1.rainSprites[spriteNum] = &gSprites[spriteId];\n+    }\n+    else\n+    {\n+        gWeatherPtr->sprites.s1.rainSprites[spriteNum] = NULL;\n+    }\n+\n+    if (++gWeatherPtr->rainSpriteCount == 24)\n+    {\n+        u16 i;\n+\n+        for (i = 0; i < 24; i++)\n+        {\n+            if (gWeatherPtr->sprites.s1.rainSprites[i] != NULL)\n+            {\n+                if (gWeatherPtr->sprites.s1.rainSprites[i]->data[6] == 0)\n+                    gWeatherPtr->sprites.s1.rainSprites[i]->callback = sub_807E5C0;\n+                else\n+                    gWeatherPtr->sprites.s1.rainSprites[i]->callback = sub_807E6C4;\n+            }\n+        }\n+        return FALSE;\n+    }\n+    return TRUE;\n+}\n+\n+bool8 sub_807E8E8(void)\n+{\n+    if (gWeatherPtr->unknown_6D8 == gWeatherPtr->unknown_6D9)\n+        return FALSE;\n+\n+    if (++gWeatherPtr->unknown_6D6 > gWeatherPtr->unknown_6DB)\n+    {\n+        gWeatherPtr->unknown_6D6 = 0;\n+        if (gWeatherPtr->unknown_6D8 < gWeatherPtr->unknown_6D9)\n+        {\n+            gWeatherPtr->sprites.s1.rainSprites[gWeatherPtr->unknown_6D8++]->data[5] = 1;\n+        }\n+        else\n+        {\n+            gWeatherPtr->unknown_6D8--;\n+            gWeatherPtr->sprites.s1.rainSprites[gWeatherPtr->unknown_6D8]->data[5] = 0;\n+            gWeatherPtr->sprites.s1.rainSprites[gWeatherPtr->unknown_6D8]->invisible = TRUE;\n+        }\n+    }\n+    return TRUE;\n+}\n+\n+void DestroyRainSprites(void)\n+{\n+    u16 i;\n+\n+    for (i = 0; i < gWeatherPtr->rainSpriteCount; i++)\n+    {\n+        if (gWeatherPtr->sprites.s1.rainSprites[i] != NULL)\n+            DestroySprite(gWeatherPtr->sprites.s1.rainSprites[i]);\n+    }\n+    gWeatherPtr->rainSpriteCount = 0;\n+    FreeSpriteTilesByTag(0x1206);\n+}\n+\n+//------------------------------------------------------------------------------\n+// Snow\n+//------------------------------------------------------------------------------\n+\n+void Snow_InitVars(void)\n+{\n+    gWeatherPtr->initStep = 0;\n+    gWeatherPtr->weatherGfxLoaded = FALSE;\n+    gWeatherPtr->gammaTargetIndex = 3;\n+    gWeatherPtr->gammaStepDelay = 20;\n+    gWeatherPtr->unknown_6E5 = 16;\n+    gWeatherPtr->unknown_6E0 = 0;\n+}\n+\n+void Snow_Main(void);\n+void sub_807ED48(struct Sprite *);\n+\n+void Snow_InitAll(void)\n+{\n+    Snow_InitVars();\n+    while (gWeatherPtr->weatherGfxLoaded == FALSE)\n+    {\n+        u16 i;\n+\n+        Snow_Main();\n+        for (i = 0; i < gWeatherPtr->snowflakeSpriteCount; i++)\n+        {\n+            sub_807ED48(gWeatherPtr->sprites.s1.snowflakeSprites[i]);\n+        }\n+    }\n+}\n+\n+u8 snowflakes_progress(void);\n+\n+void Snow_Main(void)\n+{\n+    if (gWeatherPtr->initStep == 0 && snowflakes_progress() == FALSE)\n+    {\n+        gWeatherPtr->weatherGfxLoaded = TRUE;\n+        gWeatherPtr->initStep++;\n+    }\n+}\n+\n+bool8 Snow_Finish(void)\n+{\n+    switch (gWeatherPtr->finishStep)\n+    {\n+    case 0:\n+        gWeatherPtr->unknown_6E5 = 0;\n+        gWeatherPtr->unknown_6E0 = 0;\n+        gWeatherPtr->finishStep++;\n+        // fall through\n+    case 1:\n+        if (snowflakes_progress() == FALSE)\n+        {\n+            gWeatherPtr->finishStep++;\n+            return FALSE;\n+        }\n+        return TRUE;\n+    }\n+    return FALSE;\n+}\n+\n+bool8 CreateSnowflakeSprite(void);\n+bool8 RemoveSnowflakeSprite(void);\n+\n+bool8 snowflakes_progress(void)\n+{\n+    if (gWeatherPtr->snowflakeSpriteCount == gWeatherPtr->unknown_6E5)\n+        return FALSE;\n+\n+    gWeatherPtr->unknown_6E0++;\n+    if (gWeatherPtr->unknown_6E0 > 36)\n+    {\n+        gWeatherPtr->unknown_6E0 = 0;\n+        if (gWeatherPtr->snowflakeSpriteCount < gWeatherPtr->unknown_6E5)\n+            CreateSnowflakeSprite();\n+        else\n+            RemoveSnowflakeSprite();\n+    }\n+    return (gWeatherPtr->snowflakeSpriteCount != gWeatherPtr->unknown_6E5);\n+}\n+\n+void sub_807EC40(struct Sprite *);\n+\n+bool8 CreateSnowflakeSprite(void)\n+{\n+    u8 spriteId = CreateSpriteAtEnd(&sSnowflakeSpriteTemplate, 0, 0, 78);\n+\n+    if (spriteId == 64)\n+        return FALSE;\n+    gSprites[spriteId].data[4] = gWeatherPtr->snowflakeSpriteCount;\n+    sub_807EC40(&gSprites[spriteId]);\n+    gSprites[spriteId].coordOffsetEnabled = TRUE;\n+    gWeatherPtr->sprites.s1.snowflakeSprites[gWeatherPtr->snowflakeSpriteCount++] = &gSprites[spriteId];\n+    return TRUE;\n+}\n+\n+bool8 RemoveSnowflakeSprite(void)\n+{\n+    if (gWeatherPtr->snowflakeSpriteCount != 0)\n+    {\n+        DestroySprite(gWeatherPtr->sprites.s1.snowflakeSprites[--gWeatherPtr->snowflakeSpriteCount]);\n+        return TRUE;\n+    }\n+    return FALSE;\n+}\n+\n+void sub_807EC40(struct Sprite *sprite)\n+{\n+    u16 r4 = ((sprite->data[4] * 5) & 7) * 30 + (Random() % 30);\n+    u16 r6;\n+\n+    sprite->pos1.y = -3 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);\n+    sprite->pos1.x = r4 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);\n+    sprite->data[0] = sprite->pos1.y * 128;\n+    sprite->pos2.x = 0;\n+    r6 = Random();\n+    sprite->data[1] = (r6 & 3) * 5 + 64;\n+    sprite->data[7] = (r6 & 3) * 5 + 64;\n+    StartSpriteAnim(sprite, (r6 & 1) ? 0 : 1);\n+    sprite->data[3] = 0;\n+    sprite->data[2] = ((r6 & 3) == 0) ? 2 : 1;\n+    sprite->data[6] = (r6 & 0x1F) + 210;\n+    sprite->data[5] = 0;\n+}\n+\n+void sub_807ECEC(struct Sprite *sprite)\n+{\n+    if (gWeatherPtr->unknown_6E2 > 18)\n+    {\n+        sprite->invisible = FALSE;\n+        sprite->callback = sub_807ED48;\n+        sprite->pos1.y = 0xFA - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);\n+        sprite->data[0] = sprite->pos1.y * 128;\n+        gWeatherPtr->unknown_6E2 = 0;\n+    }\n+}\n+\n+void sub_807ED48(struct Sprite *sprite)\n+{\n+    s16 r3;\n+    s16 r2;\n+\n+    sprite->data[0] += sprite->data[1];\n+    sprite->pos1.y = sprite->data[0] >> 7;\n+    sprite->data[3] = (sprite->data[3] + sprite->data[2]) & 0xFF;\n+    sprite->pos2.x = gSineTable[sprite->data[3]] / 64;\n+\n+    r3 = (sprite->pos1.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX) & 0x1FF;\n+    if (r3 & 0x100)\n+        r3 = -0x100 | r3;  // hmm... what is this?","path":"src/field_weather_effect.c","position":1018,"original_position":1018,"commit_id":"606fb71392651dac4f5f8773c4117f35de7b087e","original_commit_id":"606fb71392651dac4f5f8773c4117f35de7b087e","user":{"login":"DizzyEggg","id":16259973,"node_id":"MDQ6VXNlcjE2MjU5OTcz","avatar_url":"https://avatars2.githubusercontent.com/u/16259973?v=4","gravatar_id":"","url":"https://api.github.com/users/DizzyEggg","html_url":"https://github.com/DizzyEggg","followers_url":"https://api.github.com/users/DizzyEggg/followers","following_url":"https://api.github.com/users/DizzyEggg/following{/other_user}","gists_url":"https://api.github.com/users/DizzyEggg/gists{/gist_id}","starred_url":"https://api.github.com/users/DizzyEggg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DizzyEggg/subscriptions","organizations_url":"https://api.github.com/users/DizzyEggg/orgs","repos_url":"https://api.github.com/users/DizzyEggg/repos","events_url":"https://api.github.com/users/DizzyEggg/events{/privacy}","received_events_url":"https://api.github.com/users/DizzyEggg/received_events","type":"User","site_admin":false},"body":"nope","created_at":"2018-12-08T23:09:27Z","updated_at":"2018-12-08T23:09:27Z","html_url":"https://github.com/pret/pokeemerald/pull/435#discussion_r240019183","pull_request_url":"https://api.github.com/repos/pret/pokeemerald/pulls/435","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/pret/pokeemerald/pulls/comments/240019183"},"html":{"href":"https://github.com/pret/pokeemerald/pull/435#discussion_r240019183"},"pull_request":{"href":"https://api.github.com/repos/pret/pokeemerald/pulls/435"}},"in_reply_to_id":240018957},"pull_request":{"url":"https://api.github.com/repos/pret/pokeemerald/pulls/435","id":237091443,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM3MDkxNDQz","html_url":"https://github.com/pret/pokeemerald/pull/435","diff_url":"https://github.com/pret/pokeemerald/pull/435.diff","patch_url":"https://github.com/pret/pokeemerald/pull/435.patch","issue_url":"https://api.github.com/repos/pret/pokeemerald/issues/435","number":435,"state":"open","locked":false,"title":"Decompile fieldmap","user":{"login":"DizzyEggg","id":16259973,"node_id":"MDQ6VXNlcjE2MjU5OTcz","avatar_url":"https://avatars2.githubusercontent.com/u/16259973?v=4","gravatar_id":"","url":"https://api.github.com/users/DizzyEggg","html_url":"https://github.com/DizzyEggg","followers_url":"https://api.github.com/users/DizzyEggg/followers","following_url":"https://api.github.com/users/DizzyEggg/following{/other_user}","gists_url":"https://api.github.com/users/DizzyEggg/gists{/gist_id}","starred_url":"https://api.github.com/users/DizzyEggg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DizzyEggg/subscriptions","organizations_url":"https://api.github.com/users/DizzyEggg/orgs","repos_url":"https://api.github.com/users/DizzyEggg/repos","events_url":"https://api.github.com/users/DizzyEggg/events{/privacy}","received_events_url":"https://api.github.com/users/DizzyEggg/received_events","type":"User","site_admin":false},"body":"Was using pokeruby as a base.\r\nMerged field_fadetransition and field_screen_effect into one file, because it made more sense static-functions-wise.","created_at":"2018-12-08T21:06:52Z","updated_at":"2018-12-08T23:09:27Z","closed_at":null,"merged_at":null,"merge_commit_sha":"be4749a9f11f6851c370808326d48f296fdac29f","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/pret/pokeemerald/pulls/435/commits","review_comments_url":"https://api.github.com/repos/pret/pokeemerald/pulls/435/comments","review_comment_url":"https://api.github.com/repos/pret/pokeemerald/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pret/pokeemerald/issues/435/comments","statuses_url":"https://api.github.com/repos/pret/pokeemerald/statuses/606fb71392651dac4f5f8773c4117f35de7b087e","head":{"label":"DizzyEggg:weather","ref":"weather","sha":"606fb71392651dac4f5f8773c4117f35de7b087e","user":{"login":"DizzyEggg","id":16259973,"node_id":"MDQ6VXNlcjE2MjU5OTcz","avatar_url":"https://avatars2.githubusercontent.com/u/16259973?v=4","gravatar_id":"","url":"https://api.github.com/users/DizzyEggg","html_url":"https://github.com/DizzyEggg","followers_url":"https://api.github.com/users/DizzyEggg/followers","following_url":"https://api.github.com/users/DizzyEggg/following{/other_user}","gists_url":"https://api.github.com/users/DizzyEggg/gists{/gist_id}","starred_url":"https://api.github.com/users/DizzyEggg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DizzyEggg/subscriptions","organizations_url":"https://api.github.com/users/DizzyEggg/orgs","repos_url":"https://api.github.com/users/DizzyEggg/repos","events_url":"https://api.github.com/users/DizzyEggg/events{/privacy}","received_events_url":"https://api.github.com/users/DizzyEggg/received_events","type":"User","site_admin":false},"repo":{"id":101887151,"node_id":"MDEwOlJlcG9zaXRvcnkxMDE4ODcxNTE=","name":"pokeemerald","full_name":"DizzyEggg/pokeemerald","private":false,"owner":{"login":"DizzyEggg","id":16259973,"node_id":"MDQ6VXNlcjE2MjU5OTcz","avatar_url":"https://avatars2.githubusercontent.com/u/16259973?v=4","gravatar_id":"","url":"https://api.github.com/users/DizzyEggg","html_url":"https://github.com/DizzyEggg","followers_url":"https://api.github.com/users/DizzyEggg/followers","following_url":"https://api.github.com/users/DizzyEggg/following{/other_user}","gists_url":"https://api.github.com/users/DizzyEggg/gists{/gist_id}","starred_url":"https://api.github.com/users/DizzyEggg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DizzyEggg/subscriptions","organizations_url":"https://api.github.com/users/DizzyEggg/orgs","repos_url":"https://api.github.com/users/DizzyEggg/repos","events_url":"https://api.github.com/users/DizzyEggg/events{/privacy}","received_events_url":"https://api.github.com/users/DizzyEggg/received_events","type":"User","site_admin":false},"html_url":"https://github.com/DizzyEggg/pokeemerald","description":"disassembly of Pokémon Emerald","fork":true,"url":"https://api.github.com/repos/DizzyEggg/pokeemerald","forks_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/forks","keys_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/keys{/key_id}","collaborators_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/teams","hooks_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/hooks","issue_events_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/issues/events{/number}","events_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/events","assignees_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/assignees{/user}","branches_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/branches{/branch}","tags_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/tags","blobs_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/git/refs{/sha}","trees_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/git/trees{/sha}","statuses_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/statuses/{sha}","languages_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/languages","stargazers_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/stargazers","contributors_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/contributors","subscribers_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/subscribers","subscription_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/subscription","commits_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/commits{/sha}","git_commits_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/git/commits{/sha}","comments_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/comments{/number}","issue_comment_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/issues/comments{/number}","contents_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/contents/{+path}","compare_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/compare/{base}...{head}","merges_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/merges","archive_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/downloads","issues_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/issues{/number}","pulls_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/pulls{/number}","milestones_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/milestones{/number}","notifications_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/labels{/name}","releases_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/releases{/id}","deployments_url":"https://api.github.com/repos/DizzyEggg/pokeemerald/deployments","created_at":"2017-08-30T13:49:56Z","updated_at":"2018-12-08T21:10:24Z","pushed_at":"2018-12-08T21:18:04Z","git_url":"git://github.com/DizzyEggg/pokeemerald.git","ssh_url":"git@github.com:DizzyEggg/pokeemerald.git","clone_url":"https://github.com/DizzyEggg/pokeemerald.git","svn_url":"https://github.com/DizzyEggg/pokeemerald","homepage":"","size":78182,"stargazers_count":2,"watchers_count":2,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"archived":false,"open_issues_count":5,"license":null,"forks":4,"open_issues":5,"watchers":2,"default_branch":"master"}},"base":{"label":"pret:master","ref":"master","sha":"88ffb0976571c8782a5e632df79d34b7260882c9","user":{"login":"pret","id":10761592,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEwNzYxNTky","avatar_url":"https://avatars1.githubusercontent.com/u/10761592?v=4","gravatar_id":"","url":"https://api.github.com/users/pret","html_url":"https://github.com/pret","followers_url":"https://api.github.com/users/pret/followers","following_url":"https://api.github.com/users/pret/following{/other_user}","gists_url":"https://api.github.com/users/pret/gists{/gist_id}","starred_url":"https://api.github.com/users/pret/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pret/subscriptions","organizations_url":"https://api.github.com/users/pret/orgs","repos_url":"https://api.github.com/users/pret/repos","events_url":"https://api.github.com/users/pret/events{/privacy}","received_events_url":"https://api.github.com/users/pret/received_events","type":"Organization","site_admin":false},"repo":{"id":43677244,"node_id":"MDEwOlJlcG9zaXRvcnk0MzY3NzI0NA==","name":"pokeemerald","full_name":"pret/pokeemerald","private":false,"owner":{"login":"pret","id":10761592,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEwNzYxNTky","avatar_url":"https://avatars1.githubusercontent.com/u/10761592?v=4","gravatar_id":"","url":"https://api.github.com/users/pret","html_url":"https://github.com/pret","followers_url":"https://api.github.com/users/pret/followers","following_url":"https://api.github.com/users/pret/following{/other_user}","gists_url":"https://api.github.com/users/pret/gists{/gist_id}","starred_url":"https://api.github.com/users/pret/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pret/subscriptions","organizations_url":"https://api.github.com/users/pret/orgs","repos_url":"https://api.github.com/users/pret/repos","events_url":"https://api.github.com/users/pret/events{/privacy}","received_events_url":"https://api.github.com/users/pret/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/pret/pokeemerald","description":"disassembly of Pokémon Emerald","fork":false,"url":"https://api.github.com/repos/pret/pokeemerald","forks_url":"https://api.github.com/repos/pret/pokeemerald/forks","keys_url":"https://api.github.com/repos/pret/pokeemerald/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pret/pokeemerald/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pret/pokeemerald/teams","hooks_url":"https://api.github.com/repos/pret/pokeemerald/hooks","issue_events_url":"https://api.github.com/repos/pret/pokeemerald/issues/events{/number}","events_url":"https://api.github.com/repos/pret/pokeemerald/events","assignees_url":"https://api.github.com/repos/pret/pokeemerald/assignees{/user}","branches_url":"https://api.github.com/repos/pret/pokeemerald/branches{/branch}","tags_url":"https://api.github.com/repos/pret/pokeemerald/tags","blobs_url":"https://api.github.com/repos/pret/pokeemerald/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pret/pokeemerald/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pret/pokeemerald/git/refs{/sha}","trees_url":"https://api.github.com/repos/pret/pokeemerald/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pret/pokeemerald/statuses/{sha}","languages_url":"https://api.github.com/repos/pret/pokeemerald/languages","stargazers_url":"https://api.github.com/repos/pret/pokeemerald/stargazers","contributors_url":"https://api.github.com/repos/pret/pokeemerald/contributors","subscribers_url":"https://api.github.com/repos/pret/pokeemerald/subscribers","subscription_url":"https://api.github.com/repos/pret/pokeemerald/subscription","commits_url":"https://api.github.com/repos/pret/pokeemerald/commits{/sha}","git_commits_url":"https://api.github.com/repos/pret/pokeemerald/git/commits{/sha}","comments_url":"https://api.github.com/repos/pret/pokeemerald/comments{/number}","issue_comment_url":"https://api.github.com/repos/pret/pokeemerald/issues/comments{/number}","contents_url":"https://api.github.com/repos/pret/pokeemerald/contents/{+path}","compare_url":"https://api.github.com/repos/pret/pokeemerald/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pret/pokeemerald/merges","archive_url":"https://api.github.com/repos/pret/pokeemerald/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pret/pokeemerald/downloads","issues_url":"https://api.github.com/repos/pret/pokeemerald/issues{/number}","pulls_url":"https://api.github.com/repos/pret/pokeemerald/pulls{/number}","milestones_url":"https://api.github.com/repos/pret/pokeemerald/milestones{/number}","notifications_url":"https://api.github.com/repos/pret/pokeemerald/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pret/pokeemerald/labels{/name}","releases_url":"https://api.github.com/repos/pret/pokeemerald/releases{/id}","deployments_url":"https://api.github.com/repos/pret/pokeemerald/deployments","created_at":"2015-10-05T10:09:22Z","updated_at":"2018-12-08T18:41:11Z","pushed_at":"2018-12-08T21:18:05Z","git_url":"git://github.com/pret/pokeemerald.git","ssh_url":"git@github.com:pret/pokeemerald.git","clone_url":"https://github.com/pret/pokeemerald.git","svn_url":"https://github.com/pret/pokeemerald","homepage":"","size":75462,"stargazers_count":253,"watchers_count":253,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":96,"mirror_url":null,"archived":false,"open_issues_count":8,"license":null,"forks":96,"open_issues":8,"watchers":253,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pret/pokeemerald/pulls/435"},"html":{"href":"https://github.com/pret/pokeemerald/pull/435"},"issue":{"href":"https://api.github.com/repos/pret/pokeemerald/issues/435"},"comments":{"href":"https://api.github.com/repos/pret/pokeemerald/issues/435/comments"},"review_comments":{"href":"https://api.github.com/repos/pret/pokeemerald/pulls/435/comments"},"review_comment":{"href":"https://api.github.com/repos/pret/pokeemerald/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pret/pokeemerald/pulls/435/commits"},"statuses":{"href":"https://api.github.com/repos/pret/pokeemerald/statuses/606fb71392651dac4f5f8773c4117f35de7b087e"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"DizzyEggg"}}