From fb756fb0e35334f563642442c254d5073dd65f72 Mon Sep 17 00:00:00 2001 From: YamaArashi Date: Sun, 1 Jan 2017 21:10:10 -0800 Subject: name util functions --- asm/battle_811DA74.s | 2 +- asm/battle_anim_80CA710.s | 2 +- asm/battle_anim_813F0F4.s | 4 +- asm/contest.s | 6 +- asm/mystery_event_script.s | 4 +- asm/party_menu.s | 4 +- asm/pokeball.s | 2 +- asm/rom_800D42C.s | 10 +- asm/rom_8040EB4.s | 478 --------------------------------------------- asm/rom_8077ABC.s | 2 +- asm/rom_81258BC.s | 2 +- asm/smokescreen.s | 2 +- asm/trade.s | 2 +- asm/util.s | 478 +++++++++++++++++++++++++++++++++++++++++++++ ld_script.txt | 2 +- 15 files changed, 500 insertions(+), 500 deletions(-) delete mode 100644 asm/rom_8040EB4.s create mode 100644 asm/util.s diff --git a/asm/battle_811DA74.s b/asm/battle_811DA74.s index 4ed333ed8..daba0579b 100644 --- a/asm/battle_811DA74.s +++ b/asm/battle_811DA74.s @@ -3628,7 +3628,7 @@ sub_811F864: @ 811F864 lsrs r0, 16 mov r8, r0 ldr r0, _0811F9B4 @ =sub_80312F0 - bl object_new_hidden_with_callback + bl CreateInvisibleSpriteWithCallback ldr r1, _0811F9B8 @ =gUnknown_0300434C mov r9, r1 add r9, r6 diff --git a/asm/battle_anim_80CA710.s b/asm/battle_anim_80CA710.s index 3a92f6674..58064e741 100644 --- a/asm/battle_anim_80CA710.s +++ b/asm/battle_anim_80CA710.s @@ -18176,7 +18176,7 @@ _080D3240: adds r0, r6, 0 bl obj_translate_based_on_private_1_2_3_4 ldr r0, _080D32DC @ =SpriteCallbackDummy - bl object_new_hidden_with_callback + bl CreateInvisibleSpriteWithCallback adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 diff --git a/asm/battle_anim_813F0F4.s b/asm/battle_anim_813F0F4.s index 1c8188a3d..1fb399349 100644 --- a/asm/battle_anim_813F0F4.s +++ b/asm/battle_anim_813F0F4.s @@ -87,12 +87,12 @@ unref_sub_813F0F4: @ 813F0F4 lsls r6, 24 lsrs r6, 24 ldr r0, _0813F2D8 @ =SpriteCallbackDummy - bl object_new_hidden_with_callback + bl CreateInvisibleSpriteWithCallback lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x14] ldr r0, _0813F2D8 @ =SpriteCallbackDummy - bl object_new_hidden_with_callback + bl CreateInvisibleSpriteWithCallback lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x18] diff --git a/asm/contest.s b/asm/contest.s index 78354b363..08a303366 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -11237,7 +11237,7 @@ sub_80B09E4: @ 80B09E4 movs r1, 0x3 movs r2, 0xC0 lsls r2, 19 - bl sub_8040F80 + bl CopySpriteTiles ldrb r0, [r7] lsls r3, r0, 2 adds r3, r0 @@ -11253,7 +11253,7 @@ sub_80B09E4: @ 80B09E4 movs r1, 0x3 movs r2, 0xC0 lsls r2, 19 - bl sub_8040F80 + bl CopySpriteTiles ldrh r0, [r4, 0x4] lsls r0, 22 lsrs r0, 17 @@ -15223,7 +15223,7 @@ _080B2928: .4byte gContestMons sub_80B292C: @ 80B292C push {lr} ldr r0, _080B2958 @ =SpriteCallbackDummy - bl object_new_hidden_with_callback + bl CreateInvisibleSpriteWithCallback ldr r1, _080B295C @ =gUnknown_02024BE0 strb r0, [r1, 0x3] ldr r0, _080B2960 @ =gUnknown_02024C08 diff --git a/asm/mystery_event_script.s b/asm/mystery_event_script.s index d182ebd87..15e9d35a7 100644 --- a/asm/mystery_event_script.s +++ b/asm/mystery_event_script.s @@ -82,7 +82,7 @@ unref_sub_812620C: @ 812620C adds r1, r5 subs r1, r4 adds r0, r4, 0 - bl sub_8041174 + bl CalcCRC16 adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 @@ -812,7 +812,7 @@ sub_81267C0: @ 81267C0 adds r1, r0 subs r1, r4 adds r0, r4, 0 - bl sub_8041174 + bl CalcCRC16 lsls r0, 16 lsrs r0, 16 cmp r5, r0 diff --git a/asm/party_menu.s b/asm/party_menu.s index e435b3d92..a47422dc8 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -1861,7 +1861,7 @@ sub_806BD58: @ 806BD58 lsls r4, 24 lsrs r4, 24 ldr r0, _0806BD7C @ =SpriteCallbackDummy - bl object_new_hidden_with_callback + bl CreateInvisibleSpriteWithCallback adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -3606,7 +3606,7 @@ sub_806CA60: @ 806CA60 movs r1, 0 bl CreateTask ldr r0, _0806CAE8 @ =SpriteCallbackDummy - bl object_new_hidden_with_callback + bl CreateInvisibleSpriteWithCallback strb r0, [r5, 0x1] ldrb r1, [r5, 0x1] adds r0, r4, 0 diff --git a/asm/pokeball.s b/asm/pokeball.s index 45d0895ea..b596494ef 100644 --- a/asm/pokeball.s +++ b/asm/pokeball.s @@ -2604,7 +2604,7 @@ sub_8047858: @ 8047858 lsrs r4, 24 ldr r5, _08047890 @ =oamc_804BEB4 adds r0, r5, 0 - bl object_new_hidden_with_callback + bl CreateInvisibleSpriteWithCallback lsls r0, 24 lsrs r0, 24 ldr r2, _08047894 @ =gSprites diff --git a/asm/rom_800D42C.s b/asm/rom_800D42C.s index d8760c47a..4674037d6 100644 --- a/asm/rom_800D42C.s +++ b/asm/rom_800D42C.s @@ -6209,7 +6209,7 @@ _0801065A: cmp r0, 0 bne _080106FA ldr r0, _0801069C @ =objc_dp11b_pingpong - bl object_new_hidden_with_callback + bl CreateInvisibleSpriteWithCallback lsls r0, 24 lsrs r5, r0, 24 mov r0, r8 @@ -20796,7 +20796,7 @@ _08017DC0: b _08017F94 _08017DDC: lsrs r0, r1, 16 - bl sub_804114C + bl CountTrailingZeroBits ldr r1, _08017E04 @ =0x02000000 ldr r7, _08017E08 @ =0x00016003 adds r1, r7 @@ -67573,7 +67573,7 @@ sub_802F934: @ 802F934 lsrs r0, 16 mov r8, r0 ldr r0, _0802FA84 @ =sub_80312F0 - bl object_new_hidden_with_callback + bl CreateInvisibleSpriteWithCallback ldr r1, _0802FA88 @ =gUnknown_0300434C mov r9, r1 add r9, r6 @@ -77414,7 +77414,7 @@ sub_803495C: @ 803495C lsrs r0, 16 mov r8, r0 ldr r0, _08034AC4 @ =sub_80312F0 - bl object_new_hidden_with_callback + bl CreateInvisibleSpriteWithCallback ldr r1, _08034AC8 @ =gUnknown_0300434C mov r10, r1 add r10, r6 @@ -86633,7 +86633,7 @@ sub_8039430: @ 8039430 lsrs r0, 16 mov r8, r0 ldr r0, _08039598 @ =sub_80312F0 - bl object_new_hidden_with_callback + bl CreateInvisibleSpriteWithCallback ldr r1, _0803959C @ =gUnknown_0300434C mov r10, r1 add r10, r6 diff --git a/asm/rom_8040EB4.s b/asm/rom_8040EB4.s deleted file mode 100644 index cf7780f78..000000000 --- a/asm/rom_8040EB4.s +++ /dev/null @@ -1,478 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start object_new_hidden_with_callback -object_new_hidden_with_callback: @ 8040EB4 - push {r4-r6,lr} - adds r6, r0, 0 - ldr r0, _08040EE8 @ =gSpriteTemplate_82087AC - movs r1, 0xF8 - movs r2, 0xA8 - movs r3, 0xE - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r5, _08040EEC @ =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r3, r2, r5 - adds r3, 0x3E - ldrb r1, [r3] - movs r4, 0x4 - orrs r1, r4 - strb r1, [r3] - adds r5, 0x1C - adds r2, r5 - str r6, [r2] - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08040EE8: .4byte gSpriteTemplate_82087AC -_08040EEC: .4byte gSprites - thumb_func_end object_new_hidden_with_callback - - thumb_func_start StoreWordInTwoHalfwords -StoreWordInTwoHalfwords: @ 8040EF0 - strh r1, [r0] - lsrs r1, 16 - strh r1, [r0, 0x2] - bx lr - thumb_func_end StoreWordInTwoHalfwords - - thumb_func_start LoadWordFromTwoHalfwords -LoadWordFromTwoHalfwords: @ 8040EF8 - ldrh r2, [r0] - movs r3, 0x2 - ldrsh r0, [r0, r3] - lsls r0, 16 - orrs r2, r0 - str r2, [r1] - bx lr - thumb_func_end LoadWordFromTwoHalfwords - - thumb_func_start sub_8040F08 -sub_8040F08: @ 8040F08 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r4, [sp, 0x18] - ldr r5, [sp, 0x1C] - ldr r6, [sp, 0x20] - ldr r7, [sp, 0x24] - mov r8, r7 - str r1, [r0] - str r2, [r0, 0x4] - strh r3, [r0, 0x8] - strh r4, [r0, 0xA] - strh r5, [r0, 0xC] - strh r6, [r0, 0xE] - mov r1, r8 - strh r1, [r0, 0x10] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8040F08 - - thumb_func_start sub_8040F34 -sub_8040F34: @ 8040F34 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x24 - mov r8, r0 - ldr r0, [sp, 0x38] - ldr r4, [sp, 0x3C] - ldr r5, [sp, 0x40] - ldr r6, [sp, 0x44] - lsls r6, 16 - lsrs r6, 16 - lsls r3, 16 - asrs r3, 16 - lsls r0, 16 - asrs r0, 16 - str r0, [sp] - lsls r4, 16 - asrs r4, 16 - str r4, [sp, 0x4] - lsls r5, 16 - asrs r5, 16 - str r5, [sp, 0x8] - str r6, [sp, 0xC] - add r0, sp, 0x10 - bl sub_8040F08 - add r0, sp, 0x10 - mov r1, r8 - movs r2, 0x1 - bl BgAffineSet - add sp, 0x24 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8040F34 - - thumb_func_start sub_8040F80 -sub_8040F80: @ 8040F80 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x3C - str r2, [sp, 0x20] - adds r4, r3, 0 - ldr r7, [sp, 0x5C] - lsls r0, 24 - lsls r1, 24 - ldr r2, _08041008 @ =gUnknown_082087C4 - lsrs r1, 23 - lsrs r0, 21 - adds r1, r0 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - str r0, [sp, 0x24] - adds r1, r2 - ldrb r1, [r1] - str r1, [sp, 0x28] - movs r1, 0 - cmp r1, r0 - bcc _08040FB4 - b _08041136 -_08040FB4: - movs r0, 0x20 - ldr r2, [sp, 0x28] - subs r0, r2 - lsls r0, 1 - str r0, [sp, 0x2C] -_08040FBE: - movs r2, 0 - adds r1, 0x1 - str r1, [sp, 0x34] - ldr r3, [sp, 0x28] - cmp r2, r3 - bcc _08040FCC - b _08041124 -_08040FCC: - ldr r0, _0804100C @ =0x040000d4 - mov r8, r0 -_08040FD0: - ldrh r1, [r4] - ldr r0, _08041010 @ =0x000003ff - ands r0, r1 - lsls r0, 5 - mov r12, r0 - movs r0, 0xC0 - lsls r0, 4 - ands r0, r1 - mov r3, sp - strh r1, [r3, 0x38] - cmp r0, 0 - bne _08041018 - ldr r0, [sp, 0x20] - add r0, r12 - mov r1, r8 - str r0, [r1] - str r7, [r1, 0x4] - ldr r3, _08041014 @ =0x84000008 - str r3, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r4, 0x2 - str r4, [sp, 0x30] - adds r7, 0x20 - mov r10, r7 - adds r2, 0x1 - mov r9, r2 - b _08041112 - .align 2, 0 -_08041008: .4byte gUnknown_082087C4 -_0804100C: .4byte 0x040000d4 -_08041010: .4byte 0x000003ff -_08041014: .4byte 0x84000008 -_08041018: - movs r1, 0x80 - lsls r1, 4 - cmp r0, r1 - bne _08041068 - movs r3, 0 - adds r4, 0x2 - str r4, [sp, 0x30] - movs r0, 0x20 - adds r0, r7 - mov r10, r0 - adds r2, 0x1 - mov r9, r2 - ldr r4, _08041060 @ =0x040000d4 - ldr r6, _08041064 @ =0x84000001 - movs r5, 0x7 -_08041036: - lsls r2, r3, 24 - asrs r2, 24 - subs r0, r5, r2 - lsls r0, 2 - add r0, r12 - ldr r1, [sp, 0x20] - adds r0, r1, r0 - lsls r1, r2, 2 - adds r1, r7, r1 - str r0, [r4] - str r1, [r4, 0x4] - str r6, [r4, 0x8] - ldr r0, [r4, 0x8] - adds r2, 0x1 - lsls r2, 24 - lsrs r3, r2, 24 - asrs r2, 24 - cmp r2, 0x7 - ble _08041036 - b _08041112 - .align 2, 0 -_08041060: .4byte 0x040000d4 -_08041064: .4byte 0x84000001 -_08041068: - movs r3, 0 - adds r4, 0x2 - str r4, [sp, 0x30] - movs r0, 0x20 - adds r0, r7 - mov r10, r0 - adds r2, 0x1 - mov r9, r2 -_08041078: - movs r2, 0 - lsls r4, r3, 24 - lsls r0, r4, 2 - lsrs r0, 24 - adds r6, r0, 0x3 - mov r1, r12 - adds r5, r1, r0 -_08041086: - lsls r1, r2, 24 - asrs r1, 24 - subs r0, r6, r1 - mov r2, sp - adds r3, r2, r0 - adds r0, r5, r1 - ldr r2, [sp, 0x20] - adds r0, r2, r0 - ldrb r2, [r0] - movs r0, 0xF - ands r0, r2 - lsls r0, 4 - lsrs r2, 4 - orrs r0, r2 - strb r0, [r3] - adds r1, 0x1 - lsls r1, 24 - lsrs r2, r1, 24 - asrs r1, 24 - cmp r1, 0x3 - ble _08041086 - movs r3, 0x80 - lsls r3, 17 - adds r0, r4, r3 - lsrs r3, r0, 24 - asrs r0, 24 - cmp r0, 0x7 - ble _08041078 - movs r0, 0x80 - lsls r0, 4 - mov r1, sp - ldrh r1, [r1, 0x38] - ands r0, r1 - cmp r0, 0 - beq _08041104 - movs r3, 0 - ldr r4, _080410FC @ =0x040000d4 - ldr r6, _08041100 @ =0x84000001 - movs r5, 0x7 -_080410D4: - lsls r1, r3, 24 - asrs r1, 24 - subs r0, r5, r1 - lsls r0, 2 - mov r3, sp - adds r2, r3, r0 - lsls r0, r1, 2 - adds r0, r7, r0 - str r2, [r4] - str r0, [r4, 0x4] - str r6, [r4, 0x8] - ldr r0, [r4, 0x8] - adds r1, 0x1 - lsls r1, 24 - lsrs r3, r1, 24 - asrs r1, 24 - cmp r1, 0x7 - ble _080410D4 - b _08041112 - .align 2, 0 -_080410FC: .4byte 0x040000d4 -_08041100: .4byte 0x84000001 -_08041104: - mov r0, sp - mov r1, r8 - str r0, [r1] - str r7, [r1, 0x4] - ldr r2, _08041148 @ =0x84000008 - str r2, [r1, 0x8] - ldr r0, [r1, 0x8] -_08041112: - ldr r4, [sp, 0x30] - mov r7, r10 - mov r3, r9 - lsls r0, r3, 24 - lsrs r2, r0, 24 - ldr r0, [sp, 0x28] - cmp r2, r0 - bcs _08041124 - b _08040FD0 -_08041124: - ldr r1, [sp, 0x2C] - adds r4, r1 - ldr r2, [sp, 0x34] - lsls r0, r2, 24 - lsrs r1, r0, 24 - ldr r3, [sp, 0x24] - cmp r1, r3 - bcs _08041136 - b _08040FBE -_08041136: - add sp, 0x3C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08041148: .4byte 0x84000008 - thumb_func_end sub_8040F80 - - thumb_func_start sub_804114C -sub_804114C: @ 804114C - push {lr} - adds r2, r0, 0 - movs r1, 0 - movs r3, 0x1 -_08041154: - adds r0, r2, 0 - ands r0, r3 - cmp r0, 0 - beq _08041160 - adds r0, r1, 0 - b _0804116E -_08041160: - lsrs r2, 1 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x1F - bls _08041154 - movs r0, 0 -_0804116E: - pop {r1} - bx r1 - thumb_func_end sub_804114C - - thumb_func_start sub_8041174 -sub_8041174: @ 8041174 - push {r4-r7,lr} - adds r7, r0, 0 - adds r4, r1, 0 - ldr r2, _080411A4 @ =0x00001121 - movs r3, 0 - cmp r3, r4 - bge _080411C0 - movs r6, 0x1 - ldr r0, _080411A8 @ =0x00008408 - adds r5, r0, 0 -_08041188: - adds r0, r7, r3 - ldrb r0, [r0] - eors r2, r0 - movs r1, 0 - adds r3, 0x1 -_08041192: - adds r0, r2, 0 - ands r0, r6 - cmp r0, 0 - beq _080411AC - lsrs r0, r2, 1 - eors r0, r5 - lsls r0, 16 - lsrs r2, r0, 16 - b _080411AE - .align 2, 0 -_080411A4: .4byte 0x00001121 -_080411A8: .4byte 0x00008408 -_080411AC: - lsrs r2, 1 -_080411AE: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x7 - bls _08041192 - lsls r0, r3, 16 - lsrs r3, r0, 16 - cmp r3, r4 - blt _08041188 -_080411C0: - mvns r0, r2 - lsls r0, 16 - lsrs r0, 16 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8041174 - - thumb_func_start unref_sub_80411CC -unref_sub_80411CC: @ 80411CC - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldr r2, _08041208 @ =0x00001121 - movs r3, 0 - cmp r3, r4 - bge _080411FA - ldr r6, _0804120C @ =gCrc16Table -_080411DC: - lsrs r1, r2, 8 - adds r0, r5, r3 - ldrb r0, [r0] - eors r2, r0 - lsls r0, r2, 24 - lsrs r0, 23 - adds r0, r6 - ldrh r0, [r0] - adds r2, r0, 0 - eors r2, r1 - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, r4 - blt _080411DC -_080411FA: - mvns r0, r2 - lsls r0, 16 - lsrs r0, 16 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08041208: .4byte 0x00001121 -_0804120C: .4byte gCrc16Table - thumb_func_end unref_sub_80411CC - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/rom_8077ABC.s b/asm/rom_8077ABC.s index c05bb5aee..13be8444a 100644 --- a/asm/rom_8077ABC.s +++ b/asm/rom_8077ABC.s @@ -5657,7 +5657,7 @@ sub_807A4A0: @ 807A4A0 lsrs r6, 24 ldr r0, _0807A538 @ =SpriteCallbackDummy mov r10, r0 - bl object_new_hidden_with_callback + bl CreateInvisibleSpriteWithCallback mov r8, r0 mov r0, r8 lsls r0, 24 diff --git a/asm/rom_81258BC.s b/asm/rom_81258BC.s index 20b36709b..ac09ef93a 100644 --- a/asm/rom_81258BC.s +++ b/asm/rom_81258BC.s @@ -29815,7 +29815,7 @@ sub_81398BC: @ 81398BC lsrs r0, 16 mov r8, r0 ldr r0, _08139A10 @ =sub_80312F0 - bl object_new_hidden_with_callback + bl CreateInvisibleSpriteWithCallback ldr r1, _08139A14 @ =gUnknown_0300434C mov r9, r1 add r9, r6 diff --git a/asm/smokescreen.s b/asm/smokescreen.s index 1c5d9f2e9..7f4aee269 100644 --- a/asm/smokescreen.s +++ b/asm/smokescreen.s @@ -32,7 +32,7 @@ sub_8046234: @ 8046234 bl LoadCompressedObjectPalette _08046266: ldr r0, _08046378 @ =sub_8046388 - bl object_new_hidden_with_callback + bl CreateInvisibleSpriteWithCallback mov r8, r0 mov r0, r8 lsls r0, 24 diff --git a/asm/trade.s b/asm/trade.s index 9c3ab1e63..d645807e1 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -6539,7 +6539,7 @@ sub_804B128: @ 804B128 ldrh r0, [r0] str r0, [sp, 0xC] add r0, sp, 0x10 - bl sub_8040F34 + bl DoBgAffineSet ldr r1, _0804B1B8 @ =REG_BG2PA add r0, sp, 0x10 ldrh r0, [r0] diff --git a/asm/util.s b/asm/util.s new file mode 100644 index 000000000..f204eac43 --- /dev/null +++ b/asm/util.s @@ -0,0 +1,478 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start CreateInvisibleSpriteWithCallback +CreateInvisibleSpriteWithCallback: @ 8040EB4 + push {r4-r6,lr} + adds r6, r0, 0 + ldr r0, _08040EE8 @ =gSpriteTemplate_82087AC + movs r1, 0xF8 + movs r2, 0xA8 + movs r3, 0xE + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + ldr r5, _08040EEC @ =gSprites + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r3, r2, r5 + adds r3, 0x3E + ldrb r1, [r3] + movs r4, 0x4 + orrs r1, r4 + strb r1, [r3] + adds r5, 0x1C + adds r2, r5 + str r6, [r2] + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08040EE8: .4byte gSpriteTemplate_82087AC +_08040EEC: .4byte gSprites + thumb_func_end CreateInvisibleSpriteWithCallback + + thumb_func_start StoreWordInTwoHalfwords +StoreWordInTwoHalfwords: @ 8040EF0 + strh r1, [r0] + lsrs r1, 16 + strh r1, [r0, 0x2] + bx lr + thumb_func_end StoreWordInTwoHalfwords + + thumb_func_start LoadWordFromTwoHalfwords +LoadWordFromTwoHalfwords: @ 8040EF8 + ldrh r2, [r0] + movs r3, 0x2 + ldrsh r0, [r0, r3] + lsls r0, 16 + orrs r2, r0 + str r2, [r1] + bx lr + thumb_func_end LoadWordFromTwoHalfwords + + thumb_func_start SetBgAffineStruct +SetBgAffineStruct: @ 8040F08 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r4, [sp, 0x18] + ldr r5, [sp, 0x1C] + ldr r6, [sp, 0x20] + ldr r7, [sp, 0x24] + mov r8, r7 + str r1, [r0] + str r2, [r0, 0x4] + strh r3, [r0, 0x8] + strh r4, [r0, 0xA] + strh r5, [r0, 0xC] + strh r6, [r0, 0xE] + mov r1, r8 + strh r1, [r0, 0x10] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end SetBgAffineStruct + + thumb_func_start DoBgAffineSet +DoBgAffineSet: @ 8040F34 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x24 + mov r8, r0 + ldr r0, [sp, 0x38] + ldr r4, [sp, 0x3C] + ldr r5, [sp, 0x40] + ldr r6, [sp, 0x44] + lsls r6, 16 + lsrs r6, 16 + lsls r3, 16 + asrs r3, 16 + lsls r0, 16 + asrs r0, 16 + str r0, [sp] + lsls r4, 16 + asrs r4, 16 + str r4, [sp, 0x4] + lsls r5, 16 + asrs r5, 16 + str r5, [sp, 0x8] + str r6, [sp, 0xC] + add r0, sp, 0x10 + bl SetBgAffineStruct + add r0, sp, 0x10 + mov r1, r8 + movs r2, 0x1 + bl BgAffineSet + add sp, 0x24 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end DoBgAffineSet + + thumb_func_start CopySpriteTiles +CopySpriteTiles: @ 8040F80 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x3C + str r2, [sp, 0x20] + adds r4, r3, 0 + ldr r7, [sp, 0x5C] + lsls r0, 24 + lsls r1, 24 + ldr r2, _08041008 @ =gUnknown_082087C4 + lsrs r1, 23 + lsrs r0, 21 + adds r1, r0 + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + str r0, [sp, 0x24] + adds r1, r2 + ldrb r1, [r1] + str r1, [sp, 0x28] + movs r1, 0 + cmp r1, r0 + bcc _08040FB4 + b _08041136 +_08040FB4: + movs r0, 0x20 + ldr r2, [sp, 0x28] + subs r0, r2 + lsls r0, 1 + str r0, [sp, 0x2C] +_08040FBE: + movs r2, 0 + adds r1, 0x1 + str r1, [sp, 0x34] + ldr r3, [sp, 0x28] + cmp r2, r3 + bcc _08040FCC + b _08041124 +_08040FCC: + ldr r0, _0804100C @ =0x040000d4 + mov r8, r0 +_08040FD0: + ldrh r1, [r4] + ldr r0, _08041010 @ =0x000003ff + ands r0, r1 + lsls r0, 5 + mov r12, r0 + movs r0, 0xC0 + lsls r0, 4 + ands r0, r1 + mov r3, sp + strh r1, [r3, 0x38] + cmp r0, 0 + bne _08041018 + ldr r0, [sp, 0x20] + add r0, r12 + mov r1, r8 + str r0, [r1] + str r7, [r1, 0x4] + ldr r3, _08041014 @ =0x84000008 + str r3, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r4, 0x2 + str r4, [sp, 0x30] + adds r7, 0x20 + mov r10, r7 + adds r2, 0x1 + mov r9, r2 + b _08041112 + .align 2, 0 +_08041008: .4byte gUnknown_082087C4 +_0804100C: .4byte 0x040000d4 +_08041010: .4byte 0x000003ff +_08041014: .4byte 0x84000008 +_08041018: + movs r1, 0x80 + lsls r1, 4 + cmp r0, r1 + bne _08041068 + movs r3, 0 + adds r4, 0x2 + str r4, [sp, 0x30] + movs r0, 0x20 + adds r0, r7 + mov r10, r0 + adds r2, 0x1 + mov r9, r2 + ldr r4, _08041060 @ =0x040000d4 + ldr r6, _08041064 @ =0x84000001 + movs r5, 0x7 +_08041036: + lsls r2, r3, 24 + asrs r2, 24 + subs r0, r5, r2 + lsls r0, 2 + add r0, r12 + ldr r1, [sp, 0x20] + adds r0, r1, r0 + lsls r1, r2, 2 + adds r1, r7, r1 + str r0, [r4] + str r1, [r4, 0x4] + str r6, [r4, 0x8] + ldr r0, [r4, 0x8] + adds r2, 0x1 + lsls r2, 24 + lsrs r3, r2, 24 + asrs r2, 24 + cmp r2, 0x7 + ble _08041036 + b _08041112 + .align 2, 0 +_08041060: .4byte 0x040000d4 +_08041064: .4byte 0x84000001 +_08041068: + movs r3, 0 + adds r4, 0x2 + str r4, [sp, 0x30] + movs r0, 0x20 + adds r0, r7 + mov r10, r0 + adds r2, 0x1 + mov r9, r2 +_08041078: + movs r2, 0 + lsls r4, r3, 24 + lsls r0, r4, 2 + lsrs r0, 24 + adds r6, r0, 0x3 + mov r1, r12 + adds r5, r1, r0 +_08041086: + lsls r1, r2, 24 + asrs r1, 24 + subs r0, r6, r1 + mov r2, sp + adds r3, r2, r0 + adds r0, r5, r1 + ldr r2, [sp, 0x20] + adds r0, r2, r0 + ldrb r2, [r0] + movs r0, 0xF + ands r0, r2 + lsls r0, 4 + lsrs r2, 4 + orrs r0, r2 + strb r0, [r3] + adds r1, 0x1 + lsls r1, 24 + lsrs r2, r1, 24 + asrs r1, 24 + cmp r1, 0x3 + ble _08041086 + movs r3, 0x80 + lsls r3, 17 + adds r0, r4, r3 + lsrs r3, r0, 24 + asrs r0, 24 + cmp r0, 0x7 + ble _08041078 + movs r0, 0x80 + lsls r0, 4 + mov r1, sp + ldrh r1, [r1, 0x38] + ands r0, r1 + cmp r0, 0 + beq _08041104 + movs r3, 0 + ldr r4, _080410FC @ =0x040000d4 + ldr r6, _08041100 @ =0x84000001 + movs r5, 0x7 +_080410D4: + lsls r1, r3, 24 + asrs r1, 24 + subs r0, r5, r1 + lsls r0, 2 + mov r3, sp + adds r2, r3, r0 + lsls r0, r1, 2 + adds r0, r7, r0 + str r2, [r4] + str r0, [r4, 0x4] + str r6, [r4, 0x8] + ldr r0, [r4, 0x8] + adds r1, 0x1 + lsls r1, 24 + lsrs r3, r1, 24 + asrs r1, 24 + cmp r1, 0x7 + ble _080410D4 + b _08041112 + .align 2, 0 +_080410FC: .4byte 0x040000d4 +_08041100: .4byte 0x84000001 +_08041104: + mov r0, sp + mov r1, r8 + str r0, [r1] + str r7, [r1, 0x4] + ldr r2, _08041148 @ =0x84000008 + str r2, [r1, 0x8] + ldr r0, [r1, 0x8] +_08041112: + ldr r4, [sp, 0x30] + mov r7, r10 + mov r3, r9 + lsls r0, r3, 24 + lsrs r2, r0, 24 + ldr r0, [sp, 0x28] + cmp r2, r0 + bcs _08041124 + b _08040FD0 +_08041124: + ldr r1, [sp, 0x2C] + adds r4, r1 + ldr r2, [sp, 0x34] + lsls r0, r2, 24 + lsrs r1, r0, 24 + ldr r3, [sp, 0x24] + cmp r1, r3 + bcs _08041136 + b _08040FBE +_08041136: + add sp, 0x3C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08041148: .4byte 0x84000008 + thumb_func_end CopySpriteTiles + + thumb_func_start CountTrailingZeroBits +CountTrailingZeroBits: @ 804114C + push {lr} + adds r2, r0, 0 + movs r1, 0 + movs r3, 0x1 +_08041154: + adds r0, r2, 0 + ands r0, r3 + cmp r0, 0 + beq _08041160 + adds r0, r1, 0 + b _0804116E +_08041160: + lsrs r2, 1 + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x1F + bls _08041154 + movs r0, 0 +_0804116E: + pop {r1} + bx r1 + thumb_func_end CountTrailingZeroBits + + thumb_func_start CalcCRC16 +CalcCRC16: @ 8041174 + push {r4-r7,lr} + adds r7, r0, 0 + adds r4, r1, 0 + ldr r2, _080411A4 @ =0x00001121 + movs r3, 0 + cmp r3, r4 + bge _080411C0 + movs r6, 0x1 + ldr r0, _080411A8 @ =0x00008408 + adds r5, r0, 0 +_08041188: + adds r0, r7, r3 + ldrb r0, [r0] + eors r2, r0 + movs r1, 0 + adds r3, 0x1 +_08041192: + adds r0, r2, 0 + ands r0, r6 + cmp r0, 0 + beq _080411AC + lsrs r0, r2, 1 + eors r0, r5 + lsls r0, 16 + lsrs r2, r0, 16 + b _080411AE + .align 2, 0 +_080411A4: .4byte 0x00001121 +_080411A8: .4byte 0x00008408 +_080411AC: + lsrs r2, 1 +_080411AE: + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0x7 + bls _08041192 + lsls r0, r3, 16 + lsrs r3, r0, 16 + cmp r3, r4 + blt _08041188 +_080411C0: + mvns r0, r2 + lsls r0, 16 + lsrs r0, 16 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end CalcCRC16 + + thumb_func_start CalcCRC16WithTable +CalcCRC16WithTable: @ 80411CC + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldr r2, _08041208 @ =0x00001121 + movs r3, 0 + cmp r3, r4 + bge _080411FA + ldr r6, _0804120C @ =gCrc16Table +_080411DC: + lsrs r1, r2, 8 + adds r0, r5, r3 + ldrb r0, [r0] + eors r2, r0 + lsls r0, r2, 24 + lsrs r0, 23 + adds r0, r6 + ldrh r0, [r0] + adds r2, r0, 0 + eors r2, r1 + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r4 + blt _080411DC +_080411FA: + mvns r0, r2 + lsls r0, 16 + lsrs r0, 16 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08041208: .4byte 0x00001121 +_0804120C: .4byte gCrc16Table + thumb_func_end CalcCRC16WithTable + + .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index a92699a61..11495456b 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -57,7 +57,7 @@ SECTIONS { asm/pokemon_3.o(.text); src/trig.o(.text); src/rng.o(.text); - asm/rom_8040EB4.o(.text); + asm/util.o(.text); src/blend_palette.o(.text); asm/daycare.o(.text); asm/egg_hatch.o(.text); -- cgit v1.2.3