diff options
-rw-r--r-- | asm/pokedex_area_screen.s | 1332 | ||||
-rw-r--r-- | data/pokedex_area_screen.s | 1 | ||||
-rw-r--r-- | include/constants/species.h | 6 | ||||
-rw-r--r-- | include/region_map.h | 3 | ||||
-rw-r--r-- | include/roamer.h | 2 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/pokedex_area_screen.c | 1020 | ||||
-rw-r--r-- | src/roamer.c | 6 |
8 files changed, 1026 insertions, 1345 deletions
diff --git a/asm/pokedex_area_screen.s b/asm/pokedex_area_screen.s index 779a5a0ed..2c1e83def 100644 --- a/asm/pokedex_area_screen.s +++ b/asm/pokedex_area_screen.s @@ -5,1338 +5,6 @@ .text - thumb_func_start UnusedPokedexAreaScreen -UnusedPokedexAreaScreen: @ 8110664 - push {lr} - ldr r3, _08110678 @ =gSharedMem - str r1, [r3, 0x4] - str r2, [r3, 0x8] - strh r0, [r3, 0xE] - ldr r0, _0811067C @ =CB2_UnusedPokedexAreaScreen - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_08110678: .4byte gSharedMem -_0811067C: .4byte CB2_UnusedPokedexAreaScreen - thumb_func_end UnusedPokedexAreaScreen - - thumb_func_start CB2_UnusedPokedexAreaScreen -CB2_UnusedPokedexAreaScreen: @ 8110680 - push {r4,lr} - sub sp, 0x4 - ldr r0, _0811069C @ =gMain - ldr r1, _081106A0 @ =0x0000043c - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x7 - bls _08110692 - b _081107C0 -_08110692: - lsls r0, 2 - ldr r1, _081106A4 @ =_081106A8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0811069C: .4byte gMain -_081106A0: .4byte 0x0000043c -_081106A4: .4byte _081106A8 - .align 2, 0 -_081106A8: - .4byte _081106C8 - .4byte _08110720 - .4byte _08110740 - .4byte _08110746 - .4byte _08110752 - .4byte _08110770 - .4byte _08110782 - .4byte _081107A8 -_081106C8: - movs r0, 0 - bl SetVBlankCallback - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xC4 - lsls r2, 7 - adds r0, r2, 0 - strh r0, [r1] - bl ResetPaletteFade - bl ResetSpriteData - bl ResetTasks - bl FreeSpriteTileRanges - bl FreeAllSpritePalettes - ldr r0, _08110710 @ =REG_BG0HOFS - movs r1, 0 - strh r1, [r0] - ldr r2, _08110714 @ =REG_BG0VOFS - ldr r3, _08110718 @ =0x0000fff8 - adds r0, r3, 0 - strh r0, [r2] - ldr r0, _0811071C @ =REG_BG2VOFS - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - b _081107C0 - .align 2, 0 -_08110710: .4byte REG_BG0HOFS -_08110714: .4byte REG_BG0VOFS -_08110718: .4byte 0x0000fff8 -_0811071C: .4byte REG_BG2VOFS -_08110720: - ldr r4, _0811073C @ =gSharedMem + 0x6E8 - adds r0, r4, 0 - movs r1, 0 - bl InitRegionMap - movs r0, 0x88 - lsls r0, 4 - adds r4, r0 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x10 - bl StringFill - b _081107C0 - .align 2, 0 -_0811073C: .4byte gSharedMem + 0x6E8 -_08110740: - bl sub_8110824 - b _081107C0 -_08110746: - bl DrawAreaGlow - lsls r0, 24 - cmp r0, 0 - bne _081107CC - b _081107C0 -_08110752: - movs r0, 0x1 - movs r1, 0x1 - bl CreateRegionMapPlayerIcon - movs r1, 0x8 - negs r1, r1 - movs r0, 0 - bl sub_80FB2A4 - ldr r0, _0811076C @ =sub_81107DC - bl SetVBlankCallback - b _081107C0 - .align 2, 0 -_0811076C: .4byte sub_81107DC -_08110770: - movs r0, 0x15 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _081107C0 -_08110782: - ldr r1, _0811079C @ =REG_BLDCNT - ldr r2, _081107A0 @ =0x00003f41 - adds r0, r2, 0 - strh r0, [r1] - bl sub_8111084 - movs r1, 0x80 - lsls r1, 19 - ldr r3, _081107A4 @ =0x00007741 - adds r0, r3, 0 - strh r0, [r1] - b _081107C0 - .align 2, 0 -_0811079C: .4byte REG_BLDCNT -_081107A0: .4byte 0x00003f41 -_081107A4: .4byte 0x00007741 -_081107A8: - ldr r0, _081107B8 @ =sub_8111288 - bl sub_8110814 - ldr r0, _081107BC @ =sub_81107F0 - bl SetMainCallback2 - b _081107CC - .align 2, 0 -_081107B8: .4byte sub_8111288 -_081107BC: .4byte sub_81107F0 -_081107C0: - ldr r1, _081107D4 @ =gMain - ldr r0, _081107D8 @ =0x0000043c - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_081107CC: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081107D4: .4byte gMain -_081107D8: .4byte 0x0000043c - thumb_func_end CB2_UnusedPokedexAreaScreen - - thumb_func_start sub_81107DC -sub_81107DC: @ 81107DC - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_81107DC - - thumb_func_start sub_81107F0 -sub_81107F0: @ 81107F0 - push {lr} - ldr r0, _08110810 @ =gSharedMem - ldr r0, [r0] - bl _call_via_r0 - bl sub_8111110 - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - .align 2, 0 -_08110810: .4byte gSharedMem - thumb_func_end sub_81107F0 - - thumb_func_start sub_8110814 -sub_8110814: @ 8110814 - ldr r1, _08110820 @ =gSharedMem - str r0, [r1] - movs r0, 0 - strh r0, [r1, 0xC] - bx lr - .align 2, 0 -_08110820: .4byte gSharedMem - thumb_func_end sub_8110814 - - thumb_func_start sub_8110824 -sub_8110824: @ 8110824 - ldr r0, _08110834 @ =gSharedMem - movs r1, 0x8A - lsls r1, 1 - adds r0, r1 - movs r1, 0 - strh r1, [r0] - bx lr - .align 2, 0 -_08110834: .4byte gSharedMem - thumb_func_end sub_8110824 - - thumb_func_start DrawAreaGlow -DrawAreaGlow: @ 8110838 - push {lr} - ldr r1, _08110854 @ =gSharedMem - movs r2, 0x8A - lsls r2, 1 - adds r0, r1, r2 - ldrh r0, [r0] - adds r2, r1, 0 - cmp r0, 0x5 - bhi _081108E4 - lsls r0, 2 - ldr r1, _08110858 @ =_0811085C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08110854: .4byte gSharedMem -_08110858: .4byte _0811085C - .align 2, 0 -_0811085C: - .4byte _08110874 - .4byte _08110884 - .4byte _0811088A - .4byte _0811089C - .4byte _081108C0 - .4byte _081108D0 -_08110874: - ldr r0, _08110880 @ =gSharedMem - ldrh r0, [r0, 0xE] - bl FindMapsWithMon - b _081108F0 - .align 2, 0 -_08110880: .4byte gSharedMem -_08110884: - bl BuildAreaGlowTilemap - b _081108F0 -_0811088A: - ldr r0, _08110894 @ =gUnknown_083F8438 - ldr r1, _08110898 @ =0x0600c000 - bl LZ77UnCompVram - b _081108F0 - .align 2, 0 -_08110894: .4byte gUnknown_083F8438 -_08110898: .4byte 0x0600c000 -_0811089C: - ldr r1, _081108B0 @ =0x040000d4 - ldr r0, _081108B4 @ =gSharedMem + 0x116 - str r0, [r1] - ldr r0, _081108B8 @ =0x0600f000 - str r0, [r1, 0x4] - ldr r0, _081108BC @ =0x80000280 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - b _081108F0 - .align 2, 0 -_081108B0: .4byte 0x040000d4 -_081108B4: .4byte gSharedMem + 0x116 -_081108B8: .4byte 0x0600f000 -_081108BC: .4byte 0x80000280 -_081108C0: - ldr r0, _081108CC @ =gUnknown_083F8418 - movs r1, 0 - movs r2, 0x20 - bl LoadPalette - b _081108F0 - .align 2, 0 -_081108CC: .4byte gUnknown_083F8418 -_081108D0: - ldr r1, _081108E8 @ =REG_BG0CNT - ldr r3, _081108EC @ =0x00001e0d - adds r0, r3, 0 - strh r0, [r1] - movs r0, 0x8A - lsls r0, 1 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_081108E4: - movs r0, 0 - b _08110900 - .align 2, 0 -_081108E8: .4byte REG_BG0CNT -_081108EC: .4byte 0x00001e0d -_081108F0: - ldr r1, _08110904 @ =gSharedMem - movs r2, 0x8A - lsls r2, 1 - adds r1, r2 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x1 -_08110900: - pop {r1} - bx r1 - .align 2, 0 -_08110904: .4byte gSharedMem - thumb_func_end DrawAreaGlow - - thumb_func_start FindMapsWithMon -FindMapsWithMon: @ 8110908 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 16 - lsrs r7, r0, 16 - .ifdef SAPPHIRE - ldr r0, _sub_8110908_Latias @ =407 - .else - @ Latios - movs r0, 0xCC - lsls r0, 1 - .endif - cmp r7, r0 - bne _0811091E - b _08110A44 -_0811091E: - ldr r2, _08110988 @ =gSharedMem - movs r1, 0x88 - lsls r1, 1 - adds r0, r2, r1 - movs r1, 0 - strh r1, [r0] - movs r3, 0x89 - lsls r3, 1 - adds r0, r2, r3 - strh r1, [r0] - movs r6, 0 - ldr r1, _0811098C @ =gUnknown_083F856C -_08110936: - lsls r0, r6, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r7 - bne _08110942 - b _08110A8C -_08110942: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0 - beq _08110936 - movs r6, 0 - ldr r4, _08110990 @ =gUnknown_083F856E - ldrh r0, [r4] - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _081109D0 - mov r8, r4 - adds r5, r4, 0x4 - mov r9, r1 -_08110960: - lsls r0, r6, 1 - adds r1, r0, r6 - lsls r2, r1, 1 - mov r3, r8 - adds r1, r2, r3 - adds r3, r0, 0 - ldrh r1, [r1] - cmp r7, r1 - bne _081109BA - adds r0, r4, 0x2 - adds r0, r2, r0 - ldrh r0, [r0] - cmp r0, 0x18 - beq _081109A6 - cmp r0, 0x18 - bgt _08110994 - cmp r0, 0 - beq _0811099A - b _081109BA - .align 2, 0 - .ifdef SAPPHIRE -_sub_8110908_Latias: .4byte 407 - .endif -_08110988: .4byte gSharedMem -_0811098C: .4byte gUnknown_083F856C -_08110990: .4byte gUnknown_083F856E -_08110994: - cmp r0, 0x1A - beq _081109A6 - b _081109BA -_0811099A: - adds r0, r2, r5 - ldrh r1, [r0] - movs r0, 0 - bl SetAreaHasMon - b _081109BA -_081109A6: - adds r1, r3, r6 - lsls r1, 1 - mov r0, r8 - adds r0, 0x2 - adds r0, r1, r0 - ldrh r0, [r0] - adds r1, r5 - ldrh r1, [r1] - bl SetSpecialMapHasMon -_081109BA: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r4, _08110A00 @ =gUnknown_083F856E - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 1 - adds r0, r4 - ldrh r0, [r0] - cmp r0, r9 - bne _08110960 -_081109D0: - movs r6, 0 - ldr r1, _08110A04 @ =gWildMonHeaders - ldrb r0, [r1] - cmp r0, 0xFF - beq _08110A8C -_081109DA: - lsls r4, r6, 2 - adds r0, r4, r6 - lsls r0, 2 - adds r5, r0, r1 - adds r0, r5, 0 - adds r1, r7, 0 - bl MapHasMon - lsls r0, 24 - cmp r0, 0 - beq _08110A28 - ldrb r0, [r5] - cmp r0, 0x18 - beq _08110A18 - cmp r0, 0x18 - bgt _08110A08 - cmp r0, 0 - beq _08110A0E - b _08110A28 - .align 2, 0 -_08110A00: .4byte gUnknown_083F856E -_08110A04: .4byte gWildMonHeaders -_08110A08: - cmp r0, 0x1A - beq _08110A18 - b _08110A28 -_08110A0E: - ldrb r1, [r5, 0x1] - movs r0, 0 - bl SetAreaHasMon - b _08110A28 -_08110A18: - ldr r0, _08110A40 @ =gWildMonHeaders - adds r1, r4, r6 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - ldrb r1, [r1, 0x1] - bl SetSpecialMapHasMon -_08110A28: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r1, _08110A40 @ =gWildMonHeaders - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0xFF - bne _081109DA - b _08110A8C - .align 2, 0 -_08110A40: .4byte gWildMonHeaders -_08110A44: - ldr r4, _08110A7C @ =gSharedMem - movs r0, 0x89 - lsls r0, 1 - adds r1, r4, r0 - movs r0, 0 - strh r0, [r1] - ldr r0, _08110A80 @ =gSaveBlock1 + 0x3144 - ldrb r2, [r0, 0x13] - cmp r2, 0 - beq _08110A84 - adds r0, r4, 0 - adds r0, 0x10 - adds r1, r4, 0 - adds r1, 0x11 - bl GetRoamerLocation - ldrb r0, [r4, 0x10] - ldrb r1, [r4, 0x11] - bl Overworld_GetMapHeaderByGroupAndId - ldrb r0, [r0, 0x14] - strh r0, [r4, 0x12] - movs r3, 0x88 - lsls r3, 1 - adds r1, r4, r3 - movs r0, 0x1 - strh r0, [r1] - b _08110A8C - .align 2, 0 -_08110A7C: .4byte gSharedMem -_08110A80: .4byte gSaveBlock1 + 0x3144 -_08110A84: - movs r1, 0x88 - lsls r1, 1 - adds r0, r4, r1 - strh r2, [r0] -_08110A8C: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end FindMapsWithMon - - thumb_func_start SetAreaHasMon -SetAreaHasMon: @ 8110A98 - push {r4,r5,lr} - lsls r0, 16 - lsrs r2, r0, 16 - lsls r1, 16 - lsrs r1, 16 - ldr r5, _08110AE0 @ =gSharedMem - movs r0, 0x88 - lsls r0, 1 - adds r4, r5, r0 - ldrh r0, [r4] - cmp r0, 0x3F - bhi _08110AD8 - lsls r0, 2 - adds r0, r5 - strb r2, [r0, 0x10] - ldrh r0, [r4] - lsls r0, 2 - adds r0, r5 - strb r1, [r0, 0x11] - adds r0, r2, 0 - bl Overworld_GetMapHeaderByGroupAndId - ldrb r0, [r0, 0x14] - bl sub_80FBA04 - ldrh r1, [r4] - lsls r1, 2 - adds r1, r5 - strh r0, [r1, 0x12] - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] -_08110AD8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08110AE0: .4byte gSharedMem - thumb_func_end SetAreaHasMon - - thumb_func_start SetSpecialMapHasMon -SetSpecialMapHasMon: @ 8110AE4 - push {r4-r6,lr} - lsls r0, 16 - lsrs r2, r0, 16 - lsls r1, 16 - lsrs r1, 16 - ldr r0, _08110B9C @ =gSharedMem - movs r3, 0x89 - lsls r3, 1 - adds r0, r3 - ldrh r0, [r0] - cmp r0, 0x1F - bhi _08110B96 - adds r0, r2, 0 - bl Overworld_GetMapHeaderByGroupAndId - adds r6, r0, 0 - ldrb r0, [r6, 0x14] - cmp r0, 0x57 - bhi _08110B96 - movs r4, 0 - ldr r1, _08110BA0 @ =gUnknown_083F857A - ldrh r0, [r1] - cmp r0, 0x58 - beq _08110B42 - adds r5, r1, 0 -_08110B16: - lsls r2, r4, 2 - adds r1, r2, r5 - ldrb r0, [r6, 0x14] - ldrh r1, [r1] - cmp r0, r1 - bne _08110B32 - adds r0, r5, 0x2 - adds r0, r2, r0 - ldrh r0, [r0] - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _08110B96 -_08110B32: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - lsls r0, r4, 2 - adds r0, r5 - ldrh r0, [r0] - cmp r0, 0x58 - bne _08110B16 -_08110B42: - movs r4, 0 - ldr r0, _08110B9C @ =gSharedMem - movs r1, 0x89 - lsls r1, 1 - adds r2, r0, r1 - ldrh r3, [r2] - adds r1, r0, 0 - cmp r4, r3 - bcs _08110B76 - movs r0, 0xC4 - lsls r0, 3 - adds r5, r1, r0 - ldrh r0, [r5] - ldrb r2, [r6, 0x14] - cmp r0, r2 - beq _08110B76 -_08110B62: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, r3 - bcs _08110B76 - lsls r0, r4, 1 - adds r0, r5 - ldrh r0, [r0] - cmp r0, r2 - bne _08110B62 -_08110B76: - movs r3, 0x89 - lsls r3, 1 - adds r2, r1, r3 - ldrh r0, [r2] - cmp r4, r0 - bne _08110B96 - lsls r0, r4, 1 - movs r3, 0xC4 - lsls r3, 3 - adds r1, r3 - adds r0, r1 - ldrb r1, [r6, 0x14] - strh r1, [r0] - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] -_08110B96: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08110B9C: .4byte gSharedMem -_08110BA0: .4byte gUnknown_083F857A - thumb_func_end SetSpecialMapHasMon - - thumb_func_start MapHasMon -MapHasMon: @ 8110BA4 - push {r4-r6,lr} - adds r5, r0, 0 - lsls r1, 16 - lsrs r4, r1, 16 - adds r6, r4, 0 - ldr r0, [r5, 0x4] - adds r1, r4, 0 - movs r2, 0xC - bl MonListHasMon - lsls r0, 24 - cmp r0, 0 - bne _08110BF2 - ldr r0, [r5, 0x8] - adds r1, r4, 0 - movs r2, 0x5 - bl MonListHasMon - lsls r0, 24 - cmp r0, 0 - bne _08110BF2 - ldr r0, [r5, 0x10] - adds r1, r4, 0 - movs r2, 0xC - bl MonListHasMon - lsls r0, 24 - cmp r0, 0 - bne _08110BF2 - ldr r0, [r5, 0xC] - adds r1, r6, 0 - movs r2, 0x5 - bl MonListHasMon - lsls r0, 24 - cmp r0, 0 - bne _08110BF2 - movs r0, 0 - b _08110BF4 -_08110BF2: - movs r0, 0x1 -_08110BF4: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end MapHasMon - - thumb_func_start MonListHasMon -MonListHasMon: @ 8110BFC - push {r4,lr} - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 16 - lsrs r2, 16 - cmp r0, 0 - beq _08110C2A - movs r3, 0 - cmp r3, r2 - bcs _08110C2A - ldr r1, [r0, 0x4] -_08110C12: - lsls r0, r3, 2 - adds r0, r1 - ldrh r0, [r0, 0x2] - cmp r0, r4 - bne _08110C20 - movs r0, 0x1 - b _08110C2C -_08110C20: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, r2 - bcc _08110C12 -_08110C2A: - movs r0, 0 -_08110C2C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MonListHasMon - - thumb_func_start BuildAreaGlowTilemap -BuildAreaGlowTilemap: @ 8110C34 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - ldr r1, _08110E5C @ =gUnknown_02039260 - movs r0, 0 - strh r0, [r1] - mov r9, r1 - ldr r0, _08110E60 @ =gSharedMem - mov r8, r0 - ldr r1, _08110E64 @ =gUnknown_02039262 - mov r12, r1 - mov r1, r9 - movs r4, 0x8B - lsls r4, 1 - add r4, r8 - ldr r3, _08110E68 @ =0x0000027f - movs r2, 0 -_08110C5C: - ldrh r0, [r1] - lsls r0, 1 - adds r0, r4 - strh r2, [r0] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, r3 - bls _08110C5C - movs r0, 0 - mov r3, r9 - strh r0, [r3] - movs r1, 0x88 - lsls r1, 1 - add r1, r8 - ldrh r0, [r1] - cmp r0, 0 - beq _08110D04 - ldr r4, _08110E6C @ =gUnknown_02039266 - movs r2, 0 - ldr r5, _08110E64 @ =gUnknown_02039262 - mov r0, r8 - str r0, [sp, 0x8] - movs r1, 0x8B - lsls r1, 1 - add r1, r8 - mov r10, r1 - ldr r6, _08110E70 @ =gUnknown_02039264 - mov r7, r9 -_08110C9A: - strh r2, [r4] - ldr r3, _08110E70 @ =gUnknown_02039264 - strh r2, [r3] -_08110CA0: - mov r0, r12 - strh r2, [r0] -_08110CA4: - ldrh r0, [r5] - ldrh r1, [r6] - str r2, [sp] - bl GetRegionMapSectionAt_ - ldrh r1, [r7] - lsls r1, 2 - ldr r3, [sp, 0x8] - adds r1, r3 - lsls r0, 16 - lsrs r0, 16 - ldr r2, [sp] - ldrh r1, [r1, 0x12] - cmp r0, r1 - bne _08110CCC - ldrh r0, [r4] - lsls r0, 1 - add r0, r10 - ldr r1, _08110E74 @ =0x0000ffff - strh r1, [r0] -_08110CCC: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1F - bls _08110CA4 - ldrh r0, [r6] - adds r0, 0x1 - strh r0, [r6] - lsls r0, 16 - lsrs r0, 16 - ldr r1, _08110E64 @ =gUnknown_02039262 - mov r12, r1 - cmp r0, 0x13 - bls _08110CA0 - ldrh r0, [r7] - adds r0, 0x1 - strh r0, [r7] - lsls r0, 16 - lsrs r0, 16 - ldr r3, _08110E78 @ =gSharedMem + 0x110 - ldrh r3, [r3] - cmp r0, r3 - bcc _08110C9A -_08110D04: - movs r0, 0 - ldr r1, _08110E6C @ =gUnknown_02039266 - strh r0, [r1] - ldr r3, _08110E70 @ =gUnknown_02039264 - strh r0, [r3] - ldr r6, _08110E64 @ =gUnknown_02039262 - mov r10, r0 - adds r3, r1, 0 - ldr r5, _08110E7C @ =gSharedMem + 0x116 - ldr r4, _08110E74 @ =0x0000ffff - ldr r7, _08110E70 @ =gUnknown_02039264 -_08110D1A: - mov r0, r10 - strh r0, [r6] -_08110D1E: - ldrh r1, [r3] - lsls r0, r1, 1 - adds r0, r5 - ldrh r0, [r0] - cmp r0, r4 - bne _08110E10 - ldrh r0, [r6] - cmp r0, 0 - beq _08110D42 - subs r0, r1, 0x1 - lsls r0, 1 - adds r2, r0, r5 - ldrh r1, [r2] - cmp r1, r4 - beq _08110D42 - movs r0, 0x2 - orrs r0, r1 - strh r0, [r2] -_08110D42: - ldrh r0, [r6] - cmp r0, 0x1F - beq _08110D5C - ldrh r0, [r3] - adds r0, 0x1 - lsls r0, 1 - adds r2, r0, r5 - ldrh r1, [r2] - cmp r1, r4 - beq _08110D5C - movs r0, 0x1 - orrs r0, r1 - strh r0, [r2] -_08110D5C: - ldrh r0, [r7] - cmp r0, 0 - beq _08110D76 - ldrh r0, [r3] - subs r0, 0x20 - lsls r0, 1 - adds r2, r0, r5 - ldrh r1, [r2] - cmp r1, r4 - beq _08110D76 - movs r0, 0x8 - orrs r0, r1 - strh r0, [r2] -_08110D76: - ldrh r0, [r7] - cmp r0, 0x13 - beq _08110D90 - ldrh r0, [r3] - adds r0, 0x20 - lsls r0, 1 - adds r2, r0, r5 - ldrh r1, [r2] - cmp r1, r4 - beq _08110D90 - movs r0, 0x4 - orrs r0, r1 - strh r0, [r2] -_08110D90: - ldrh r0, [r6] - cmp r0, 0 - beq _08110DB0 - ldrh r0, [r7] - cmp r0, 0 - beq _08110DB0 - ldrh r0, [r3] - subs r0, 0x21 - lsls r0, 1 - adds r2, r0, r5 - ldrh r1, [r2] - cmp r1, r4 - beq _08110DB0 - movs r0, 0x10 - orrs r0, r1 - strh r0, [r2] -_08110DB0: - ldrh r0, [r6] - cmp r0, 0x1F - beq _08110DD0 - ldrh r0, [r7] - cmp r0, 0 - beq _08110DD0 - ldrh r0, [r3] - subs r0, 0x1F - lsls r0, 1 - adds r2, r0, r5 - ldrh r1, [r2] - cmp r1, r4 - beq _08110DD0 - movs r0, 0x40 - orrs r0, r1 - strh r0, [r2] -_08110DD0: - ldrh r0, [r6] - cmp r0, 0 - beq _08110DF0 - ldrh r0, [r7] - cmp r0, 0x13 - beq _08110DF0 - ldrh r0, [r3] - adds r0, 0x1F - lsls r0, 1 - adds r2, r0, r5 - ldrh r1, [r2] - cmp r1, r4 - beq _08110DF0 - movs r0, 0x20 - orrs r0, r1 - strh r0, [r2] -_08110DF0: - ldrh r0, [r6] - cmp r0, 0x1F - beq _08110E10 - ldrh r0, [r7] - cmp r0, 0x13 - beq _08110E10 - ldrh r0, [r3] - adds r0, 0x21 - lsls r0, 1 - adds r2, r0, r5 - ldrh r1, [r2] - cmp r1, r4 - beq _08110E10 - movs r0, 0x80 - orrs r0, r1 - strh r0, [r2] -_08110E10: - ldrh r0, [r3] - adds r0, 0x1 - strh r0, [r3] - ldrh r0, [r6] - adds r0, 0x1 - strh r0, [r6] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1F - bhi _08110E26 - b _08110D1E -_08110E26: - ldrh r0, [r7] - adds r0, 0x1 - strh r0, [r7] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x13 - bhi _08110E36 - b _08110D1A -_08110E36: - movs r0, 0 - mov r1, r9 - strh r0, [r1] -_08110E3C: - mov r3, r9 - ldrh r0, [r3] - lsls r0, 1 - movs r4, 0x8B - lsls r4, 1 - add r4, r8 - adds r3, r0, r4 - ldrh r2, [r3] - adds r1, r2, 0 - ldr r0, _08110E74 @ =0x0000ffff - cmp r1, r0 - bne _08110E80 - movs r0, 0x10 - strh r0, [r3] - b _0811105E - .align 2, 0 -_08110E5C: .4byte gUnknown_02039260 -_08110E60: .4byte gSharedMem -_08110E64: .4byte gUnknown_02039262 -_08110E68: .4byte 0x0000027f -_08110E6C: .4byte gUnknown_02039266 -_08110E70: .4byte gUnknown_02039264 -_08110E74: .4byte 0x0000ffff -_08110E78: .4byte gSharedMem + 0x110 -_08110E7C: .4byte gSharedMem + 0x116 -_08110E80: - cmp r1, 0 - bne _08110E86 - b _0811105E -_08110E86: - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _08110E94 - ldr r0, _08110F28 @ =0x0000ffcf - ands r0, r2 - strh r0, [r3] -_08110E94: - mov r1, r9 - ldrh r0, [r1] - lsls r0, 1 - adds r2, r0, r4 - ldrh r1, [r2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08110EAC - ldr r0, _08110F2C @ =0x0000ff3f - ands r0, r1 - strh r0, [r2] -_08110EAC: - mov r3, r9 - ldrh r0, [r3] - lsls r0, 1 - adds r2, r0, r4 - ldrh r1, [r2] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08110EC4 - ldr r0, _08110F30 @ =0x0000ffaf - ands r0, r1 - strh r0, [r2] -_08110EC4: - mov r1, r9 - ldrh r0, [r1] - lsls r0, 1 - adds r2, r0, r4 - ldrh r1, [r2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08110EDC - ldr r0, _08110F34 @ =0x0000ff5f - ands r0, r1 - strh r0, [r2] -_08110EDC: - ldr r6, _08110F38 @ =gUnknown_02039268 - mov r3, r9 - ldrh r0, [r3] - lsls r0, 1 - adds r0, r4 - ldrh r1, [r0] - movs r5, 0xF - adds r0, r5, 0 - ands r0, r1 - strh r0, [r6] - ldr r2, _08110F3C @ =gUnknown_0203926A - ldrh r0, [r3] - lsls r0, 1 - adds r0, r4 - ldrh r1, [r0] - movs r0, 0xF0 - ands r0, r1 - strh r0, [r2] - ldrh r1, [r3] - adds r3, r2, 0 - cmp r0, 0 - bne _08110F0A - b _0811105E -_08110F0A: - lsls r0, r1, 1 - adds r0, r4 - ldrh r2, [r0] - adds r1, r5, 0 - ands r1, r2 - strh r1, [r0] - ldrh r0, [r6] - cmp r0, 0xA - bls _08110F1E - b _0811105E -_08110F1E: - lsls r0, 2 - ldr r1, _08110F40 @ =_08110F44 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08110F28: .4byte 0x0000ffcf -_08110F2C: .4byte 0x0000ff3f -_08110F30: .4byte 0x0000ffaf -_08110F34: .4byte 0x0000ff5f -_08110F38: .4byte gUnknown_02039268 -_08110F3C: .4byte gUnknown_0203926A -_08110F40: .4byte _08110F44 - .align 2, 0 -_08110F44: - .4byte _08110F70 - .4byte _08110FAC - .4byte _08110F8E - .4byte _0811105E - .4byte _08111002 - .4byte _08111036 - .4byte _08111036 - .4byte _0811105E - .4byte _08110FCE - .4byte _0811104A - .4byte _0811104A -_08110F70: - ldrh r0, [r3] - lsls r1, r0, 16 - cmp r1, 0 - beq _0811105E - mov r0, r9 - ldrh r2, [r0] - lsls r2, 1 - movs r0, 0x8B - lsls r0, 1 - add r0, r8 - adds r2, r0 - ldrh r0, [r2] - adds r0, 0x10 - lsrs r1, 20 - b _08110FC8 -_08110F8E: - ldrh r0, [r3] - lsls r1, r0, 16 - cmp r1, 0 - beq _0811105E - mov r3, r9 - ldrh r2, [r3] - lsls r2, 1 - movs r0, 0x8B - lsls r0, 1 - add r0, r8 - adds r2, r0 - ldrh r0, [r2] - adds r0, 0x1E - lsrs r1, 20 - b _08110FC8 -_08110FAC: - ldrh r0, [r3] - lsls r1, r0, 16 - cmp r1, 0 - beq _0811105E - mov r0, r9 - ldrh r2, [r0] - lsls r2, 1 - movs r0, 0x8B - lsls r0, 1 - add r0, r8 - adds r2, r0 - ldrh r0, [r2] - adds r0, 0x20 - lsrs r1, 22 -_08110FC8: - adds r0, r1 - strh r0, [r2] - b _0811105E -_08110FCE: - ldrh r2, [r3] - cmp r2, 0 - beq _0811105E - movs r0, 0x80 - ands r0, r2 - lsls r0, 16 - lsrs r0, 16 - negs r0, r0 - lsrs r3, r0, 31 - movs r0, 0x20 - ands r0, r2 - cmp r0, 0 - beq _08110FEC - movs r0, 0x2 - orrs r3, r0 -_08110FEC: - mov r0, r9 - ldrh r1, [r0] - lsls r1, 1 - movs r0, 0x8B - lsls r0, 1 - add r0, r8 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x20 - adds r0, r3 - b _0811105C -_08111002: - ldrh r2, [r3] - cmp r2, 0 - beq _0811105E - movs r0, 0x40 - ands r0, r2 - lsls r0, 16 - lsrs r0, 16 - negs r0, r0 - lsrs r3, r0, 31 - movs r0, 0x10 - ands r0, r2 - cmp r0, 0 - beq _08111020 - movs r0, 0x2 - orrs r3, r0 -_08111020: - mov r0, r9 - ldrh r1, [r0] - lsls r1, 1 - movs r0, 0x8B - lsls r0, 1 - add r0, r8 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x21 - adds r0, r3 - b _0811105C -_08111036: - mov r3, r9 - ldrh r1, [r3] - lsls r1, 1 - movs r0, 0x8B - lsls r0, 1 - add r0, r8 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x27 - b _0811105C -_0811104A: - mov r0, r9 - ldrh r1, [r0] - lsls r1, 1 - movs r0, 0x8B - lsls r0, 1 - add r0, r8 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x25 -_0811105C: - strh r0, [r1] -_0811105E: - mov r3, r9 - ldrh r0, [r3] - adds r0, 0x1 - strh r0, [r3] - lsls r0, 16 - ldr r1, _08111080 @ =0x027f0000 - cmp r0, r1 - bhi _08111070 - b _08110E3C -_08111070: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08111080: .4byte 0x027f0000 - thumb_func_end BuildAreaGlowTilemap - thumb_func_start sub_8111084 sub_8111084: @ 8111084 push {lr} diff --git a/data/pokedex_area_screen.s b/data/pokedex_area_screen.s index 410f0d4c5..6d52e30a5 100644 --- a/data/pokedex_area_screen.s +++ b/data/pokedex_area_screen.s @@ -26,6 +26,7 @@ gUnknown_083F857A:: @ 83F857A @ XXX: what is this? .align 2 +gUnknown_083F8588:: .4byte gSharedMem .align 2 diff --git a/include/constants/species.h b/include/constants/species.h index f698ada14..dc9856081 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -447,4 +447,10 @@ #define NUM_SPECIES SPECIES_EGG +#ifdef SAPPHIRE +#define ROAMER_SPECIES SPECIES_LATIAS +#else +#define ROAMER_SPECIES SPECIES_LATIOS +#endif + #endif // GUARD_CONSTANTS_SPECIES_H diff --git a/include/region_map.h b/include/region_map.h index 89a47cd05..c84de209b 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -51,7 +51,7 @@ struct RegionMap /*0x080*/ u8 filler80[0x100]; /*0x180*/ u8 cursorSmallImage[0x100]; /*0x280*/ u8 cursorLargeImage[0x600]; -}; +}; // size: 0x880 void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed); void sub_80FA904(struct RegionMap *regionMap, bool8 zoomed); @@ -70,5 +70,6 @@ const u8 *CopyMapName(u8 *dest, u16 b); const u8 *CopyLocationName(u8 *dest, u16 b); void CB2_InitFlyRegionMap(void); void debug_sub_8110F28(void); +u16 GetRegionMapSectionAt_(u16 x, u16 y); #endif // GUARD_REGION_MAP_H diff --git a/include/roamer.h b/include/roamer.h index 6f0813eb8..18cb0b4e4 100644 --- a/include/roamer.h +++ b/include/roamer.h @@ -15,4 +15,6 @@ void Debug_CreateRoamer(void); void Debug_GetRoamerLocation(u8 *); #endif // DEBUG +void GetRoamerLocation(u8 *mapGroup, u8 *mapNum); + #endif // GUARD_ROAMER_H diff --git a/ld_script.txt b/ld_script.txt index d3f41018a..382feba7c 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -340,6 +340,7 @@ SECTIONS { src/hof_pc.o(.text); src/field_specials.o(.text); src/battle/battle_records.o(.text); + src/pokedex_area_screen.o(.text); asm/pokedex_area_screen.o(.text); src/evolution_scene.o(.text); src/roulette.o(.text); diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c index 67ca276c4..1e910b76c 100644 --- a/src/pokedex_area_screen.c +++ b/src/pokedex_area_screen.c @@ -1,20 +1,1028 @@ // Includes #include "global.h" +#include "constants/species.h" +#include "constants/maps.h" +#include "ewram.h" +#include "main.h" +#include "palette.h" +#include "task.h" +#include "sprite.h" +#include "region_map.h" +#include "region_map_sections.h" +#include "string_util.h" +#include "text.h" +#include "wild_encounter.h" +#include "roamer.h" +#include "overworld.h" +#include "event_data.h" // Static type declarations +struct PokedexAreaScreenSubstruct0010 +{ + u8 mapGroup; + u8 mapNum; + u16 regionMapSectionId; +}; + +struct PokedexAreaScreenEwramStruct +{ + void (*unk0000)(void); + u32 unk0004; + u32 unk0008; + u16 unk000C; + u16 unk000E; + struct PokedexAreaScreenSubstruct0010 unk0010[0x40]; + u16 unk0110; + u16 unk0112; + u16 unk0114; + u16 unk0116[0x280]; + u8 filler_0616[0x0A]; + u16 unk0620[0x20]; + u8 filler_0660[0x88]; + struct RegionMap unk06E8; + u8 unk0F68[16]; +}; + +#define ePokedexAreaScreen (*(struct PokedexAreaScreenEwramStruct *)gSharedMem) + // Static RAM declarations +// Static ROM declarations + +void CB2_UnusedPokedexAreaScreen(void); +void sub_81107DC(void); +void sub_81107F0(void); +void sub_8110814(void (*func)(void)); +void sub_8110824(void); +bool8 DrawAreaGlow(void); +void FindMapsWithMon(u16 mon); +void SetAreaHasMon(u16 mapGroup, u16 mapNum); +void SetSpecialMapHasMon(u16 mapGroup, u16 mapNum); +bool8 MapHasMon(const struct WildPokemonHeader *header, u16 mon); +bool8 MonListHasMon(const struct WildPokemonInfo *info, u16 mon, u16 size); +void BuildAreaGlowTilemap(void); +void sub_8111084(void); +void sub_8111110(void); +void sub_8111288(void); + +// .rodata + +extern const u16 gUnknown_083F8418[]; +extern const u8 gUnknown_083F8438[]; +extern const u16 gUnknown_083F856C[]; +extern const u16 gUnknown_083F856E[][3]; +extern const u16 gUnknown_083F857A[][2]; + +// .text + +void UnusedPokedexAreaScreen(u16 a0, u32 a1, u32 a2) +{ + ePokedexAreaScreen.unk0004 = a1; + ePokedexAreaScreen.unk0008 = a2; + ePokedexAreaScreen.unk000E = a0; + SetMainCallback2(CB2_UnusedPokedexAreaScreen); +} + +void CB2_UnusedPokedexAreaScreen(void) +{ + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG1_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON; + ResetPaletteFade(); + ResetSpriteData(); + ResetTasks(); + FreeSpriteTileRanges(); + FreeAllSpritePalettes(); + REG_BG0HOFS = 0; + REG_BG0VOFS = -8; + REG_BG2VOFS = 0; + REG_BG2HOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + break; + case 1: + InitRegionMap(&ePokedexAreaScreen.unk06E8, FALSE); + StringFill(ePokedexAreaScreen.unk0F68, CHAR_SPACE, 16); + break; + case 2: + sub_8110824(); + break; + case 3: + if (DrawAreaGlow()) + return; + break; + case 4: + CreateRegionMapPlayerIcon(1, 1); + sub_80FB2A4(0, -8); + SetVBlankCallback(sub_81107DC); + break; + case 5: + BeginNormalPaletteFade(0xFFFFFFEB, 0, 16, 0, 0); + break; + case 6: + 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; + sub_8111084(); + REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON; + break; + case 7: + sub_8110814(sub_8111288); + SetMainCallback2(sub_81107F0); + return; + } + gMain.state++; +} + +void sub_81107DC(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_81107F0(void) +{ + ePokedexAreaScreen.unk0000(); + sub_8111110(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_8110814(void (*func)(void)) +{ + ePokedexAreaScreen.unk0000 = func; + ePokedexAreaScreen.unk000C = 0; +} + +void sub_8110824(void) +{ + ePokedexAreaScreen.unk0114 = 0; +} + +bool8 DrawAreaGlow(void) +{ + switch (ePokedexAreaScreen.unk0114) + { + case 0: + FindMapsWithMon(ePokedexAreaScreen.unk000E); + break; + case 1: + BuildAreaGlowTilemap(); + break; + case 2: + LZ77UnCompVram(gUnknown_083F8438, BG_CHAR_ADDR(3)); + break; + case 3: + DmaCopy16(3, ePokedexAreaScreen.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; + ePokedexAreaScreen.unk0114++; + return FALSE; + default: + return FALSE; + } + ePokedexAreaScreen.unk0114++; + return TRUE; +} + +void FindMapsWithMon(u16 mon) +{ + u16 i; + struct Roamer *roamer; + + if (mon != ROAMER_SPECIES) + { + ePokedexAreaScreen.unk0110 = 0; + ePokedexAreaScreen.unk0112 = 0; + for (i = 0; i < 1; i++) + { + if (gUnknown_083F856C[i] == mon) + return; + } + for (i = 0; gUnknown_083F856E[i][0] != NUM_SPECIES; i++) + { + if (mon == gUnknown_083F856E[i][0]) + { + switch (gUnknown_083F856E[i][1]) + { + case MAP_GROUP(PETALBURG_CITY): + SetAreaHasMon(gUnknown_083F856E[i][1], gUnknown_083F856E[i][2]); + break; + case MAP_GROUP(METEOR_FALLS_1F_1R): + case MAP_GROUP(SAFARI_ZONE_NORTHWEST): + SetSpecialMapHasMon(gUnknown_083F856E[i][1], gUnknown_083F856E[i][2]); + break; + } + } + } + for (i = 0; gWildMonHeaders[i].mapGroup != 0xFF; i++) + { + if (MapHasMon(gWildMonHeaders + i, mon)) + { + switch (gWildMonHeaders[i].mapGroup) + { + case MAP_GROUP(PETALBURG_CITY): + SetAreaHasMon(gWildMonHeaders[i].mapGroup, gWildMonHeaders[i].mapNum); + break; + case MAP_GROUP(METEOR_FALLS_1F_1R): + case MAP_GROUP(SAFARI_ZONE_NORTHWEST): + SetSpecialMapHasMon(gWildMonHeaders[i].mapGroup, gWildMonHeaders[i].mapNum); + break; + } + } + } + } + else + { + ePokedexAreaScreen.unk0112 = 0; + roamer = &gSaveBlock1.roamer; + if (roamer->active) + { + GetRoamerLocation(&ePokedexAreaScreen.unk0010[0].mapGroup, &ePokedexAreaScreen.unk0010[0].mapNum); + ePokedexAreaScreen.unk0010[0].regionMapSectionId = Overworld_GetMapHeaderByGroupAndId(ePokedexAreaScreen.unk0010[0].mapGroup, ePokedexAreaScreen.unk0010[0].mapNum)->regionMapSectionId; + ePokedexAreaScreen.unk0110 = 1; + } + else + ePokedexAreaScreen.unk0110 = 0; + } +} + +void SetAreaHasMon(u16 mapGroup, u16 mapNum) +{ + if (ePokedexAreaScreen.unk0110 < 0x40) + { + ePokedexAreaScreen.unk0010[ePokedexAreaScreen.unk0110].mapGroup = mapGroup; + ePokedexAreaScreen.unk0010[ePokedexAreaScreen.unk0110].mapNum = mapNum; + ePokedexAreaScreen.unk0010[ePokedexAreaScreen.unk0110].regionMapSectionId = sub_80FBA04(Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum)->regionMapSectionId); + ePokedexAreaScreen.unk0110++; + } +} + +void SetSpecialMapHasMon(u16 mapGroup, u16 mapNum) +{ + const struct MapHeader *mapHeader; + u16 i; + + if (ePokedexAreaScreen.unk0112 < 0x20) + { + mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum); + if (mapHeader->regionMapSectionId < MAPSEC_Nothing) + { + for (i = 0; gUnknown_083F857A[i][0] != MAPSEC_Nothing; i++) + { + if (mapHeader->regionMapSectionId == gUnknown_083F857A[i][0] && !FlagGet(gUnknown_083F857A[i][1])) + return; + } + for (i = 0; i < ePokedexAreaScreen.unk0112; i++) + { + if (ePokedexAreaScreen.unk0620[i] == mapHeader->regionMapSectionId) + break; + } + if (i == ePokedexAreaScreen.unk0112) + { + ePokedexAreaScreen.unk0620[i] = mapHeader->regionMapSectionId; + ePokedexAreaScreen.unk0112++; + } + } + } +} + +bool8 MapHasMon(const struct WildPokemonHeader *header, u16 mon) +{ + if (MonListHasMon(header->landMonsInfo, mon, 12)) + return TRUE; + if (MonListHasMon(header->waterMonsInfo, mon, 5)) + return TRUE; + if (MonListHasMon(header->fishingMonsInfo, mon, 12)) + return TRUE; + if (MonListHasMon(header->rockSmashMonsInfo, mon, 5)) + return TRUE; + return FALSE; +} + +bool8 MonListHasMon(const struct WildPokemonInfo *info, u16 mon, u16 size) +{ + u16 i; + if (info != NULL) + { + for (i = 0; i < size; i++) + { + if (info->wildPokemon[i].species == mon) + return TRUE; + } + } + return FALSE; +} + +#ifdef NONMATCHING +void BuildAreaGlowTilemap(void) +{ + static EWRAM_DATA u16 gUnknown_02039260 = 0; + static EWRAM_DATA u16 gUnknown_02039262 = 0; + static EWRAM_DATA u16 gUnknown_02039264 = 0; + static EWRAM_DATA u16 gUnknown_02039266 = 0; + static EWRAM_DATA u16 gUnknown_02039268 = 0; + static EWRAM_DATA u16 gUnknown_0203926A = 0; + u32 r3; + + for (gUnknown_02039260 = 0; gUnknown_02039260 < 0x280; gUnknown_02039260++) + ePokedexAreaScreen.unk0116[gUnknown_02039260] = 0; + + for (gUnknown_02039260 = 0; gUnknown_02039260 < ePokedexAreaScreen.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) == ePokedexAreaScreen.unk0010[gUnknown_02039260].regionMapSectionId) + { + ePokedexAreaScreen.unk0116[gUnknown_02039266] = 0xFFFF; + } + gUnknown_02039266++; + } + } + } + + gUnknown_02039266 = 0; + for (gUnknown_02039264 = 0; gUnknown_02039264 < 20; gUnknown_02039264++) + { + for (gUnknown_02039262 = 0; gUnknown_02039262 < 32; gUnknown_02039262++) + { + if (ePokedexAreaScreen.unk0116[gUnknown_02039266] == 0xFFFF) + { + if (gUnknown_02039262 != 0 && ePokedexAreaScreen.unk0116[gUnknown_02039266 - 1] != 0xFFFF) + ePokedexAreaScreen.unk0116[gUnknown_02039266 - 1] |= 0x02; + if (gUnknown_02039262 != 31 && ePokedexAreaScreen.unk0116[gUnknown_02039266 + 1] != 0xFFFF) + ePokedexAreaScreen.unk0116[gUnknown_02039266 + 1] |= 0x01; + if (gUnknown_02039264 != 0 && ePokedexAreaScreen.unk0116[gUnknown_02039266 - 32] != 0xFFFF) + ePokedexAreaScreen.unk0116[gUnknown_02039266 - 32] |= 0x08; + if (gUnknown_02039264 != 19 && ePokedexAreaScreen.unk0116[gUnknown_02039266 + 32] != 0xFFFF) + ePokedexAreaScreen.unk0116[gUnknown_02039266 + 32] |= 0x04; + if (gUnknown_02039262 != 0 && gUnknown_02039264 != 0 && ePokedexAreaScreen.unk0116[gUnknown_02039266 - 33] != 0xFFFF) + ePokedexAreaScreen.unk0116[gUnknown_02039266 - 33] |= 0x10; + if (gUnknown_02039262 != 31 && gUnknown_02039264 != 0 && ePokedexAreaScreen.unk0116[gUnknown_02039266 - 31] != 0xFFFF) + ePokedexAreaScreen.unk0116[gUnknown_02039266 - 31] |= 0x40; + if (gUnknown_02039262 != 0 && gUnknown_02039264 != 19 && ePokedexAreaScreen.unk0116[gUnknown_02039266 + 31] != 0xFFFF) + ePokedexAreaScreen.unk0116[gUnknown_02039266 + 31] |= 0x20; + if (gUnknown_02039262 != 31 && gUnknown_02039264 != 19 && ePokedexAreaScreen.unk0116[gUnknown_02039266 + 33] != 0xFFFF) + ePokedexAreaScreen.unk0116[gUnknown_02039266 + 33] |= 0x80; + } + gUnknown_02039266++; + } + } + + for (gUnknown_02039260 = 0; gUnknown_02039260 < 0x280; gUnknown_02039260++) // Register difference on induction: expected r3, got r1 + { + if (ePokedexAreaScreen.unk0116[gUnknown_02039260] == 0xFFFF) + ePokedexAreaScreen.unk0116[gUnknown_02039260] = 0x10; + else if (ePokedexAreaScreen.unk0116[gUnknown_02039260] != 0) + { + if (ePokedexAreaScreen.unk0116[gUnknown_02039260] & 0x02) + ePokedexAreaScreen.unk0116[gUnknown_02039260] &= 0xFFCF; + if (ePokedexAreaScreen.unk0116[gUnknown_02039260] & 0x01) + ePokedexAreaScreen.unk0116[gUnknown_02039260] &= 0xFF3F; + if (ePokedexAreaScreen.unk0116[gUnknown_02039260] & 0x08) + ePokedexAreaScreen.unk0116[gUnknown_02039260] &= 0xFFAF; + if (ePokedexAreaScreen.unk0116[gUnknown_02039260] & 0x04) + ePokedexAreaScreen.unk0116[gUnknown_02039260] &= 0xFF5F; + gUnknown_02039268 = ePokedexAreaScreen.unk0116[gUnknown_02039260] & 0x0F; + gUnknown_0203926A = ePokedexAreaScreen.unk0116[gUnknown_02039260] & 0xF0; + if (gUnknown_0203926A) + { + ePokedexAreaScreen.unk0116[gUnknown_02039260] &= 0x0F; + switch (gUnknown_02039268) + { + case 0: + if (gUnknown_0203926A != 0) + ePokedexAreaScreen.unk0116[gUnknown_02039260] += (gUnknown_0203926A >> 4) + 0x10; + break; + case 2: + if (gUnknown_0203926A != 0) + ePokedexAreaScreen.unk0116[gUnknown_02039260] += (gUnknown_0203926A >> 4) + 0x1E; + break; + case 1: + if (gUnknown_0203926A != 0) + ePokedexAreaScreen.unk0116[gUnknown_02039260] += (gUnknown_0203926A >> 6) + 0x20; + break; + case 8: + if (gUnknown_0203926A != 0) + { + r3 = 0; + if (gUnknown_0203926A & 0x80) + r3 |= 1; + if (gUnknown_0203926A & 0x20) + r3 |= 2; + ePokedexAreaScreen.unk0116[gUnknown_02039260] += r3 + 0x20; + } + break; + case 4: + if (gUnknown_0203926A != 0) + { + r3 = 0; + if (gUnknown_0203926A & 0x40) + r3 |= 1; + if (gUnknown_0203926A & 0x10) + r3 |= 2; + ePokedexAreaScreen.unk0116[gUnknown_02039260] += r3 + 0x21; + } + break; + case 5: + case 6: + ePokedexAreaScreen.unk0116[gUnknown_02039260] += 0x27; + break; + case 9: + case 10: + ePokedexAreaScreen.unk0116[gUnknown_02039260] += 0x25; + break; + } + } + } + } +} +# else EWRAM_DATA u16 gUnknown_02039260 = 0; EWRAM_DATA u16 gUnknown_02039262 = 0; EWRAM_DATA u16 gUnknown_02039264 = 0; EWRAM_DATA u16 gUnknown_02039266 = 0; EWRAM_DATA u16 gUnknown_02039268 = 0; EWRAM_DATA u16 gUnknown_0203926A = 0; - -// Static ROM declarations - -// .rodata - -// .text +NAKED void BuildAreaGlowTilemap(void) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0xC\n" + "\tldr r1, _08110E5C @ =gUnknown_02039260\n" + "\tmovs r0, 0\n" + "\tstrh r0, [r1]\n" + "\tmov r9, r1\n" + "\tldr r0, _08110E60 @ =gSharedMem\n" + "\tmov r8, r0\n" + "\tldr r1, _08110E64 @ =gUnknown_02039262\n" + "\tmov r12, r1\n" + "\tmov r1, r9\n" + "\tmovs r4, 0x8B\n" + "\tlsls r4, 1\n" + "\tadd r4, r8\n" + "\tldr r3, _08110E68 @ =0x0000027f\n" + "\tmovs r2, 0\n" + "_08110C5C:\n" + "\tldrh r0, [r1]\n" + "\tlsls r0, 1\n" + "\tadds r0, r4\n" + "\tstrh r2, [r0]\n" + "\tldrh r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r1]\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tcmp r0, r3\n" + "\tbls _08110C5C\n" + "\tmovs r0, 0\n" + "\tmov r3, r9\n" + "\tstrh r0, [r3]\n" + "\tmovs r1, 0x88\n" + "\tlsls r1, 1\n" + "\tadd r1, r8\n" + "\tldrh r0, [r1]\n" + "\tcmp r0, 0\n" + "\tbeq _08110D04\n" + "\tldr r4, _08110E6C @ =gUnknown_02039266\n" + "\tmovs r2, 0\n" + "\tldr r5, _08110E64 @ =gUnknown_02039262\n" + "\tmov r0, r8\n" + "\tstr r0, [sp, 0x8]\n" + "\tmovs r1, 0x8B\n" + "\tlsls r1, 1\n" + "\tadd r1, r8\n" + "\tmov r10, r1\n" + "\tldr r6, _08110E70 @ =gUnknown_02039264\n" + "\tmov r7, r9\n" + "_08110C9A:\n" + "\tstrh r2, [r4]\n" + "\tldr r3, _08110E70 @ =gUnknown_02039264\n" + "\tstrh r2, [r3]\n" + "_08110CA0:\n" + "\tmov r0, r12\n" + "\tstrh r2, [r0]\n" + "_08110CA4:\n" + "\tldrh r0, [r5]\n" + "\tldrh r1, [r6]\n" + "\tstr r2, [sp]\n" + "\tbl GetRegionMapSectionAt_\n" + "\tldrh r1, [r7]\n" + "\tlsls r1, 2\n" + "\tldr r3, [sp, 0x8]\n" + "\tadds r1, r3\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tldr r2, [sp]\n" + "\tldrh r1, [r1, 0x12]\n" + "\tcmp r0, r1\n" + "\tbne _08110CCC\n" + "\tldrh r0, [r4]\n" + "\tlsls r0, 1\n" + "\tadd r0, r10\n" + "\tldr r1, _08110E74 @ =0x0000ffff\n" + "\tstrh r1, [r0]\n" + "_08110CCC:\n" + "\tldrh r0, [r4]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r4]\n" + "\tldrh r0, [r5]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r5]\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tcmp r0, 0x1F\n" + "\tbls _08110CA4\n" + "\tldrh r0, [r6]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r6]\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tldr r1, _08110E64 @ =gUnknown_02039262\n" + "\tmov r12, r1\n" + "\tcmp r0, 0x13\n" + "\tbls _08110CA0\n" + "\tldrh r0, [r7]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r7]\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tldr r3, _08110E78 @ =gSharedMem + 0x110\n" + "\tldrh r3, [r3]\n" + "\tcmp r0, r3\n" + "\tbcc _08110C9A\n" + "_08110D04:\n" + "\tmovs r0, 0\n" + "\tldr r1, _08110E6C @ =gUnknown_02039266\n" + "\tstrh r0, [r1]\n" + "\tldr r3, _08110E70 @ =gUnknown_02039264\n" + "\tstrh r0, [r3]\n" + "\tldr r6, _08110E64 @ =gUnknown_02039262\n" + "\tmov r10, r0\n" + "\tadds r3, r1, 0\n" + "\tldr r5, _08110E7C @ =gSharedMem + 0x116\n" + "\tldr r4, _08110E74 @ =0x0000ffff\n" + "\tldr r7, _08110E70 @ =gUnknown_02039264\n" + "_08110D1A:\n" + "\tmov r0, r10\n" + "\tstrh r0, [r6]\n" + "_08110D1E:\n" + "\tldrh r1, [r3]\n" + "\tlsls r0, r1, 1\n" + "\tadds r0, r5\n" + "\tldrh r0, [r0]\n" + "\tcmp r0, r4\n" + "\tbne _08110E10\n" + "\tldrh r0, [r6]\n" + "\tcmp r0, 0\n" + "\tbeq _08110D42\n" + "\tsubs r0, r1, 0x1\n" + "\tlsls r0, 1\n" + "\tadds r2, r0, r5\n" + "\tldrh r1, [r2]\n" + "\tcmp r1, r4\n" + "\tbeq _08110D42\n" + "\tmovs r0, 0x2\n" + "\torrs r0, r1\n" + "\tstrh r0, [r2]\n" + "_08110D42:\n" + "\tldrh r0, [r6]\n" + "\tcmp r0, 0x1F\n" + "\tbeq _08110D5C\n" + "\tldrh r0, [r3]\n" + "\tadds r0, 0x1\n" + "\tlsls r0, 1\n" + "\tadds r2, r0, r5\n" + "\tldrh r1, [r2]\n" + "\tcmp r1, r4\n" + "\tbeq _08110D5C\n" + "\tmovs r0, 0x1\n" + "\torrs r0, r1\n" + "\tstrh r0, [r2]\n" + "_08110D5C:\n" + "\tldrh r0, [r7]\n" + "\tcmp r0, 0\n" + "\tbeq _08110D76\n" + "\tldrh r0, [r3]\n" + "\tsubs r0, 0x20\n" + "\tlsls r0, 1\n" + "\tadds r2, r0, r5\n" + "\tldrh r1, [r2]\n" + "\tcmp r1, r4\n" + "\tbeq _08110D76\n" + "\tmovs r0, 0x8\n" + "\torrs r0, r1\n" + "\tstrh r0, [r2]\n" + "_08110D76:\n" + "\tldrh r0, [r7]\n" + "\tcmp r0, 0x13\n" + "\tbeq _08110D90\n" + "\tldrh r0, [r3]\n" + "\tadds r0, 0x20\n" + "\tlsls r0, 1\n" + "\tadds r2, r0, r5\n" + "\tldrh r1, [r2]\n" + "\tcmp r1, r4\n" + "\tbeq _08110D90\n" + "\tmovs r0, 0x4\n" + "\torrs r0, r1\n" + "\tstrh r0, [r2]\n" + "_08110D90:\n" + "\tldrh r0, [r6]\n" + "\tcmp r0, 0\n" + "\tbeq _08110DB0\n" + "\tldrh r0, [r7]\n" + "\tcmp r0, 0\n" + "\tbeq _08110DB0\n" + "\tldrh r0, [r3]\n" + "\tsubs r0, 0x21\n" + "\tlsls r0, 1\n" + "\tadds r2, r0, r5\n" + "\tldrh r1, [r2]\n" + "\tcmp r1, r4\n" + "\tbeq _08110DB0\n" + "\tmovs r0, 0x10\n" + "\torrs r0, r1\n" + "\tstrh r0, [r2]\n" + "_08110DB0:\n" + "\tldrh r0, [r6]\n" + "\tcmp r0, 0x1F\n" + "\tbeq _08110DD0\n" + "\tldrh r0, [r7]\n" + "\tcmp r0, 0\n" + "\tbeq _08110DD0\n" + "\tldrh r0, [r3]\n" + "\tsubs r0, 0x1F\n" + "\tlsls r0, 1\n" + "\tadds r2, r0, r5\n" + "\tldrh r1, [r2]\n" + "\tcmp r1, r4\n" + "\tbeq _08110DD0\n" + "\tmovs r0, 0x40\n" + "\torrs r0, r1\n" + "\tstrh r0, [r2]\n" + "_08110DD0:\n" + "\tldrh r0, [r6]\n" + "\tcmp r0, 0\n" + "\tbeq _08110DF0\n" + "\tldrh r0, [r7]\n" + "\tcmp r0, 0x13\n" + "\tbeq _08110DF0\n" + "\tldrh r0, [r3]\n" + "\tadds r0, 0x1F\n" + "\tlsls r0, 1\n" + "\tadds r2, r0, r5\n" + "\tldrh r1, [r2]\n" + "\tcmp r1, r4\n" + "\tbeq _08110DF0\n" + "\tmovs r0, 0x20\n" + "\torrs r0, r1\n" + "\tstrh r0, [r2]\n" + "_08110DF0:\n" + "\tldrh r0, [r6]\n" + "\tcmp r0, 0x1F\n" + "\tbeq _08110E10\n" + "\tldrh r0, [r7]\n" + "\tcmp r0, 0x13\n" + "\tbeq _08110E10\n" + "\tldrh r0, [r3]\n" + "\tadds r0, 0x21\n" + "\tlsls r0, 1\n" + "\tadds r2, r0, r5\n" + "\tldrh r1, [r2]\n" + "\tcmp r1, r4\n" + "\tbeq _08110E10\n" + "\tmovs r0, 0x80\n" + "\torrs r0, r1\n" + "\tstrh r0, [r2]\n" + "_08110E10:\n" + "\tldrh r0, [r3]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r3]\n" + "\tldrh r0, [r6]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r6]\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tcmp r0, 0x1F\n" + "\tbhi _08110E26\n" + "\tb _08110D1E\n" + "_08110E26:\n" + "\tldrh r0, [r7]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r7]\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tcmp r0, 0x13\n" + "\tbhi _08110E36\n" + "\tb _08110D1A\n" + "_08110E36:\n" + "\tmovs r0, 0\n" + "\tmov r1, r9\n" + "\tstrh r0, [r1]\n" + "_08110E3C:\n" + "\tmov r3, r9\n" + "\tldrh r0, [r3]\n" + "\tlsls r0, 1\n" + "\tmovs r4, 0x8B\n" + "\tlsls r4, 1\n" + "\tadd r4, r8\n" + "\tadds r3, r0, r4\n" + "\tldrh r2, [r3]\n" + "\tadds r1, r2, 0\n" + "\tldr r0, _08110E74 @ =0x0000ffff\n" + "\tcmp r1, r0\n" + "\tbne _08110E80\n" + "\tmovs r0, 0x10\n" + "\tstrh r0, [r3]\n" + "\tb _0811105E\n" + "\t.align 2, 0\n" + "_08110E5C: .4byte gUnknown_02039260\n" + "_08110E60: .4byte gSharedMem\n" + "_08110E64: .4byte gUnknown_02039262\n" + "_08110E68: .4byte 0x0000027f\n" + "_08110E6C: .4byte gUnknown_02039266\n" + "_08110E70: .4byte gUnknown_02039264\n" + "_08110E74: .4byte 0x0000ffff\n" + "_08110E78: .4byte gSharedMem + 0x110\n" + "_08110E7C: .4byte gSharedMem + 0x116\n" + "_08110E80:\n" + "\tcmp r1, 0\n" + "\tbne _08110E86\n" + "\tb _0811105E\n" + "_08110E86:\n" + "\tmovs r0, 0x2\n" + "\tands r0, r2\n" + "\tcmp r0, 0\n" + "\tbeq _08110E94\n" + "\tldr r0, _08110F28 @ =0x0000ffcf\n" + "\tands r0, r2\n" + "\tstrh r0, [r3]\n" + "_08110E94:\n" + "\tmov r1, r9\n" + "\tldrh r0, [r1]\n" + "\tlsls r0, 1\n" + "\tadds r2, r0, r4\n" + "\tldrh r1, [r2]\n" + "\tmovs r0, 0x1\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _08110EAC\n" + "\tldr r0, _08110F2C @ =0x0000ff3f\n" + "\tands r0, r1\n" + "\tstrh r0, [r2]\n" + "_08110EAC:\n" + "\tmov r3, r9\n" + "\tldrh r0, [r3]\n" + "\tlsls r0, 1\n" + "\tadds r2, r0, r4\n" + "\tldrh r1, [r2]\n" + "\tmovs r0, 0x8\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _08110EC4\n" + "\tldr r0, _08110F30 @ =0x0000ffaf\n" + "\tands r0, r1\n" + "\tstrh r0, [r2]\n" + "_08110EC4:\n" + "\tmov r1, r9\n" + "\tldrh r0, [r1]\n" + "\tlsls r0, 1\n" + "\tadds r2, r0, r4\n" + "\tldrh r1, [r2]\n" + "\tmovs r0, 0x4\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _08110EDC\n" + "\tldr r0, _08110F34 @ =0x0000ff5f\n" + "\tands r0, r1\n" + "\tstrh r0, [r2]\n" + "_08110EDC:\n" + "\tldr r6, _08110F38 @ =gUnknown_02039268\n" + "\tmov r3, r9\n" + "\tldrh r0, [r3]\n" + "\tlsls r0, 1\n" + "\tadds r0, r4\n" + "\tldrh r1, [r0]\n" + "\tmovs r5, 0xF\n" + "\tadds r0, r5, 0\n" + "\tands r0, r1\n" + "\tstrh r0, [r6]\n" + "\tldr r2, _08110F3C @ =gUnknown_0203926A\n" + "\tldrh r0, [r3]\n" + "\tlsls r0, 1\n" + "\tadds r0, r4\n" + "\tldrh r1, [r0]\n" + "\tmovs r0, 0xF0\n" + "\tands r0, r1\n" + "\tstrh r0, [r2]\n" + "\tldrh r1, [r3]\n" + "\tadds r3, r2, 0\n" + "\tcmp r0, 0\n" + "\tbne _08110F0A\n" + "\tb _0811105E\n" + "_08110F0A:\n" + "\tlsls r0, r1, 1\n" + "\tadds r0, r4\n" + "\tldrh r2, [r0]\n" + "\tadds r1, r5, 0\n" + "\tands r1, r2\n" + "\tstrh r1, [r0]\n" + "\tldrh r0, [r6]\n" + "\tcmp r0, 0xA\n" + "\tbls _08110F1E\n" + "\tb _0811105E\n" + "_08110F1E:\n" + "\tlsls r0, 2\n" + "\tldr r1, _08110F40 @ =_08110F44\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_08110F28: .4byte 0x0000ffcf\n" + "_08110F2C: .4byte 0x0000ff3f\n" + "_08110F30: .4byte 0x0000ffaf\n" + "_08110F34: .4byte 0x0000ff5f\n" + "_08110F38: .4byte gUnknown_02039268\n" + "_08110F3C: .4byte gUnknown_0203926A\n" + "_08110F40: .4byte _08110F44\n" + "\t.align 2, 0\n" + "_08110F44:\n" + "\t.4byte _08110F70\n" + "\t.4byte _08110FAC\n" + "\t.4byte _08110F8E\n" + "\t.4byte _0811105E\n" + "\t.4byte _08111002\n" + "\t.4byte _08111036\n" + "\t.4byte _08111036\n" + "\t.4byte _0811105E\n" + "\t.4byte _08110FCE\n" + "\t.4byte _0811104A\n" + "\t.4byte _0811104A\n" + "_08110F70:\n" + "\tldrh r0, [r3]\n" + "\tlsls r1, r0, 16\n" + "\tcmp r1, 0\n" + "\tbeq _0811105E\n" + "\tmov r0, r9\n" + "\tldrh r2, [r0]\n" + "\tlsls r2, 1\n" + "\tmovs r0, 0x8B\n" + "\tlsls r0, 1\n" + "\tadd r0, r8\n" + "\tadds r2, r0\n" + "\tldrh r0, [r2]\n" + "\tadds r0, 0x10\n" + "\tlsrs r1, 20\n" + "\tb _08110FC8\n" + "_08110F8E:\n" + "\tldrh r0, [r3]\n" + "\tlsls r1, r0, 16\n" + "\tcmp r1, 0\n" + "\tbeq _0811105E\n" + "\tmov r3, r9\n" + "\tldrh r2, [r3]\n" + "\tlsls r2, 1\n" + "\tmovs r0, 0x8B\n" + "\tlsls r0, 1\n" + "\tadd r0, r8\n" + "\tadds r2, r0\n" + "\tldrh r0, [r2]\n" + "\tadds r0, 0x1E\n" + "\tlsrs r1, 20\n" + "\tb _08110FC8\n" + "_08110FAC:\n" + "\tldrh r0, [r3]\n" + "\tlsls r1, r0, 16\n" + "\tcmp r1, 0\n" + "\tbeq _0811105E\n" + "\tmov r0, r9\n" + "\tldrh r2, [r0]\n" + "\tlsls r2, 1\n" + "\tmovs r0, 0x8B\n" + "\tlsls r0, 1\n" + "\tadd r0, r8\n" + "\tadds r2, r0\n" + "\tldrh r0, [r2]\n" + "\tadds r0, 0x20\n" + "\tlsrs r1, 22\n" + "_08110FC8:\n" + "\tadds r0, r1\n" + "\tstrh r0, [r2]\n" + "\tb _0811105E\n" + "_08110FCE:\n" + "\tldrh r2, [r3]\n" + "\tcmp r2, 0\n" + "\tbeq _0811105E\n" + "\tmovs r0, 0x80\n" + "\tands r0, r2\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tnegs r0, r0\n" + "\tlsrs r3, r0, 31\n" + "\tmovs r0, 0x20\n" + "\tands r0, r2\n" + "\tcmp r0, 0\n" + "\tbeq _08110FEC\n" + "\tmovs r0, 0x2\n" + "\torrs r3, r0\n" + "_08110FEC:\n" + "\tmov r0, r9\n" + "\tldrh r1, [r0]\n" + "\tlsls r1, 1\n" + "\tmovs r0, 0x8B\n" + "\tlsls r0, 1\n" + "\tadd r0, r8\n" + "\tadds r1, r0\n" + "\tldrh r0, [r1]\n" + "\tadds r0, 0x20\n" + "\tadds r0, r3\n" + "\tb _0811105C\n" + "_08111002:\n" + "\tldrh r2, [r3]\n" + "\tcmp r2, 0\n" + "\tbeq _0811105E\n" + "\tmovs r0, 0x40\n" + "\tands r0, r2\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tnegs r0, r0\n" + "\tlsrs r3, r0, 31\n" + "\tmovs r0, 0x10\n" + "\tands r0, r2\n" + "\tcmp r0, 0\n" + "\tbeq _08111020\n" + "\tmovs r0, 0x2\n" + "\torrs r3, r0\n" + "_08111020:\n" + "\tmov r0, r9\n" + "\tldrh r1, [r0]\n" + "\tlsls r1, 1\n" + "\tmovs r0, 0x8B\n" + "\tlsls r0, 1\n" + "\tadd r0, r8\n" + "\tadds r1, r0\n" + "\tldrh r0, [r1]\n" + "\tadds r0, 0x21\n" + "\tadds r0, r3\n" + "\tb _0811105C\n" + "_08111036:\n" + "\tmov r3, r9\n" + "\tldrh r1, [r3]\n" + "\tlsls r1, 1\n" + "\tmovs r0, 0x8B\n" + "\tlsls r0, 1\n" + "\tadd r0, r8\n" + "\tadds r1, r0\n" + "\tldrh r0, [r1]\n" + "\tadds r0, 0x27\n" + "\tb _0811105C\n" + "_0811104A:\n" + "\tmov r0, r9\n" + "\tldrh r1, [r0]\n" + "\tlsls r1, 1\n" + "\tmovs r0, 0x8B\n" + "\tlsls r0, 1\n" + "\tadd r0, r8\n" + "\tadds r1, r0\n" + "\tldrh r0, [r1]\n" + "\tadds r0, 0x25\n" + "_0811105C:\n" + "\tstrh r0, [r1]\n" + "_0811105E:\n" + "\tmov r3, r9\n" + "\tldrh r0, [r3]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r3]\n" + "\tlsls r0, 16\n" + "\tldr r1, _08111080 @ =0x027f0000\n" + "\tcmp r0, r1\n" + "\tbhi _08111070\n" + "\tb _08110E3C\n" + "_08111070:\n" + "\tadd sp, 0xC\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_08111080: .4byte 0x027f0000"); +} +#endif // NONMATCHING diff --git a/src/roamer.c b/src/roamer.c index 459082e42..57dd0745b 100644 --- a/src/roamer.c +++ b/src/roamer.c @@ -6,12 +6,6 @@ #include "region_map.h" #include "constants/species.h" -#ifdef SAPPHIRE -#define ROAMER_SPECIES SPECIES_LATIAS -#else -#define ROAMER_SPECIES SPECIES_LATIOS -#endif - enum { MAP_GRP = 0, // map group |