diff options
author | ultima-soul <akshayjhanji@hotmail.com> | 2019-10-15 17:57:54 -0700 |
---|---|---|
committer | ultima-soul <akshayjhanji@hotmail.com> | 2019-10-15 17:57:54 -0700 |
commit | 364d88ec2c762426d92fd987b9dfff629b21b8e9 (patch) | |
tree | 5ac57db2698c7eaccf5df45c6271a7799601a0cf | |
parent | 94f722e719c585db0adbcc5954a3760973ff7ad7 (diff) | |
parent | efa8b91699400977f4ab1f2412a4747be3965420 (diff) |
Merge branch 'master' into data_dump
-rw-r--r-- | asm/naming_screen.s | 4 | ||||
-rw-r--r-- | asm/party_menu.s | 18 | ||||
-rw-r--r-- | asm/pokemon_icon.s | 848 | ||||
-rw-r--r-- | asm/pokemon_storage_system.s | 14 | ||||
-rw-r--r-- | asm/pokemon_summary_screen.s | 6 | ||||
-rw-r--r-- | asm/trade.s | 32 | ||||
-rw-r--r-- | asm/trainer_card.s | 20 | ||||
-rw-r--r-- | baserom.ips | bin | 1678113 -> 1675622 bytes | |||
-rw-r--r-- | data/data_835B488.s | 28 | ||||
-rw-r--r-- | data/graphics.s | 7 | ||||
-rw-r--r-- | include/graphics.h | 419 | ||||
-rw-r--r-- | include/pokemon_icon.h | 13 | ||||
-rw-r--r-- | ld_script.txt | 4 | ||||
-rw-r--r-- | src/mail.c | 14 | ||||
-rw-r--r-- | src/mevent_8145654.c | 10 | ||||
-rw-r--r-- | src/pokemon_icon.c | 1284 | ||||
-rw-r--r-- | tools/br_ips/br_ips.c | 3 |
17 files changed, 1780 insertions, 944 deletions
diff --git a/asm/naming_screen.s b/asm/naming_screen.s index 09f4ca070..817d215a0 100644 --- a/asm/naming_screen.s +++ b/asm/naming_screen.s @@ -2849,7 +2849,7 @@ _0809EFEC: .4byte gUnknown_83E252C sub_809EFF0: @ 809EFF0 push {lr} sub sp, 0xC - bl sub_809707C + bl LoadMonIconPalettes ldr r0, _0809F038 @ =gUnknown_203998C ldr r3, [r0] ldr r1, _0809F03C @ =0x00001e34 @@ -2866,7 +2866,7 @@ sub_809EFF0: @ 809EFF0 str r2, [sp, 0x8] movs r2, 0x38 movs r3, 0x28 - bl sub_8096E18 + bl CreateMonIcon lsls r0, 24 lsrs r0, 24 ldr r2, _0809F048 @ =gSprites diff --git a/asm/party_menu.s b/asm/party_menu.s index 5ebea0f54..ab17008ec 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -373,7 +373,7 @@ _0811ED44: bl sub_8122980 b _0811EDFC _0811ED4A: - bl sub_809707C + bl LoadMonIconPalettes b _0811EDFC _0811ED50: bl party_menu_add_per_mon_objects @@ -7206,7 +7206,7 @@ party_menu_link_mon_icon_anim: @ 812224C lsrs r7, r3, 24 cmp r5, 0 beq _0812229A - ldr r1, _081222A4 @ =sub_809718C + ldr r1, _081222A4 @ =SpriteCB_MonIcon ldr r0, [r4, 0x4] ldrb r2, [r0] ldrb r3, [r0, 0x1] @@ -7216,7 +7216,7 @@ party_menu_link_mon_icon_anim: @ 812224C ldr r0, [sp, 0x20] str r0, [sp, 0x8] adds r0, r5, 0 - bl sub_8096E18 + bl CreateMonIcon strb r0, [r4, 0x9] ldr r2, _081222A8 @ =gSprites ldrb r0, [r4, 0x9] @@ -7240,7 +7240,7 @@ _0812229A: pop {r0} bx r0 .align 2, 0 -_081222A4: .4byte sub_809718C +_081222A4: .4byte SpriteCB_MonIcon _081222A8: .4byte gSprites thumb_func_end party_menu_link_mon_icon_anim @@ -7276,7 +7276,7 @@ _081222D4: ldr r1, _081222F0 @ =gSprites adds r0, r1 movs r1, 0 - bl sub_8097414 + bl MonIcon_SetAnim b _0812234C .align 2, 0 _081222F0: .4byte gSprites @@ -7287,7 +7287,7 @@ _081222F4: ldr r1, _08122308 @ =gSprites adds r0, r1 movs r1, 0x1 - bl sub_8097414 + bl MonIcon_SetAnim b _0812234C .align 2, 0 _08122308: .4byte gSprites @@ -7298,7 +7298,7 @@ _0812230C: ldr r1, _08122320 @ =gSprites adds r0, r1 movs r1, 0x2 - bl sub_8097414 + bl MonIcon_SetAnim b _0812234C .align 2, 0 _08122320: .4byte gSprites @@ -7309,7 +7309,7 @@ _08122324: ldr r1, _08122338 @ =gSprites adds r0, r1 movs r1, 0x3 - bl sub_8097414 + bl MonIcon_SetAnim b _0812234C .align 2, 0 _08122338: .4byte gSprites @@ -7320,7 +7320,7 @@ _0812233C: ldr r1, _08122354 @ =gSprites adds r0, r1 movs r1, 0x4 - bl sub_8097414 + bl MonIcon_SetAnim _0812234C: pop {r4} pop {r0} diff --git a/asm/pokemon_icon.s b/asm/pokemon_icon.s deleted file mode 100644 index 4eb654a50..000000000 --- a/asm/pokemon_icon.s +++ /dev/null @@ -1,848 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8096E18 -sub_8096E18: @ 8096E18 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x30 - adds r4, r0, 0 - adds r6, r1, 0 - ldr r0, [sp, 0x4C] - ldr r1, [sp, 0x50] - ldr r5, [sp, 0x54] - lsls r4, 16 - lsrs r4, 16 - lsls r2, 16 - lsrs r2, 16 - mov r8, r2 - lsls r3, 16 - lsrs r7, r3, 16 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r0, _08096EB4 @ =gUnknown_83D4068 - str r0, [sp, 0x18] - adds r0, r4, 0 - adds r2, r5, 0 - bl GetMonIconPtr - str r0, [sp, 0x1C] - ldr r0, _08096EB8 @ =gUnknown_83D40AC - str r0, [sp, 0x20] - ldr r0, _08096EBC @ =gUnknown_83D40E0 - str r0, [sp, 0x24] - str r6, [sp, 0x28] - ldr r0, _08096EC0 @ =gUnknown_83D3E80 - adds r0, r4, r0 - ldr r1, _08096EC4 @ =0x0000dac0 - adds r5, r1, 0 - ldrb r0, [r0] - adds r1, r5, r0 - add r0, sp, 0x2C - strh r1, [r0] - add r1, sp, 0x18 - mov r0, sp - movs r2, 0x18 - bl memcpy - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - bls _08096E7E - mov r0, sp - strh r5, [r0, 0x14] -_08096E7E: - mov r0, r8 - lsls r1, r0, 16 - asrs r1, 16 - lsls r2, r7, 16 - asrs r2, 16 - mov r0, sp - mov r3, r9 - bl CreateMonIconSprite - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _08096EC8 @ =gSprites - adds r0, r1 - bl UpdateMonIconFrame - adds r0, r4, 0 - add sp, 0x30 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08096EB4: .4byte gUnknown_83D4068 -_08096EB8: .4byte gUnknown_83D40AC -_08096EBC: .4byte gUnknown_83D40E0 -_08096EC0: .4byte gUnknown_83D3E80 -_08096EC4: .4byte 0x0000dac0 -_08096EC8: .4byte gSprites - thumb_func_end sub_8096E18 - - thumb_func_start sub_8096ECC -sub_8096ECC: @ 8096ECC - push {r4-r7,lr} - sub sp, 0x18 - adds r4, r2, 0 - adds r5, r3, 0 - ldr r6, [sp, 0x2C] - lsls r0, 16 - lsrs r0, 16 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - lsls r6, 24 - lsrs r6, 24 - mov r3, sp - ldr r2, _08096F44 @ =gUnknown_83D4068 - str r2, [sp] - movs r2, 0 - str r2, [sp, 0x4] - ldr r2, _08096F48 @ =gUnknown_83D40AC - str r2, [sp, 0x8] - ldr r2, _08096F4C @ =gUnknown_83D40E0 - str r2, [sp, 0xC] - str r1, [sp, 0x10] - ldr r2, _08096F50 @ =gUnknown_83D3E80 - adds r2, r0, r2 - ldr r7, _08096F54 @ =0x0000dac0 - adds r1, r7, 0 - ldrb r2, [r2] - adds r1, r2 - strh r1, [r3, 0x14] - ldr r1, [sp, 0x30] - bl sub_8097028 - str r0, [sp, 0x4] - lsls r4, 16 - asrs r4, 16 - lsls r5, 16 - asrs r5, 16 - mov r0, sp - adds r1, r4, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl CreateMonIconSprite - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _08096F58 @ =gSprites - adds r0, r1 - bl UpdateMonIconFrame - adds r0, r4, 0 - add sp, 0x18 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08096F44: .4byte gUnknown_83D4068 -_08096F48: .4byte gUnknown_83D40AC -_08096F4C: .4byte gUnknown_83D40E0 -_08096F50: .4byte gUnknown_83D3E80 -_08096F54: .4byte 0x0000dac0 -_08096F58: .4byte gSprites - thumb_func_end sub_8096ECC - - thumb_func_start mon_icon_convert_unown_species_id -mon_icon_convert_unown_species_id: @ 8096F5C - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0xC9 - bne _08096F86 - adds r0, r1, 0 - bl GetUnownLetterByPersonality - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _08096F78 - movs r0, 0xC9 - b _08096F82 -_08096F78: - movs r1, 0xCE - lsls r1, 1 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 -_08096F82: - adds r1, r0, 0 - b _08096F92 -_08096F86: - movs r0, 0xCE - lsls r0, 1 - adds r1, r2, 0 - cmp r1, r0 - bls _08096F92 - movs r1, 0 -_08096F92: - adds r0, r1, 0 - pop {r1} - bx r1 - thumb_func_end mon_icon_convert_unown_species_id - - thumb_func_start GetUnownLetterByPersonality -GetUnownLetterByPersonality: @ 8096F98 - push {lr} - adds r2, r0, 0 - cmp r2, 0 - beq _08096FCE - movs r0, 0xC0 - lsls r0, 18 - ands r0, r2 - lsrs r0, 18 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r2 - lsrs r1, 12 - orrs r0, r1 - movs r1, 0xC0 - lsls r1, 2 - ands r1, r2 - lsrs r1, 6 - orrs r0, r1 - movs r1, 0x3 - ands r1, r2 - orrs r0, r1 - movs r1, 0x1C - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - b _08096FD0 -_08096FCE: - movs r0, 0 -_08096FD0: - pop {r1} - bx r1 - thumb_func_end GetUnownLetterByPersonality - - thumb_func_start sub_8096FD4 -sub_8096FD4: @ 8096FD4 - push {r4,lr} - sub sp, 0x4 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - mov r1, sp - bl MailSpeciesToSpecies - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xC9 - bne _0809700A - mov r0, sp - ldrh r0, [r0] - cmp r0, 0 - bne _08096FFA - mov r1, sp - adds r0, 0xC9 - b _08097002 -_08096FFA: - mov r1, sp - movs r2, 0xCE - lsls r2, 1 - adds r0, r2 -_08097002: - strh r0, [r1] - mov r0, sp - ldrh r0, [r0] - b _08097020 -_0809700A: - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - bls _08097014 - movs r4, 0 -_08097014: - adds r0, r4, 0 - movs r1, 0 - bl mon_icon_convert_unown_species_id - lsls r0, 16 - lsrs r0, 16 -_08097020: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8096FD4 - - thumb_func_start sub_8097028 -sub_8097028: @ 8097028 - push {lr} - adds r3, r1, 0 - lsls r0, 16 - lsrs r0, 16 - ldr r2, _08097050 @ =gUnknown_83D37A0 - lsls r1, r0, 2 - adds r1, r2 - ldr r2, [r1] - movs r1, 0xCD - lsls r1, 1 - cmp r0, r1 - bne _0809704A - cmp r3, 0x1 - bne _0809704A - movs r0, 0x80 - lsls r0, 3 - adds r2, r0 -_0809704A: - adds r0, r2, 0 - pop {r1} - bx r1 - .align 2, 0 -_08097050: .4byte gUnknown_83D37A0 - thumb_func_end sub_8097028 - - thumb_func_start GetMonIconPtr -GetMonIconPtr: @ 8097054 - push {r4,lr} - adds r4, r2, 0 - lsls r0, 16 - lsrs r0, 16 - bl mon_icon_convert_unown_species_id - lsls r0, 16 - lsrs r0, 16 - adds r1, r4, 0 - bl sub_8097028 - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetMonIconPtr - - thumb_func_start sub_8097070 -sub_8097070: @ 8097070 - push {lr} - bl sub_80973D8 - pop {r0} - bx r0 - thumb_func_end sub_8097070 - - thumb_func_start sub_809707C -sub_809707C: @ 809707C - push {r4,r5,lr} - movs r4, 0 - ldr r5, _0809709C @ =gUnknown_83D4038 -_08097082: - lsls r0, r4, 3 - adds r0, r5 - bl LoadSpritePalette - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _08097082 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809709C: .4byte gUnknown_83D4038 - thumb_func_end sub_809707C - - thumb_func_start SafeLoadMonIconPalette -SafeLoadMonIconPalette: @ 80970A0 - push {r4,lr} - lsls r0, 16 - lsrs r1, r0, 16 - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - bls _080970B0 - movs r1, 0 -_080970B0: - ldr r0, _080970D8 @ =gUnknown_83D3E80 - adds r0, r1, r0 - ldrb r0, [r0] - ldr r1, _080970DC @ =gUnknown_83D4038 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x4] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _080970D0 - adds r0, r4, 0 - bl LoadSpritePalette -_080970D0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080970D8: .4byte gUnknown_83D3E80 -_080970DC: .4byte gUnknown_83D4038 - thumb_func_end SafeLoadMonIconPalette - - thumb_func_start sub_80970E0 -sub_80970E0: @ 80970E0 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0809710C @ =gUnknown_83D3E80 - adds r0, r1 - ldrb r0, [r0] - ldr r1, _08097110 @ =gUnknown_83D4038 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x4] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _08097106 - adds r0, r4, 0 - bl LoadSpritePalette -_08097106: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809710C: .4byte gUnknown_83D3E80 -_08097110: .4byte gUnknown_83D4038 - thumb_func_end sub_80970E0 - - thumb_func_start FreeMonIconPalettes -FreeMonIconPalettes: @ 8097114 - push {r4,r5,lr} - movs r4, 0 - ldr r5, _08097134 @ =gUnknown_83D4038 -_0809711A: - lsls r0, r4, 3 - adds r0, r5 - ldrh r0, [r0, 0x4] - bl FreeSpritePaletteByTag - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _0809711A - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08097134: .4byte gUnknown_83D4038 - thumb_func_end FreeMonIconPalettes - - thumb_func_start sub_8097138 -sub_8097138: @ 8097138 - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - bls _08097148 - movs r1, 0 -_08097148: - ldr r0, _08097160 @ =gUnknown_83D3E80 - adds r0, r1, r0 - ldrb r0, [r0] - ldr r1, _08097164 @ =gUnknown_83D4038 - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x4] - bl FreeSpritePaletteByTag - pop {r0} - bx r0 - .align 2, 0 -_08097160: .4byte gUnknown_83D3E80 -_08097164: .4byte gUnknown_83D4038 - thumb_func_end sub_8097138 - - thumb_func_start sub_8097168 -sub_8097168: @ 8097168 - push {lr} - lsls r0, 16 - lsrs r0, 16 - ldr r1, _08097184 @ =gUnknown_83D3E80 - adds r0, r1 - ldrb r0, [r0] - ldr r1, _08097188 @ =gUnknown_83D4038 - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x4] - bl FreeSpritePaletteByTag - pop {r0} - bx r0 - .align 2, 0 -_08097184: .4byte gUnknown_83D3E80 -_08097188: .4byte gUnknown_83D4038 - thumb_func_end sub_8097168 - - thumb_func_start sub_809718C -sub_809718C: @ 809718C - push {lr} - bl UpdateMonIconFrame - pop {r0} - bx r0 - thumb_func_end sub_809718C - - thumb_func_start sub_8097198 -sub_8097198: @ 8097198 - push {r4-r6,lr} - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0xA0 - bhi _080971C0 - ldr r6, _080971C8 @ =gUnknown_83D4038 - movs r5, 0x5 -_080971A6: - ldr r0, [r6] - adds r1, r4, 0 - movs r2, 0x20 - bl LoadPalette - adds r0, r4, 0 - adds r0, 0x10 - lsls r0, 16 - lsrs r4, r0, 16 - adds r6, 0x8 - subs r5, 0x1 - cmp r5, 0 - bge _080971A6 -_080971C0: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080971C8: .4byte gUnknown_83D4038 - thumb_func_end sub_8097198 - - thumb_func_start GetValidMonIconPalettePtr -GetValidMonIconPalettePtr: @ 80971CC - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - movs r0, 0xCE - lsls r0, 1 - cmp r2, r0 - bls _080971DC - movs r2, 0 -_080971DC: - ldr r1, _080971F0 @ =gUnknown_83D4038 - ldr r0, _080971F4 @ =gUnknown_83D3E80 - adds r0, r2, r0 - ldrb r0, [r0] - lsls r0, 3 - adds r0, r1 - ldr r0, [r0] - pop {r1} - bx r1 - .align 2, 0 -_080971F0: .4byte gUnknown_83D4038 -_080971F4: .4byte gUnknown_83D3E80 - thumb_func_end GetValidMonIconPalettePtr - - thumb_func_start sub_80971F8 -sub_80971F8: @ 80971F8 - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - bls _08097208 - movs r1, 0 -_08097208: - ldr r0, _08097214 @ =gUnknown_83D3E80 - adds r0, r1, r0 - ldrb r0, [r0] - pop {r1} - bx r1 - .align 2, 0 -_08097214: .4byte gUnknown_83D3E80 - thumb_func_end sub_80971F8 - - thumb_func_start sub_8097218 -sub_8097218: @ 8097218 - lsls r0, 16 - lsrs r0, 16 - ldr r1, _08097224 @ =gUnknown_83D3E80 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_08097224: .4byte gUnknown_83D3E80 - thumb_func_end sub_8097218 - - thumb_func_start UpdateMonIconFrame -UpdateMonIconFrame: @ 8097228 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r4, r0, 0 - movs r7, 0 - adds r6, r4, 0 - adds r6, 0x2C - ldrb r2, [r6] - movs r0, 0x3F - mov r9, r0 - ands r0, r2 - cmp r0, 0 - bne _080972DC - movs r1, 0x2A - adds r1, r4 - mov r8, r1 - ldrb r1, [r1] - ldr r0, [r4, 0x8] - lsls r1, 2 - adds r1, r0 - adds r5, r4, 0 - adds r5, 0x2B - ldrb r0, [r5] - ldr r1, [r1] - lsls r0, 2 - adds r0, r1 - movs r1, 0 - ldrsh r3, [r0, r1] - movs r0, 0x2 - negs r0, r0 - cmp r3, r0 - beq _08097272 - adds r0, 0x1 - cmp r3, r0 - bne _08097276 - b _080972F0 -_08097272: - strb r7, [r5] - b _080972F0 -_08097276: - ldr r2, _080972D4 @ =gUnknown_83D40E8 - ldrb r1, [r4, 0x3] - lsrs r1, 6 - lsls r1, 1 - ldrb r0, [r4, 0x1] - lsrs r0, 6 - lsls r0, 3 - adds r1, r0 - adds r1, r2 - ldrh r2, [r1] - adds r1, r2, 0 - muls r1, r3 - ldr r0, [r4, 0xC] - adds r0, r1 - ldrh r1, [r4, 0x4] - lsls r1, 22 - lsrs r1, 17 - ldr r3, _080972D8 @ =0x06010000 - adds r1, r3 - bl RequestSpriteCopy - mov r0, r8 - ldrb r1, [r0] - ldr r0, [r4, 0x8] - lsls r1, 2 - adds r1, r0 - ldrb r0, [r5] - ldr r1, [r1] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - lsls r0, 10 - lsrs r0, 26 - mov r1, r9 - ands r1, r0 - ldrb r2, [r6] - movs r0, 0x40 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r6] - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - ldrb r7, [r5] - b _080972F0 - .align 2, 0 -_080972D4: .4byte gUnknown_83D40E8 -_080972D8: .4byte 0x06010000 -_080972DC: - lsls r0, r2, 26 - lsrs r0, 26 - subs r0, 0x1 - movs r1, 0x3F - ands r0, r1 - movs r1, 0x40 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r6] -_080972F0: - adds r0, r7, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end UpdateMonIconFrame - - thumb_func_start CreateMonIconSprite -CreateMonIconSprite: @ 8097300 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x38 - mov r9, r0 - adds r4, r1, 0 - adds r5, r2, 0 - mov r8, r3 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r0, 0 - str r0, [sp, 0x30] - ldr r2, _080973C8 @ =gUnknown_83D40E8 - mov r0, r9 - ldr r6, [r0] - ldrb r1, [r6, 0x3] - lsrs r1, 6 - lsls r1, 1 - ldrb r0, [r6, 0x1] - lsrs r0, 6 - lsls r0, 3 - adds r1, r0 - adds r1, r2 - ldrh r2, [r1] - ldr r1, _080973CC @ =0xffff0000 - add r3, sp, 0x30 - ldr r0, [r3, 0x4] - ands r0, r1 - orrs r0, r2 - str r0, [r3, 0x4] - add r1, sp, 0x18 - ldr r0, _080973D0 @ =0x0000ffff - strh r0, [r1] - mov r0, r9 - ldrh r2, [r0, 0x14] - mov r0, sp - adds r0, 0x1A - strh r2, [r0] - str r6, [sp, 0x1C] - mov r2, r9 - ldr r0, [r2, 0x8] - str r0, [sp, 0x20] - str r3, [sp, 0x24] - ldr r0, [r2, 0xC] - str r0, [sp, 0x28] - ldr r0, [r2, 0x10] - str r0, [sp, 0x2C] - mov r0, sp - movs r2, 0x18 - bl memcpy - lsls r4, 16 - asrs r4, 16 - lsls r5, 16 - asrs r5, 16 - mov r0, sp - adds r1, r4, 0 - adds r2, r5, 0 - mov r3, r8 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r6, _080973D4 @ =gSprites - lsls r3, r0, 4 - adds r3, r0 - lsls r3, 2 - adds r4, r3, r6 - adds r5, r4, 0 - adds r5, 0x2C - ldrb r1, [r5] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r5] - adds r4, 0x3F - ldrb r2, [r4] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r4] - adds r6, 0xC - adds r3, r6 - mov r2, r9 - ldr r1, [r2, 0x4] - str r1, [r3] - add sp, 0x38 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080973C8: .4byte gUnknown_83D40E8 -_080973CC: .4byte 0xffff0000 -_080973D0: .4byte 0x0000ffff -_080973D4: .4byte gSprites - thumb_func_end CreateMonIconSprite - - thumb_func_start sub_80973D8 -sub_80973D8: @ 80973D8 - push {lr} - sub sp, 0x8 - movs r1, 0 - str r1, [sp] - ldr r3, _0809740C @ =gUnknown_83D40E8 - ldrb r2, [r0, 0x3] - lsrs r2, 6 - lsls r2, 1 - ldrb r1, [r0, 0x1] - lsrs r1, 6 - lsls r1, 3 - adds r2, r1 - adds r2, r3 - ldrh r3, [r2] - ldr r2, _08097410 @ =0xffff0000 - ldr r1, [sp, 0x4] - ands r1, r2 - orrs r1, r3 - str r1, [sp, 0x4] - mov r1, sp - str r1, [r0, 0xC] - bl DestroySprite - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_0809740C: .4byte gUnknown_83D40E8 -_08097410: .4byte 0xffff0000 - thumb_func_end sub_80973D8 - - thumb_func_start sub_8097414 -sub_8097414: @ 8097414 - mov r12, r0 - adds r0, 0x2A - movs r3, 0 - strb r1, [r0] - mov r2, r12 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x40 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - mov r0, r12 - adds r0, 0x2B - strb r3, [r0] - bx lr - thumb_func_end sub_8097414 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index f1188910d..71e0e2e0e 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -8688,7 +8688,7 @@ _0808FFA8: .4byte 0x00004037 thumb_func_start sub_808FFAC sub_808FFAC: @ 808FFAC push {r4-r6,lr} - bl sub_809707C + bl LoadMonIconPalettes movs r2, 0 ldr r3, _0809003C @ =gUnknown_20397B0 ldr r5, _08090040 @ =0x00000b04 @@ -11179,7 +11179,7 @@ _08091248: lsrs r4, 16 adds r0, r3, 0 movs r1, 0x1 - bl sub_8097028 + bl GetMonIconTiles lsls r1, r4, 5 ldr r2, _08091288 @ =0x06010000 adds r1, r2 @@ -11271,11 +11271,11 @@ sub_80912E0: @ 80912E0 ldm r0!, {r3,r5,r7} stm r2!, {r3,r5,r7} adds r0, r6, 0 - bl mon_icon_convert_unown_species_id + bl GetIconSpecies mov r10, r0 mov r6, r10 mov r2, sp - ldr r1, _08091394 @ =gUnknown_83D3E80 + ldr r1, _08091394 @ =gMonIconPaletteIndices adds r1, r6, r1 ldr r3, _08091398 @ =0x0000dac0 adds r0, r3, 0 @@ -11329,7 +11329,7 @@ sub_80912E0: @ 80912E0 b _080913B4 .align 2, 0 _08091390: .4byte gUnknown_83CEBF0 -_08091394: .4byte gUnknown_83D3E80 +_08091394: .4byte gMonIconPaletteIndices _08091398: .4byte 0x0000dac0 _0809139C: .4byte 0x0000ffff _080913A0: .4byte gSprites @@ -19235,7 +19235,7 @@ _0809515A: movs r0, 0 bl HideBg movs r0, 0x80 - bl sub_8097198 + bl LoadMonIconPalettesAt b _080951F8 _08095168: adds r0, r1, 0x2 @@ -19954,7 +19954,7 @@ sub_80956A4: @ 80956A4 bl GetMonIconPtr adds r4, r0, 0 adds r0, r5, 0 - bl sub_80971F8 + bl GetValidMonIconPalIndex adds r0, 0x8 lsls r0, 24 lsrs r0, 24 diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index f6f746313..8a01dcfb6 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -10814,7 +10814,7 @@ _08139E58: adds r0, r5, 0 movs r2, 0x18 movs r3, 0x20 - bl sub_8096E18 + bl CreateMonIcon ldr r1, [r6] ldr r2, _08139E9C @ =0x00003014 adds r1, r2 @@ -10916,7 +10916,7 @@ sub_8139F20: @ 8139F20 bl GetMonData lsls r0, 16 lsrs r0, 16 - bl sub_8097138 + bl SafeFreeMonIconPalette ldr r0, [r4] ldr r1, _08139F5C @ =0x00003014 adds r0, r1 @@ -10926,7 +10926,7 @@ sub_8139F20: @ 8139F20 lsls r0, 2 ldr r1, _08139F60 @ =gSprites adds r0, r1 - bl sub_8097070 + bl DestroyMonIcon pop {r4} pop {r0} bx r0 diff --git a/asm/trade.s b/asm/trade.s index 3573dcfaf..b5e8ee022 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -83,7 +83,7 @@ _0804C674: movs r1, 0x1 movs r2, 0xE0 bl TextWindow_SetUserSelectedFrame - bl sub_809707C + bl LoadMonIconPalettes ldr r2, _0804C708 @ =gUnknown_2031DA8 ldr r0, [r2] adds r0, 0x69 @@ -521,8 +521,8 @@ _0804CA4A: str r0, [sp, 0x4] str r1, [sp, 0x8] adds r0, r5, 0 - ldr r1, _0804CB44 @ =sub_809718C - bl sub_8096E18 + ldr r1, _0804CB44 @ =SpriteCB_MonIcon + bl CreateMonIcon mov r2, r8 ldr r1, [r2] adds r1, 0x28 @@ -580,8 +580,8 @@ _0804CABE: movs r0, 0 str r0, [sp, 0x8] adds r0, r5, 0 - ldr r1, _0804CB44 @ =sub_809718C - bl sub_8096E18 + ldr r1, _0804CB44 @ =SpriteCB_MonIcon + bl CreateMonIcon mov r2, r8 ldr r1, [r2] adds r1, 0x2E @@ -607,7 +607,7 @@ _0804CB34: .4byte gEnemyPartyCount _0804CB38: .4byte gUnknown_8261E40 _0804CB3C: .4byte gPlayerParty _0804CB40: .4byte 0xfff40000 -_0804CB44: .4byte sub_809718C +_0804CB44: .4byte SpriteCB_MonIcon _0804CB48: .4byte gEnemyParty _0804CB4C: .4byte gMain _0804CB50: @@ -1211,8 +1211,8 @@ _0804D048: str r0, [sp, 0x4] str r1, [sp, 0x8] adds r0, r5, 0 - ldr r1, _0804D144 @ =sub_809718C - bl sub_8096E18 + ldr r1, _0804D144 @ =SpriteCB_MonIcon + bl CreateMonIcon mov r2, r8 ldr r1, [r2] adds r1, 0x28 @@ -1270,8 +1270,8 @@ _0804D0BE: movs r0, 0 str r0, [sp, 0x8] adds r0, r5, 0 - ldr r1, _0804D144 @ =sub_809718C - bl sub_8096E18 + ldr r1, _0804D144 @ =SpriteCB_MonIcon + bl CreateMonIcon mov r2, r8 ldr r1, [r2] adds r1, 0x2E @@ -1297,7 +1297,7 @@ _0804D134: .4byte gEnemyPartyCount _0804D138: .4byte gUnknown_8261E40 _0804D13C: .4byte gPlayerParty _0804D140: .4byte 0xfff40000 -_0804D144: .4byte sub_809718C +_0804D144: .4byte SpriteCB_MonIcon _0804D148: .4byte gEnemyParty _0804D14C: .4byte gMain _0804D150: @@ -4651,7 +4651,7 @@ _0804EBA2: adds r0, r1 lsls r0, 2 add r0, r8 - ldr r1, _0804ECAC @ =sub_809718C + ldr r1, _0804ECAC @ =SpriteCB_MonIcon bl StoreSpriteCallbackInData6 ldr r2, _0804ECA4 @ =gUnknown_2031DA8 ldr r1, [r2] @@ -4698,7 +4698,7 @@ _0804EC98: _0804ECA0: .4byte gSprites _0804ECA4: .4byte gUnknown_2031DA8 _0804ECA8: .4byte gUnknown_8261E40 -_0804ECAC: .4byte sub_809718C +_0804ECAC: .4byte SpriteCB_MonIcon _0804ECB0: .4byte gUnknown_8260A32 _0804ECB4: ldr r2, _0804ECE4 @ =gSprites @@ -4717,7 +4717,7 @@ _0804ECB4: adds r2, 0x1C adds r0, r2 ldr r1, [r0] - ldr r0, _0804ECE8 @ =sub_809718C + ldr r0, _0804ECE8 @ =SpriteCB_MonIcon cmp r1, r0 beq _0804ECDC b _0804EE54 @@ -4727,7 +4727,7 @@ _0804ECDC: b _0804EE54 .align 2, 0 _0804ECE4: .4byte gSprites -_0804ECE8: .4byte sub_809718C +_0804ECE8: .4byte SpriteCB_MonIcon _0804ECEC: ldr r1, _0804EE08 @ =gUnknown_8260834 ldr r0, [sp, 0x60] @@ -6356,7 +6356,7 @@ _0804F988: subs r1, r2 lsls r1, 24 lsrs r1, 24 - bl sub_8097414 + bl MonIcon_SetAnim adds r4, 0x1 ldr r0, [r6] adds r0, 0x36 diff --git a/asm/trainer_card.s b/asm/trainer_card.s index 1ebda42ab..1e97ba2de 100644 --- a/asm/trainer_card.s +++ b/asm/trainer_card.s @@ -1215,7 +1215,7 @@ _080899AE: bl VarGet lsls r0, 16 lsrs r0, 16 - bl sub_8096FD4 + bl MailSpeciesToIconSpecies adds r1, r5, 0 adds r1, 0x54 strh r0, [r1] @@ -1223,7 +1223,7 @@ _080899AE: bl VarGet lsls r0, 16 lsrs r0, 16 - bl sub_8096FD4 + bl MailSpeciesToIconSpecies adds r1, r5, 0 adds r1, 0x56 strh r0, [r1] @@ -1231,7 +1231,7 @@ _080899AE: bl VarGet lsls r0, 16 lsrs r0, 16 - bl sub_8096FD4 + bl MailSpeciesToIconSpecies adds r1, r5, 0 adds r1, 0x58 strh r0, [r1] @@ -1239,7 +1239,7 @@ _080899AE: bl VarGet lsls r0, 16 lsrs r0, 16 - bl sub_8096FD4 + bl MailSpeciesToIconSpecies adds r1, r5, 0 adds r1, 0x5A strh r0, [r1] @@ -1247,7 +1247,7 @@ _080899AE: bl VarGet lsls r0, 16 lsrs r0, 16 - bl sub_8096FD4 + bl MailSpeciesToIconSpecies adds r1, r5, 0 adds r1, 0x5C strh r0, [r1] @@ -1255,7 +1255,7 @@ _080899AE: bl VarGet lsls r0, 16 lsrs r0, 16 - bl sub_8096FD4 + bl MailSpeciesToIconSpecies adds r1, r5, 0 adds r1, 0x5E strh r0, [r1] @@ -3203,7 +3203,7 @@ _0808AAA4: ldrh r0, [r1] cmp r0, 0 beq _0808AAEE - bl sub_8097218 + bl GetMonIconPaletteIndexFromSpecies lsls r0, 24 lsrs r0, 24 lsls r1, r4, 20 @@ -3250,7 +3250,7 @@ _0808AB0C: .4byte 0x00000457 sub_808AB10: @ 808AB10 push {r4,r5,lr} sub sp, 0x4 - ldr r0, _0808AB40 @ =gUnknown_83D3740 + ldr r0, _0808AB40 @ =gMonIconPalettes ldr r4, _0808AB44 @ =gUnknown_20397A4 ldr r1, [r4] ldr r5, _0808AB48 @ =0x00000396 @@ -3271,7 +3271,7 @@ sub_808AB10: @ 808AB10 beq _0808AB80 b _0808AB88 .align 2, 0 -_0808AB40: .4byte gUnknown_83D3740 +_0808AB40: .4byte gMonIconPalettes _0808AB44: .4byte gUnknown_20397A4 _0808AB48: .4byte 0x00000396 _0808AB4C: .4byte 0x000004aa @@ -3322,7 +3322,7 @@ _0808AB9A: adds r0, r1 ldrh r0, [r0] movs r1, 0 - bl sub_8097028 + bl GetMonIconTiles adds r1, r0, 0 lsls r3, r4, 20 movs r0, 0x80 diff --git a/baserom.ips b/baserom.ips Binary files differindex 023f7cbb0..59846cc98 100644 --- a/baserom.ips +++ b/baserom.ips diff --git a/data/data_835B488.s b/data/data_835B488.s index a1893150d..10ade9a52 100644 --- a/data/data_835B488.s +++ b/data/data_835B488.s @@ -511,30 +511,10 @@ gUnknown_83D35DC:: @ 83D35DC gUnknown_83D3728:: @ 83D3728 .incbin "baserom.gba", 0x3D3728, 0x18 -gUnknown_83D3740:: @ 83D3740 - .incbin "baserom.gba", 0x3D3740, 0x60 - -gUnknown_83D37A0:: @ 83D37A0 - .incbin "baserom.gba", 0x3D37A0, 0x6E0 - -gUnknown_83D3E80:: @ 83D3E80 - .incbin "baserom.gba", 0x3D3E80, 0x1B8 - -gUnknown_83D4038:: @ 83D4038 - .incbin "baserom.gba", 0x3D4038, 0x30 - -gUnknown_83D4068:: @ 83D4068 - .incbin "baserom.gba", 0x3D4068, 0x44 - -gUnknown_83D40AC:: @ 83D40AC - .incbin "baserom.gba", 0x3D40AC, 0x34 - -gUnknown_83D40E0:: @ 83D40E0 - .incbin "baserom.gba", 0x3D40E0, 0x8 - -gUnknown_83D40E8:: @ 83D40E8 - .incbin "baserom.gba", 0x3D40E8, 0x18 - + @ pokemon_icon + .section .rodata.83D4100 + .align 2 + @ fldeff_cut gUnknown_83D4100:: @ 83D4100 .incbin "baserom.gba", 0x3D4100, 0x4C diff --git a/data/graphics.s b/data/graphics.s index ee8799cd2..7c96fce1a 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -11848,9 +11848,7 @@ gMonShinyPalette_Deoxys:: @ 8E3A360 .align 2 gMonIcon_Deoxys:: @ 8E3A388 .incbin "graphics/pokemon/deoxys/icon.4bpp" - - .align 2 -gMonIcon_DeoxysAttack:: @ 8E3A788 + @ Referenced as part of the same array as normal deoxys .incbin "graphics/pokemon/deoxys/icon_attack.4bpp" .align 2 @@ -11982,6 +11980,7 @@ gMonBackPic_UnownI:: @ 8E3F228 .incbin "graphics/pokemon/unown/i/back.4bpp.lz" .align 2 + gMonIcon_UnownI:: @ 8E3F3D0 .incbin "graphics/pokemon/unown/i/icon.4bpp" @@ -13698,7 +13697,7 @@ gFile_graphics_battle_interface_ball_status_bar_sheet:: @ 8E7BB04 .incbin "graphics/battle_interface/ball_status_bar.4bpp.lz" .align 2 -gUnknown_8E7BBB8:: @ 8E7BB88 +gMonIcon_Egg:: @ 8E7BB88 .incbin "baserom.gba", 0xE7BB88, 0x400 @UNKNOWN .align 2 diff --git a/include/graphics.h b/include/graphics.h index 79b47f306..bd6c2c800 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -2352,7 +2352,7 @@ extern const u8 gMonIcon_Chimecho[]; extern const u8 gMonFootprint_Chimecho[]; extern const u32 gMonFrontPic_Egg[]; extern const u32 gMonPalette_Egg[]; -extern const u32 gMonIcon_Egg[]; +extern const u8 gMonIcon_Egg[]; extern const u32 gMonFrontPic_UnownB[]; extern const u32 gMonBackPic_UnownB[]; extern const u8 gMonIcon_UnownB[]; @@ -3494,4 +3494,421 @@ extern const u32 gFile_graphics_mail_dream_map_tilemap[]; extern const u32 gFile_graphics_mail_fab_map_tilemap[]; extern const u32 gFile_graphics_mail_retro_map_tilemap[]; +// pokemon_icons +extern const u8 gMonIcon_Bulbasaur[]; +extern const u8 gMonIcon_Ivysaur[]; +extern const u8 gMonIcon_Venusaur[]; +extern const u8 gMonIcon_Charmander[]; +extern const u8 gMonIcon_Charmeleon[]; +extern const u8 gMonIcon_Charizard[]; +extern const u8 gMonIcon_Squirtle[]; +extern const u8 gMonIcon_Wartortle[]; +extern const u8 gMonIcon_Blastoise[]; +extern const u8 gMonIcon_Caterpie[]; +extern const u8 gMonIcon_Metapod[]; +extern const u8 gMonIcon_Butterfree[]; +extern const u8 gMonIcon_Weedle[]; +extern const u8 gMonIcon_Kakuna[]; +extern const u8 gMonIcon_Beedrill[]; +extern const u8 gMonIcon_Pidgey[]; +extern const u8 gMonIcon_Pidgeotto[]; +extern const u8 gMonIcon_Pidgeot[]; +extern const u8 gMonIcon_Rattata[]; +extern const u8 gMonIcon_Raticate[]; +extern const u8 gMonIcon_Spearow[]; +extern const u8 gMonIcon_Fearow[]; +extern const u8 gMonIcon_Ekans[]; +extern const u8 gMonIcon_Arbok[]; +extern const u8 gMonIcon_Pikachu[]; +extern const u8 gMonIcon_Raichu[]; +extern const u8 gMonIcon_Sandshrew[]; +extern const u8 gMonIcon_Sandslash[]; +extern const u8 gMonIcon_Nidoran_f[]; +extern const u8 gMonIcon_Nidorina[]; +extern const u8 gMonIcon_Nidoqueen[]; +extern const u8 gMonIcon_Nidoran_m[]; +extern const u8 gMonIcon_Nidorino[]; +extern const u8 gMonIcon_Nidoking[]; +extern const u8 gMonIcon_Clefairy[]; +extern const u8 gMonIcon_Clefable[]; +extern const u8 gMonIcon_Vulpix[]; +extern const u8 gMonIcon_Ninetales[]; +extern const u8 gMonIcon_Jigglypuff[]; +extern const u8 gMonIcon_Wigglytuff[]; +extern const u8 gMonIcon_Zubat[]; +extern const u8 gMonIcon_Golbat[]; +extern const u8 gMonIcon_Oddish[]; +extern const u8 gMonIcon_Gloom[]; +extern const u8 gMonIcon_Vileplume[]; +extern const u8 gMonIcon_Paras[]; +extern const u8 gMonIcon_Parasect[]; +extern const u8 gMonIcon_Venonat[]; +extern const u8 gMonIcon_Venomoth[]; +extern const u8 gMonIcon_Diglett[]; +extern const u8 gMonIcon_Dugtrio[]; +extern const u8 gMonIcon_Meowth[]; +extern const u8 gMonIcon_Persian[]; +extern const u8 gMonIcon_Psyduck[]; +extern const u8 gMonIcon_Golduck[]; +extern const u8 gMonIcon_Mankey[]; +extern const u8 gMonIcon_Primeape[]; +extern const u8 gMonIcon_Growlithe[]; +extern const u8 gMonIcon_Arcanine[]; +extern const u8 gMonIcon_Poliwag[]; +extern const u8 gMonIcon_Poliwhirl[]; +extern const u8 gMonIcon_Poliwrath[]; +extern const u8 gMonIcon_Abra[]; +extern const u8 gMonIcon_Kadabra[]; +extern const u8 gMonIcon_Alakazam[]; +extern const u8 gMonIcon_Machop[]; +extern const u8 gMonIcon_Machoke[]; +extern const u8 gMonIcon_Machamp[]; +extern const u8 gMonIcon_Bellsprout[]; +extern const u8 gMonIcon_Weepinbell[]; +extern const u8 gMonIcon_Victreebel[]; +extern const u8 gMonIcon_Tentacool[]; +extern const u8 gMonIcon_Tentacruel[]; +extern const u8 gMonIcon_Geodude[]; +extern const u8 gMonIcon_Graveler[]; +extern const u8 gMonIcon_Golem[]; +extern const u8 gMonIcon_Ponyta[]; +extern const u8 gMonIcon_Rapidash[]; +extern const u8 gMonIcon_Slowpoke[]; +extern const u8 gMonIcon_Slowbro[]; +extern const u8 gMonIcon_Magnemite[]; +extern const u8 gMonIcon_Magneton[]; +extern const u8 gMonIcon_Farfetch_d[]; +extern const u8 gMonIcon_Doduo[]; +extern const u8 gMonIcon_Dodrio[]; +extern const u8 gMonIcon_Seel[]; +extern const u8 gMonIcon_Dewgong[]; +extern const u8 gMonIcon_Grimer[]; +extern const u8 gMonIcon_Muk[]; +extern const u8 gMonIcon_Shellder[]; +extern const u8 gMonIcon_Cloyster[]; +extern const u8 gMonIcon_Gastly[]; +extern const u8 gMonIcon_Haunter[]; +extern const u8 gMonIcon_Gengar[]; +extern const u8 gMonIcon_Onix[]; +extern const u8 gMonIcon_Drowzee[]; +extern const u8 gMonIcon_Hypno[]; +extern const u8 gMonIcon_Krabby[]; +extern const u8 gMonIcon_Kingler[]; +extern const u8 gMonIcon_Voltorb[]; +extern const u8 gMonIcon_Electrode[]; +extern const u8 gMonIcon_Exeggcute[]; +extern const u8 gMonIcon_Exeggutor[]; +extern const u8 gMonIcon_Cubone[]; +extern const u8 gMonIcon_Marowak[]; +extern const u8 gMonIcon_Hitmonlee[]; +extern const u8 gMonIcon_Hitmonchan[]; +extern const u8 gMonIcon_Lickitung[]; +extern const u8 gMonIcon_Koffing[]; +extern const u8 gMonIcon_Weezing[]; +extern const u8 gMonIcon_Rhyhorn[]; +extern const u8 gMonIcon_Rhydon[]; +extern const u8 gMonIcon_Chansey[]; +extern const u8 gMonIcon_Tangela[]; +extern const u8 gMonIcon_Kangaskhan[]; +extern const u8 gMonIcon_Horsea[]; +extern const u8 gMonIcon_Seadra[]; +extern const u8 gMonIcon_Goldeen[]; +extern const u8 gMonIcon_Seaking[]; +extern const u8 gMonIcon_Staryu[]; +extern const u8 gMonIcon_Starmie[]; +extern const u8 gMonIcon_Mr_Mime[]; +extern const u8 gMonIcon_Scyther[]; +extern const u8 gMonIcon_Jynx[]; +extern const u8 gMonIcon_Electabuzz[]; +extern const u8 gMonIcon_Magmar[]; +extern const u8 gMonIcon_Pinsir[]; +extern const u8 gMonIcon_Tauros[]; +extern const u8 gMonIcon_Magikarp[]; +extern const u8 gMonIcon_Gyarados[]; +extern const u8 gMonIcon_Lapras[]; +extern const u8 gMonIcon_Ditto[]; +extern const u8 gMonIcon_Eevee[]; +extern const u8 gMonIcon_Vaporeon[]; +extern const u8 gMonIcon_Jolteon[]; +extern const u8 gMonIcon_Flareon[]; +extern const u8 gMonIcon_Porygon[]; +extern const u8 gMonIcon_Omanyte[]; +extern const u8 gMonIcon_Omastar[]; +extern const u8 gMonIcon_Kabuto[]; +extern const u8 gMonIcon_Kabutops[]; +extern const u8 gMonIcon_Aerodactyl[]; +extern const u8 gMonIcon_Snorlax[]; +extern const u8 gMonIcon_Articuno[]; +extern const u8 gMonIcon_Zapdos[]; +extern const u8 gMonIcon_Moltres[]; +extern const u8 gMonIcon_Dratini[]; +extern const u8 gMonIcon_Dragonair[]; +extern const u8 gMonIcon_Dragonite[]; +extern const u8 gMonIcon_Mewtwo[]; +extern const u8 gMonIcon_Mew[]; +extern const u8 gMonIcon_Chikorita[]; +extern const u8 gMonIcon_Bayleef[]; +extern const u8 gMonIcon_Meganium[]; +extern const u8 gMonIcon_Cyndaquil[]; +extern const u8 gMonIcon_Quilava[]; +extern const u8 gMonIcon_Typhlosion[]; +extern const u8 gMonIcon_Totodile[]; +extern const u8 gMonIcon_Croconaw[]; +extern const u8 gMonIcon_Feraligatr[]; +extern const u8 gMonIcon_Sentret[]; +extern const u8 gMonIcon_Furret[]; +extern const u8 gMonIcon_Hoothoot[]; +extern const u8 gMonIcon_Noctowl[]; +extern const u8 gMonIcon_Ledyba[]; +extern const u8 gMonIcon_Ledian[]; +extern const u8 gMonIcon_Spinarak[]; +extern const u8 gMonIcon_Ariados[]; +extern const u8 gMonIcon_Crobat[]; +extern const u8 gMonIcon_Chinchou[]; +extern const u8 gMonIcon_Lanturn[]; +extern const u8 gMonIcon_Pichu[]; +extern const u8 gMonIcon_Cleffa[]; +extern const u8 gMonIcon_Igglybuff[]; +extern const u8 gMonIcon_Togepi[]; +extern const u8 gMonIcon_Togetic[]; +extern const u8 gMonIcon_Natu[]; +extern const u8 gMonIcon_Xatu[]; +extern const u8 gMonIcon_Mareep[]; +extern const u8 gMonIcon_Flaaffy[]; +extern const u8 gMonIcon_Ampharos[]; +extern const u8 gMonIcon_Bellossom[]; +extern const u8 gMonIcon_Marill[]; +extern const u8 gMonIcon_Azumarill[]; +extern const u8 gMonIcon_Sudowoodo[]; +extern const u8 gMonIcon_Politoed[]; +extern const u8 gMonIcon_Hoppip[]; +extern const u8 gMonIcon_Skiploom[]; +extern const u8 gMonIcon_Jumpluff[]; +extern const u8 gMonIcon_Aipom[]; +extern const u8 gMonIcon_Sunkern[]; +extern const u8 gMonIcon_Sunflora[]; +extern const u8 gMonIcon_Yanma[]; +extern const u8 gMonIcon_Wooper[]; +extern const u8 gMonIcon_Quagsire[]; +extern const u8 gMonIcon_Espeon[]; +extern const u8 gMonIcon_Umbreon[]; +extern const u8 gMonIcon_Murkrow[]; +extern const u8 gMonIcon_Slowking[]; +extern const u8 gMonIcon_Misdreavus[]; +extern const u8 gMonIcon_Unown_A[]; +extern const u8 gMonIcon_Wobbuffet[]; +extern const u8 gMonIcon_Girafarig[]; +extern const u8 gMonIcon_Pineco[]; +extern const u8 gMonIcon_Forretress[]; +extern const u8 gMonIcon_Dunsparce[]; +extern const u8 gMonIcon_Gligar[]; +extern const u8 gMonIcon_Steelix[]; +extern const u8 gMonIcon_Snubbull[]; +extern const u8 gMonIcon_Granbull[]; +extern const u8 gMonIcon_Qwilfish[]; +extern const u8 gMonIcon_Scizor[]; +extern const u8 gMonIcon_Shuckle[]; +extern const u8 gMonIcon_Heracross[]; +extern const u8 gMonIcon_Sneasel[]; +extern const u8 gMonIcon_Teddiursa[]; +extern const u8 gMonIcon_Ursaring[]; +extern const u8 gMonIcon_Slugma[]; +extern const u8 gMonIcon_Magcargo[]; +extern const u8 gMonIcon_Swinub[]; +extern const u8 gMonIcon_Piloswine[]; +extern const u8 gMonIcon_Corsola[]; +extern const u8 gMonIcon_Remoraid[]; +extern const u8 gMonIcon_Octillery[]; +extern const u8 gMonIcon_Delibird[]; +extern const u8 gMonIcon_Mantine[]; +extern const u8 gMonIcon_Skarmory[]; +extern const u8 gMonIcon_Houndour[]; +extern const u8 gMonIcon_Houndoom[]; +extern const u8 gMonIcon_Kingdra[]; +extern const u8 gMonIcon_Phanpy[]; +extern const u8 gMonIcon_Donphan[]; +extern const u8 gMonIcon_Porygon2[]; +extern const u8 gMonIcon_Stantler[]; +extern const u8 gMonIcon_Smeargle[]; +extern const u8 gMonIcon_Tyrogue[]; +extern const u8 gMonIcon_Hitmontop[]; +extern const u8 gMonIcon_Smoochum[]; +extern const u8 gMonIcon_Elekid[]; +extern const u8 gMonIcon_Magby[]; +extern const u8 gMonIcon_Miltank[]; +extern const u8 gMonIcon_Blissey[]; +extern const u8 gMonIcon_Raikou[]; +extern const u8 gMonIcon_Entei[]; +extern const u8 gMonIcon_Suicune[]; +extern const u8 gMonIcon_Larvitar[]; +extern const u8 gMonIcon_Pupitar[]; +extern const u8 gMonIcon_Tyranitar[]; +extern const u8 gMonIcon_Lugia[]; +extern const u8 gMonIcon_Ho_Oh[]; +extern const u8 gMonIcon_Celebi[]; +extern const u8 gMonIcon_Treecko[]; +extern const u8 gMonIcon_Grovyle[]; +extern const u8 gMonIcon_Sceptile[]; +extern const u8 gMonIcon_Torchic[]; +extern const u8 gMonIcon_Combusken[]; +extern const u8 gMonIcon_Blaziken[]; +extern const u8 gMonIcon_Mudkip[]; +extern const u8 gMonIcon_Marshtomp[]; +extern const u8 gMonIcon_Swampert[]; +extern const u8 gMonIcon_Poochyena[]; +extern const u8 gMonIcon_Mightyena[]; +extern const u8 gMonIcon_Zigzagoon[]; +extern const u8 gMonIcon_Linoone[]; +extern const u8 gMonIcon_Wurmple[]; +extern const u8 gMonIcon_Silcoon[]; +extern const u8 gMonIcon_Beautifly[]; +extern const u8 gMonIcon_Cascoon[]; +extern const u8 gMonIcon_Dustox[]; +extern const u8 gMonIcon_Lotad[]; +extern const u8 gMonIcon_Lombre[]; +extern const u8 gMonIcon_Ludicolo[]; +extern const u8 gMonIcon_Seedot[]; +extern const u8 gMonIcon_Nuzleaf[]; +extern const u8 gMonIcon_Shiftry[]; +extern const u8 gMonIcon_Nincada[]; +extern const u8 gMonIcon_Ninjask[]; +extern const u8 gMonIcon_Shedinja[]; +extern const u8 gMonIcon_Taillow[]; +extern const u8 gMonIcon_Swellow[]; +extern const u8 gMonIcon_Shroomish[]; +extern const u8 gMonIcon_Breloom[]; +extern const u8 gMonIcon_Spinda[]; +extern const u8 gMonIcon_Wingull[]; +extern const u8 gMonIcon_Pelipper[]; +extern const u8 gMonIcon_Surskit[]; +extern const u8 gMonIcon_Masquerain[]; +extern const u8 gMonIcon_Wailmer[]; +extern const u8 gMonIcon_Wailord[]; +extern const u8 gMonIcon_Skitty[]; +extern const u8 gMonIcon_Delcatty[]; +extern const u8 gMonIcon_Kecleon[]; +extern const u8 gMonIcon_Baltoy[]; +extern const u8 gMonIcon_Claydol[]; +extern const u8 gMonIcon_Nosepass[]; +extern const u8 gMonIcon_Torkoal[]; +extern const u8 gMonIcon_Sableye[]; +extern const u8 gMonIcon_Barboach[]; +extern const u8 gMonIcon_Whiscash[]; +extern const u8 gMonIcon_Luvdisc[]; +extern const u8 gMonIcon_Corphish[]; +extern const u8 gMonIcon_Crawdaunt[]; +extern const u8 gMonIcon_Feebas[]; +extern const u8 gMonIcon_Milotic[]; +extern const u8 gMonIcon_Carvanha[]; +extern const u8 gMonIcon_Sharpedo[]; +extern const u8 gMonIcon_Trapinch[]; +extern const u8 gMonIcon_Vibrava[]; +extern const u8 gMonIcon_Flygon[]; +extern const u8 gMonIcon_Makuhita[]; +extern const u8 gMonIcon_Hariyama[]; +extern const u8 gMonIcon_Electrike[]; +extern const u8 gMonIcon_Manectric[]; +extern const u8 gMonIcon_Numel[]; +extern const u8 gMonIcon_Camerupt[]; +extern const u8 gMonIcon_Spheal[]; +extern const u8 gMonIcon_Sealeo[]; +extern const u8 gMonIcon_Walrein[]; +extern const u8 gMonIcon_Cacnea[]; +extern const u8 gMonIcon_Cacturne[]; +extern const u8 gMonIcon_Snorunt[]; +extern const u8 gMonIcon_Glalie[]; +extern const u8 gMonIcon_Lunatone[]; +extern const u8 gMonIcon_Solrock[]; +extern const u8 gMonIcon_Azurill[]; +extern const u8 gMonIcon_Spoink[]; +extern const u8 gMonIcon_Grumpig[]; +extern const u8 gMonIcon_Plusle[]; +extern const u8 gMonIcon_Minun[]; +extern const u8 gMonIcon_Mawile[]; +extern const u8 gMonIcon_Meditite[]; +extern const u8 gMonIcon_Medicham[]; +extern const u8 gMonIcon_Swablu[]; +extern const u8 gMonIcon_Altaria[]; +extern const u8 gMonIcon_Wynaut[]; +extern const u8 gMonIcon_Duskull[]; +extern const u8 gMonIcon_Dusclops[]; +extern const u8 gMonIcon_Roselia[]; +extern const u8 gMonIcon_Slakoth[]; +extern const u8 gMonIcon_Vigoroth[]; +extern const u8 gMonIcon_Slaking[]; +extern const u8 gMonIcon_Gulpin[]; +extern const u8 gMonIcon_Swalot[]; +extern const u8 gMonIcon_Tropius[]; +extern const u8 gMonIcon_Whismur[]; +extern const u8 gMonIcon_Loudred[]; +extern const u8 gMonIcon_Exploud[]; +extern const u8 gMonIcon_Clamperl[]; +extern const u8 gMonIcon_Huntail[]; +extern const u8 gMonIcon_Gorebyss[]; +extern const u8 gMonIcon_Absol[]; +extern const u8 gMonIcon_Shuppet[]; +extern const u8 gMonIcon_Banette[]; +extern const u8 gMonIcon_Seviper[]; +extern const u8 gMonIcon_Zangoose[]; +extern const u8 gMonIcon_Relicanth[]; +extern const u8 gMonIcon_Aron[]; +extern const u8 gMonIcon_Lairon[]; +extern const u8 gMonIcon_Aggron[]; +extern const u8 gMonIcon_Castform[]; +extern const u8 gMonIcon_Volbeat[]; +extern const u8 gMonIcon_Illumise[]; +extern const u8 gMonIcon_Lileep[]; +extern const u8 gMonIcon_Cradily[]; +extern const u8 gMonIcon_Anorith[]; +extern const u8 gMonIcon_Armaldo[]; +extern const u8 gMonIcon_Ralts[]; +extern const u8 gMonIcon_Kirlia[]; +extern const u8 gMonIcon_Gardevoir[]; +extern const u8 gMonIcon_Bagon[]; +extern const u8 gMonIcon_Shelgon[]; +extern const u8 gMonIcon_Salamence[]; +extern const u8 gMonIcon_Beldum[]; +extern const u8 gMonIcon_Metang[]; +extern const u8 gMonIcon_Metagross[]; +extern const u8 gMonIcon_Regirock[]; +extern const u8 gMonIcon_Regice[]; +extern const u8 gMonIcon_Registeel[]; +extern const u8 gMonIcon_Kyogre[]; +extern const u8 gMonIcon_Groudon[]; +extern const u8 gMonIcon_Rayquaza[]; +extern const u8 gMonIcon_Latias[]; +extern const u8 gMonIcon_Latios[]; +extern const u8 gMonIcon_Jirachi[]; +extern const u8 gMonIcon_Deoxys[]; +extern const u8 gMonIcon_Chimecho[]; +extern const u8 gMonIcon_Egg[]; +extern const u8 gMonIcon_Unown_B[]; +extern const u8 gMonIcon_Unown_C[]; +extern const u8 gMonIcon_Unown_D[]; +extern const u8 gMonIcon_Unown_E[]; +extern const u8 gMonIcon_Unown_F[]; +extern const u8 gMonIcon_Unown_G[]; +extern const u8 gMonIcon_Unown_H[]; +extern const u8 gMonIcon_Unown_I[]; +extern const u8 gMonIcon_Unown_J[]; +extern const u8 gMonIcon_Unown_K[]; +extern const u8 gMonIcon_Unown_L[]; +extern const u8 gMonIcon_Unown_M[]; +extern const u8 gMonIcon_Unown_N[]; +extern const u8 gMonIcon_Unown_O[]; +extern const u8 gMonIcon_Unown_P[]; +extern const u8 gMonIcon_Unown_Q[]; +extern const u8 gMonIcon_Unown_R[]; +extern const u8 gMonIcon_Unown_S[]; +extern const u8 gMonIcon_Unown_T[]; +extern const u8 gMonIcon_Unown_U[]; +extern const u8 gMonIcon_Unown_V[]; +extern const u8 gMonIcon_Unown_W[]; +extern const u8 gMonIcon_Unown_X[]; +extern const u8 gMonIcon_Unown_Y[]; +extern const u8 gMonIcon_Unown_Z[]; +extern const u8 gMonIcon_Unown_ExclamationMark[]; +extern const u8 gMonIcon_Unown_QuestionMark[]; +extern const u8 gMonIcon_QuestionMark[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index d5aab71de..52d374041 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -4,20 +4,21 @@ #include "global.h" const u8 *GetMonIconPtr(u16 speciesId, u32 personality, u32 frameNo); +const u8 *GetMonIconTiles(u16 iconSpecies, bool32 extra); const u16 *GetValidMonIconPalettePtr(u16 speciesId); u16 sub_80D2E84(u16 speciesId); void sub_80D2F68(u16 iconId); u8 sub_80D2D78(u16 iconId, void callback(struct Sprite *), u16 x, u16 y, u16 a4, u8 a5); void sub_80D2FF0(u16 iconId); void sub_80D2EF8(struct Sprite *sprite); -void sub_809707C(void); +void LoadMonIconPalettes(void); void FreeMonIconPalettes(void); -u16 sub_8096FD4(u16); -u8 sub_8096ECC(u16, void (*)(struct Sprite *), s16, s16, u8, bool32); -void sub_8097070(struct Sprite *); +u16 MailSpeciesToIconSpecies(u16); +u8 CreateMonIcon_HandleDeoxys(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, bool32 extra); +void DestroyMonIcon(struct Sprite *); u16 GetUnownLetterByPersonality(u32 personality); u8 UpdateMonIconFrame(struct Sprite *sprite); -void sub_80970E0(u16 iconId); -void sub_8097168(u16 iconId); +void LoadMonIconPalette(u16 iconId); +void FreeMonIconPalette(u16 iconId); #endif // GUARD_POKEMON_ICON_H diff --git a/ld_script.txt b/ld_script.txt index aa9da405e..1d5a43ce4 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -131,7 +131,7 @@ SECTIONS { src/pokedex.o(.text); asm/trainer_card.o(.text); asm/pokemon_storage_system.o(.text); - asm/pokemon_icon.o(.text); + src/pokemon_icon.o(.text); asm/script_movement.o(.text); asm/fldeff_cut.o(.text); src/mail_data.o(.text); @@ -420,6 +420,8 @@ SECTIONS { src/title_screen.o(.rodata); data/field_weather.o(.rodata); data/data_835B488.o(.rodata); + src/pokemon_icon.o(.rodata); + data/data_835B488.o(.rodata.83D4100); src/item_menu_icons.o(.rodata); src/battle_anim_mon_movement.o(.rodata); src/item.o(.rodata); diff --git a/src/mail.c b/src/mail.c index f6b7e2c4d..a9cb66683 100644 --- a/src/mail.c +++ b/src/mail.c @@ -596,16 +596,16 @@ static bool8 DoInitMailView(void) gPaletteFade.bufferTransferDisabled = TRUE; break; case 17: - iconId = sub_8096FD4(sMailViewResources->mail->species); + iconId = MailSpeciesToIconSpecies(sMailViewResources->mail->species); switch (sMailViewResources->monIconType) { case MAIL_ICON_BEAD: - sub_80970E0(iconId); - sMailViewResources->monIconSpriteId = sub_8096ECC(iconId, SpriteCallbackDummy, 0x60, 0x80, 0, FALSE); + LoadMonIconPalette(iconId); + sMailViewResources->monIconSpriteId = CreateMonIcon_HandleDeoxys(iconId, SpriteCallbackDummy, 0x60, 0x80, 0, FALSE); break; case MAIL_ICON_DREAM: - sub_80970E0(iconId); - sMailViewResources->monIconSpriteId = sub_8096ECC(iconId, SpriteCallbackDummy, 0x28, 0x80, 0, FALSE); + LoadMonIconPalette(iconId); + sMailViewResources->monIconSpriteId = CreateMonIcon_HandleDeoxys(iconId, SpriteCallbackDummy, 0x28, 0x80, 0, FALSE); break; } break; @@ -726,8 +726,8 @@ static void ShowMailCB_Teardown(void) { case MAIL_ICON_BEAD: case MAIL_ICON_DREAM: - sub_8097168(sub_8096FD4(sMailViewResources->mail->species)); - sub_8097070(&gSprites[sMailViewResources->monIconSpriteId]); + FreeMonIconPalette(MailSpeciesToIconSpecies(sMailViewResources->mail->species)); + DestroyMonIcon(&gSprites[sMailViewResources->monIconSpriteId]); break; } *sMailViewResources = (struct MailViewResources){}; diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index 85c1dfccb..e42b49627 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -200,7 +200,7 @@ s32 FadeToWonderCardMenu(void) CopyBgTilemapBufferToVram(1); break; case 6: - sub_809707C(); + LoadMonIconPalettes(); break; case 7: ShowBg(1); @@ -398,7 +398,7 @@ void sub_8146060(void) gUnknown_203F3C8->unk_017C = 0xFF; if (gUnknown_203F3C8->unk_014C.unk_06 != SPECIES_NONE) { - gUnknown_203F3C8->unk_017C = sub_8096ECC(sub_8096FD4(gUnknown_203F3C8->unk_014C.unk_06), SpriteCallbackDummy, 0xDC, 0x14, 0, FALSE); + gUnknown_203F3C8->unk_017C = CreateMonIcon_HandleDeoxys(MailSpeciesToIconSpecies(gUnknown_203F3C8->unk_014C.unk_06), SpriteCallbackDummy, 0xDC, 0x14, 0, FALSE); gSprites[gUnknown_203F3C8->unk_017C].oam.priority = 2; } if (gUnknown_203F3C8->unk_0000.unk_09 != 0 && gUnknown_203F3C8->unk_0000.unk_08_0 == 1) @@ -412,7 +412,7 @@ void sub_8146060(void) gUnknown_203F3C8->unk_017D[r7][0] = CreateSprite(&gUnknown_8467FA0, 0xd8 - 32 * r7, 0x90, 8); if (gUnknown_203F3C8->unk_014C.unk_08[0][r7] != 0) { - gUnknown_203F3C8->unk_017D[r7][1] = sub_8096ECC(sub_8096FD4(gUnknown_203F3C8->unk_014C.unk_08[0][r7]), SpriteCallbackDummy, 0xd8 - 32 * r7, 0x88, 0, 0); + gUnknown_203F3C8->unk_017D[r7][1] = CreateMonIcon_HandleDeoxys(MailSpeciesToIconSpecies(gUnknown_203F3C8->unk_014C.unk_08[0][r7]), SpriteCallbackDummy, 0xd8 - 32 * r7, 0x88, 0, 0); gSprites[gUnknown_203F3C8->unk_017D[r7][1]].oam.priority = 2; } } @@ -423,7 +423,7 @@ void sub_81461D8(void) { u8 r6 = 0; if (gUnknown_203F3C8->unk_017C != 0xFF) - sub_8097070(&gSprites[gUnknown_203F3C8->unk_017C]); + DestroyMonIcon(&gSprites[gUnknown_203F3C8->unk_017C]); if (gUnknown_203F3C8->unk_0000.unk_09 != 0 && gUnknown_203F3C8->unk_0000.unk_08_0 == 1) { for (; r6 < gUnknown_203F3C8->unk_0000.unk_09; r6++) @@ -435,7 +435,7 @@ void sub_81461D8(void) // if (gUnknown_203F3C8->unk_017D[r6][1] != 0xFF) if (gUnknown_203F3C8->unk_017D[r6][0] != 0xFF) { - sub_8097070(&gSprites[gUnknown_203F3C8->unk_017D[r6][1]]); + DestroyMonIcon(&gSprites[gUnknown_203F3C8->unk_017D[r6][1]]); } } } diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c new file mode 100644 index 000000000..f3492593c --- /dev/null +++ b/src/pokemon_icon.c @@ -0,0 +1,1284 @@ +#include "global.h" +#include "palette.h" +#include "mail_data.h" +#include "pokemon_icon.h" +#include "graphics.h" +#include "constants/species.h" + +#define POKE_ICON_BASE_PAL_TAG 56000 + +struct MonIconSpriteTemplate +{ + const struct OamData * oam; + const u8 *image; + const union AnimCmd *const * anims; + const union AffineAnimCmd *const * affineAnims; + SpriteCallback callback; + u16 paletteTag; +}; + +static u8 CreateMonIconSprite(const struct MonIconSpriteTemplate * template, s16 x, s16 y, u8 subpriority); +static void DestroyMonIconInternal(struct Sprite * sprite); + +const u16 gMonIconPalettes[][16] = { + INCBIN_U16("graphics/pokemon/icon_palettes/icon_palette_0.gbapal"), + INCBIN_U16("graphics/pokemon/icon_palettes/icon_palette_1.gbapal"), + INCBIN_U16("graphics/pokemon/icon_palettes/icon_palette_2.gbapal") +}; + +const u8 *const gMonIconTable[] = { + [SPECIES_NONE] = gMonIcon_QuestionMark, + [SPECIES_BULBASAUR] = gMonIcon_Bulbasaur, + [SPECIES_IVYSAUR] = gMonIcon_Ivysaur, + [SPECIES_VENUSAUR] = gMonIcon_Venusaur, + [SPECIES_CHARMANDER] = gMonIcon_Charmander, + [SPECIES_CHARMELEON] = gMonIcon_Charmeleon, + [SPECIES_CHARIZARD] = gMonIcon_Charizard, + [SPECIES_SQUIRTLE] = gMonIcon_Squirtle, + [SPECIES_WARTORTLE] = gMonIcon_Wartortle, + [SPECIES_BLASTOISE] = gMonIcon_Blastoise, + [SPECIES_CATERPIE] = gMonIcon_Caterpie, + [SPECIES_METAPOD] = gMonIcon_Metapod, + [SPECIES_BUTTERFREE] = gMonIcon_Butterfree, + [SPECIES_WEEDLE] = gMonIcon_Weedle, + [SPECIES_KAKUNA] = gMonIcon_Kakuna, + [SPECIES_BEEDRILL] = gMonIcon_Beedrill, + [SPECIES_PIDGEY] = gMonIcon_Pidgey, + [SPECIES_PIDGEOTTO] = gMonIcon_Pidgeotto, + [SPECIES_PIDGEOT] = gMonIcon_Pidgeot, + [SPECIES_RATTATA] = gMonIcon_Rattata, + [SPECIES_RATICATE] = gMonIcon_Raticate, + [SPECIES_SPEAROW] = gMonIcon_Spearow, + [SPECIES_FEAROW] = gMonIcon_Fearow, + [SPECIES_EKANS] = gMonIcon_Ekans, + [SPECIES_ARBOK] = gMonIcon_Arbok, + [SPECIES_PIKACHU] = gMonIcon_Pikachu, + [SPECIES_RAICHU] = gMonIcon_Raichu, + [SPECIES_SANDSHREW] = gMonIcon_Sandshrew, + [SPECIES_SANDSLASH] = gMonIcon_Sandslash, + [SPECIES_NIDORAN_F] = gMonIcon_NidoranF, + [SPECIES_NIDORINA] = gMonIcon_Nidorina, + [SPECIES_NIDOQUEEN] = gMonIcon_Nidoqueen, + [SPECIES_NIDORAN_M] = gMonIcon_NidoranM, + [SPECIES_NIDORINO] = gMonIcon_Nidorino, + [SPECIES_NIDOKING] = gMonIcon_Nidoking, + [SPECIES_CLEFAIRY] = gMonIcon_Clefairy, + [SPECIES_CLEFABLE] = gMonIcon_Clefable, + [SPECIES_VULPIX] = gMonIcon_Vulpix, + [SPECIES_NINETALES] = gMonIcon_Ninetales, + [SPECIES_JIGGLYPUFF] = gMonIcon_Jigglypuff, + [SPECIES_WIGGLYTUFF] = gMonIcon_Wigglytuff, + [SPECIES_ZUBAT] = gMonIcon_Zubat, + [SPECIES_GOLBAT] = gMonIcon_Golbat, + [SPECIES_ODDISH] = gMonIcon_Oddish, + [SPECIES_GLOOM] = gMonIcon_Gloom, + [SPECIES_VILEPLUME] = gMonIcon_Vileplume, + [SPECIES_PARAS] = gMonIcon_Paras, + [SPECIES_PARASECT] = gMonIcon_Parasect, + [SPECIES_VENONAT] = gMonIcon_Venonat, + [SPECIES_VENOMOTH] = gMonIcon_Venomoth, + [SPECIES_DIGLETT] = gMonIcon_Diglett, + [SPECIES_DUGTRIO] = gMonIcon_Dugtrio, + [SPECIES_MEOWTH] = gMonIcon_Meowth, + [SPECIES_PERSIAN] = gMonIcon_Persian, + [SPECIES_PSYDUCK] = gMonIcon_Psyduck, + [SPECIES_GOLDUCK] = gMonIcon_Golduck, + [SPECIES_MANKEY] = gMonIcon_Mankey, + [SPECIES_PRIMEAPE] = gMonIcon_Primeape, + [SPECIES_GROWLITHE] = gMonIcon_Growlithe, + [SPECIES_ARCANINE] = gMonIcon_Arcanine, + [SPECIES_POLIWAG] = gMonIcon_Poliwag, + [SPECIES_POLIWHIRL] = gMonIcon_Poliwhirl, + [SPECIES_POLIWRATH] = gMonIcon_Poliwrath, + [SPECIES_ABRA] = gMonIcon_Abra, + [SPECIES_KADABRA] = gMonIcon_Kadabra, + [SPECIES_ALAKAZAM] = gMonIcon_Alakazam, + [SPECIES_MACHOP] = gMonIcon_Machop, + [SPECIES_MACHOKE] = gMonIcon_Machoke, + [SPECIES_MACHAMP] = gMonIcon_Machamp, + [SPECIES_BELLSPROUT] = gMonIcon_Bellsprout, + [SPECIES_WEEPINBELL] = gMonIcon_Weepinbell, + [SPECIES_VICTREEBEL] = gMonIcon_Victreebel, + [SPECIES_TENTACOOL] = gMonIcon_Tentacool, + [SPECIES_TENTACRUEL] = gMonIcon_Tentacruel, + [SPECIES_GEODUDE] = gMonIcon_Geodude, + [SPECIES_GRAVELER] = gMonIcon_Graveler, + [SPECIES_GOLEM] = gMonIcon_Golem, + [SPECIES_PONYTA] = gMonIcon_Ponyta, + [SPECIES_RAPIDASH] = gMonIcon_Rapidash, + [SPECIES_SLOWPOKE] = gMonIcon_Slowpoke, + [SPECIES_SLOWBRO] = gMonIcon_Slowbro, + [SPECIES_MAGNEMITE] = gMonIcon_Magnemite, + [SPECIES_MAGNETON] = gMonIcon_Magneton, + [SPECIES_FARFETCHD] = gMonIcon_Farfetchd, + [SPECIES_DODUO] = gMonIcon_Doduo, + [SPECIES_DODRIO] = gMonIcon_Dodrio, + [SPECIES_SEEL] = gMonIcon_Seel, + [SPECIES_DEWGONG] = gMonIcon_Dewgong, + [SPECIES_GRIMER] = gMonIcon_Grimer, + [SPECIES_MUK] = gMonIcon_Muk, + [SPECIES_SHELLDER] = gMonIcon_Shellder, + [SPECIES_CLOYSTER] = gMonIcon_Cloyster, + [SPECIES_GASTLY] = gMonIcon_Gastly, + [SPECIES_HAUNTER] = gMonIcon_Haunter, + [SPECIES_GENGAR] = gMonIcon_Gengar, + [SPECIES_ONIX] = gMonIcon_Onix, + [SPECIES_DROWZEE] = gMonIcon_Drowzee, + [SPECIES_HYPNO] = gMonIcon_Hypno, + [SPECIES_KRABBY] = gMonIcon_Krabby, + [SPECIES_KINGLER] = gMonIcon_Kingler, + [SPECIES_VOLTORB] = gMonIcon_Voltorb, + [SPECIES_ELECTRODE] = gMonIcon_Electrode, + [SPECIES_EXEGGCUTE] = gMonIcon_Exeggcute, + [SPECIES_EXEGGUTOR] = gMonIcon_Exeggutor, + [SPECIES_CUBONE] = gMonIcon_Cubone, + [SPECIES_MAROWAK] = gMonIcon_Marowak, + [SPECIES_HITMONLEE] = gMonIcon_Hitmonlee, + [SPECIES_HITMONCHAN] = gMonIcon_Hitmonchan, + [SPECIES_LICKITUNG] = gMonIcon_Lickitung, + [SPECIES_KOFFING] = gMonIcon_Koffing, + [SPECIES_WEEZING] = gMonIcon_Weezing, + [SPECIES_RHYHORN] = gMonIcon_Rhyhorn, + [SPECIES_RHYDON] = gMonIcon_Rhydon, + [SPECIES_CHANSEY] = gMonIcon_Chansey, + [SPECIES_TANGELA] = gMonIcon_Tangela, + [SPECIES_KANGASKHAN] = gMonIcon_Kangaskhan, + [SPECIES_HORSEA] = gMonIcon_Horsea, + [SPECIES_SEADRA] = gMonIcon_Seadra, + [SPECIES_GOLDEEN] = gMonIcon_Goldeen, + [SPECIES_SEAKING] = gMonIcon_Seaking, + [SPECIES_STARYU] = gMonIcon_Staryu, + [SPECIES_STARMIE] = gMonIcon_Starmie, + [SPECIES_MR_MIME] = gMonIcon_Mrmime, + [SPECIES_SCYTHER] = gMonIcon_Scyther, + [SPECIES_JYNX] = gMonIcon_Jynx, + [SPECIES_ELECTABUZZ] = gMonIcon_Electabuzz, + [SPECIES_MAGMAR] = gMonIcon_Magmar, + [SPECIES_PINSIR] = gMonIcon_Pinsir, + [SPECIES_TAUROS] = gMonIcon_Tauros, + [SPECIES_MAGIKARP] = gMonIcon_Magikarp, + [SPECIES_GYARADOS] = gMonIcon_Gyarados, + [SPECIES_LAPRAS] = gMonIcon_Lapras, + [SPECIES_DITTO] = gMonIcon_Ditto, + [SPECIES_EEVEE] = gMonIcon_Eevee, + [SPECIES_VAPOREON] = gMonIcon_Vaporeon, + [SPECIES_JOLTEON] = gMonIcon_Jolteon, + [SPECIES_FLAREON] = gMonIcon_Flareon, + [SPECIES_PORYGON] = gMonIcon_Porygon, + [SPECIES_OMANYTE] = gMonIcon_Omanyte, + [SPECIES_OMASTAR] = gMonIcon_Omastar, + [SPECIES_KABUTO] = gMonIcon_Kabuto, + [SPECIES_KABUTOPS] = gMonIcon_Kabutops, + [SPECIES_AERODACTYL] = gMonIcon_Aerodactyl, + [SPECIES_SNORLAX] = gMonIcon_Snorlax, + [SPECIES_ARTICUNO] = gMonIcon_Articuno, + [SPECIES_ZAPDOS] = gMonIcon_Zapdos, + [SPECIES_MOLTRES] = gMonIcon_Moltres, + [SPECIES_DRATINI] = gMonIcon_Dratini, + [SPECIES_DRAGONAIR] = gMonIcon_Dragonair, + [SPECIES_DRAGONITE] = gMonIcon_Dragonite, + [SPECIES_MEWTWO] = gMonIcon_Mewtwo, + [SPECIES_MEW] = gMonIcon_Mew, + [SPECIES_CHIKORITA] = gMonIcon_Chikorita, + [SPECIES_BAYLEEF] = gMonIcon_Bayleef, + [SPECIES_MEGANIUM] = gMonIcon_Meganium, + [SPECIES_CYNDAQUIL] = gMonIcon_Cyndaquil, + [SPECIES_QUILAVA] = gMonIcon_Quilava, + [SPECIES_TYPHLOSION] = gMonIcon_Typhlosion, + [SPECIES_TOTODILE] = gMonIcon_Totodile, + [SPECIES_CROCONAW] = gMonIcon_Croconaw, + [SPECIES_FERALIGATR] = gMonIcon_Feraligatr, + [SPECIES_SENTRET] = gMonIcon_Sentret, + [SPECIES_FURRET] = gMonIcon_Furret, + [SPECIES_HOOTHOOT] = gMonIcon_Hoothoot, + [SPECIES_NOCTOWL] = gMonIcon_Noctowl, + [SPECIES_LEDYBA] = gMonIcon_Ledyba, + [SPECIES_LEDIAN] = gMonIcon_Ledian, + [SPECIES_SPINARAK] = gMonIcon_Spinarak, + [SPECIES_ARIADOS] = gMonIcon_Ariados, + [SPECIES_CROBAT] = gMonIcon_Crobat, + [SPECIES_CHINCHOU] = gMonIcon_Chinchou, + [SPECIES_LANTURN] = gMonIcon_Lanturn, + [SPECIES_PICHU] = gMonIcon_Pichu, + [SPECIES_CLEFFA] = gMonIcon_Cleffa, + [SPECIES_IGGLYBUFF] = gMonIcon_Igglybuff, + [SPECIES_TOGEPI] = gMonIcon_Togepi, + [SPECIES_TOGETIC] = gMonIcon_Togetic, + [SPECIES_NATU] = gMonIcon_Natu, + [SPECIES_XATU] = gMonIcon_Xatu, + [SPECIES_MAREEP] = gMonIcon_Mareep, + [SPECIES_FLAAFFY] = gMonIcon_Flaaffy, + [SPECIES_AMPHAROS] = gMonIcon_Ampharos, + [SPECIES_BELLOSSOM] = gMonIcon_Bellossom, + [SPECIES_MARILL] = gMonIcon_Marill, + [SPECIES_AZUMARILL] = gMonIcon_Azumarill, + [SPECIES_SUDOWOODO] = gMonIcon_Sudowoodo, + [SPECIES_POLITOED] = gMonIcon_Politoed, + [SPECIES_HOPPIP] = gMonIcon_Hoppip, + [SPECIES_SKIPLOOM] = gMonIcon_Skiploom, + [SPECIES_JUMPLUFF] = gMonIcon_Jumpluff, + [SPECIES_AIPOM] = gMonIcon_Aipom, + [SPECIES_SUNKERN] = gMonIcon_Sunkern, + [SPECIES_SUNFLORA] = gMonIcon_Sunflora, + [SPECIES_YANMA] = gMonIcon_Yanma, + [SPECIES_WOOPER] = gMonIcon_Wooper, + [SPECIES_QUAGSIRE] = gMonIcon_Quagsire, + [SPECIES_ESPEON] = gMonIcon_Espeon, + [SPECIES_UMBREON] = gMonIcon_Umbreon, + [SPECIES_MURKROW] = gMonIcon_Murkrow, + [SPECIES_SLOWKING] = gMonIcon_Slowking, + [SPECIES_MISDREAVUS] = gMonIcon_Misdreavus, + [SPECIES_UNOWN] = gMonIcon_UnownA, + [SPECIES_WOBBUFFET] = gMonIcon_Wobbuffet, + [SPECIES_GIRAFARIG] = gMonIcon_Girafarig, + [SPECIES_PINECO] = gMonIcon_Pineco, + [SPECIES_FORRETRESS] = gMonIcon_Forretress, + [SPECIES_DUNSPARCE] = gMonIcon_Dunsparce, + [SPECIES_GLIGAR] = gMonIcon_Gligar, + [SPECIES_STEELIX] = gMonIcon_Steelix, + [SPECIES_SNUBBULL] = gMonIcon_Snubbull, + [SPECIES_GRANBULL] = gMonIcon_Granbull, + [SPECIES_QWILFISH] = gMonIcon_Qwilfish, + [SPECIES_SCIZOR] = gMonIcon_Scizor, + [SPECIES_SHUCKLE] = gMonIcon_Shuckle, + [SPECIES_HERACROSS] = gMonIcon_Heracross, + [SPECIES_SNEASEL] = gMonIcon_Sneasel, + [SPECIES_TEDDIURSA] = gMonIcon_Teddiursa, + [SPECIES_URSARING] = gMonIcon_Ursaring, + [SPECIES_SLUGMA] = gMonIcon_Slugma, + [SPECIES_MAGCARGO] = gMonIcon_Magcargo, + [SPECIES_SWINUB] = gMonIcon_Swinub, + [SPECIES_PILOSWINE] = gMonIcon_Piloswine, + [SPECIES_CORSOLA] = gMonIcon_Corsola, + [SPECIES_REMORAID] = gMonIcon_Remoraid, + [SPECIES_OCTILLERY] = gMonIcon_Octillery, + [SPECIES_DELIBIRD] = gMonIcon_Delibird, + [SPECIES_MANTINE] = gMonIcon_Mantine, + [SPECIES_SKARMORY] = gMonIcon_Skarmory, + [SPECIES_HOUNDOUR] = gMonIcon_Houndour, + [SPECIES_HOUNDOOM] = gMonIcon_Houndoom, + [SPECIES_KINGDRA] = gMonIcon_Kingdra, + [SPECIES_PHANPY] = gMonIcon_Phanpy, + [SPECIES_DONPHAN] = gMonIcon_Donphan, + [SPECIES_PORYGON2] = gMonIcon_Porygon2, + [SPECIES_STANTLER] = gMonIcon_Stantler, + [SPECIES_SMEARGLE] = gMonIcon_Smeargle, + [SPECIES_TYROGUE] = gMonIcon_Tyrogue, + [SPECIES_HITMONTOP] = gMonIcon_Hitmontop, + [SPECIES_SMOOCHUM] = gMonIcon_Smoochum, + [SPECIES_ELEKID] = gMonIcon_Elekid, + [SPECIES_MAGBY] = gMonIcon_Magby, + [SPECIES_MILTANK] = gMonIcon_Miltank, + [SPECIES_BLISSEY] = gMonIcon_Blissey, + [SPECIES_RAIKOU] = gMonIcon_Raikou, + [SPECIES_ENTEI] = gMonIcon_Entei, + [SPECIES_SUICUNE] = gMonIcon_Suicune, + [SPECIES_LARVITAR] = gMonIcon_Larvitar, + [SPECIES_PUPITAR] = gMonIcon_Pupitar, + [SPECIES_TYRANITAR] = gMonIcon_Tyranitar, + [SPECIES_LUGIA] = gMonIcon_Lugia, + [SPECIES_HO_OH] = gMonIcon_HoOh, + [SPECIES_CELEBI] = gMonIcon_Celebi, + [SPECIES_OLD_UNOWN_B] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_C] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_D] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_E] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_F] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_G] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_H] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_I] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_J] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_K] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_L] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_M] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_N] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_O] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_P] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_Q] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_R] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_S] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_T] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_U] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_V] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_W] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_X] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_Y] = gMonIcon_QuestionMark, + [SPECIES_OLD_UNOWN_Z] = gMonIcon_QuestionMark, + [SPECIES_TREECKO] = gMonIcon_Treecko, + [SPECIES_GROVYLE] = gMonIcon_Grovyle, + [SPECIES_SCEPTILE] = gMonIcon_Sceptile, + [SPECIES_TORCHIC] = gMonIcon_Torchic, + [SPECIES_COMBUSKEN] = gMonIcon_Combusken, + [SPECIES_BLAZIKEN] = gMonIcon_Blaziken, + [SPECIES_MUDKIP] = gMonIcon_Mudkip, + [SPECIES_MARSHTOMP] = gMonIcon_Marshtomp, + [SPECIES_SWAMPERT] = gMonIcon_Swampert, + [SPECIES_POOCHYENA] = gMonIcon_Poochyena, + [SPECIES_MIGHTYENA] = gMonIcon_Mightyena, + [SPECIES_ZIGZAGOON] = gMonIcon_Zigzagoon, + [SPECIES_LINOONE] = gMonIcon_Linoone, + [SPECIES_WURMPLE] = gMonIcon_Wurmple, + [SPECIES_SILCOON] = gMonIcon_Silcoon, + [SPECIES_BEAUTIFLY] = gMonIcon_Beautifly, + [SPECIES_CASCOON] = gMonIcon_Cascoon, + [SPECIES_DUSTOX] = gMonIcon_Dustox, + [SPECIES_LOTAD] = gMonIcon_Lotad, + [SPECIES_LOMBRE] = gMonIcon_Lombre, + [SPECIES_LUDICOLO] = gMonIcon_Ludicolo, + [SPECIES_SEEDOT] = gMonIcon_Seedot, + [SPECIES_NUZLEAF] = gMonIcon_Nuzleaf, + [SPECIES_SHIFTRY] = gMonIcon_Shiftry, + [SPECIES_NINCADA] = gMonIcon_Nincada, + [SPECIES_NINJASK] = gMonIcon_Ninjask, + [SPECIES_SHEDINJA] = gMonIcon_Shedinja, + [SPECIES_TAILLOW] = gMonIcon_Taillow, + [SPECIES_SWELLOW] = gMonIcon_Swellow, + [SPECIES_SHROOMISH] = gMonIcon_Shroomish, + [SPECIES_BRELOOM] = gMonIcon_Breloom, + [SPECIES_SPINDA] = gMonIcon_Spinda, + [SPECIES_WINGULL] = gMonIcon_Wingull, + [SPECIES_PELIPPER] = gMonIcon_Pelipper, + [SPECIES_SURSKIT] = gMonIcon_Surskit, + [SPECIES_MASQUERAIN] = gMonIcon_Masquerain, + [SPECIES_WAILMER] = gMonIcon_Wailmer, + [SPECIES_WAILORD] = gMonIcon_Wailord, + [SPECIES_SKITTY] = gMonIcon_Skitty, + [SPECIES_DELCATTY] = gMonIcon_Delcatty, + [SPECIES_KECLEON] = gMonIcon_Kecleon, + [SPECIES_BALTOY] = gMonIcon_Baltoy, + [SPECIES_CLAYDOL] = gMonIcon_Claydol, + [SPECIES_NOSEPASS] = gMonIcon_Nosepass, + [SPECIES_TORKOAL] = gMonIcon_Torkoal, + [SPECIES_SABLEYE] = gMonIcon_Sableye, + [SPECIES_BARBOACH] = gMonIcon_Barboach, + [SPECIES_WHISCASH] = gMonIcon_Whiscash, + [SPECIES_LUVDISC] = gMonIcon_Luvdisc, + [SPECIES_CORPHISH] = gMonIcon_Corphish, + [SPECIES_CRAWDAUNT] = gMonIcon_Crawdaunt, + [SPECIES_FEEBAS] = gMonIcon_Feebas, + [SPECIES_MILOTIC] = gMonIcon_Milotic, + [SPECIES_CARVANHA] = gMonIcon_Carvanha, + [SPECIES_SHARPEDO] = gMonIcon_Sharpedo, + [SPECIES_TRAPINCH] = gMonIcon_Trapinch, + [SPECIES_VIBRAVA] = gMonIcon_Vibrava, + [SPECIES_FLYGON] = gMonIcon_Flygon, + [SPECIES_MAKUHITA] = gMonIcon_Makuhita, + [SPECIES_HARIYAMA] = gMonIcon_Hariyama, + [SPECIES_ELECTRIKE] = gMonIcon_Electrike, + [SPECIES_MANECTRIC] = gMonIcon_Manectric, + [SPECIES_NUMEL] = gMonIcon_Numel, + [SPECIES_CAMERUPT] = gMonIcon_Camerupt, + [SPECIES_SPHEAL] = gMonIcon_Spheal, + [SPECIES_SEALEO] = gMonIcon_Sealeo, + [SPECIES_WALREIN] = gMonIcon_Walrein, + [SPECIES_CACNEA] = gMonIcon_Cacnea, + [SPECIES_CACTURNE] = gMonIcon_Cacturne, + [SPECIES_SNORUNT] = gMonIcon_Snorunt, + [SPECIES_GLALIE] = gMonIcon_Glalie, + [SPECIES_LUNATONE] = gMonIcon_Lunatone, + [SPECIES_SOLROCK] = gMonIcon_Solrock, + [SPECIES_AZURILL] = gMonIcon_Azurill, + [SPECIES_SPOINK] = gMonIcon_Spoink, + [SPECIES_GRUMPIG] = gMonIcon_Grumpig, + [SPECIES_PLUSLE] = gMonIcon_Plusle, + [SPECIES_MINUN] = gMonIcon_Minun, + [SPECIES_MAWILE] = gMonIcon_Mawile, + [SPECIES_MEDITITE] = gMonIcon_Meditite, + [SPECIES_MEDICHAM] = gMonIcon_Medicham, + [SPECIES_SWABLU] = gMonIcon_Swablu, + [SPECIES_ALTARIA] = gMonIcon_Altaria, + [SPECIES_WYNAUT] = gMonIcon_Wynaut, + [SPECIES_DUSKULL] = gMonIcon_Duskull, + [SPECIES_DUSCLOPS] = gMonIcon_Dusclops, + [SPECIES_ROSELIA] = gMonIcon_Roselia, + [SPECIES_SLAKOTH] = gMonIcon_Slakoth, + [SPECIES_VIGOROTH] = gMonIcon_Vigoroth, + [SPECIES_SLAKING] = gMonIcon_Slaking, + [SPECIES_GULPIN] = gMonIcon_Gulpin, + [SPECIES_SWALOT] = gMonIcon_Swalot, + [SPECIES_TROPIUS] = gMonIcon_Tropius, + [SPECIES_WHISMUR] = gMonIcon_Whismur, + [SPECIES_LOUDRED] = gMonIcon_Loudred, + [SPECIES_EXPLOUD] = gMonIcon_Exploud, + [SPECIES_CLAMPERL] = gMonIcon_Clamperl, + [SPECIES_HUNTAIL] = gMonIcon_Huntail, + [SPECIES_GOREBYSS] = gMonIcon_Gorebyss, + [SPECIES_ABSOL] = gMonIcon_Absol, + [SPECIES_SHUPPET] = gMonIcon_Shuppet, + [SPECIES_BANETTE] = gMonIcon_Banette, + [SPECIES_SEVIPER] = gMonIcon_Seviper, + [SPECIES_ZANGOOSE] = gMonIcon_Zangoose, + [SPECIES_RELICANTH] = gMonIcon_Relicanth, + [SPECIES_ARON] = gMonIcon_Aron, + [SPECIES_LAIRON] = gMonIcon_Lairon, + [SPECIES_AGGRON] = gMonIcon_Aggron, + [SPECIES_CASTFORM] = gMonIcon_Castform, + [SPECIES_VOLBEAT] = gMonIcon_Volbeat, + [SPECIES_ILLUMISE] = gMonIcon_Illumise, + [SPECIES_LILEEP] = gMonIcon_Lileep, + [SPECIES_CRADILY] = gMonIcon_Cradily, + [SPECIES_ANORITH] = gMonIcon_Anorith, + [SPECIES_ARMALDO] = gMonIcon_Armaldo, + [SPECIES_RALTS] = gMonIcon_Ralts, + [SPECIES_KIRLIA] = gMonIcon_Kirlia, + [SPECIES_GARDEVOIR] = gMonIcon_Gardevoir, + [SPECIES_BAGON] = gMonIcon_Bagon, + [SPECIES_SHELGON] = gMonIcon_Shelgon, + [SPECIES_SALAMENCE] = gMonIcon_Salamence, + [SPECIES_BELDUM] = gMonIcon_Beldum, + [SPECIES_METANG] = gMonIcon_Metang, + [SPECIES_METAGROSS] = gMonIcon_Metagross, + [SPECIES_REGIROCK] = gMonIcon_Regirock, + [SPECIES_REGICE] = gMonIcon_Regice, + [SPECIES_REGISTEEL] = gMonIcon_Registeel, + [SPECIES_KYOGRE] = gMonIcon_Kyogre, + [SPECIES_GROUDON] = gMonIcon_Groudon, + [SPECIES_RAYQUAZA] = gMonIcon_Rayquaza, + [SPECIES_LATIAS] = gMonIcon_Latias, + [SPECIES_LATIOS] = gMonIcon_Latios, + [SPECIES_JIRACHI] = gMonIcon_Jirachi, + [SPECIES_DEOXYS] = gMonIcon_Deoxys, + [SPECIES_CHIMECHO] = gMonIcon_Chimecho, + [SPECIES_EGG] = gMonIcon_Egg, + [SPECIES_UNOWN_B] = gMonIcon_UnownB, + [SPECIES_UNOWN_C] = gMonIcon_UnownC, + [SPECIES_UNOWN_D] = gMonIcon_UnownD, + [SPECIES_UNOWN_E] = gMonIcon_UnownE, + [SPECIES_UNOWN_F] = gMonIcon_UnownF, + [SPECIES_UNOWN_G] = gMonIcon_UnownG, + [SPECIES_UNOWN_H] = gMonIcon_UnownH, + [SPECIES_UNOWN_I] = gMonIcon_UnownI, + [SPECIES_UNOWN_J] = gMonIcon_UnownJ, + [SPECIES_UNOWN_K] = gMonIcon_UnownK, + [SPECIES_UNOWN_L] = gMonIcon_UnownL, + [SPECIES_UNOWN_M] = gMonIcon_UnownM, + [SPECIES_UNOWN_N] = gMonIcon_UnownN, + [SPECIES_UNOWN_O] = gMonIcon_UnownO, + [SPECIES_UNOWN_P] = gMonIcon_UnownP, + [SPECIES_UNOWN_Q] = gMonIcon_UnownQ, + [SPECIES_UNOWN_R] = gMonIcon_UnownR, + [SPECIES_UNOWN_S] = gMonIcon_UnownS, + [SPECIES_UNOWN_T] = gMonIcon_UnownT, + [SPECIES_UNOWN_U] = gMonIcon_UnownU, + [SPECIES_UNOWN_V] = gMonIcon_UnownV, + [SPECIES_UNOWN_W] = gMonIcon_UnownW, + [SPECIES_UNOWN_X] = gMonIcon_UnownX, + [SPECIES_UNOWN_Y] = gMonIcon_UnownY, + [SPECIES_UNOWN_Z] = gMonIcon_UnownZ, + [SPECIES_UNOWN_EMARK] = gMonIcon_UnownExclamationMark, + [SPECIES_UNOWN_QMARK] = gMonIcon_UnownQuestionMark +}; + +const u8 gMonIconPaletteIndices[] = { + [SPECIES_NONE] = 0, + [SPECIES_BULBASAUR] = 1, + [SPECIES_IVYSAUR] = 1, + [SPECIES_VENUSAUR] = 1, + [SPECIES_CHARMANDER] = 0, + [SPECIES_CHARMELEON] = 0, + [SPECIES_CHARIZARD] = 0, + [SPECIES_SQUIRTLE] = 0, + [SPECIES_WARTORTLE] = 2, + [SPECIES_BLASTOISE] = 2, + [SPECIES_CATERPIE] = 1, + [SPECIES_METAPOD] = 1, + [SPECIES_BUTTERFREE] = 0, + [SPECIES_WEEDLE] = 1, + [SPECIES_KAKUNA] = 2, + [SPECIES_BEEDRILL] = 2, + [SPECIES_PIDGEY] = 0, + [SPECIES_PIDGEOTTO] = 0, + [SPECIES_PIDGEOT] = 0, + [SPECIES_RATTATA] = 2, + [SPECIES_RATICATE] = 1, + [SPECIES_SPEAROW] = 0, + [SPECIES_FEAROW] = 0, + [SPECIES_EKANS] = 2, + [SPECIES_ARBOK] = 2, + [SPECIES_PIKACHU] = 2, + [SPECIES_RAICHU] = 0, + [SPECIES_SANDSHREW] = 2, + [SPECIES_SANDSLASH] = 2, + [SPECIES_NIDORAN_F] = 2, + [SPECIES_NIDORINA] = 2, + [SPECIES_NIDOQUEEN] = 2, + [SPECIES_NIDORAN_M] = 2, + [SPECIES_NIDORINO] = 2, + [SPECIES_NIDOKING] = 2, + [SPECIES_CLEFAIRY] = 0, + [SPECIES_CLEFABLE] = 0, + [SPECIES_VULPIX] = 2, + [SPECIES_NINETALES] = 1, + [SPECIES_JIGGLYPUFF] = 0, + [SPECIES_WIGGLYTUFF] = 0, + [SPECIES_ZUBAT] = 2, + [SPECIES_GOLBAT] = 2, + [SPECIES_ODDISH] = 1, + [SPECIES_GLOOM] = 0, + [SPECIES_VILEPLUME] = 0, + [SPECIES_PARAS] = 0, + [SPECIES_PARASECT] = 0, + [SPECIES_VENONAT] = 0, + [SPECIES_VENOMOTH] = 2, + [SPECIES_DIGLETT] = 2, + [SPECIES_DUGTRIO] = 2, + [SPECIES_MEOWTH] = 1, + [SPECIES_PERSIAN] = 1, + [SPECIES_PSYDUCK] = 1, + [SPECIES_GOLDUCK] = 2, + [SPECIES_MANKEY] = 1, + [SPECIES_PRIMEAPE] = 2, + [SPECIES_GROWLITHE] = 0, + [SPECIES_ARCANINE] = 0, + [SPECIES_POLIWAG] = 0, + [SPECIES_POLIWHIRL] = 0, + [SPECIES_POLIWRATH] = 0, + [SPECIES_ABRA] = 2, + [SPECIES_KADABRA] = 2, + [SPECIES_ALAKAZAM] = 2, + [SPECIES_MACHOP] = 0, + [SPECIES_MACHOKE] = 2, + [SPECIES_MACHAMP] = 0, + [SPECIES_BELLSPROUT] = 1, + [SPECIES_WEEPINBELL] = 1, + [SPECIES_VICTREEBEL] = 1, + [SPECIES_TENTACOOL] = 2, + [SPECIES_TENTACRUEL] = 2, + [SPECIES_GEODUDE] = 1, + [SPECIES_GRAVELER] = 1, + [SPECIES_GOLEM] = 1, + [SPECIES_PONYTA] = 0, + [SPECIES_RAPIDASH] = 0, + [SPECIES_SLOWPOKE] = 0, + [SPECIES_SLOWBRO] = 0, + [SPECIES_MAGNEMITE] = 0, + [SPECIES_MAGNETON] = 0, + [SPECIES_FARFETCHD] = 1, + [SPECIES_DODUO] = 2, + [SPECIES_DODRIO] = 2, + [SPECIES_SEEL] = 2, + [SPECIES_DEWGONG] = 2, + [SPECIES_GRIMER] = 2, + [SPECIES_MUK] = 2, + [SPECIES_SHELLDER] = 2, + [SPECIES_CLOYSTER] = 2, + [SPECIES_GASTLY] = 2, + [SPECIES_HAUNTER] = 2, + [SPECIES_GENGAR] = 2, + [SPECIES_ONIX] = 2, + [SPECIES_DROWZEE] = 2, + [SPECIES_HYPNO] = 1, + [SPECIES_KRABBY] = 2, + [SPECIES_KINGLER] = 2, + [SPECIES_VOLTORB] = 0, + [SPECIES_ELECTRODE] = 0, + [SPECIES_EXEGGCUTE] = 0, + [SPECIES_EXEGGUTOR] = 1, + [SPECIES_CUBONE] = 1, + [SPECIES_MAROWAK] = 1, + [SPECIES_HITMONLEE] = 2, + [SPECIES_HITMONCHAN] = 2, + [SPECIES_LICKITUNG] = 1, + [SPECIES_KOFFING] = 2, + [SPECIES_WEEZING] = 2, + [SPECIES_RHYHORN] = 1, + [SPECIES_RHYDON] = 1, + [SPECIES_CHANSEY] = 0, + [SPECIES_TANGELA] = 0, + [SPECIES_KANGASKHAN] = 1, + [SPECIES_HORSEA] = 0, + [SPECIES_SEADRA] = 0, + [SPECIES_GOLDEEN] = 0, + [SPECIES_SEAKING] = 0, + [SPECIES_STARYU] = 2, + [SPECIES_STARMIE] = 2, + [SPECIES_MR_MIME] = 0, + [SPECIES_SCYTHER] = 1, + [SPECIES_JYNX] = 2, + [SPECIES_ELECTABUZZ] = 1, + [SPECIES_MAGMAR] = 0, + [SPECIES_PINSIR] = 2, + [SPECIES_TAUROS] = 2, + [SPECIES_MAGIKARP] = 0, + [SPECIES_GYARADOS] = 0, + [SPECIES_LAPRAS] = 2, + [SPECIES_DITTO] = 2, + [SPECIES_EEVEE] = 2, + [SPECIES_VAPOREON] = 0, + [SPECIES_JOLTEON] = 0, + [SPECIES_FLAREON] = 0, + [SPECIES_PORYGON] = 0, + [SPECIES_OMANYTE] = 0, + [SPECIES_OMASTAR] = 0, + [SPECIES_KABUTO] = 2, + [SPECIES_KABUTOPS] = 2, + [SPECIES_AERODACTYL] = 0, + [SPECIES_SNORLAX] = 1, + [SPECIES_ARTICUNO] = 0, + [SPECIES_ZAPDOS] = 0, + [SPECIES_MOLTRES] = 0, + [SPECIES_DRATINI] = 0, + [SPECIES_DRAGONAIR] = 0, + [SPECIES_DRAGONITE] = 2, + [SPECIES_MEWTWO] = 2, + [SPECIES_MEW] = 0, + [SPECIES_CHIKORITA] = 1, + [SPECIES_BAYLEEF] = 1, + [SPECIES_MEGANIUM] = 1, + [SPECIES_CYNDAQUIL] = 1, + [SPECIES_QUILAVA] = 1, + [SPECIES_TYPHLOSION] = 1, + [SPECIES_TOTODILE] = 2, + [SPECIES_CROCONAW] = 2, + [SPECIES_FERALIGATR] = 2, + [SPECIES_SENTRET] = 2, + [SPECIES_FURRET] = 2, + [SPECIES_HOOTHOOT] = 2, + [SPECIES_NOCTOWL] = 2, + [SPECIES_LEDYBA] = 0, + [SPECIES_LEDIAN] = 0, + [SPECIES_SPINARAK] = 1, + [SPECIES_ARIADOS] = 0, + [SPECIES_CROBAT] = 2, + [SPECIES_CHINCHOU] = 2, + [SPECIES_LANTURN] = 0, + [SPECIES_PICHU] = 0, + [SPECIES_CLEFFA] = 0, + [SPECIES_IGGLYBUFF] = 1, + [SPECIES_TOGEPI] = 2, + [SPECIES_TOGETIC] = 2, + [SPECIES_NATU] = 0, + [SPECIES_XATU] = 0, + [SPECIES_MAREEP] = 2, + [SPECIES_FLAAFFY] = 0, + [SPECIES_AMPHAROS] = 0, + [SPECIES_BELLOSSOM] = 1, + [SPECIES_MARILL] = 2, + [SPECIES_AZUMARILL] = 2, + [SPECIES_SUDOWOODO] = 1, + [SPECIES_POLITOED] = 1, + [SPECIES_HOPPIP] = 1, + [SPECIES_SKIPLOOM] = 1, + [SPECIES_JUMPLUFF] = 2, + [SPECIES_AIPOM] = 2, + [SPECIES_SUNKERN] = 1, + [SPECIES_SUNFLORA] = 1, + [SPECIES_YANMA] = 1, + [SPECIES_WOOPER] = 0, + [SPECIES_QUAGSIRE] = 0, + [SPECIES_ESPEON] = 2, + [SPECIES_UMBREON] = 2, + [SPECIES_MURKROW] = 2, + [SPECIES_SLOWKING] = 0, + [SPECIES_MISDREAVUS] = 0, + [SPECIES_UNOWN] = 0, + [SPECIES_WOBBUFFET] = 0, + [SPECIES_GIRAFARIG] = 1, + [SPECIES_PINECO] = 0, + [SPECIES_FORRETRESS] = 2, + [SPECIES_DUNSPARCE] = 2, + [SPECIES_GLIGAR] = 2, + [SPECIES_STEELIX] = 0, + [SPECIES_SNUBBULL] = 0, + [SPECIES_GRANBULL] = 2, + [SPECIES_QWILFISH] = 0, + [SPECIES_SCIZOR] = 0, + [SPECIES_SHUCKLE] = 1, + [SPECIES_HERACROSS] = 2, + [SPECIES_SNEASEL] = 0, + [SPECIES_TEDDIURSA] = 0, + [SPECIES_URSARING] = 2, + [SPECIES_SLUGMA] = 0, + [SPECIES_MAGCARGO] = 0, + [SPECIES_SWINUB] = 2, + [SPECIES_PILOSWINE] = 2, + [SPECIES_CORSOLA] = 0, + [SPECIES_REMORAID] = 0, + [SPECIES_OCTILLERY] = 0, + [SPECIES_DELIBIRD] = 0, + [SPECIES_MANTINE] = 2, + [SPECIES_SKARMORY] = 0, + [SPECIES_HOUNDOUR] = 0, + [SPECIES_HOUNDOOM] = 0, + [SPECIES_KINGDRA] = 0, + [SPECIES_PHANPY] = 0, + [SPECIES_DONPHAN] = 0, + [SPECIES_PORYGON2] = 0, + [SPECIES_STANTLER] = 2, + [SPECIES_SMEARGLE] = 1, + [SPECIES_TYROGUE] = 2, + [SPECIES_HITMONTOP] = 2, + [SPECIES_SMOOCHUM] = 1, + [SPECIES_ELEKID] = 1, + [SPECIES_MAGBY] = 1, + [SPECIES_MILTANK] = 1, + [SPECIES_BLISSEY] = 1, + [SPECIES_RAIKOU] = 0, + [SPECIES_ENTEI] = 2, + [SPECIES_SUICUNE] = 0, + [SPECIES_LARVITAR] = 1, + [SPECIES_PUPITAR] = 0, + [SPECIES_TYRANITAR] = 1, + [SPECIES_LUGIA] = 0, + [SPECIES_HO_OH] = 1, + [SPECIES_CELEBI] = 1, + [SPECIES_OLD_UNOWN_B] = 0, + [SPECIES_OLD_UNOWN_C] = 0, + [SPECIES_OLD_UNOWN_D] = 0, + [SPECIES_OLD_UNOWN_E] = 0, + [SPECIES_OLD_UNOWN_F] = 0, + [SPECIES_OLD_UNOWN_G] = 0, + [SPECIES_OLD_UNOWN_H] = 0, + [SPECIES_OLD_UNOWN_I] = 0, + [SPECIES_OLD_UNOWN_J] = 0, + [SPECIES_OLD_UNOWN_K] = 0, + [SPECIES_OLD_UNOWN_L] = 0, + [SPECIES_OLD_UNOWN_M] = 0, + [SPECIES_OLD_UNOWN_N] = 0, + [SPECIES_OLD_UNOWN_O] = 0, + [SPECIES_OLD_UNOWN_P] = 0, + [SPECIES_OLD_UNOWN_Q] = 0, + [SPECIES_OLD_UNOWN_R] = 0, + [SPECIES_OLD_UNOWN_S] = 0, + [SPECIES_OLD_UNOWN_T] = 0, + [SPECIES_OLD_UNOWN_U] = 0, + [SPECIES_OLD_UNOWN_V] = 0, + [SPECIES_OLD_UNOWN_W] = 0, + [SPECIES_OLD_UNOWN_X] = 0, + [SPECIES_OLD_UNOWN_Y] = 0, + [SPECIES_OLD_UNOWN_Z] = 0, + [SPECIES_TREECKO] = 1, + [SPECIES_GROVYLE] = 0, + [SPECIES_SCEPTILE] = 1, + [SPECIES_TORCHIC] = 0, + [SPECIES_COMBUSKEN] = 0, + [SPECIES_BLAZIKEN] = 0, + [SPECIES_MUDKIP] = 0, + [SPECIES_MARSHTOMP] = 0, + [SPECIES_SWAMPERT] = 0, + [SPECIES_POOCHYENA] = 2, + [SPECIES_MIGHTYENA] = 2, + [SPECIES_ZIGZAGOON] = 2, + [SPECIES_LINOONE] = 2, + [SPECIES_WURMPLE] = 0, + [SPECIES_SILCOON] = 2, + [SPECIES_BEAUTIFLY] = 0, + [SPECIES_CASCOON] = 2, + [SPECIES_DUSTOX] = 1, + [SPECIES_LOTAD] = 1, + [SPECIES_LOMBRE] = 1, + [SPECIES_LUDICOLO] = 1, + [SPECIES_SEEDOT] = 1, + [SPECIES_NUZLEAF] = 1, + [SPECIES_SHIFTRY] = 0, + [SPECIES_NINCADA] = 1, + [SPECIES_NINJASK] = 1, + [SPECIES_SHEDINJA] = 1, + [SPECIES_TAILLOW] = 2, + [SPECIES_SWELLOW] = 2, + [SPECIES_SHROOMISH] = 1, + [SPECIES_BRELOOM] = 1, + [SPECIES_SPINDA] = 1, + [SPECIES_WINGULL] = 0, + [SPECIES_PELIPPER] = 0, + [SPECIES_SURSKIT] = 2, + [SPECIES_MASQUERAIN] = 0, + [SPECIES_WAILMER] = 2, + [SPECIES_WAILORD] = 0, + [SPECIES_SKITTY] = 0, + [SPECIES_DELCATTY] = 2, + [SPECIES_KECLEON] = 1, + [SPECIES_BALTOY] = 1, + [SPECIES_CLAYDOL] = 0, + [SPECIES_NOSEPASS] = 0, + [SPECIES_TORKOAL] = 1, + [SPECIES_SABLEYE] = 2, + [SPECIES_BARBOACH] = 0, + [SPECIES_WHISCASH] = 0, + [SPECIES_LUVDISC] = 0, + [SPECIES_CORPHISH] = 0, + [SPECIES_CRAWDAUNT] = 0, + [SPECIES_FEEBAS] = 2, + [SPECIES_MILOTIC] = 0, + [SPECIES_CARVANHA] = 0, + [SPECIES_SHARPEDO] = 0, + [SPECIES_TRAPINCH] = 1, + [SPECIES_VIBRAVA] = 1, + [SPECIES_FLYGON] = 1, + [SPECIES_MAKUHITA] = 2, + [SPECIES_HARIYAMA] = 1, + [SPECIES_ELECTRIKE] = 1, + [SPECIES_MANECTRIC] = 0, + [SPECIES_NUMEL] = 1, + [SPECIES_CAMERUPT] = 0, + [SPECIES_SPHEAL] = 2, + [SPECIES_SEALEO] = 2, + [SPECIES_WALREIN] = 0, + [SPECIES_CACNEA] = 1, + [SPECIES_CACTURNE] = 1, + [SPECIES_SNORUNT] = 2, + [SPECIES_GLALIE] = 0, + [SPECIES_LUNATONE] = 1, + [SPECIES_SOLROCK] = 0, + [SPECIES_AZURILL] = 2, + [SPECIES_SPOINK] = 0, + [SPECIES_GRUMPIG] = 2, + [SPECIES_PLUSLE] = 0, + [SPECIES_MINUN] = 0, + [SPECIES_MAWILE] = 2, + [SPECIES_MEDITITE] = 0, + [SPECIES_MEDICHAM] = 0, + [SPECIES_SWABLU] = 0, + [SPECIES_ALTARIA] = 0, + [SPECIES_WYNAUT] = 0, + [SPECIES_DUSKULL] = 0, + [SPECIES_DUSCLOPS] = 0, + [SPECIES_ROSELIA] = 0, + [SPECIES_SLAKOTH] = 2, + [SPECIES_VIGOROTH] = 2, + [SPECIES_SLAKING] = 1, + [SPECIES_GULPIN] = 1, + [SPECIES_SWALOT] = 2, + [SPECIES_TROPIUS] = 1, + [SPECIES_WHISMUR] = 0, + [SPECIES_LOUDRED] = 2, + [SPECIES_EXPLOUD] = 2, + [SPECIES_CLAMPERL] = 0, + [SPECIES_HUNTAIL] = 0, + [SPECIES_GOREBYSS] = 0, + [SPECIES_ABSOL] = 0, + [SPECIES_SHUPPET] = 0, + [SPECIES_BANETTE] = 0, + [SPECIES_SEVIPER] = 2, + [SPECIES_ZANGOOSE] = 0, + [SPECIES_RELICANTH] = 1, + [SPECIES_ARON] = 2, + [SPECIES_LAIRON] = 2, + [SPECIES_AGGRON] = 2, + [SPECIES_CASTFORM] = 0, + [SPECIES_VOLBEAT] = 0, + [SPECIES_ILLUMISE] = 2, + [SPECIES_LILEEP] = 2, + [SPECIES_CRADILY] = 0, + [SPECIES_ANORITH] = 0, + [SPECIES_ARMALDO] = 0, + [SPECIES_RALTS] = 1, + [SPECIES_KIRLIA] = 1, + [SPECIES_GARDEVOIR] = 1, + [SPECIES_BAGON] = 2, + [SPECIES_SHELGON] = 2, + [SPECIES_SALAMENCE] = 0, + [SPECIES_BELDUM] = 0, + [SPECIES_METANG] = 0, + [SPECIES_METAGROSS] = 0, + [SPECIES_REGIROCK] = 2, + [SPECIES_REGICE] = 2, + [SPECIES_REGISTEEL] = 2, + [SPECIES_KYOGRE] = 2, + [SPECIES_GROUDON] = 0, + [SPECIES_RAYQUAZA] = 1, + [SPECIES_LATIAS] = 0, + [SPECIES_LATIOS] = 2, + [SPECIES_JIRACHI] = 0, + [SPECIES_DEOXYS] = 0, + [SPECIES_CHIMECHO] = 0, + [SPECIES_EGG] = 1, + [SPECIES_UNOWN_B] = 0, + [SPECIES_UNOWN_C] = 0, + [SPECIES_UNOWN_D] = 0, + [SPECIES_UNOWN_E] = 0, + [SPECIES_UNOWN_F] = 0, + [SPECIES_UNOWN_G] = 0, + [SPECIES_UNOWN_H] = 0, + [SPECIES_UNOWN_I] = 0, + [SPECIES_UNOWN_J] = 0, + [SPECIES_UNOWN_K] = 0, + [SPECIES_UNOWN_L] = 0, + [SPECIES_UNOWN_M] = 0, + [SPECIES_UNOWN_N] = 0, + [SPECIES_UNOWN_O] = 0, + [SPECIES_UNOWN_P] = 0, + [SPECIES_UNOWN_Q] = 0, + [SPECIES_UNOWN_R] = 0, + [SPECIES_UNOWN_S] = 0, + [SPECIES_UNOWN_T] = 0, + [SPECIES_UNOWN_U] = 0, + [SPECIES_UNOWN_V] = 0, + [SPECIES_UNOWN_W] = 0, + [SPECIES_UNOWN_X] = 0, + [SPECIES_UNOWN_Y] = 0, + [SPECIES_UNOWN_Z] = 0, + [SPECIES_UNOWN_EMARK] = 0, + [SPECIES_UNOWN_QMARK] = 0 +}; + +const struct SpritePalette gMonIconPaletteTable[] = { + { gMonIconPalettes[0], POKE_ICON_BASE_PAL_TAG + 0 }, + { gMonIconPalettes[1], POKE_ICON_BASE_PAL_TAG + 1 }, + { gMonIconPalettes[2], POKE_ICON_BASE_PAL_TAG + 2 }, + // The following three point outside the gMonIconPalettes array + // and are therefore invalid. Fortunately, they are never used. + { gMonIconPalettes[3], POKE_ICON_BASE_PAL_TAG + 3 }, + { gMonIconPalettes[4], POKE_ICON_BASE_PAL_TAG + 4 }, + { gMonIconPalettes[5], POKE_ICON_BASE_PAL_TAG + 5 } +}; + +static const struct OamData sMonIconOamData = { + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .matrixNum = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0x000, + .priority = 1, + .paletteNum = 0 +}; + +static const union AnimCmd sMonIconAnim_Fast[] = { + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sMonIconAnim_MediumFast[] = { + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sMonIconAnim_MediumSlow[] = { + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(1, 14), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sMonIconAnim_Slow[] = { + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sMonIconAnim_Still[] = { + ANIMCMD_FRAME(0, 29), + ANIMCMD_FRAME(0, 29), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const sMonIconAnims[] = { + sMonIconAnim_Fast, + sMonIconAnim_MediumFast, + sMonIconAnim_MediumSlow, + sMonIconAnim_Slow, + sMonIconAnim_Still +}; + +static const union AffineAnimCmd sMonIconAffineAnim_0[] = { + AFFINEANIMCMD_FRAME(0, 0, 0, 10), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sMonIconAffineAnim_1[] = { + AFFINEANIMCMD_FRAME(-2, -2, 0, 122), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd *const sMonIconAffineAnims[] = { + sMonIconAffineAnim_0, + sMonIconAffineAnim_1 +}; + +static const u16 sSpriteImageSizes[][4] = { + [ST_OAM_SQUARE] = { + [ST_OAM_SIZE_0] = 0x020, + [ST_OAM_SIZE_1] = 0x080, + [ST_OAM_SIZE_2] = 0x200, + [ST_OAM_SIZE_3] = 0x800, + }, + [ST_OAM_H_RECTANGLE] = { + [ST_OAM_SIZE_0] = 0x040, + [ST_OAM_SIZE_1] = 0x080, + [ST_OAM_SIZE_2] = 0x100, + [ST_OAM_SIZE_3] = 0x400, + }, + [ST_OAM_V_RECTANGLE] = { + [ST_OAM_SIZE_0] = 0x040, + [ST_OAM_SIZE_1] = 0x080, + [ST_OAM_SIZE_2] = 0x100, + [ST_OAM_SIZE_3] = 0x400, + }, +}; + +u8 CreateMonIcon(u16 species, SpriteCallback callback, s16 x, s16 y, u8 subpriority, u32 personality, bool32 extra) +{ + u8 spriteId; + struct MonIconSpriteTemplate iconTemplate = + { + .oam = &sMonIconOamData, + .image = GetMonIconPtr(species, personality, extra), + .anims = sMonIconAnims, + .affineAnims = sMonIconAffineAnims, + .callback = callback, + .paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species], + }; + + if (species > NUM_SPECIES) + iconTemplate.paletteTag = POKE_ICON_BASE_PAL_TAG; + + spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority); + + UpdateMonIconFrame(&gSprites[spriteId]); + + return spriteId; +} + +u8 CreateMonIcon_HandleDeoxys(u16 species, SpriteCallback callback, s16 x, s16 y, u8 subpriority, bool32 extra) +{ + u8 spriteId; + struct MonIconSpriteTemplate iconTemplate = + { + .oam = &sMonIconOamData, + .image = NULL, + .anims = sMonIconAnims, + .affineAnims = sMonIconAffineAnims, + .callback = callback, + .paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species], + }; + + iconTemplate.image = GetMonIconTiles(species, extra); + spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority); + + UpdateMonIconFrame(&gSprites[spriteId]); + + return spriteId; +} + +u16 GetIconSpecies(u16 species, u32 personality) +{ + u16 result; + + if (species == SPECIES_UNOWN) + { + u16 letter = GetUnownLetterByPersonality(personality); + if (letter == 0) + letter = SPECIES_UNOWN; + else + letter += (SPECIES_UNOWN_B - 1); + result = letter; + } + else + { + if (species > NUM_SPECIES) + result = SPECIES_NONE; + else + result = species; + } + + return result; +} + +u16 GetUnownLetterByPersonality(u32 personality) +{ + if (!personality) + return 0; + else + return (((personality & 0x3000000) >> 18) | ((personality & 0x30000) >> 12) | ((personality & 0x300) >> 6) | (personality & 0x3)) % 0x1C; +} + +u16 MailSpeciesToIconSpecies(u16 species) +{ + u16 value; + + if (MailSpeciesToSpecies(species, &value) == SPECIES_UNOWN) + { + if (value == 0) + value += SPECIES_UNOWN; + else + value += (SPECIES_UNOWN_B - 1); + return value; + } + else + { + if (species > (SPECIES_UNOWN_B - 1)) + species = SPECIES_NONE; + return GetIconSpecies(species, 0); + } +} + +const u8 *GetMonIconTiles(u16 species, bool32 extra) +{ + const u8 *iconSprite = gMonIconTable[species]; + if (species == SPECIES_DEOXYS && extra == TRUE) + iconSprite += 0x400; + return iconSprite; +} + +const u8 *GetMonIconPtr(u16 species, u32 personality, bool32 extra) +{ + return GetMonIconTiles(GetIconSpecies(species, personality), extra); +} + +void DestroyMonIcon(struct Sprite * sprite) +{ + DestroyMonIconInternal(sprite); +} + +void LoadMonIconPalettes(void) +{ + u8 i; + for (i = 0; i < NELEMS(gMonIconPaletteTable); i++) + LoadSpritePalette(&gMonIconPaletteTable[i]); +} + +void SafeLoadMonIconPalette(u16 species) +{ + u8 palIndex; + if (species > NUM_SPECIES) + species = SPECIES_NONE; + palIndex = gMonIconPaletteIndices[species]; + if (IndexOfSpritePaletteTag(gMonIconPaletteTable[palIndex].tag) == 0xFF) + LoadSpritePalette(&gMonIconPaletteTable[palIndex]); +} + +void LoadMonIconPalette(u16 species) +{ + u8 palIndex; + palIndex = gMonIconPaletteIndices[species]; + if (IndexOfSpritePaletteTag(gMonIconPaletteTable[palIndex].tag) == 0xFF) + LoadSpritePalette(&gMonIconPaletteTable[palIndex]); +} + +void FreeMonIconPalettes(void) +{ + u8 i; + for (i = 0; i < 6; i++) + FreeSpritePaletteByTag(gMonIconPaletteTable[i].tag); +} + +void SafeFreeMonIconPalette(u16 species) +{ + u8 palIndex; + if (species > NUM_SPECIES) + species = SPECIES_NONE; + palIndex = gMonIconPaletteIndices[species]; + FreeSpritePaletteByTag(gMonIconPaletteTable[palIndex].tag); +} + +void FreeMonIconPalette(u16 species) +{ + u8 palIndex; + palIndex = gMonIconPaletteIndices[species]; + FreeSpritePaletteByTag(gMonIconPaletteTable[palIndex].tag); +} + +void SpriteCB_MonIcon(struct Sprite * sprite) +{ + UpdateMonIconFrame(sprite); +} + +void LoadMonIconPalettesAt(u16 offset) +{ + int i; + if (offset <= 0x100 - 0x60) + { + for (i = 0; i < (int)NELEMS(gMonIconPaletteTable); i++) + { + LoadPalette(gMonIconPaletteTable[i].data, offset, 0x20); + offset += 0x10; + } + } +} + +const u16 *GetValidMonIconPalettePtr(u16 species) +{ + if (species > NUM_SPECIES) + species = SPECIES_NONE; + return gMonIconPaletteTable[gMonIconPaletteIndices[species]].data; +} + +u8 GetValidMonIconPalIndex(u16 species) +{ + if (species > NUM_SPECIES) + species = SPECIES_NONE; + return gMonIconPaletteIndices[species]; +} + +u8 GetMonIconPaletteIndexFromSpecies(u16 species) +{ + return gMonIconPaletteIndices[species]; +} + +u8 UpdateMonIconFrame(struct Sprite * sprite) +{ + u8 result = 0; + + if (sprite->animDelayCounter == 0) + { + s16 frame = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.imageValue; + + switch (frame) + { + case -1: + break; + case -2: + sprite->animCmdIndex = 0; + break; + default: + RequestSpriteCopy( + // pointer arithmetic is needed to get the correct pointer to perform the sprite copy on. + // because sprite->images is a struct def, it has to be casted to (u8 *) before any + // arithmetic can be performed. + (u8 *)sprite->images + (sSpriteImageSizes[sprite->oam.shape][sprite->oam.size] * frame), + (u8 *)(OBJ_VRAM0 + sprite->oam.tileNum * TILE_SIZE_4BPP), + sSpriteImageSizes[sprite->oam.shape][sprite->oam.size]); + sprite->animDelayCounter = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.duration & 0xFF; + sprite->animCmdIndex++; + result = sprite->animCmdIndex; + break; + } + } + else + { + sprite->animDelayCounter--; + } + return result; +} + +static u8 CreateMonIconSprite(const struct MonIconSpriteTemplate * iconTemplate, s16 x, s16 y, u8 subpriority) +{ + u8 spriteId; + + struct SpriteFrameImage image = { NULL, sSpriteImageSizes[iconTemplate->oam->shape][iconTemplate->oam->size] }; + + struct SpriteTemplate spriteTemplate = + { + .tileTag = SPRITE_INVALID_TAG, + .paletteTag = iconTemplate->paletteTag, + .oam = iconTemplate->oam, + .anims = iconTemplate->anims, + .images = &image, + .affineAnims = iconTemplate->affineAnims, + .callback = iconTemplate->callback, + }; + + spriteId = CreateSprite(&spriteTemplate, x, y, subpriority); + gSprites[spriteId].animPaused = TRUE; + gSprites[spriteId].animBeginning = FALSE; + gSprites[spriteId].images = (const struct SpriteFrameImage *)iconTemplate->image; + return spriteId; +} + +static void DestroyMonIconInternal(struct Sprite * sprite) +{ + struct SpriteFrameImage image = { NULL, sSpriteImageSizes[sprite->oam.shape][sprite->oam.size] }; + sprite->images = ℑ + DestroySprite(sprite); +} + +void MonIcon_SetAnim(struct Sprite * sprite, u8 animNum) +{ + sprite->animNum = animNum; + sprite->animDelayCounter = 0; + sprite->animCmdIndex = 0; +} diff --git a/tools/br_ips/br_ips.c b/tools/br_ips/br_ips.c index 440705cab..d144c5f39 100644 --- a/tools/br_ips/br_ips.c +++ b/tools/br_ips/br_ips.c @@ -1,4 +1,3 @@ -#define _POSIX_C_SOURCE 200808L // Don't use GNU getline #include <stdio.h> #include <stdint.h> #include <stdlib.h> @@ -20,6 +19,7 @@ static const char HELP[] = "br_ips\n" "Options:\n" " -h - show this message and exit\n"; +#if !defined(__CYGWIN__) && !defined(__APPLE__) && (_POSIX_C_SOURCE < 200809L || !_GNU_SOURCE) static int getline(char ** lineptr, size_t * n, FILE * stream) { // Static implementation of GNU getline int i = 0; @@ -49,6 +49,7 @@ static int getline(char ** lineptr, size_t * n, FILE * stream) { buf[i] = 0; return i; } +#endif static void getIncbinsFromFile(hunk_t ** hunks, size_t * num, size_t * maxnum, const char * fname, char ** strbuf, size_t * buffersize) { // Recursively find incbinned segments and encode them as hunks. |