From 1f6f5f369bcb2ab28d0fb73b358d075fdc195ba5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 4 Oct 2019 12:55:48 -0400 Subject: [PATCH 1/5] wild_pokemon_area and pokedex_area_markers --- asm/field_specials.s | 6 +- asm/macros.inc | 5 +- asm/pokedex_area_markers.s | 357 ------------------ asm/pokedex_screen.s | 2 +- asm/wild_encounter.s | 52 +-- asm/wild_pokemon_area.s | 380 -------------------- data/data_835B488.s | 2 +- data/map_event_scripts.inc | 2 +- data/maps/PalletTown_GarysHouse/scripts.inc | 2 +- data/pokedex_area_markers.s | 14 - data/pokedex_area_markers/marker.png | Bin 0 -> 354 bytes data/wild_pokemon_area.s | 14 - include/constants/vars.h | 4 +- include/field_specials.h | 1 + include/gba/types.h | 4 + include/pokedex_area_markers.h | 16 + include/roamer.h | 1 + include/wild_pokemon_area.h | 6 + ld_script.txt | 8 +- src/pokedex_area_markers.c | 238 ++++++++++++ src/wild_pokemon_area.c | 308 ++++++++++++++++ 21 files changed, 615 insertions(+), 807 deletions(-) delete mode 100644 asm/pokedex_area_markers.s delete mode 100644 asm/wild_pokemon_area.s delete mode 100644 data/pokedex_area_markers.s create mode 100644 data/pokedex_area_markers/marker.png delete mode 100644 data/wild_pokemon_area.s create mode 100644 include/pokedex_area_markers.h create mode 100644 include/wild_pokemon_area.h create mode 100644 src/pokedex_area_markers.c create mode 100644 src/wild_pokemon_area.c diff --git a/asm/field_specials.s b/asm/field_specials.s index 8d91064e8..c0294fcac 100644 --- a/asm/field_specials.s +++ b/asm/field_specials.s @@ -3665,8 +3665,8 @@ sub_80CC1E4: @ 80CC1E4 _080CC200: .4byte gSaveBlock2Ptr thumb_func_end sub_80CC1E4 - thumb_func_start sub_80CC204 -sub_80CC204: @ 80CC204 + thumb_func_start GetUnlockedSeviiAreas +GetUnlockedSeviiAreas: @ 80CC204 push {r4,lr} movs r4, 0 ldr r0, _080CC2A4 @ =0x0000089b @@ -3753,7 +3753,7 @@ _080CC2AC: .4byte 0x0000089d _080CC2B0: .4byte 0x0000089e _080CC2B4: .4byte 0x0000089f _080CC2B8: .4byte 0x000008a1 - thumb_func_end sub_80CC204 + thumb_func_end GetUnlockedSeviiAreas thumb_func_start sub_80CC2BC sub_80CC2BC: @ 80CC2BC diff --git a/asm/macros.inc b/asm/macros.inc index e6813d319..4eae2cccc 100644 --- a/asm/macros.inc +++ b/asm/macros.inc @@ -65,10 +65,9 @@ .endm .macro subsprite x, y, priority, tile_num_offset, size - .2byte \x - .2byte \y + .byte \x + .byte \y .2byte ((\priority) << 14) | ((\tile_num_offset) << 4) | SPRITE_SIZE_\size - .2byte 0 @ padding .endm .macro obj_image_anim_frame pic_id, duration, flags = 0 diff --git a/asm/pokedex_area_markers.s b/asm/pokedex_area_markers.s deleted file mode 100644 index d6ea7f251..000000000 --- a/asm/pokedex_area_markers.s +++ /dev/null @@ -1,357 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8134200 -sub_8134200: @ 8134200 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08134228 @ =gTasks+0x8 - adds r1, r0 - ldr r2, _0813422C @ =gSprites - ldrb r1, [r1, 0xD] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - bx lr - .align 2, 0 -_08134228: .4byte gTasks+0x8 -_0813422C: .4byte gSprites - thumb_func_end sub_8134200 - - thumb_func_start sub_8134230 -sub_8134230: @ 8134230 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - mov r9, r0 - mov r8, r2 - adds r6, r3, 0 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - lsls r1, 16 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - lsls r6, 24 - lsrs r6, 24 - ldr r0, _081343C4 @ =gUnknown_846343C - str r0, [sp, 0x20] - ldr r3, _081343C8 @ =0xffff0000 - add r0, sp, 0x20 - ldr r2, [r0, 0x4] - ands r2, r3 - movs r3, 0x94 - lsls r3, 3 - orrs r2, r3 - lsrs r7, r1, 16 - ldr r5, _081343CC @ =0x0000ffff - ands r2, r5 - orrs r2, r1 - str r2, [r0, 0x4] - bl LoadCompressedSpriteSheet - ldr r0, _081343D0 @ =gUnknown_846341C - mov r3, r8 - lsls r3, 4 - mov r8, r3 - movs r1, 0x80 - lsls r1, 1 - add r1, r8 - movs r2, 0x20 - bl LoadPalette - ldr r0, _081343D4 @ =sub_8134200 - movs r1, 0 - bl CreateTask - mov r10, r0 - mov r0, r10 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - lsls r4, r0, 2 - add r4, r10 - lsls r4, 3 - ldr r0, _081343D8 @ =gTasks+0x8 - adds r4, r0 - movs r0, 0 - strb r0, [r4, 0xC] - strh r7, [r4, 0xE] - ldrh r0, [r4, 0x10] - orrs r5, r0 - strh r5, [r4, 0x10] - movs r0, 0xF0 - lsls r0, 1 - bl Alloc - adds r1, r0, 0 - str r1, [r4, 0x8] - str r1, [r4, 0x4] - mov r0, r9 - bl sub_813C9DC - strb r0, [r4] - movs r1, 0x80 - lsls r1, 8 - movs r0, 0 - bl SetGpuRegBits - ldr r1, _081343DC @ =0x00002f42 - movs r0, 0x50 - bl SetGpuReg - ldr r1, _081343E0 @ =0x0000080c - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - ldr r1, _081343E4 @ =0x00001f1f - movs r0, 0x48 - bl SetGpuReg - ldr r1, _081343E8 @ =0x00002f3d - movs r0, 0x4A - bl SetGpuReg - add r1, sp, 0x8 - ldr r0, _081343EC @ =gDummySpriteTemplate - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - add r0, sp, 0x8 - strh r7, [r0] - adds r6, 0x20 - movs r1, 0x68 - adds r2, r6, 0 - movs r3, 0 - bl CreateSprite - strb r0, [r4, 0xD] - ldrb r1, [r4, 0xD] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _081343F0 @ =gSprites - adds r0, r5 - adds r1, r4, 0 - bl SetSubspriteTables - ldrb r1, [r4, 0xD] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r2, [r0, 0x1] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0, 0x1] - ldrb r0, [r4, 0xD] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - mov r2, r8 - orrs r0, r2 - strb r0, [r1, 0x5] - ldrb r1, [r4, 0xD] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, 0x42 - ldrb r2, [r0] - movs r1, 0x40 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldrb r1, [r4, 0xD] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - movs r0, 0x1 - bl HideBg - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0xF - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl ShowBg - mov r0, r10 - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_081343C4: .4byte gUnknown_846343C -_081343C8: .4byte 0xffff0000 -_081343CC: .4byte 0x0000ffff -_081343D0: .4byte gUnknown_846341C -_081343D4: .4byte sub_8134200 -_081343D8: .4byte gTasks+0x8 -_081343DC: .4byte 0x00002f42 -_081343E0: .4byte 0x0000080c -_081343E4: .4byte 0x00001f1f -_081343E8: .4byte 0x00002f3d -_081343EC: .4byte gDummySpriteTemplate -_081343F0: .4byte gSprites - thumb_func_end sub_8134230 - - thumb_func_start sub_81343F4 -sub_81343F4: @ 81343F4 - push {r4,r5,lr} - sub sp, 0x8 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - ldr r0, _08134498 @ =gTasks+0x8 - adds r4, r0 - ldrh r0, [r4, 0xE] - bl FreeSpriteTilesByTag - ldrb r1, [r4, 0xD] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0813449C @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r0, [r4, 0x8] - bl Free - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - ldr r4, _081344A0 @ =0x00001f1f - movs r0, 0x48 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x4A - adds r1, r4, 0 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 8 - movs r0, 0 - bl ClearGpuRegBits - movs r0, 0x1 - bl HideBg - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x2 - bl SetBgAttribute - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl ShowBg - adds r0, r5, 0 - bl DestroyTask - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08134498: .4byte gTasks+0x8 -_0813449C: .4byte gSprites -_081344A0: .4byte 0x00001f1f - thumb_func_end sub_81343F4 - - thumb_func_start sub_81344A4 -sub_81344A4: @ 81344A4 - push {r4,lr} - lsls r0, 2 - adds r0, r2 - ldr r4, _081344D8 @ =gUnknown_8463564 - ldr r3, _081344DC @ =gUnknown_8463580 - lsls r1, 2 - adds r2, r1, r3 - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - lsls r2, 2 - adds r2, r4 - ldr r2, [r2] - ldr r2, [r2] - str r2, [r0] - adds r2, r3, 0x1 - adds r2, r1, r2 - ldrb r2, [r2] - strb r2, [r0] - adds r3, 0x2 - adds r1, r3 - ldrb r1, [r1] - strb r1, [r0, 0x1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081344D8: .4byte gUnknown_8463564 -_081344DC: .4byte gUnknown_8463580 - thumb_func_end sub_81344A4 - - thumb_func_start sub_81344E0 -sub_81344E0: @ 81344E0 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _081344F4 @ =gTasks+0x8 - adds r1, r0 - ldrb r0, [r1] - bx lr - .align 2, 0 -_081344F4: .4byte gTasks+0x8 - thumb_func_end sub_81344E0 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s index 1a7cd0a2e..2f0682c94 100644 --- a/asm/pokedex_screen.s +++ b/asm/pokedex_screen.s @@ -7412,7 +7412,7 @@ sub_810603C: @ 810603C movs r2, 0 movs r3, 0 bl FillBgTilemapBufferRect_Palette0 - bl sub_80CC204 + bl GetUnlockedSeviiAreas ldr r1, [r6] adds r1, 0x64 strb r0, [r1] diff --git a/asm/wild_encounter.s b/asm/wild_encounter.s index e9fb8a630..c43ebf0a9 100644 --- a/asm/wild_encounter.s +++ b/asm/wild_encounter.s @@ -298,7 +298,7 @@ _0808290C: sub_8082934: @ 8082934 push {r4-r6,lr} movs r4, 0 - ldr r0, _08082990 @ =gUnknown_83C9CB8 + ldr r0, _08082990 @ =gWildMonHeaders ldrb r1, [r0] adds r5, r0, 0 cmp r1, 0xFF @@ -343,7 +343,7 @@ _08082980: adds r0, r4, 0 b _080829B6 .align 2, 0 -_08082990: .4byte gUnknown_83C9CB8 +_08082990: .4byte gWildMonHeaders _08082994: .4byte 0x00007a01 _08082998: .4byte gSaveBlock1Ptr _0808299C: .4byte 0x00004024 @@ -799,7 +799,7 @@ _08082CE4: bl sub_8058F1C cmp r0, 0x1 bne _08082D78 - ldr r1, _08082D4C @ =gUnknown_83C9CB8 + ldr r1, _08082D4C @ =gWildMonHeaders lsls r2, r4, 2 adds r0, r2, r4 lsls r0, 2 @@ -822,7 +822,7 @@ _08082D06: bne _08082D1E b _08082E46 _08082D1E: - ldr r1, _08082D4C @ =gUnknown_83C9CB8 + ldr r1, _08082D4C @ =gWildMonHeaders adds r0, r5, r4 lsls r0, 2 adds r1, 0x4 @@ -843,7 +843,7 @@ _08082D3A: .align 2, 0 _08082D44: .4byte gUnknown_20386DC _08082D48: .4byte 0x0000ffff -_08082D4C: .4byte gUnknown_83C9CB8 +_08082D4C: .4byte gWildMonHeaders _08082D50: bl TryStartRoamerEncounter lsls r0, 24 @@ -884,7 +884,7 @@ _08082D78: cmp r0, 0x1 bne _08082E46 _08082DA8: - ldr r1, _08082E18 @ =gUnknown_83C9CB8 + ldr r1, _08082E18 @ =gWildMonHeaders lsls r2, r4, 2 adds r0, r2, r4 lsls r0, 2 @@ -904,7 +904,7 @@ _08082DA8: cmp r0, 0 beq _08082E46 _08082DD2: - ldr r1, _08082E18 @ =gUnknown_83C9CB8 + ldr r1, _08082E18 @ =gWildMonHeaders adds r0, r5, r4 lsls r0, 2 adds r1, 0x8 @@ -936,7 +936,7 @@ _08082DFA: movs r0, 0x1 b _08082E48 .align 2, 0 -_08082E18: .4byte gUnknown_83C9CB8 +_08082E18: .4byte gWildMonHeaders _08082E1C: .4byte gSaveBlock1Ptr _08082E20: .4byte 0x000030d0 _08082E24: @@ -975,7 +975,7 @@ sub_8082E54: @ 8082E54 ldr r0, _08082EA4 @ =0x0000ffff cmp r2, r0 beq _08082EB0 - ldr r1, _08082EA8 @ =gUnknown_83C9CB8 + ldr r1, _08082EA8 @ =gWildMonHeaders lsls r0, r2, 2 adds r0, r2 lsls r0, 2 @@ -1006,7 +1006,7 @@ _08082E9C: b _08082EB6 .align 2, 0 _08082EA4: .4byte 0x0000ffff -_08082EA8: .4byte gUnknown_83C9CB8 +_08082EA8: .4byte gWildMonHeaders _08082EAC: .4byte gSpecialVar_Result _08082EB0: ldr r1, _08082EBC @ =gSpecialVar_Result @@ -1049,7 +1049,7 @@ SweetScentWildEncounter: @ 8082EC0 lsrs r0, 24 cmp r0, 0x1 beq _08082F3C - ldr r1, _08082F18 @ =gUnknown_83C9CB8 + ldr r1, _08082F18 @ =gWildMonHeaders lsls r0, r5, 2 adds r0, r5 lsls r0, 2 @@ -1062,7 +1062,7 @@ SweetScentWildEncounter: @ 8082EC0 b _08082F58 .align 2, 0 _08082F14: .4byte 0x0000ffff -_08082F18: .4byte gUnknown_83C9CB8 +_08082F18: .4byte gWildMonHeaders _08082F1C: mov r0, sp movs r1, 0 @@ -1083,7 +1083,7 @@ _08082F3C: movs r0, 0x1 b _08082F6E _08082F44: - ldr r1, _08082F68 @ =gUnknown_83C9CB8 + ldr r1, _08082F68 @ =gWildMonHeaders lsls r0, r5, 2 adds r0, r5 lsls r0, 2 @@ -1100,7 +1100,7 @@ _08082F58: movs r0, 0x1 b _08082F6E .align 2, 0 -_08082F68: .4byte gUnknown_83C9CB8 +_08082F68: .4byte gWildMonHeaders _08082F6C: movs r0, 0 _08082F6E: @@ -1119,7 +1119,7 @@ sub_8082F78: @ 8082F78 ldr r0, _08082FA0 @ =0x0000ffff cmp r2, r0 beq _08082FA8 - ldr r0, _08082FA4 @ =gUnknown_83C9CB8 + ldr r0, _08082FA4 @ =gWildMonHeaders lsls r1, r2, 2 adds r1, r2 lsls r1, 2 @@ -1132,7 +1132,7 @@ sub_8082F78: @ 8082F78 b _08082FAA .align 2, 0 _08082FA0: .4byte 0x0000ffff -_08082FA4: .4byte gUnknown_83C9CB8 +_08082FA4: .4byte gWildMonHeaders _08082FA8: movs r0, 0 _08082FAA: @@ -1146,7 +1146,7 @@ sub_8082FB0: @ 8082FB0 adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 - ldr r4, _08082FE4 @ =gUnknown_83C9CB8 + ldr r4, _08082FE4 @ =gWildMonHeaders bl sub_8082934 lsls r0, 16 lsrs r0, 16 @@ -1165,7 +1165,7 @@ sub_8082FB0: @ 8082FB0 pop {r0} bx r0 .align 2, 0 -_08082FE4: .4byte gUnknown_83C9CB8 +_08082FE4: .4byte gWildMonHeaders thumb_func_end sub_8082FB0 thumb_func_start GetLocalWildMon @@ -1180,7 +1180,7 @@ GetLocalWildMon: @ 8082FE8 ldr r0, _08083020 @ =0x0000ffff cmp r3, r0 beq _0808301A - ldr r2, _08083024 @ =gUnknown_83C9CB8 + ldr r2, _08083024 @ =gWildMonHeaders lsls r1, r3, 2 adds r1, r3 lsls r1, 2 @@ -1199,7 +1199,7 @@ _0808301A: b _0808306E .align 2, 0 _08083020: .4byte 0x0000ffff -_08083024: .4byte gUnknown_83C9CB8 +_08083024: .4byte gWildMonHeaders _08083028: cmp r4, 0 bne _0808303C @@ -1250,7 +1250,7 @@ GetLocalWaterMon: @ 8083074 ldr r0, _080830A8 @ =0x0000ffff cmp r2, r0 beq _080830B0 - ldr r1, _080830AC @ =gUnknown_83C9CB8 + ldr r1, _080830AC @ =gWildMonHeaders lsls r0, r2, 2 adds r0, r2 lsls r0, 2 @@ -1268,7 +1268,7 @@ GetLocalWaterMon: @ 8083074 b _080830B2 .align 2, 0 _080830A8: .4byte 0x0000ffff -_080830AC: .4byte gUnknown_83C9CB8 +_080830AC: .4byte gWildMonHeaders _080830B0: movs r0, 0 _080830B2: @@ -1513,7 +1513,7 @@ sub_808324C: @ 808324C beq _080832CC cmp r4, 0x1 bne _0808328C - ldr r1, _08083288 @ =gUnknown_83C9CB8 + ldr r1, _08083288 @ =gWildMonHeaders lsls r0, r2, 2 adds r0, r2 lsls r0, 2 @@ -1530,11 +1530,11 @@ sub_808324C: @ 808324C b _080832B8 .align 2, 0 _08083284: .4byte 0x0000ffff -_08083288: .4byte gUnknown_83C9CB8 +_08083288: .4byte gWildMonHeaders _0808328C: cmp r5, 0x2 bne _080832CC - ldr r1, _080832AC @ =gUnknown_83C9CB8 + ldr r1, _080832AC @ =gWildMonHeaders lsls r0, r2, 2 adds r0, r2 lsls r0, 2 @@ -1550,7 +1550,7 @@ _080832A8: movs r0, 0 b _080832CE .align 2, 0 -_080832AC: .4byte gUnknown_83C9CB8 +_080832AC: .4byte gWildMonHeaders _080832B0: cmp r1, 0x9 bhi _080832B8 diff --git a/asm/wild_pokemon_area.s b/asm/wild_pokemon_area.s deleted file mode 100644 index 71d8ac8dc..000000000 --- a/asm/wild_pokemon_area.s +++ /dev/null @@ -1,380 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_813C9DC -sub_813C9DC: @ 813C9DC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - str r1, [sp, 0x10] - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0xC] - bl sub_813CB34 - cmp r0, 0 - blt _0813CA02 - ldr r0, [sp, 0xC] - ldr r1, [sp, 0x10] - bl sub_813CB5C - b _0813CB1A -_0813CA02: - bl sub_80CC204 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x14] - movs r0, 0 - str r0, [sp, 0x18] - ldr r0, _0813CA74 @ =0x00004024 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x1C] - cmp r0, 0x8 - ble _0813CA24 - movs r1, 0 - str r1, [sp, 0x1C] -_0813CA24: - movs r6, 0 - mov r8, r6 - ldr r1, _0813CA78 @ =gUnknown_83C9CB8 - ldrb r0, [r1] - cmp r0, 0xFF - beq _0813CB18 -_0813CA30: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 2 - adds r4, r0, r1 - adds r0, r4, 0 - bl sub_813CC44 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0xB7 - bne _0813CA5A - ldr r2, [sp, 0x18] - adds r2, 0x1 - str r2, [sp, 0x18] - adds r0, r2, 0 - subs r0, 0x1 - adds r1, r6, 0x1 - str r1, [sp, 0x20] - ldr r2, [sp, 0x1C] - cmp r2, r0 - bne _0813CB06 -_0813CA5A: - adds r0, r4, 0 - ldr r1, [sp, 0xC] - bl sub_813CBD0 - adds r6, 0x1 - str r6, [sp, 0x20] - cmp r0, 0 - beq _0813CB06 - movs r0, 0 - str r0, [sp, 0x8] - lsls r7, r5, 16 - add r6, sp, 0x8 - b _0813CA94 - .align 2, 0 -_0813CA74: .4byte 0x00004024 -_0813CA78: .4byte gUnknown_83C9CB8 -_0813CA7C: - add r0, sp, 0x4 - ldrh r0, [r0] - cmp r0, 0 - beq _0813CA94 - mov r0, r8 - movs r1, 0x1 - add r8, r1 - add r1, sp, 0x4 - ldrh r1, [r1] - ldr r2, [sp, 0x10] - bl sub_81344A4 -_0813CA94: - lsrs r0, r7, 16 - add r2, sp, 0x4 - str r2, [sp] - ldr r1, _0813CAC8 @ =gUnknown_8464148 - movs r2, 0x37 - adds r3, r6, 0 - bl sub_813CC58 - cmp r0, 0 - bne _0813CA7C - movs r2, 0 - add r5, sp, 0x4 - ldr r0, _0813CACC @ =gUnknown_84642BC - mov r10, r0 -_0813CAB0: - ldr r0, [sp, 0x14] - asrs r0, r2 - movs r1, 0x1 - ands r0, r1 - adds r1, r2, 0x1 - mov r9, r1 - cmp r0, 0 - beq _0813CB00 - movs r0, 0 - str r0, [sp, 0x8] - lsls r4, r2, 3 - b _0813CAE4 - .align 2, 0 -_0813CAC8: .4byte gUnknown_8464148 -_0813CACC: .4byte gUnknown_84642BC -_0813CAD0: - ldrh r0, [r5] - cmp r0, 0 - beq _0813CAE4 - mov r0, r8 - movs r2, 0x1 - add r8, r2 - ldrh r1, [r5] - ldr r2, [sp, 0x10] - bl sub_81344A4 -_0813CAE4: - mov r1, r10 - adds r0, r4, r1 - ldr r1, [r0] - ldr r2, _0813CB2C @ =gUnknown_84642C0 - adds r0, r4, r2 - ldr r2, [r0] - add r0, sp, 0x4 - str r0, [sp] - lsrs r0, r7, 16 - adds r3, r6, 0 - bl sub_813CC58 - cmp r0, 0 - bne _0813CAD0 -_0813CB00: - mov r2, r9 - cmp r2, 0x6 - bls _0813CAB0 -_0813CB06: - ldr r6, [sp, 0x20] - ldr r1, _0813CB30 @ =gUnknown_83C9CB8 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0xFF - bne _0813CA30 -_0813CB18: - mov r0, r8 -_0813CB1A: - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0813CB2C: .4byte gUnknown_84642C0 -_0813CB30: .4byte gUnknown_83C9CB8 - thumb_func_end sub_813C9DC - - thumb_func_start sub_813CB34 -sub_813CB34: @ 813CB34 - push {lr} - lsls r0, 16 - lsrs r3, r0, 16 - movs r1, 0 - ldr r2, _0813CB48 @ =gUnknown_84642F4 -_0813CB3E: - ldrh r0, [r2] - cmp r0, r3 - bne _0813CB4C - adds r0, r1, 0 - b _0813CB58 - .align 2, 0 -_0813CB48: .4byte gUnknown_84642F4 -_0813CB4C: - adds r2, 0x4 - adds r1, 0x1 - cmp r1, 0x2 - bls _0813CB3E - movs r0, 0x1 - negs r0, r0 -_0813CB58: - pop {r1} - bx r1 - thumb_func_end sub_813CB34 - - thumb_func_start sub_813CB5C -sub_813CB5C: @ 813CB5C - push {r4,r5,lr} - sub sp, 0xC - adds r5, r1, 0 - lsls r0, 16 - lsrs r0, 16 - bl sub_813CB34 - adds r4, r0, 0 - cmp r4, 0 - blt _0813CBC4 - ldr r0, _0813CBBC @ =gUnknown_84642F4 - lsls r4, 2 - adds r4, r0 - bl ScrSpecial_GetStarter - ldrh r1, [r4, 0x2] - lsls r0, 16 - lsrs r0, 16 - cmp r1, r0 - bne _0813CBC4 - bl GetRoamerLocationMapSectionId - lsls r0, 16 - lsrs r0, 16 - movs r1, 0 - str r1, [sp, 0x8] - ldr r1, _0813CBC0 @ =gUnknown_8464148 - add r3, sp, 0x8 - add r2, sp, 0x4 - str r2, [sp] - movs r2, 0x37 - bl sub_813CC58 - cmp r0, 0 - beq _0813CBC4 - add r0, sp, 0x4 - ldrh r0, [r0] - cmp r0, 0 - beq _0813CBC4 - add r0, sp, 0x4 - ldrh r1, [r0] - movs r0, 0 - adds r2, r5, 0 - bl sub_81344A4 - movs r0, 0x1 - b _0813CBC6 - .align 2, 0 -_0813CBBC: .4byte gUnknown_84642F4 -_0813CBC0: .4byte gUnknown_8464148 -_0813CBC4: - movs r0, 0 -_0813CBC6: - add sp, 0xC - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_813CB5C - - thumb_func_start sub_813CBD0 -sub_813CBD0: @ 813CBD0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldr r0, [r4, 0x4] - movs r2, 0xC - bl sub_813CC18 - cmp r0, 0 - bne _0813CC10 - ldr r0, [r4, 0x8] - adds r1, r5, 0 - movs r2, 0x5 - bl sub_813CC18 - cmp r0, 0 - bne _0813CC10 - ldr r0, [r4, 0x10] - adds r1, r5, 0 - movs r2, 0xC - bl sub_813CC18 - cmp r0, 0 - bne _0813CC10 - ldr r0, [r4, 0xC] - adds r1, r5, 0 - movs r2, 0x5 - bl sub_813CC18 - cmp r0, 0 - bne _0813CC10 - movs r0, 0 - b _0813CC12 -_0813CC10: - movs r0, 0x1 -_0813CC12: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_813CBD0 - - thumb_func_start sub_813CC18 -sub_813CC18: @ 813CC18 - push {r4,lr} - adds r4, r1, 0 - cmp r0, 0 - beq _0813CC3A - movs r1, 0 - cmp r1, r2 - bge _0813CC3A - ldr r3, [r0, 0x4] -_0813CC28: - ldrh r0, [r3, 0x2] - cmp r0, r4 - bne _0813CC32 - movs r0, 0x1 - b _0813CC3C -_0813CC32: - adds r3, 0x4 - adds r1, 0x1 - cmp r1, r2 - blt _0813CC28 -_0813CC3A: - movs r0, 0 -_0813CC3C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_813CC18 - - thumb_func_start sub_813CC44 -sub_813CC44: @ 813CC44 - push {lr} - ldrb r2, [r0] - ldrb r1, [r0, 0x1] - adds r0, r2, 0 - bl get_mapheader_by_bank_and_number - ldrb r0, [r0, 0x14] - pop {r1} - bx r1 - thumb_func_end sub_813CC44 - - thumb_func_start sub_813CC58 -sub_813CC58: @ 813CC58 - push {r4-r6,lr} - adds r4, r2, 0 - ldr r6, [sp, 0x10] - lsls r0, 16 - lsrs r5, r0, 16 - ldr r2, [r3] - cmp r2, r4 - bge _0813CC86 - lsls r0, r2, 2 - adds r1, r0, r1 -_0813CC6C: - ldrh r0, [r1] - cmp r0, r5 - bne _0813CC7E - ldrh r0, [r1, 0x2] - strh r0, [r6] - adds r0, r2, 0x1 - str r0, [r3] - movs r0, 0x1 - b _0813CC88 -_0813CC7E: - adds r1, 0x4 - adds r2, 0x1 - cmp r2, r4 - blt _0813CC6C -_0813CC86: - movs r0, 0 -_0813CC88: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_813CC58 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/data_835B488.s b/data/data_835B488.s index c106c46c4..742224d2b 100644 --- a/data/data_835B488.s +++ b/data/data_835B488.s @@ -55,7 +55,7 @@ gUnknown_83C7294:: @ 83C7294 gUnknown_83C7388:: @ 83C7388 .incbin "baserom.gba", 0x3C7388, 0x2930 -gUnknown_83C9CB8:: @ 83C9CB8 +gWildMonHeaders:: @ 83C9CB8 .incbin "baserom.gba", 0x3C9CB8, 0xA64 gUnknown_83CA71C:: @ 83CA71C diff --git a/data/map_event_scripts.inc b/data/map_event_scripts.inc index 233b73349..c333c6336 100644 --- a/data/map_event_scripts.inc +++ b/data/map_event_scripts.inc @@ -1485,7 +1485,7 @@ gUnknown_81A6481:: @ 81A6481 setflag FLAG_0x09F setflag FLAG_0x0A0 setflag FLAG_0x0AE - setvar VAR_MIRAGE_RND_L, 500 + setvar VAR_0x4025, 500 end EventScript_1A651A:: @ 81A651A diff --git a/data/maps/PalletTown_GarysHouse/scripts.inc b/data/maps/PalletTown_GarysHouse/scripts.inc index dd3f05aa9..9f304b583 100644 --- a/data/maps/PalletTown_GarysHouse/scripts.inc +++ b/data/maps/PalletTown_GarysHouse/scripts.inc @@ -51,7 +51,7 @@ EventScript_168DB9:: @ 8168DB9 compare_var_to_value VAR_RESULT, 2 goto_if_eq EventScript_1A7AE0 special sub_8112364 - compare_var_to_value VAR_MIRAGE_RND_L, 500 + compare_var_to_value VAR_0x4025, 500 goto_if 0, EventScript_168E46 msgbox gUnknown_818D7D3, MSGBOX_YESNO compare_var_to_value VAR_RESULT, 0 diff --git a/data/pokedex_area_markers.s b/data/pokedex_area_markers.s deleted file mode 100644 index bf63a3210..000000000 --- a/data/pokedex_area_markers.s +++ /dev/null @@ -1,14 +0,0 @@ - .section .rodata - .align 2 - -gUnknown_846341C:: @ 846341C - .incbin "baserom.gba", 0x46341C, 0x20 - -gUnknown_846343C:: @ 846343C - .incbin "baserom.gba", 0x46343C, 0x128 - -gUnknown_8463564:: @ 8463564 - .incbin "baserom.gba", 0x463564, 0x1C - -gUnknown_8463580:: @ 8463580 - .incbin "baserom.gba", 0x463580, 0x140 diff --git a/data/pokedex_area_markers/marker.png b/data/pokedex_area_markers/marker.png new file mode 100644 index 0000000000000000000000000000000000000000..d332c9f469ee3f182fdb1c25d776fe4d7f13b0d3 GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^91IMM8Z68}*7RR%t$>t4fKP}kkp6$P_LOY$ig%Hud6HbOe>8bC?P3h$kgVt z%sReuX?fjx-(>0KEU)_-w`A^S{#^D0?5spr_id].invisible = FALSE; +} + +u8 sub_8134230(u16 species, u16 tilesTag, u8 palIdx, u8 y) +{ + struct SpriteTemplate spriteTemplate; + struct CompressedSpriteSheet spriteSheet; + u8 taskId; + struct PAM_TaskData * data; + struct Subsprite * subsprites; + + spriteSheet.data = sMarkerTiles; + spriteSheet.size = 0x4A0; + spriteSheet.tag = tilesTag; + LoadCompressedSpriteSheet(&spriteSheet); + LoadPalette(sMarkerPal, 0x100 + 16 * palIdx, 0x20); + taskId = CreateTask(Task_ShowAreaMarkers, 0); + data = (void *)gTasks[taskId].data; + data->unk_0C = 0; + data->tilesTag = tilesTag; + data->unk_10 = 0xFFFF; + subsprites = Alloc(120 * sizeof(struct Subsprite)); + data->buffer = subsprites; + data->subsprites.subsprites = subsprites; + data->subsprites.subspriteCount = BuildPokedexAreaSubspriteBuffer(species, subsprites); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_BD); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(12, 8)); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_WININ, 0x1F1F); + SetGpuReg(REG_OFFSET_WINOUT, 0x2F3D); + spriteTemplate = gDummySpriteTemplate; + spriteTemplate.tileTag = tilesTag; + data->spr_id = CreateSprite(&spriteTemplate, 104, y + 32, 0); + SetSubspriteTables(&gSprites[data->spr_id], &data->subsprites); + gSprites[data->spr_id].oam.objMode = ST_OAM_OBJ_WINDOW; + gSprites[data->spr_id].oam.paletteNum = palIdx; + gSprites[data->spr_id].subspriteTableNum = 0; + gSprites[data->spr_id].invisible = TRUE; + HideBg(1); + SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 0); + FillBgTilemapBufferRect_Palette0(1, 0x00F, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(1); + ShowBg(1); + return taskId; +} + +void sub_81343F4(u8 taskId) +{ + struct PAM_TaskData * data = (void *)gTasks[taskId].data; + FreeSpriteTilesByTag(data->tilesTag); + DestroySprite(&gSprites[data->spr_id]); + Free(data->buffer); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_WININ, 0x1F1F); + SetGpuReg(REG_OFFSET_WINOUT, 0x1F1F); + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON); + HideBg(1); + SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 2); + FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(1); + ShowBg(1); + DestroyTask(taskId); +} + +void SetAreaSubsprite(s32 i, s32 whichArea, struct Subsprite * subsprites) +{ + subsprites[i] = *sSubsprites[sSubspriteLookupTable[whichArea][0]]; + subsprites[i].x = sSubspriteLookupTable[whichArea][1]; + subsprites[i].y = sSubspriteLookupTable[whichArea][2]; +} + +u8 sub_81344E0(u8 taskId) +{ + struct PAM_TaskData * data = (void *)gTasks[taskId].data; + return data->subsprites.subspriteCount; +} diff --git a/src/wild_pokemon_area.c b/src/wild_pokemon_area.c new file mode 100644 index 000000000..8654f41f1 --- /dev/null +++ b/src/wild_pokemon_area.c @@ -0,0 +1,308 @@ +#include "global.h" +#include "field_specials.h" +#include "event_data.h" +#include "wild_encounter.h" +#include "roamer.h" +#include "overworld.h" +#include "pokedex_area_markers.h" +#include "constants/vars.h" +#include "constants/region_map.h" +#include "constants/species.h" + +struct SeviiDexArea +{ + const u16 (* lut)[2]; + s32 count; +}; + +struct RoamerPair +{ + u16 roamer; + u16 starter; +}; + +static s32 GetRoamerIndex(u16 species); +static s32 CountRoamerNests(u16 species, struct Subsprite * subsprites); +static bool32 PokemonInAnyEncounterTableInMap(const struct WildPokemonHeader * data, s32 species); +static bool32 PokemonInEncounterTable(const struct WildPokemonInfo * pokemon, s32 species, s32 count); +static u16 GetMapSecIdFromWildMonHeader(const struct WildPokemonHeader * header); +static bool32 TryGetMapSecPokedexAreaEntry(u16 mapSecId, const u16 (*lut)[2], s32 count, s32 * lut_i_p, u16 * table_idx_p); + +static const u16 sDexAreas_Kanto[][2] = { + { MAPSEC_PALLET_TOWN, 1 }, + { MAPSEC_VIRIDIAN_CITY, 2 }, + { MAPSEC_PEWTER_CITY, 3 }, + { MAPSEC_CERULEAN_CITY, 4 }, + { MAPSEC_LAVENDER_TOWN, 5 }, + { MAPSEC_VERMILION_CITY, 6 }, + { MAPSEC_CELADON_CITY, 7 }, + { MAPSEC_FUCHSIA_CITY, 8 }, + { MAPSEC_CINNABAR_ISLAND, 9 }, + { MAPSEC_INDIGO_PLATEAU, 10 }, + { MAPSEC_SAFFRON_CITY, 11 }, + { MAPSEC_ROUTE_4_FLYDUP, 15 }, + { MAPSEC_ROUTE_10_FLYDUP, 21 }, + { MAPSEC_ROUTE_1, 12 }, + { MAPSEC_ROUTE_2, 13 }, + { MAPSEC_ROUTE_3, 14 }, + { MAPSEC_ROUTE_4, 15 }, + { MAPSEC_ROUTE_5, 16 }, + { MAPSEC_ROUTE_6, 17 }, + { MAPSEC_ROUTE_7, 18 }, + { MAPSEC_ROUTE_8, 19 }, + { MAPSEC_ROUTE_9, 20 }, + { MAPSEC_ROUTE_10, 21 }, + { MAPSEC_ROUTE_11, 22 }, + { MAPSEC_ROUTE_12, 23 }, + { MAPSEC_ROUTE_13, 24 }, + { MAPSEC_ROUTE_14, 25 }, + { MAPSEC_ROUTE_15, 26 }, + { MAPSEC_ROUTE_16, 27 }, + { MAPSEC_ROUTE_17, 28 }, + { MAPSEC_ROUTE_18, 29 }, + { MAPSEC_ROUTE_19, 30 }, + { MAPSEC_ROUTE_20, 31 }, + { MAPSEC_ROUTE_21, 32 }, + { MAPSEC_ROUTE_22, 33 }, + { MAPSEC_ROUTE_23, 34 }, + { MAPSEC_ROUTE_24, 35 }, + { MAPSEC_ROUTE_25, 36 }, + { MAPSEC_VIRIDIAN_FOREST, 37 }, + { MAPSEC_MT_MOON, 39 }, + { MAPSEC_S_S_ANNE, 6 }, + { MAPSEC_UNDERGROUND_PATH, 11 }, + { MAPSEC_UNDERGROUND_PATH_2, 11 }, + { MAPSEC_DIGLETTS_CAVE, 38 }, + { MAPSEC_KANTO_VICTORY_ROAD, 47 }, + { MAPSEC_ROCKET_HIDEOUT, 7 }, + { MAPSEC_SILPH_CO, 11 }, + { MAPSEC_POKEMON_MANSION, 46 }, + { MAPSEC_KANTO_SAFARI_ZONE, 44 }, + { MAPSEC_POKEMON_LEAGUE, 47 }, + { MAPSEC_ROCK_TUNNEL, 41 }, + { MAPSEC_SEAFOAM_ISLANDS, 45 }, + { MAPSEC_POKEMON_TOWER, 43 }, + { MAPSEC_CERULEAN_CAVE, 40 }, + { MAPSEC_POWER_PLANT, 42 } +}; + +static const u16 sDexAreas_Sevii1[][2] = { + { MAPSEC_KINDLE_ROAD, 55 }, + { MAPSEC_TREASURE_BEACH, 56 }, + { MAPSEC_ONE_ISLAND, 48 }, + { MAPSEC_MT_EMBER, 72 } +}; + +static const u16 sDexAreas_Sevii2[][2] = { + { MAPSEC_CAPE_BRINK, 57 }, + { MAPSEC_TWO_ISLAND, 49 } +}; + +static const u16 sDexAreas_Sevii3[][2] = { + { MAPSEC_BOND_BRIDGE, 58 }, + { MAPSEC_THREE_ISLE_PORT, 59 }, + { MAPSEC_THREE_ISLAND, 50 }, + { MAPSEC_BERRY_FOREST, 73 }, + { MAPSEC_THREE_ISLE_PATH, 59 } +}; + +static const u16 sDexAreas_Sevii4[][2] = { + { MAPSEC_FOUR_ISLAND, 51 }, + { MAPSEC_ICEFALL_CAVE, 74 } +}; + +static const u16 sDexAreas_Sevii5[][2] = { + { MAPSEC_RESORT_GORGEOUS, 60 }, + { MAPSEC_WATER_LABYRINTH, 61 }, + { MAPSEC_FIVE_ISLE_MEADOW, 62 }, + { MAPSEC_MEMORIAL_PILLAR, 63 }, + { MAPSEC_FIVE_ISLAND, 52 }, + { MAPSEC_ROCKET_WAREHOUSE, 62 }, + { MAPSEC_LOST_CAVE, 75 } +}; + +static const u16 sDexAreas_Sevii6[][2] = { + { MAPSEC_OUTCAST_ISLAND, 64 }, + { MAPSEC_GREEN_PATH, 65 }, + { MAPSEC_WATER_PATH, 66 }, + { MAPSEC_RUIN_VALLEY, 67 }, + { MAPSEC_DOTTED_HOLE, 78 }, + { MAPSEC_PATTERN_BUSH, 77 }, + { MAPSEC_ALTERING_CAVE, 76 } +}; + +static const u16 sDexAreas_Sevii7[][2] = { + { MAPSEC_TRAINER_TOWER, 68 }, + { MAPSEC_CANYON_ENTRANCE, 69 }, + { MAPSEC_SEVAULT_CANYON, 70 }, + { MAPSEC_TANOBY_RUINS, 71 }, + { MAPSEC_MONEAN_CHAMBER, 79 }, + { MAPSEC_LIPTOO_CHAMBER, 79 }, + { MAPSEC_WEEPTH_CHAMBER, 79 }, + { MAPSEC_DILFORD_CHAMBER, 79 }, + { MAPSEC_SCUFIB_CHAMBER, 79 }, + { MAPSEC_RIXY_CHAMBER, 79 }, + { MAPSEC_VIAPOIS_CHAMBER, 79 } +}; + +static const struct SeviiDexArea sSeviiDexAreas[] = { + { sDexAreas_Sevii1, 4 }, + { sDexAreas_Sevii2, 2 }, + { sDexAreas_Sevii3, 5 }, + { sDexAreas_Sevii4, 2 }, + { sDexAreas_Sevii5, 7 }, + { sDexAreas_Sevii6, 7 }, + { sDexAreas_Sevii7, 11 } +}; + +static const struct RoamerPair sRoamerPairs[] = { + { SPECIES_ENTEI, SPECIES_BULBASAUR }, + { SPECIES_SUICUNE, SPECIES_CHARMANDER }, + { SPECIES_RAIKOU, SPECIES_SQUIRTLE } +}; + +s32 BuildPokedexAreaSubspriteBuffer(u16 species, struct Subsprite * subsprites) +{ + s32 areaCount; + s32 j; + s32 mapSecId; + u16 dexAreaSubspriteIdx; + s32 dexAreaEntryLUTidx; + s32 seviiAreas; + s32 alteringCaveCount; + s32 alteringCaveNum; + s32 i; + + if (GetRoamerIndex(species) >= SPECIES_NONE) + { + return CountRoamerNests(species, subsprites); + } + + seviiAreas = GetUnlockedSeviiAreas(); + alteringCaveCount = 0; + alteringCaveNum = VarGet(VAR_0x4024); + if (alteringCaveNum > 8) + alteringCaveNum = 0; + for (i = 0, areaCount = 0; gWildMonHeaders[i].mapGroup != 0xFF; i++) + { + mapSecId = GetMapSecIdFromWildMonHeader(&gWildMonHeaders[i]); + if (mapSecId == MAPSEC_ALTERING_CAVE) + { + alteringCaveCount++; + if (alteringCaveNum != alteringCaveCount - 1) + continue; + } + if (PokemonInAnyEncounterTableInMap(&gWildMonHeaders[i], species)) + { + dexAreaEntryLUTidx = 0; + while (TryGetMapSecPokedexAreaEntry(mapSecId, sDexAreas_Kanto, 55, &dexAreaEntryLUTidx, &dexAreaSubspriteIdx)) + { + if (dexAreaSubspriteIdx != 0) + { + SetAreaSubsprite(areaCount++, dexAreaSubspriteIdx, subsprites); + } + } + for (j = 0; j < NELEMS(sSeviiDexAreas); j++) + { + if ((seviiAreas >> j) & 1) + { + dexAreaEntryLUTidx = 0; + while (TryGetMapSecPokedexAreaEntry(mapSecId, sSeviiDexAreas[j].lut, sSeviiDexAreas[j].count, &dexAreaEntryLUTidx, &dexAreaSubspriteIdx)) + { + if (dexAreaSubspriteIdx != 0) + { + SetAreaSubsprite(areaCount++, dexAreaSubspriteIdx, subsprites); + } + } + } + } + } + } + + return areaCount; +} + +static s32 GetRoamerIndex(u16 species) +{ + s32 i; + for (i = 0; i < 3u; i++) + { + if (sRoamerPairs[i].roamer == species) + return i; + } + + return -1; +} + +static s32 CountRoamerNests(u16 species, struct Subsprite * subsprites) +{ + u16 roamerLocation; + s32 roamerIdx; + u16 dexAreaSubspriteIdx; + s32 dexAreaEntryLUTidx; + + roamerIdx = GetRoamerIndex(species); + if (roamerIdx < 0) + return 0; + if (sRoamerPairs[roamerIdx].starter != ScrSpecial_GetStarter()) + return 0; + roamerLocation = GetRoamerLocationMapSectionId(); + dexAreaEntryLUTidx = 0; + if (TryGetMapSecPokedexAreaEntry(roamerLocation, sDexAreas_Kanto, 55, &dexAreaEntryLUTidx, &dexAreaSubspriteIdx)) + { + if (dexAreaSubspriteIdx != 0) + { + SetAreaSubsprite(0, dexAreaSubspriteIdx, subsprites); + return 1; + } + } + return 0; +} + +static bool32 PokemonInAnyEncounterTableInMap(const struct WildPokemonHeader * data, s32 species) +{ + if (PokemonInEncounterTable(data->landMonsInfo, species, 12)) + return TRUE; + if (PokemonInEncounterTable(data->waterMonsInfo, species, 5)) + return TRUE; + if (PokemonInEncounterTable(data->fishingMonsInfo, species, 12)) + return TRUE; + if (PokemonInEncounterTable(data->rockSmashMonsInfo, species, 5)) + return TRUE; + + return FALSE; +} + +static bool32 PokemonInEncounterTable(const struct WildPokemonInfo * info, s32 species, s32 count) +{ + s32 i; + if (info != NULL) + { + for (i = 0; i < count; i++) + { + if (info->wildPokemon[i].species == species) + return TRUE; + } + } + return FALSE; +} + +static u16 GetMapSecIdFromWildMonHeader(const struct WildPokemonHeader * header) +{ + return get_mapheader_by_bank_and_number(header->mapGroup, header->mapNum)->regionMapSectionId; +} + +static bool32 TryGetMapSecPokedexAreaEntry(u16 mapSecId, const u16 (*lut)[2], s32 count, s32 * lut_i_p, u16 * table_idx_p) +{ + s32 i; + for (i = *lut_i_p; i < count; i++) + { + if (lut[i][0] == mapSecId) + { + *table_idx_p = lut[i][1]; + *lut_i_p = i + 1; + return TRUE; + } + } + return FALSE; +} From 136464ce9448c43273422b1142642755c658e175 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 4 Oct 2019 13:19:45 -0400 Subject: [PATCH 2/5] Update Makefile rules to correctly detect changes in berry fix mb --- Makefile | 59 ++++++++++++++++------------------ tools/asmdiff.sh => asmdiff.sh | 4 +-- berry_fix/Makefile | 19 +++++++---- berry_fix/payload/Makefile | 12 +++++-- tools/br_ips/Makefile | 3 ++ 5 files changed, 56 insertions(+), 41 deletions(-) rename tools/asmdiff.sh => asmdiff.sh (50%) diff --git a/Makefile b/Makefile index 3f87a910d..1e8dc6e9f 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ +COMPARE ?= 0 + AS := tools/binutils/bin/arm-none-eabi-as CPP := $(CC) -E LD := tools/binutils/bin/arm-none-eabi-ld @@ -84,8 +86,6 @@ JSONPROC := tools/jsonproc/jsonproc # Secondary expansion is required for dependency variables in object rules. .SECONDEXPANSION: -.PHONY: rom tools clean compare tidy - $(shell mkdir -p $(C_BUILDDIR) $(ASM_BUILDDIR) $(DATA_ASM_BUILDDIR) $(SONG_BUILDDIR)) infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line)))) @@ -113,6 +113,12 @@ SONG_OBJS := $(patsubst $(SONG_SUBDIR)/%.s,$(SONG_BUILDDIR)/%.o,$(SONG_SRCS)) OBJS := $(C_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS) $(SONG_OBJS) OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS)) +TOOLDIRS := $(filter-out tools/agbcc tools/binutils,$(wildcard tools/*)) +TOOLBASE = $(TOOLDIRS:tools/%=%) +TOOLS = $(foreach tool,$(TOOLBASE),tools/$(tool)/$(tool)$(EXE)) + +.PHONY: all rom tools clean-tools mostlyclean clean compare tidy berry_fix $(TOOLDIRS) + MAKEFLAGS += --no-print-directory AUTO_GEN_TARGETS := @@ -120,25 +126,20 @@ AUTO_GEN_TARGETS := all: rom rom: $(ROM) +ifeq ($(COMPARE),1) + @$(SHA1) rom.sha1 +endif -tools: - @$(MAKE) -C tools/gbagfx - @$(MAKE) -C tools/scaninc - @$(MAKE) -C tools/preproc - @$(MAKE) -C tools/bin2c - @$(MAKE) -C tools/rsfont - @$(MAKE) -C tools/aif2pcm - @$(MAKE) -C tools/ramscrgen - @$(MAKE) -C tools/mid2agb - @$(MAKE) -C tools/gbafix - @$(MAKE) -C tools/mapjson - @$(MAKE) -C tools/jsonproc +tools: $(TOOLDIRS) + +$(TOOLDIRS): + @$(MAKE) -C $@ # For contributors to make sure a change didn't affect the contents of the ROM. -compare: rom - @$(SHA1) rom.sha1 +compare: + @$(MAKE) COMPARE=1 -clean: tidy +mostlyclean: tidy rm -f sound/direct_sound_samples/*.bin rm -f $(SONG_OBJS) find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + @@ -147,17 +148,11 @@ clean: tidy find $(DATA_ASM_SUBDIR)/maps \( -iname 'connections.inc' -o -iname 'events.inc' -o -iname 'header.inc' \) -exec rm {} + rm -f $(AUTO_GEN_TARGETS) @$(MAKE) clean -C berry_fix - @$(MAKE) clean -C tools/gbagfx - @$(MAKE) clean -C tools/scaninc - @$(MAKE) clean -C tools/preproc - @$(MAKE) clean -C tools/bin2c - @$(MAKE) clean -C tools/rsfont - @$(MAKE) clean -C tools/aif2pcm - @$(MAKE) clean -C tools/ramscrgen - @$(MAKE) clean -C tools/mid2agb - @$(MAKE) clean -C tools/gbafix - @$(MAKE) clean -C tools/mapjson - @$(MAKE) clean -C tools/jsonproc + +clean-tools: + @$(foreach tooldir,$(TOOLDIRS),$(MAKE) clean -C $(tooldir);) + +clean: mostlyclean clean-tools tidy: rm -f $(ROM) $(ELF) $(MAP) @@ -242,12 +237,14 @@ $(OBJ_DIR)/sym_ewram.ld: sym_ewram.txt $(OBJ_DIR)/ld_script.ld: ld_script.txt $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_common.ld $(OBJ_DIR)/sym_ewram.ld cd $(OBJ_DIR) && sed -f ../../ld_script.sed ../../$< | sed "s#tools/#../../tools/#g" > ld_script.ld -$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) +$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) berry_fix cd $(OBJ_DIR) && ../../$(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(LIB) $(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent $(ROM): $(ELF) $(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@ -berry_fix/berry_fix.gba: - @$(MAKE) -C berry_fix +berry_fix/berry_fix.gba: berry_fix + +berry_fix: + @$(MAKE) -C berry_fix COMPARE=$(COMPARE) diff --git a/tools/asmdiff.sh b/asmdiff.sh similarity index 50% rename from tools/asmdiff.sh rename to asmdiff.sh index a8114dc4f..d4627c007 100755 --- a/tools/asmdiff.sh +++ b/asmdiff.sh @@ -1,7 +1,7 @@ #!/bin/bash -OBJDUMP="./tools/binutils/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb" -OPTIONS="--start-address=$1 --stop-address=$2" +OBJDUMP="$DEVKITARM/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb" +OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))" $OBJDUMP $OPTIONS baserom.gba > baserom.dump $OBJDUMP $OPTIONS pokefirered.gba > pokefirered.dump diff -u baserom.dump pokefirered.dump diff --git a/berry_fix/Makefile b/berry_fix/Makefile index feb92a026..44e816c52 100644 --- a/berry_fix/Makefile +++ b/berry_fix/Makefile @@ -1,3 +1,5 @@ +COMPARE ?= 0 + AS := ../tools/binutils/bin/arm-none-eabi-as CPP := $(CC) -E LD := ../tools/binutils/bin/arm-none-eabi-ld @@ -57,7 +59,7 @@ FIX := ../tools/gbafix/gbafix$(EXE) # Secondary expansion is required for dependency variables in object rules. .SECONDEXPANSION: -.PHONY: rom clean compare tidy +.PHONY: all rom clean compare tidy payload C_SRCS := $(wildcard $(C_SUBDIR)/*.c $(C_SUBDIR)/*/*.c $(C_SUBDIR)/*/*/*.c) C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS)) @@ -81,11 +83,16 @@ SUBDIRS := $(sort $(dir $(OBJS))) $(shell mkdir -p $(SUBDIRS)) +all: payload rom + @: + rom: $(ROM) +ifeq ($(COMPARE),1) + @$(SHA1) rom.sha1 +endif # For contributors to make sure a change didn't affect the contents of the ROM. -compare: $(ROM) - @$(SHA1) rom.sha1 +compare: ; @$(MAKE) COMPARE=1 clean: tidy rm -f sound/direct_sound_samples/*.bin @@ -138,10 +145,10 @@ else $(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) $(DATA_ASM_SUBDIR)/$*.s) endif -payload: data/payload.gba.lz +payload: + @$(MAKE) -C payload COMPARE=$(COMPARE) -payload/payload.gba: - $(MAKE) -C payload/ +payload/payload.gba: payload data/payload.gba.lz: payload/payload.gba $(GFX) $< $@ -search 1 diff --git a/berry_fix/payload/Makefile b/berry_fix/payload/Makefile index 5cca8a157..dabbe4582 100644 --- a/berry_fix/payload/Makefile +++ b/berry_fix/payload/Makefile @@ -1,3 +1,5 @@ +COMPARE ?= 0 + AS := ../../tools/binutils/bin/arm-none-eabi-as CPP := $(CC) -E LD := ../../tools/binutils/bin/arm-none-eabi-ld @@ -85,11 +87,17 @@ $(C_BUILDDIR)/agb_flash_1m.o: CC1FLAGS := -O1 -mthumb-interwork $(C_BUILDDIR)/agb_flash_mx.o: CC1FLAGS := -O1 -mthumb-interwork $(C_BUILDDIR)/agb_flash_le.o: CC1FLAGS := -O1 -mthumb-interwork +all: rom + @: + rom: $(ROM) +ifeq ($(COMPARE),1) + @$(SHA1) rom.sha1 +endif # For contributors to make sure a change didn't affect the contents of the ROM. -compare: $(ROM) - @$(SHA1) rom.sha1 +compare: + @$(MAKE) COMPARE=1 clean: tidy rm -f sound/direct_sound_samples/*.bin diff --git a/tools/br_ips/Makefile b/tools/br_ips/Makefile index e80e2576b..d4e8dcecc 100644 --- a/tools/br_ips/Makefile +++ b/tools/br_ips/Makefile @@ -1,7 +1,10 @@ CC := gcc CFLAGS := -O3 +.PHONY: all + all: br_ips ips_patch + @: clean: rm -f br_ips ips_patch br_ips.exe ips_patch.exe From 7e8bff29bb34a9a233172ef738f9fc7ce1a1b833 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 4 Oct 2019 15:45:26 -0400 Subject: [PATCH 3/5] review comments; br_ips std=c99 --- Makefile | 2 +- src/wild_pokemon_area.c | 4 ++-- tools/br_ips/Makefile | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 1e8dc6e9f..245a1a16a 100644 --- a/Makefile +++ b/Makefile @@ -123,7 +123,7 @@ MAKEFLAGS += --no-print-directory AUTO_GEN_TARGETS := -all: rom +all: tools rom rom: $(ROM) ifeq ($(COMPARE),1) diff --git a/src/wild_pokemon_area.c b/src/wild_pokemon_area.c index 8654f41f1..66637abfa 100644 --- a/src/wild_pokemon_area.c +++ b/src/wild_pokemon_area.c @@ -11,7 +11,7 @@ struct SeviiDexArea { - const u16 (* lut)[2]; + const u16 (*lut)[2]; s32 count; }; @@ -225,7 +225,7 @@ s32 BuildPokedexAreaSubspriteBuffer(u16 species, struct Subsprite * subsprites) static s32 GetRoamerIndex(u16 species) { s32 i; - for (i = 0; i < 3u; i++) + for (i = 0; i < NELEMS(sRoamerPairs); i++) { if (sRoamerPairs[i].roamer == species) return i; diff --git a/tools/br_ips/Makefile b/tools/br_ips/Makefile index d4e8dcecc..8b6ad51bf 100644 --- a/tools/br_ips/Makefile +++ b/tools/br_ips/Makefile @@ -1,5 +1,5 @@ CC := gcc -CFLAGS := -O3 +CFLAGS := -O3 -std=c99 .PHONY: all From 13416f5109fad762adba5eaa3b2a06e27cd15d31 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 4 Oct 2019 15:57:16 -0400 Subject: [PATCH 4/5] Split pokedex area markers --- data/pokedex_area_markers/marker.pal | 19 +++++++++++++++++++ data/pokedex_area_markers/marker.png | Bin 354 -> 0 bytes data/pokedex_area_markers/marker_0.png | Bin 0 -> 157 bytes data/pokedex_area_markers/marker_1.png | Bin 0 -> 165 bytes data/pokedex_area_markers/marker_2.png | Bin 0 -> 165 bytes data/pokedex_area_markers/marker_3.png | Bin 0 -> 175 bytes data/pokedex_area_markers/marker_4.png | Bin 0 -> 177 bytes data/pokedex_area_markers/marker_5.png | Bin 0 -> 180 bytes data/pokedex_area_markers/marker_6.png | Bin 0 -> 186 bytes graphics_file_rules.mk | 14 ++++++++++++++ src/wild_pokemon_area.c | 10 +++++----- 11 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 data/pokedex_area_markers/marker.pal delete mode 100644 data/pokedex_area_markers/marker.png create mode 100644 data/pokedex_area_markers/marker_0.png create mode 100644 data/pokedex_area_markers/marker_1.png create mode 100644 data/pokedex_area_markers/marker_2.png create mode 100644 data/pokedex_area_markers/marker_3.png create mode 100644 data/pokedex_area_markers/marker_4.png create mode 100644 data/pokedex_area_markers/marker_5.png create mode 100644 data/pokedex_area_markers/marker_6.png diff --git a/data/pokedex_area_markers/marker.pal b/data/pokedex_area_markers/marker.pal new file mode 100644 index 000000000..5a7190a3a --- /dev/null +++ b/data/pokedex_area_markers/marker.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 197 115 +255 139 57 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/data/pokedex_area_markers/marker.png b/data/pokedex_area_markers/marker.png deleted file mode 100644 index d332c9f469ee3f182fdb1c25d776fe4d7f13b0d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^91IMM8Z68}*7RR%t$>t4fKP}kkp6$P_LOY$ig%Hud6HbOe>8bC?P3h$kgVt z%sReuX?fjx-(>0KEU)_-w`A^S{#^D0?5zopr0A%VMg8%>k literal 0 HcmV?d00001 diff --git a/data/pokedex_area_markers/marker_1.png b/data/pokedex_area_markers/marker_1.png new file mode 100644 index 0000000000000000000000000000000000000000..21db66b29f0b9ff557dd29ebc5ae0cec46d0434f GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!VDytB9fK>DT4r?5LY1m|7h|5Zc8A87%-`e z!3?O5u_VYZn8D%MjWi%f+0(@_gkxrMLPA1NP*4H`ld1v3XGaG{Ee4S$;|DZRaQU(D&A+A9B|Iy` zgBegAV@Z%-FoVOh8)-m}vZsq<2*=FigoL1kgoJ>gBp@Rw$U$jJ1A}?vGKn096B-Qv WRM--YwpoH4!QkoY=d#Wzp$P!5iXe#q literal 0 HcmV?d00001 diff --git a/data/pokedex_area_markers/marker_3.png b/data/pokedex_area_markers/marker_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1e8fe22d23ec779ae3702434aef88b7fedb7b6ce GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%AmxltF+`h%1o(f3*02w*?YcA~7{NK|x%Dkx^*6Cnt}{gr$lMu5t_AJUM+i+Zfu! hc$^K_9xai`WMD8k$GtJ~gQGRbHcwYSmvv4FO#oLqArJrn literal 0 HcmV?d00001 diff --git a/data/pokedex_area_markers/marker_4.png b/data/pokedex_area_markers/marker_4.png new file mode 100644 index 0000000000000000000000000000000000000000..193697384439be1e0b37a153c6ef0e86a8b4fa4a GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0zj<5!VDx|E`RzTNErn9gt!9f|3{1ecUuA(#DGa% z3}!%ej3q&S!3+-1ZlnP@`kpS1Are!Q6BPIiG#wxfx6$VyLFKbLh*2~7YYP9o+2 literal 0 HcmV?d00001 diff --git a/data/pokedex_area_markers/marker_6.png b/data/pokedex_area_markers/marker_6.png new file mode 100644 index 0000000000000000000000000000000000000000..439d858e13756c7224dff235c2d6958d3776654b GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^0zj<5!VDx|E`RzTNErn9gt!9f|3{1ecUuA(#DGa% z3}!%ej3q&S!3+-1ZlnP@7M?DSAre!Q6M!Hnp@BhFmE-J^B}*Dk1q3ynN;H_^z{C27 sM^$x2)+*zUjk5iZH~tWjzopr09bh~ApigX literal 0 HcmV?d00001 diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index c5571394e..60bf4c73b 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -501,3 +501,17 @@ $(TITLESCREENGFXDIR)/unk_8ead608.4bpp: %.4bpp: %.png $(CREDITSGFXDIR)/unk_8EAE548.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 77 + +POKEDEXAREAMARKERSDATADIR := data/pokedex_area_markers + +POKEDEXAREAMARKERFILES := \ + $(POKEDEXAREAMARKERSDATADIR)/marker_0.4bpp \ + $(POKEDEXAREAMARKERSDATADIR)/marker_1.4bpp \ + $(POKEDEXAREAMARKERSDATADIR)/marker_2.4bpp \ + $(POKEDEXAREAMARKERSDATADIR)/marker_3.4bpp \ + $(POKEDEXAREAMARKERSDATADIR)/marker_4.4bpp \ + $(POKEDEXAREAMARKERSDATADIR)/marker_5.4bpp \ + $(POKEDEXAREAMARKERSDATADIR)/marker_6.4bpp + +$(POKEDEXAREAMARKERSDATADIR)/marker.4bpp: $(POKEDEXAREAMARKERFILES) + cat $^ > $@ diff --git a/src/wild_pokemon_area.c b/src/wild_pokemon_area.c index 66637abfa..5ea9d1610 100644 --- a/src/wild_pokemon_area.c +++ b/src/wild_pokemon_area.c @@ -26,7 +26,7 @@ static s32 CountRoamerNests(u16 species, struct Subsprite * subsprites); static bool32 PokemonInAnyEncounterTableInMap(const struct WildPokemonHeader * data, s32 species); static bool32 PokemonInEncounterTable(const struct WildPokemonInfo * pokemon, s32 species, s32 count); static u16 GetMapSecIdFromWildMonHeader(const struct WildPokemonHeader * header); -static bool32 TryGetMapSecPokedexAreaEntry(u16 mapSecId, const u16 (*lut)[2], s32 count, s32 * lut_i_p, u16 * table_idx_p); +static bool32 TryGetMapSecPokedexAreaEntry(u16 mapSecId, const u16 (*lut)[2], s32 count, s32 * lutIdx_p, u16 * tableIdx_p); static const u16 sDexAreas_Kanto[][2] = { { MAPSEC_PALLET_TOWN, 1 }, @@ -292,15 +292,15 @@ static u16 GetMapSecIdFromWildMonHeader(const struct WildPokemonHeader * header) return get_mapheader_by_bank_and_number(header->mapGroup, header->mapNum)->regionMapSectionId; } -static bool32 TryGetMapSecPokedexAreaEntry(u16 mapSecId, const u16 (*lut)[2], s32 count, s32 * lut_i_p, u16 * table_idx_p) +static bool32 TryGetMapSecPokedexAreaEntry(u16 mapSecId, const u16 (*lut)[2], s32 count, s32 * lutIdx_p, u16 * tableIdx_p) { s32 i; - for (i = *lut_i_p; i < count; i++) + for (i = *lutIdx_p; i < count; i++) { if (lut[i][0] == mapSecId) { - *table_idx_p = lut[i][1]; - *lut_i_p = i + 1; + *tableIdx_p = lut[i][1]; + *lutIdx_p = i + 1; return TRUE; } } From 44b5d84a840c2c88972d72432e85b59cdc472565 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 4 Oct 2019 16:28:32 -0400 Subject: [PATCH 5/5] Better rule order for berry_fix --- Makefile | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 245a1a16a..297cbb68b 100644 --- a/Makefile +++ b/Makefile @@ -219,6 +219,11 @@ else $(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) -I . $(DATA_ASM_SUBDIR)/$*.s) endif +berry_fix: + @$(MAKE) -C berry_fix COMPARE=$(COMPARE) + +berry_fix/berry_fix.gba: berry_fix + $(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep) $(PREPROC) $< charmap.txt | $(CPP) -I include -nostdinc -undef -Wno-unicode - | $(AS) $(ASFLAGS) -o $@ @@ -237,14 +242,10 @@ $(OBJ_DIR)/sym_ewram.ld: sym_ewram.txt $(OBJ_DIR)/ld_script.ld: ld_script.txt $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_common.ld $(OBJ_DIR)/sym_ewram.ld cd $(OBJ_DIR) && sed -f ../../ld_script.sed ../../$< | sed "s#tools/#../../tools/#g" > ld_script.ld -$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) berry_fix +$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) cd $(OBJ_DIR) && ../../$(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(LIB) $(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent $(ROM): $(ELF) $(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@ -berry_fix/berry_fix.gba: berry_fix - -berry_fix: - @$(MAKE) -C berry_fix COMPARE=$(COMPARE)