diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-04-23 23:48:39 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-04-23 23:48:39 -0400 |
commit | a5a8d5d04a7d5186aa1dcb1a8db1df3be5214016 (patch) | |
tree | 1276954b8a72c9420df96313c5a67195ef51e43e | |
parent | 33bb43db0de5d7d60ab8eff6db0ac305d403474f (diff) |
through sub_8111360
-rw-r--r-- | asm/pokedex_area_screen.s | 412 | ||||
-rw-r--r-- | src/pokedex_area_screen.c | 307 |
2 files changed, 227 insertions, 492 deletions
diff --git a/asm/pokedex_area_screen.s b/asm/pokedex_area_screen.s index 2c1e83def..a4b103e23 100644 --- a/asm/pokedex_area_screen.s +++ b/asm/pokedex_area_screen.s @@ -5,418 +5,6 @@ .text - thumb_func_start sub_8111084 -sub_8111084: @ 8111084 - push {lr} - ldr r0, _081110AC @ =gSharedMem - movs r2, 0x89 - lsls r2, 1 - adds r1, r0, r2 - ldrh r1, [r1] - adds r2, r0, 0 - cmp r1, 0 - beq _081110B4 - movs r3, 0x88 - lsls r3, 1 - adds r0, r2, r3 - ldrh r0, [r0] - cmp r0, 0 - bne _081110B4 - ldr r0, _081110B0 @ =0x0000061e - adds r1, r2, r0 - movs r0, 0x1 - b _081110BA - .align 2, 0 -_081110AC: .4byte gSharedMem -_081110B0: .4byte 0x0000061e -_081110B4: - ldr r3, _081110FC @ =0x0000061e - adds r1, r2, r3 - movs r0, 0 -_081110BA: - strb r0, [r1] - ldr r1, _08111100 @ =0x00000616 - adds r0, r2, r1 - movs r1, 0 - strh r1, [r0] - movs r3, 0xC3 - lsls r3, 3 - adds r0, r2, r3 - strh r1, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - ldr r0, _08111104 @ =0x0000061c - adds r1, r2, r0 - movs r0, 0x40 - strh r0, [r1] - adds r3, 0x5 - adds r1, r2, r3 - movs r0, 0x1 - strb r0, [r1] - ldr r1, _08111108 @ =REG_BLDCNT - ldr r2, _0811110C @ =0x00003f41 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r3, 0x80 - lsls r3, 5 - adds r0, r3, 0 - strh r0, [r1] - bl sub_8111110 - pop {r0} - bx r0 - .align 2, 0 -_081110FC: .4byte 0x0000061e -_08111100: .4byte 0x00000616 -_08111104: .4byte 0x0000061c -_08111108: .4byte REG_BLDCNT -_0811110C: .4byte 0x00003f41 - thumb_func_end sub_8111084 - - thumb_func_start sub_8111110 -sub_8111110: @ 8111110 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _0811114C @ =gSharedMem - ldr r2, _08111150 @ =0x0000061e - adds r1, r0, r2 - ldrb r1, [r1] - adds r5, r0, 0 - cmp r1, 0 - bne _081111DE - ldr r3, _08111154 @ =0x00000616 - adds r1, r5, r3 - ldrh r0, [r1] - cmp r0, 0 - bne _081111D8 - movs r1, 0xC3 - lsls r1, 3 - adds r0, r5, r1 - ldrh r1, [r0] - adds r1, 0x1 - strh r1, [r0] - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _08111158 - subs r2, 0x4 - adds r0, r5, r2 - b _0811115C - .align 2, 0 -_0811114C: .4byte gSharedMem -_08111150: .4byte 0x0000061e -_08111154: .4byte 0x00000616 -_08111158: - ldr r3, _081111C0 @ =0x0000061c - adds r0, r5, r3 -_0811115C: - ldrh r1, [r0] - adds r1, 0x4 - movs r2, 0x7F - ands r1, r2 - strh r1, [r0] - ldr r2, _081111C4 @ =gSineTable - ldr r1, _081111C8 @ =0x0000061a - adds r0, r5, r1 - ldrh r0, [r0] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - lsls r1, 16 - asrs r1, 20 - lsls r1, 16 - lsrs r1, 16 - ldr r3, _081111C0 @ =0x0000061c - adds r0, r5, r3 - ldrh r0, [r0] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 20 - lsls r0, 16 - ldr r2, _081111CC @ =REG_BLDALPHA - lsrs r0, 8 - orrs r1, r0 - strh r1, [r2] - ldr r1, _081111D0 @ =0x00000616 - adds r0, r5, r1 - movs r2, 0 - strh r2, [r0] - subs r3, 0x4 - adds r1, r5, r3 - ldrh r0, [r1] - cmp r0, 0x40 - bne _0811126E - strh r2, [r1] - movs r1, 0x89 - lsls r1, 1 - adds r0, r5, r1 - ldrh r0, [r0] - cmp r0, 0 - beq _0811126E - ldr r2, _081111D4 @ =0x0000061e - adds r1, r5, r2 - movs r0, 0x1 - b _0811126C - .align 2, 0 -_081111C0: .4byte 0x0000061c -_081111C4: .4byte gSineTable -_081111C8: .4byte 0x0000061a -_081111CC: .4byte REG_BLDALPHA -_081111D0: .4byte 0x00000616 -_081111D4: .4byte 0x0000061e -_081111D8: - subs r0, 0x1 - strh r0, [r1] - b _0811126E -_081111DE: - ldr r3, _0811127C @ =0x00000616 - adds r1, r5, r3 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xC - bls _0811126E - movs r0, 0 - strh r0, [r1] - ldr r0, _08111280 @ =0x0000061f - adds r1, r5, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r4, 0 - movs r2, 0x89 - lsls r2, 1 - adds r0, r5, r2 - ldrh r3, [r0] - cmp r4, r3 - bcs _0811124C - movs r2, 0xCC - lsls r2, 3 - adds r2, r5 - mov r9, r2 - mov r8, r1 - movs r3, 0x1 - mov r12, r3 - adds r6, r0, 0 - movs r7, 0x5 - negs r7, r7 -_08111220: - lsls r0, r4, 2 - add r0, r9 - ldr r3, [r0] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x1 - adds r3, 0x3E - ands r1, r0 - mov r2, r12 - ands r1, r2 - lsls r1, 2 - ldrb r2, [r3] - adds r0, r7, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - ldrh r3, [r6] - cmp r4, r3 - bcc _08111220 -_0811124C: - ldr r0, _08111280 @ =0x0000061f - adds r1, r5, r0 - ldrb r0, [r1] - cmp r0, 0x4 - bls _0811126E - movs r0, 0x1 - strb r0, [r1] - movs r1, 0x88 - lsls r1, 1 - adds r0, r5, r1 - ldrh r0, [r0] - cmp r0, 0 - beq _0811126E - ldr r2, _08111284 @ =0x0000061e - adds r1, r5, r2 - movs r0, 0 -_0811126C: - strb r0, [r1] -_0811126E: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811127C: .4byte 0x00000616 -_08111280: .4byte 0x0000061f -_08111284: .4byte 0x0000061e - thumb_func_end sub_8111110 - - thumb_func_start sub_8111288 -sub_8111288: @ 8111288 - push {lr} - ldr r1, _08111298 @ =gSharedMem - ldrh r0, [r1, 0xC] - cmp r0, 0 - beq _0811129C - cmp r0, 0x1 - beq _081112A2 - b _081112B2 - .align 2, 0 -_08111298: .4byte gSharedMem -_0811129C: - movs r0, 0x1 - strh r0, [r1, 0xC] - b _081112B2 -_081112A2: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _081112B2 - ldr r0, _081112B8 @ =sub_81112BC - bl sub_8110814 -_081112B2: - pop {r0} - bx r0 - .align 2, 0 -_081112B8: .4byte sub_81112BC - thumb_func_end sub_8111288 - - thumb_func_start sub_81112BC -sub_81112BC: @ 81112BC - push {lr} - ldr r0, _081112DC @ =gSharedMem - ldrh r0, [r0, 0xC] - cmp r0, 0 - bne _08111308 - ldr r0, _081112E0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _081112E8 - ldr r0, _081112E4 @ =sub_8111314 - bl sub_8110814 - b _08111308 - .align 2, 0 -_081112DC: .4byte gSharedMem -_081112E0: .4byte gMain -_081112E4: .4byte sub_8111314 -_081112E8: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _08111302 - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _08111308 - ldr r0, _0811130C @ =gSaveBlock2 - ldrb r0, [r0, 0x13] - cmp r0, 0x1 - bne _08111308 -_08111302: - ldr r0, _08111310 @ =sub_8111360 - bl sub_8110814 -_08111308: - pop {r0} - bx r0 - .align 2, 0 -_0811130C: .4byte gSaveBlock2 -_08111310: .4byte sub_8111360 - thumb_func_end sub_81112BC - - thumb_func_start sub_8111314 -sub_8111314: @ 8111314 - push {r4,lr} - sub sp, 0x4 - ldr r4, _08111328 @ =gSharedMem - ldrh r1, [r4, 0xC] - cmp r1, 0 - beq _0811132C - cmp r1, 0x1 - beq _08111344 - b _08111358 - .align 2, 0 -_08111328: .4byte gSharedMem -_0811132C: - movs r0, 0x15 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - b _08111358 -_08111344: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _08111358 - bl FreeRegionMapIconResources - ldr r0, [r4, 0x4] - bl SetMainCallback2 -_08111358: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8111314 - - thumb_func_start sub_8111360 -sub_8111360: @ 8111360 - push {r4,lr} - sub sp, 0x4 - ldr r4, _08111374 @ =gSharedMem - ldrh r1, [r4, 0xC] - cmp r1, 0 - beq _08111378 - cmp r1, 0x1 - beq _08111390 - b _081113A4 - .align 2, 0 -_08111374: .4byte gSharedMem -_08111378: - movs r0, 0x15 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - b _081113A4 -_08111390: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _081113A4 - bl FreeRegionMapIconResources - ldr r0, [r4, 0x8] - bl SetMainCallback2 -_081113A4: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8111360 - thumb_func_start ShowPokedexAreaScreen ShowPokedexAreaScreen: @ 81113AC push {r4,lr} diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c index b42477a79..d5ca06395 100644 --- a/src/pokedex_area_screen.c +++ b/src/pokedex_area_screen.c @@ -16,6 +16,7 @@ #include "roamer.h" #include "overworld.h" #include "event_data.h" +#include "trig.h" // Static type declarations @@ -29,8 +30,8 @@ struct PokedexAreaScreenSubstruct0010 struct PokedexAreaScreenEwramStruct { void (*unk0000)(void); - u32 unk0004; - u32 unk0008; + MainCallback unk0004; + MainCallback unk0008; u16 unk000C; u16 unk000E; struct PokedexAreaScreenSubstruct0010 unk0010[0x40]; @@ -38,11 +39,19 @@ struct PokedexAreaScreenEwramStruct u16 unk0112; u16 unk0114; u16 unk0116[0x280]; - u8 filler_0616[0x0A]; + u16 unk0616; + u16 unk0618; + u16 unk061A; + u16 unk061C; + u8 unk061E; + u8 unk061F; u16 unk0620[0x20]; - u8 filler_0660[0x88]; + struct Sprite * unk0660[0x20]; + u8 filler_06E0[8]; struct RegionMap unk06E8; u8 unk0F68[16]; + u8 filler_0F78[0x3C]; + u8 unk0FB4[0x600]; }; #define ePokedexAreaScreen (*(struct PokedexAreaScreenEwramStruct *)gSharedMem) @@ -66,6 +75,9 @@ void BuildAreaGlowTilemap(void); void sub_8111084(void); void sub_8111110(void); void sub_8111288(void); +void sub_81112BC(void); +void sub_8111314(void); +void sub_8111360(void); // .rodata @@ -86,15 +98,15 @@ const u16 gUnknown_083F857A[][2] = { {MAPSEC_Nothing} }; -struct PokedexAreaScreenEwramStruct *const gUnknown_083F8588 = &ePokedexAreaScreen; +struct PokedexAreaScreenEwramStruct *const gPokedexAreaScreenPtr = &ePokedexAreaScreen; // .text -void UnusedPokedexAreaScreen(u16 a0, u32 a1, u32 a2) +void UnusedPokedexAreaScreen(u16 a0, MainCallback a1, MainCallback a2) { - gUnknown_083F8588->unk0004 = a1; - gUnknown_083F8588->unk0008 = a2; - gUnknown_083F8588->unk000E = a0; + gPokedexAreaScreenPtr->unk0004 = a1; + gPokedexAreaScreenPtr->unk0008 = a2; + gPokedexAreaScreenPtr->unk000E = a0; SetMainCallback2(CB2_UnusedPokedexAreaScreen); } @@ -118,8 +130,8 @@ void CB2_UnusedPokedexAreaScreen(void) REG_BG3VOFS = 0; break; case 1: - InitRegionMap(&gUnknown_083F8588->unk06E8, FALSE); - StringFill(gUnknown_083F8588->unk0F68, CHAR_SPACE, 16); + InitRegionMap(&gPokedexAreaScreenPtr->unk06E8, FALSE); + StringFill(gPokedexAreaScreenPtr->unk0F68, CHAR_SPACE, 16); break; case 2: sub_8110824(); @@ -158,7 +170,7 @@ void sub_81107DC(void) void sub_81107F0(void) { - gUnknown_083F8588->unk0000(); + gPokedexAreaScreenPtr->unk0000(); sub_8111110(); AnimateSprites(); BuildOamBuffer(); @@ -167,21 +179,21 @@ void sub_81107F0(void) void sub_8110814(void (*func)(void)) { - gUnknown_083F8588->unk0000 = func; - gUnknown_083F8588->unk000C = 0; + gPokedexAreaScreenPtr->unk0000 = func; + gPokedexAreaScreenPtr->unk000C = 0; } void sub_8110824(void) { - gUnknown_083F8588->unk0114 = 0; + gPokedexAreaScreenPtr->unk0114 = 0; } bool8 DrawAreaGlow(void) { - switch (gUnknown_083F8588->unk0114) + switch (gPokedexAreaScreenPtr->unk0114) { case 0: - FindMapsWithMon(gUnknown_083F8588->unk000E); + FindMapsWithMon(gPokedexAreaScreenPtr->unk000E); break; case 1: BuildAreaGlowTilemap(); @@ -190,19 +202,19 @@ bool8 DrawAreaGlow(void) LZ77UnCompVram(gUnknown_083F8438, BG_CHAR_ADDR(3)); break; case 3: - DmaCopy16(3, gUnknown_083F8588->unk0116, BG_SCREEN_ADDR(30), 0x500); + DmaCopy16(3, gPokedexAreaScreenPtr->unk0116, BG_SCREEN_ADDR(30), 0x500); break; case 4: LoadPalette(gUnknown_083F8418, 0, 32); break; case 5: REG_BG0CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(3) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT256x256; - gUnknown_083F8588->unk0114++; + gPokedexAreaScreenPtr->unk0114++; return FALSE; default: return FALSE; } - gUnknown_083F8588->unk0114++; + gPokedexAreaScreenPtr->unk0114++; return TRUE; } @@ -213,8 +225,8 @@ void FindMapsWithMon(u16 mon) if (mon != ROAMER_SPECIES) { - gUnknown_083F8588->unk0110 = 0; - gUnknown_083F8588->unk0112 = 0; + gPokedexAreaScreenPtr->unk0110 = 0; + gPokedexAreaScreenPtr->unk0112 = 0; for (i = 0; i < 1; i++) { if (gUnknown_083F856C[i] == mon) @@ -255,27 +267,27 @@ void FindMapsWithMon(u16 mon) } else { - gUnknown_083F8588->unk0112 = 0; + gPokedexAreaScreenPtr->unk0112 = 0; roamer = &gSaveBlock1.roamer; if (roamer->active) { - GetRoamerLocation(&gUnknown_083F8588->unk0010[0].mapGroup, &gUnknown_083F8588->unk0010[0].mapNum); - gUnknown_083F8588->unk0010[0].regionMapSectionId = Overworld_GetMapHeaderByGroupAndId(gUnknown_083F8588->unk0010[0].mapGroup, gUnknown_083F8588->unk0010[0].mapNum)->regionMapSectionId; - gUnknown_083F8588->unk0110 = 1; + GetRoamerLocation(&gPokedexAreaScreenPtr->unk0010[0].mapGroup, &gPokedexAreaScreenPtr->unk0010[0].mapNum); + gPokedexAreaScreenPtr->unk0010[0].regionMapSectionId = Overworld_GetMapHeaderByGroupAndId(gPokedexAreaScreenPtr->unk0010[0].mapGroup, gPokedexAreaScreenPtr->unk0010[0].mapNum)->regionMapSectionId; + gPokedexAreaScreenPtr->unk0110 = 1; } else - gUnknown_083F8588->unk0110 = 0; + gPokedexAreaScreenPtr->unk0110 = 0; } } void SetAreaHasMon(u16 mapGroup, u16 mapNum) { - if (gUnknown_083F8588->unk0110 < 0x40) + if (gPokedexAreaScreenPtr->unk0110 < 0x40) { - gUnknown_083F8588->unk0010[gUnknown_083F8588->unk0110].mapGroup = mapGroup; - gUnknown_083F8588->unk0010[gUnknown_083F8588->unk0110].mapNum = mapNum; - gUnknown_083F8588->unk0010[gUnknown_083F8588->unk0110].regionMapSectionId = sub_80FBA04(Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum)->regionMapSectionId); - gUnknown_083F8588->unk0110++; + gPokedexAreaScreenPtr->unk0010[gPokedexAreaScreenPtr->unk0110].mapGroup = mapGroup; + gPokedexAreaScreenPtr->unk0010[gPokedexAreaScreenPtr->unk0110].mapNum = mapNum; + gPokedexAreaScreenPtr->unk0010[gPokedexAreaScreenPtr->unk0110].regionMapSectionId = sub_80FBA04(Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum)->regionMapSectionId); + gPokedexAreaScreenPtr->unk0110++; } } @@ -284,7 +296,7 @@ void SetSpecialMapHasMon(u16 mapGroup, u16 mapNum) const struct MapHeader *mapHeader; u16 i; - if (gUnknown_083F8588->unk0112 < 0x20) + if (gPokedexAreaScreenPtr->unk0112 < 0x20) { mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum); if (mapHeader->regionMapSectionId < MAPSEC_Nothing) @@ -294,15 +306,15 @@ void SetSpecialMapHasMon(u16 mapGroup, u16 mapNum) if (mapHeader->regionMapSectionId == gUnknown_083F857A[i][0] && !FlagGet(gUnknown_083F857A[i][1])) return; } - for (i = 0; i < gUnknown_083F8588->unk0112; i++) + for (i = 0; i < gPokedexAreaScreenPtr->unk0112; i++) { - if (gUnknown_083F8588->unk0620[i] == mapHeader->regionMapSectionId) + if (gPokedexAreaScreenPtr->unk0620[i] == mapHeader->regionMapSectionId) break; } - if (i == gUnknown_083F8588->unk0112) + if (i == gPokedexAreaScreenPtr->unk0112) { - gUnknown_083F8588->unk0620[i] = mapHeader->regionMapSectionId; - gUnknown_083F8588->unk0112++; + gPokedexAreaScreenPtr->unk0620[i] = mapHeader->regionMapSectionId; + gPokedexAreaScreenPtr->unk0112++; } } } @@ -347,18 +359,18 @@ void BuildAreaGlowTilemap(void) u32 r3; for (gUnknown_02039260 = 0; gUnknown_02039260 < 0x280; gUnknown_02039260++) - gUnknown_083F8588->unk0116[gUnknown_02039260] = 0; + gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] = 0; - for (gUnknown_02039260 = 0; gUnknown_02039260 < gUnknown_083F8588->unk0110; gUnknown_02039260++) + for (gUnknown_02039260 = 0; gUnknown_02039260 < gPokedexAreaScreenPtr->unk0110; gUnknown_02039260++) { gUnknown_02039266 = 0; for (gUnknown_02039264 = 0; gUnknown_02039264 < 20; gUnknown_02039264++) { for (gUnknown_02039262 = 0; gUnknown_02039262 < 32; gUnknown_02039262++) { - if (GetRegionMapSectionAt_(gUnknown_02039262, gUnknown_02039264) == gUnknown_083F8588->unk0010[gUnknown_02039260].regionMapSectionId) + if (GetRegionMapSectionAt_(gUnknown_02039262, gUnknown_02039264) == gPokedexAreaScreenPtr->unk0010[gUnknown_02039260].regionMapSectionId) { - gUnknown_083F8588->unk0116[gUnknown_02039266] = 0xFFFF; + gPokedexAreaScreenPtr->unk0116[gUnknown_02039266] = 0xFFFF; } gUnknown_02039266++; } @@ -370,24 +382,24 @@ void BuildAreaGlowTilemap(void) { for (gUnknown_02039262 = 0; gUnknown_02039262 < 32; gUnknown_02039262++) { - if (gUnknown_083F8588->unk0116[gUnknown_02039266] == 0xFFFF) + if (gPokedexAreaScreenPtr->unk0116[gUnknown_02039266] == 0xFFFF) { - if (gUnknown_02039262 != 0 && gUnknown_083F8588->unk0116[gUnknown_02039266 - 1] != 0xFFFF) - gUnknown_083F8588->unk0116[gUnknown_02039266 - 1] |= 0x02; - if (gUnknown_02039262 != 31 && gUnknown_083F8588->unk0116[gUnknown_02039266 + 1] != 0xFFFF) - gUnknown_083F8588->unk0116[gUnknown_02039266 + 1] |= 0x01; - if (gUnknown_02039264 != 0 && gUnknown_083F8588->unk0116[gUnknown_02039266 - 32] != 0xFFFF) - gUnknown_083F8588->unk0116[gUnknown_02039266 - 32] |= 0x08; - if (gUnknown_02039264 != 19 && gUnknown_083F8588->unk0116[gUnknown_02039266 + 32] != 0xFFFF) - gUnknown_083F8588->unk0116[gUnknown_02039266 + 32] |= 0x04; - if (gUnknown_02039262 != 0 && gUnknown_02039264 != 0 && gUnknown_083F8588->unk0116[gUnknown_02039266 - 33] != 0xFFFF) - gUnknown_083F8588->unk0116[gUnknown_02039266 - 33] |= 0x10; - if (gUnknown_02039262 != 31 && gUnknown_02039264 != 0 && gUnknown_083F8588->unk0116[gUnknown_02039266 - 31] != 0xFFFF) - gUnknown_083F8588->unk0116[gUnknown_02039266 - 31] |= 0x40; - if (gUnknown_02039262 != 0 && gUnknown_02039264 != 19 && gUnknown_083F8588->unk0116[gUnknown_02039266 + 31] != 0xFFFF) - gUnknown_083F8588->unk0116[gUnknown_02039266 + 31] |= 0x20; - if (gUnknown_02039262 != 31 && gUnknown_02039264 != 19 && gUnknown_083F8588->unk0116[gUnknown_02039266 + 33] != 0xFFFF) - gUnknown_083F8588->unk0116[gUnknown_02039266 + 33] |= 0x80; + if (gUnknown_02039262 != 0 && gPokedexAreaScreenPtr->unk0116[gUnknown_02039266 - 1] != 0xFFFF) + gPokedexAreaScreenPtr->unk0116[gUnknown_02039266 - 1] |= 0x02; + if (gUnknown_02039262 != 31 && gPokedexAreaScreenPtr->unk0116[gUnknown_02039266 + 1] != 0xFFFF) + gPokedexAreaScreenPtr->unk0116[gUnknown_02039266 + 1] |= 0x01; + if (gUnknown_02039264 != 0 && gPokedexAreaScreenPtr->unk0116[gUnknown_02039266 - 32] != 0xFFFF) + gPokedexAreaScreenPtr->unk0116[gUnknown_02039266 - 32] |= 0x08; + if (gUnknown_02039264 != 19 && gPokedexAreaScreenPtr->unk0116[gUnknown_02039266 + 32] != 0xFFFF) + gPokedexAreaScreenPtr->unk0116[gUnknown_02039266 + 32] |= 0x04; + if (gUnknown_02039262 != 0 && gUnknown_02039264 != 0 && gPokedexAreaScreenPtr->unk0116[gUnknown_02039266 - 33] != 0xFFFF) + gPokedexAreaScreenPtr->unk0116[gUnknown_02039266 - 33] |= 0x10; + if (gUnknown_02039262 != 31 && gUnknown_02039264 != 0 && gPokedexAreaScreenPtr->unk0116[gUnknown_02039266 - 31] != 0xFFFF) + gPokedexAreaScreenPtr->unk0116[gUnknown_02039266 - 31] |= 0x40; + if (gUnknown_02039262 != 0 && gUnknown_02039264 != 19 && gPokedexAreaScreenPtr->unk0116[gUnknown_02039266 + 31] != 0xFFFF) + gPokedexAreaScreenPtr->unk0116[gUnknown_02039266 + 31] |= 0x20; + if (gUnknown_02039262 != 31 && gUnknown_02039264 != 19 && gPokedexAreaScreenPtr->unk0116[gUnknown_02039266 + 33] != 0xFFFF) + gPokedexAreaScreenPtr->unk0116[gUnknown_02039266 + 33] |= 0x80; } gUnknown_02039266++; } @@ -395,36 +407,36 @@ void BuildAreaGlowTilemap(void) for (gUnknown_02039260 = 0; gUnknown_02039260 < 0x280; gUnknown_02039260++) // Register difference on induction: expected r3, got r1 { - if (gUnknown_083F8588->unk0116[gUnknown_02039260] == 0xFFFF) - gUnknown_083F8588->unk0116[gUnknown_02039260] = 0x10; - else if (gUnknown_083F8588->unk0116[gUnknown_02039260] != 0) + if (gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] == 0xFFFF) + gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] = 0x10; + else if (gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] != 0) { - if (gUnknown_083F8588->unk0116[gUnknown_02039260] & 0x02) - gUnknown_083F8588->unk0116[gUnknown_02039260] &= 0xFFCF; - if (gUnknown_083F8588->unk0116[gUnknown_02039260] & 0x01) - gUnknown_083F8588->unk0116[gUnknown_02039260] &= 0xFF3F; - if (gUnknown_083F8588->unk0116[gUnknown_02039260] & 0x08) - gUnknown_083F8588->unk0116[gUnknown_02039260] &= 0xFFAF; - if (gUnknown_083F8588->unk0116[gUnknown_02039260] & 0x04) - gUnknown_083F8588->unk0116[gUnknown_02039260] &= 0xFF5F; - gUnknown_02039268 = gUnknown_083F8588->unk0116[gUnknown_02039260] & 0x0F; - gUnknown_0203926A = gUnknown_083F8588->unk0116[gUnknown_02039260] & 0xF0; + if (gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] & 0x02) + gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] &= 0xFFCF; + if (gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] & 0x01) + gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] &= 0xFF3F; + if (gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] & 0x08) + gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] &= 0xFFAF; + if (gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] & 0x04) + gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] &= 0xFF5F; + gUnknown_02039268 = gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] & 0x0F; + gUnknown_0203926A = gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] & 0xF0; if (gUnknown_0203926A) { - gUnknown_083F8588->unk0116[gUnknown_02039260] &= 0x0F; + gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] &= 0x0F; switch (gUnknown_02039268) { case 0: if (gUnknown_0203926A != 0) - gUnknown_083F8588->unk0116[gUnknown_02039260] += (gUnknown_0203926A >> 4) + 0x10; + gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] += (gUnknown_0203926A >> 4) + 0x10; break; case 2: if (gUnknown_0203926A != 0) - gUnknown_083F8588->unk0116[gUnknown_02039260] += (gUnknown_0203926A >> 4) + 0x1E; + gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] += (gUnknown_0203926A >> 4) + 0x1E; break; case 1: if (gUnknown_0203926A != 0) - gUnknown_083F8588->unk0116[gUnknown_02039260] += (gUnknown_0203926A >> 6) + 0x20; + gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] += (gUnknown_0203926A >> 6) + 0x20; break; case 8: if (gUnknown_0203926A != 0) @@ -434,7 +446,7 @@ void BuildAreaGlowTilemap(void) r3 |= 1; if (gUnknown_0203926A & 0x20) r3 |= 2; - gUnknown_083F8588->unk0116[gUnknown_02039260] += r3 + 0x20; + gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] += r3 + 0x20; } break; case 4: @@ -445,16 +457,16 @@ void BuildAreaGlowTilemap(void) r3 |= 1; if (gUnknown_0203926A & 0x10) r3 |= 2; - gUnknown_083F8588->unk0116[gUnknown_02039260] += r3 + 0x21; + gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] += r3 + 0x21; } break; case 5: case 6: - gUnknown_083F8588->unk0116[gUnknown_02039260] += 0x27; + gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] += 0x27; break; case 9: case 10: - gUnknown_083F8588->unk0116[gUnknown_02039260] += 0x25; + gPokedexAreaScreenPtr->unk0116[gUnknown_02039260] += 0x25; break; } } @@ -1039,3 +1051,138 @@ NAKED void BuildAreaGlowTilemap(void) "_08111080: .4byte 0x027f0000"); } #endif // NONMATCHING + +void sub_8111084(void) +{ + if (gPokedexAreaScreenPtr->unk0112 != 0 && gPokedexAreaScreenPtr->unk0110 == 0) + gPokedexAreaScreenPtr->unk061E = 1; + else + gPokedexAreaScreenPtr->unk061E = 0; + gPokedexAreaScreenPtr->unk0616 = 0; + gPokedexAreaScreenPtr->unk0618 = 0; + gPokedexAreaScreenPtr->unk061A = 0; + gPokedexAreaScreenPtr->unk061C = 0x40; + gPokedexAreaScreenPtr->unk061F = 1; + REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD; + REG_BLDALPHA = 0x1000; + sub_8111110(); +} + +void sub_8111110(void) +{ + u16 x; + u16 y; + u16 i; + + if (gPokedexAreaScreenPtr->unk061E == 0) + { + if (gPokedexAreaScreenPtr->unk0616 == 0) + { + gPokedexAreaScreenPtr->unk0618++; + if (gPokedexAreaScreenPtr->unk0618 & 1) + gPokedexAreaScreenPtr->unk061A = (gPokedexAreaScreenPtr->unk061A + 4) & 0x7f; + else + gPokedexAreaScreenPtr->unk061C = (gPokedexAreaScreenPtr->unk061C + 4) & 0x7f; + x = gSineTable[gPokedexAreaScreenPtr->unk061A] >> 4; + y = gSineTable[gPokedexAreaScreenPtr->unk061C] >> 4; + REG_BLDALPHA = x | (y << 8); + gPokedexAreaScreenPtr->unk0616 = 0; + if (gPokedexAreaScreenPtr->unk0618 == 0x40) + { + gPokedexAreaScreenPtr->unk0618 = 0; + if (gPokedexAreaScreenPtr->unk0112 != 0) + gPokedexAreaScreenPtr->unk061E = 1; + } + } + else + gPokedexAreaScreenPtr->unk0616--; + } + else + { + gPokedexAreaScreenPtr->unk0616++; + if (gPokedexAreaScreenPtr->unk0616 > 12) + { + gPokedexAreaScreenPtr->unk0616 = 0; + gPokedexAreaScreenPtr->unk061F++; + for (i = 0; i < gPokedexAreaScreenPtr->unk0112; i++) + { + gPokedexAreaScreenPtr->unk0660[i]->invisible = gPokedexAreaScreenPtr->unk061F & 1; + } + if (gPokedexAreaScreenPtr->unk061F > 4) + { + gPokedexAreaScreenPtr->unk061F = 1; + if (gPokedexAreaScreenPtr->unk0110 != 0) + gPokedexAreaScreenPtr->unk061E = 0; + } + } + } +} + +void sub_8111288(void) +{ + switch (gPokedexAreaScreenPtr->unk000C) + { + case 0: + gPokedexAreaScreenPtr->unk000C = 1; + break; + case 1: + if (!UpdatePaletteFade()) + { + sub_8110814(sub_81112BC); + } + break; + } +} + +void sub_81112BC(void) +{ + switch (gPokedexAreaScreenPtr->unk000C) + { + case 0: + if (gMain.newKeys & B_BUTTON) + { + sub_8110814(sub_8111314); + } + else if (gMain.newKeys & DPAD_RIGHT || (gMain.newKeys & R_BUTTON && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) + { + sub_8110814(sub_8111360); + } + break; + } +} + +void sub_8111314(void) +{ + switch (gPokedexAreaScreenPtr->unk000C) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, 0); + gPokedexAreaScreenPtr->unk000C++; + break; + case 1: + if (!UpdatePaletteFade()) + { + FreeRegionMapIconResources(); + SetMainCallback2(gPokedexAreaScreenPtr->unk0004); + } + break; + } +} + +void sub_8111360(void) +{ + switch (gPokedexAreaScreenPtr->unk000C) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, 0); + gPokedexAreaScreenPtr->unk000C++; + break; + case 1: + if (!UpdatePaletteFade()) + { + FreeRegionMapIconResources(); + SetMainCallback2(gPokedexAreaScreenPtr->unk0008); + } + break; + } +} |