diff options
-rw-r--r-- | asm/battle_7.s | 1626 | ||||
-rw-r--r-- | include/data2.h | 4 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/battle_7.c | 617 |
4 files changed, 620 insertions, 1628 deletions
diff --git a/asm/battle_7.s b/asm/battle_7.s index 593a5bbb1..1e4e2013a 100644 --- a/asm/battle_7.s +++ b/asm/battle_7.s @@ -6,1632 +6,6 @@ .text - thumb_func_start sub_80312F0 -sub_80312F0: @ 80312F0 - push {r4-r7,lr} - adds r6, r0, 0 - ldrh r0, [r6, 0x30] - lsls r0, 24 - lsrs r0, 24 - ldr r7, _08031334 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r5, r1, 2 - adds r3, r5, r7 - adds r0, r3, 0 - adds r0, 0x3F - ldrb r4, [r0] - lsls r0, r4, 26 - cmp r0, 0 - bge _08031354 - adds r0, r3, 0 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - blt _08031354 - adds r1, r3, 0 - adds r1, 0x2C - ldrb r2, [r1] - lsls r0, r2, 25 - cmp r0, 0 - bge _08031338 - movs r0, 0x41 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - b _08031354 - .align 2, 0 -_08031334: .4byte gSprites -_08031338: - lsls r0, r4, 27 - cmp r0, 0 - bge _08031354 - adds r0, r7, 0 - adds r0, 0x1C - adds r0, r5, r0 - ldr r1, _0803135C @ =sub_80105DC - str r1, [r0] - adds r0, r3, 0 - movs r1, 0 - bl StartSpriteAffineAnim - ldr r0, _08031360 @ =SpriteCallbackDummy - str r0, [r6, 0x1C] -_08031354: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803135C: .4byte sub_80105DC -_08031360: .4byte SpriteCallbackDummy - thumb_func_end sub_80312F0 - - thumb_func_start unref_sub_8031364 -unref_sub_8031364: @ 8031364 - push {r4,lr} - adds r4, r0, 0 - lsls r1, 24 - adds r3, r4, 0 - adds r3, 0x2C - ldrb r0, [r3] - movs r2, 0x40 - orrs r0, r2 - strb r0, [r3] - ldr r0, _08031388 @ =SpriteCallbackDummy - str r0, [r4, 0x1C] - cmp r1, 0 - bne _0803138C - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - b _08031394 - .align 2, 0 -_08031388: .4byte SpriteCallbackDummy -_0803138C: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_08031394: - adds r0, r4, 0 - bl AnimateSprite - pop {r4} - pop {r0} - bx r0 - thumb_func_end unref_sub_8031364 - - thumb_func_start sub_80313A0 -sub_80313A0: @ 80313A0 - push {lr} - adds r2, r0, 0 - ldr r0, _080313C8 @ =gUnknown_02024DE8 - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080313C2 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - lsls r0, 16 - cmp r0, 0 - bne _080313C2 - ldr r0, _080313CC @ =SpriteCallbackDummy - str r0, [r2, 0x1C] -_080313C2: - pop {r0} - bx r0 - .align 2, 0 -_080313C8: .4byte gUnknown_02024DE8 -_080313CC: .4byte SpriteCallbackDummy - thumb_func_end sub_80313A0 - - thumb_func_start move_anim_start_t2_for_situation -move_anim_start_t2_for_situation: @ 80313D0 - push {r4-r6,lr} - adds r4, r1, 0 - lsls r0, 24 - ldr r5, _08031400 @ =gUnknown_02024A60 - ldrb r2, [r5] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - ldr r6, _08031404 @ =0x02017810 - adds r1, r6 - ldrb r2, [r1] - movs r3, 0x10 - orrs r2, r3 - strb r2, [r1] - cmp r0, 0 - bne _0803144C - cmp r4, 0x20 - bne _08031408 - ldrb r0, [r5] - movs r1, 0x6 - bl move_anim_start_t2 - b _080314C2 - .align 2, 0 -_08031400: .4byte gUnknown_02024A60 -_08031404: .4byte 0x02017810 -_08031408: - cmp r4, 0x8 - beq _08031414 - movs r0, 0x80 - ands r0, r4 - cmp r0, 0 - beq _0803141E -_08031414: - ldrb r0, [r5] - movs r1, 0 - bl move_anim_start_t2 - b _080314C2 -_0803141E: - cmp r4, 0x10 - bne _0803142C - ldrb r0, [r5] - movs r1, 0x2 - bl move_anim_start_t2 - b _080314C2 -_0803142C: - movs r0, 0x7 - ands r0, r4 - cmp r0, 0 - beq _0803143E - ldrb r0, [r5] - movs r1, 0x4 - bl move_anim_start_t2 - b _080314C2 -_0803143E: - cmp r4, 0x40 - bne _080314AE - ldrb r0, [r5] - movs r1, 0x5 - bl move_anim_start_t2 - b _080314C2 -_0803144C: - movs r0, 0xF0 - lsls r0, 12 - ands r0, r4 - cmp r0, 0 - beq _08031460 - ldrb r0, [r5] - movs r1, 0x3 - bl move_anim_start_t2 - b _080314C2 -_08031460: - movs r0, 0x7 - ands r0, r4 - cmp r0, 0 - beq _08031472 - ldrb r0, [r5] - movs r1, 0x1 - bl move_anim_start_t2 - b _080314C2 -_08031472: - movs r0, 0x80 - lsls r0, 21 - ands r0, r4 - cmp r0, 0 - beq _08031486 - ldrb r0, [r5] - movs r1, 0x7 - bl move_anim_start_t2 - b _080314C2 -_08031486: - movs r0, 0x80 - lsls r0, 20 - ands r0, r4 - cmp r0, 0 - beq _0803149A - ldrb r0, [r5] - movs r1, 0x8 - bl move_anim_start_t2 - b _080314C2 -_0803149A: - movs r0, 0xE0 - lsls r0, 8 - ands r0, r4 - cmp r0, 0 - beq _080314AE - ldrb r0, [r5] - movs r1, 0x9 - bl move_anim_start_t2 - b _080314C2 -_080314AE: - ldrb r0, [r5] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] -_080314C2: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end move_anim_start_t2_for_situation - - thumb_func_start move_anim_start_t3 -move_anim_start_t3: @ 80314C8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, [sp, 0x20] - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - lsls r2, 24 - lsrs r2, 24 - mov r10, r2 - lsls r3, 24 - lsrs r5, r3, 24 - lsls r4, 16 - lsrs r7, r4, 16 - cmp r5, 0 - bne _0803150C - movs r0, 0x80 - ands r0, r7 - cmp r0, 0 - beq _0803150C - ldr r0, _08031508 @ =gBattleMonForms - adds r0, r6, r0 - movs r2, 0x7F - adds r1, r7, 0 - ands r1, r2 - strb r1, [r0] - movs r0, 0x1 - b _080315C2 - .align 2, 0 -_08031508: .4byte gBattleMonForms -_0803150C: - lsls r1, r6, 2 - ldr r0, _08031530 @ =0x02017800 - adds r4, r1, r0 - ldrb r1, [r4] - movs r0, 0x4 - mov r8, r0 - ands r0, r1 - cmp r0, 0 - beq _08031578 - adds r0, r5, 0 - bl sub_803163C - lsls r0, 24 - cmp r0, 0 - bne _08031534 - movs r0, 0x1 - b _080315C2 - .align 2, 0 -_08031530: .4byte 0x02017800 -_08031534: - ldrb r1, [r4] - mov r0, r8 - ands r0, r1 - cmp r0, 0 - beq _08031578 - cmp r5, 0x2 - bne _08031578 - ldr r1, _08031570 @ =gSprites - ldr r0, _08031574 @ =gUnknown_02024BE0 - adds r0, r6, r0 - ldrb r2, [r0] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - bge _08031578 - adds r0, r6, 0 - movs r1, 0x1 - bl refresh_graphics_maybe - adds r0, r6, 0 - bl sub_80324E0 - movs r0, 0x1 - b _080315C2 - .align 2, 0 -_08031570: .4byte gSprites -_08031574: .4byte gUnknown_02024BE0 -_08031578: - ldr r0, _080315D0 @ =gBattleAnimPlayerMonIndex - mov r1, r9 - strb r1, [r0] - ldr r0, _080315D4 @ =gBattleAnimEnemyMonIndex - mov r1, r10 - strb r1, [r0] - ldr r4, _080315D8 @ =0x02017840 - strh r7, [r4] - ldr r0, _080315DC @ =gBattleAnims_Unknown1 - adds r1, r5, 0 - movs r2, 0 - bl DoMoveAnim - ldr r0, _080315E0 @ =sub_80315E8 - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080315E4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r6, [r1, 0x8] - movs r0, 0x8 - ldrsh r1, [r1, r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - subs r4, 0x30 - adds r0, r4 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] - movs r0, 0 -_080315C2: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080315D0: .4byte gBattleAnimPlayerMonIndex -_080315D4: .4byte gBattleAnimEnemyMonIndex -_080315D8: .4byte 0x02017840 -_080315DC: .4byte gBattleAnims_Unknown1 -_080315E0: .4byte sub_80315E8 -_080315E4: .4byte gTasks - thumb_func_end move_anim_start_t3 - - thumb_func_start sub_80315E8 -sub_80315E8: @ 80315E8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0803162C @ =gAnimScriptCallback - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _08031630 @ =gAnimScriptActive - ldrb r0, [r0] - cmp r0, 0 - bne _08031626 - ldr r1, _08031634 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0x8 - ldrsh r0, [r0, r1] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r0, _08031638 @ =0x02017810 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x21 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - adds r0, r4, 0 - bl DestroyTask -_08031626: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803162C: .4byte gAnimScriptCallback -_08031630: .4byte gAnimScriptActive -_08031634: .4byte gTasks -_08031638: .4byte 0x02017810 - thumb_func_end sub_80315E8 - - thumb_func_start sub_803163C -sub_803163C: @ 803163C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD - bgt _08031650 - cmp r0, 0xA - bge _08031654 - cmp r0, 0x2 - beq _08031654 - b _08031658 -_08031650: - cmp r0, 0x11 - bne _08031658 -_08031654: - movs r0, 0x1 - b _0803165A -_08031658: - movs r0, 0 -_0803165A: - pop {r1} - bx r1 - thumb_func_end sub_803163C - - thumb_func_start move_anim_start_t4 -move_anim_start_t4: @ 8031660 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r3, 24 - lsrs r3, 24 - ldr r0, _080316B4 @ =gBattleAnimPlayerMonIndex - strb r1, [r0] - ldr r0, _080316B8 @ =gBattleAnimEnemyMonIndex - strb r2, [r0] - ldr r0, _080316BC @ =gBattleAnims_Unknown2 - adds r1, r3, 0 - movs r2, 0 - bl DoMoveAnim - ldr r0, _080316C0 @ =sub_80316CC - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080316C4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - movs r0, 0x8 - ldrsh r1, [r1, r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080316C8 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080316B4: .4byte gBattleAnimPlayerMonIndex -_080316B8: .4byte gBattleAnimEnemyMonIndex -_080316BC: .4byte gBattleAnims_Unknown2 -_080316C0: .4byte sub_80316CC -_080316C4: .4byte gTasks -_080316C8: .4byte 0x02017810 - thumb_func_end move_anim_start_t4 - - thumb_func_start sub_80316CC -sub_80316CC: @ 80316CC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08031710 @ =gAnimScriptCallback - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _08031714 @ =gAnimScriptActive - ldrb r0, [r0] - cmp r0, 0 - bne _0803170A - ldr r1, _08031718 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0x8 - ldrsh r0, [r0, r1] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r0, _0803171C @ =0x02017810 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x41 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - adds r0, r4, 0 - bl DestroyTask -_0803170A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08031710: .4byte gAnimScriptCallback -_08031714: .4byte gAnimScriptActive -_08031718: .4byte gTasks -_0803171C: .4byte 0x02017810 - thumb_func_end sub_80316CC - - thumb_func_start sub_8031720 -sub_8031720: @ 8031720 - movs r0, 0 - bx lr - thumb_func_end sub_8031720 - - thumb_func_start mplay_80342A4 -mplay_80342A4: @ 8031724 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r5, 0 - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _08031764 - lsls r1, r4, 1 - adds r1, r4 - lsls r1, 2 - ldr r2, _0803176C @ =0x02017810 - adds r1, r2 - ldrb r0, [r1, 0x8] - adds r0, 0x1 - strb r0, [r1, 0x8] - ldr r0, _08031770 @ =gUnknown_02024A60 - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x8] - cmp r0, 0x1D - bls _08031768 - ldr r0, _08031774 @ =gMPlay_SE1 - bl m4aMPlayStop - ldr r0, _08031778 @ =gMPlay_SE2 - bl m4aMPlayStop -_08031764: - cmp r5, 0 - beq _0803177C -_08031768: - movs r0, 0x1 - b _0803178A - .align 2, 0 -_0803176C: .4byte 0x02017810 -_08031770: .4byte gUnknown_02024A60 -_08031774: .4byte gMPlay_SE1 -_08031778: .4byte gMPlay_SE2 -_0803177C: - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - ldr r1, _08031790 @ =0x02017810 - adds r0, r1 - strb r5, [r0, 0x8] - movs r0, 0 -_0803178A: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08031790: .4byte 0x02017810 - thumb_func_end mplay_80342A4 - - thumb_func_start sub_8031794 -sub_8031794: @ 8031794 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - mov r8, r0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - movs r1, 0 - bl GetMonData - str r0, [sp, 0xC] - mov r0, r9 - lsls r1, r0, 2 - ldr r0, _080317D0 @ =0x02017800 - adds r2, r1, r0 - ldrh r0, [r2, 0x2] - cmp r0, 0 - bne _080317D4 - mov r0, r8 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - ldr r7, [sp, 0xC] - b _080317DC - .align 2, 0 -_080317D0: .4byte 0x02017800 -_080317D4: - ldrh r6, [r2, 0x2] - ldr r0, _08031838 @ =gUnknown_02024E70 - adds r0, r1, r0 - ldr r7, [r0] -_080317DC: - mov r0, r8 - movs r1, 0x1 - bl GetMonData - mov r10, r0 - mov r0, r9 - bl battle_get_per_side_status - lsls r0, 24 - lsls r5, r6, 3 - ldr r1, _0803183C @ =gMonFrontPicTable - adds r5, r1 - ldr r1, _08031840 @ =gMonFrontPicCoords - lsls r2, r6, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _08031844 @ =gUnknown_081FAF4C - lsrs r0, 22 - adds r0, r4 - ldr r0, [r0] - str r0, [sp] - str r6, [sp, 0x4] - str r7, [sp, 0x8] - adds r0, r5, 0 - bl HandleLoadSpecialPokePic - mov r1, r9 - lsls r2, r1, 4 - movs r0, 0x80 - lsls r0, 1 - adds r7, r2, r0 - lsls r1, 2 - ldr r0, _08031848 @ =0x02017800 - adds r0, r1, r0 - ldrh r0, [r0, 0x2] - str r1, [sp, 0x10] - adds r4, r2, 0 - cmp r0, 0 - bne _0803184C - mov r0, r8 - bl pokemon_get_pal - b _08031856 - .align 2, 0 -_08031838: .4byte gUnknown_02024E70 -_0803183C: .4byte gMonFrontPicTable -_08031840: .4byte gMonFrontPicCoords -_08031844: .4byte gUnknown_081FAF4C -_08031848: .4byte 0x02017800 -_0803184C: - adds r0, r6, 0 - mov r1, r10 - ldr r2, [sp, 0xC] - bl species_and_otid_get_pal -_08031856: - adds r5, r0, 0 - ldr r1, _080318E0 @ =0x02000000 - mov r8, r1 - adds r0, r5, 0 - bl sub_800D238 - mov r0, r8 - adds r1, r7, 0 - movs r2, 0x20 - bl LoadPalette - adds r1, r4, 0 - adds r1, 0x80 - mov r0, r8 - movs r2, 0x20 - bl LoadPalette - ldr r0, _080318E4 @ =SPECIES_CASTFORM - cmp r6, r0 - bne _080318A2 - subs r0, 0x81 - adds r7, r4, r0 - movs r4, 0xB2 - lsls r4, 9 - add r4, r8 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_800D238 - ldr r0, _080318E8 @ =gBattleMonForms - add r0, r9 - ldrb r0, [r0] - lsls r0, 5 - adds r0, r4 - adds r1, r7, 0 - movs r2, 0x20 - bl LoadPalette -_080318A2: - movs r0, 0xBC - lsls r0, 9 - add r0, r8 - ldr r1, [sp, 0x10] - adds r0, r1, r0 - ldrh r0, [r0, 0x2] - cmp r0, 0 - beq _080318CE - ldr r3, _080318EC @ =0x00007fff - adds r0, r7, 0 - movs r1, 0x10 - movs r2, 0x6 - bl BlendPalette - lsls r1, r7, 1 - ldr r0, _080318F0 @ =gPlttBufferFaded - adds r0, r1, r0 - ldr r2, _080318F4 @ =gPlttBufferUnfaded - adds r1, r2 - ldr r2, _080318F8 @ =REG_BG0CNT - bl CpuSet -_080318CE: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080318E0: .4byte 0x02000000 -_080318E4: .4byte SPECIES_CASTFORM -_080318E8: .4byte gBattleMonForms -_080318EC: .4byte 0x00007fff -_080318F0: .4byte gPlttBufferFaded -_080318F4: .4byte gPlttBufferUnfaded -_080318F8: .4byte REG_BG0CNT - thumb_func_end sub_8031794 - - thumb_func_start sub_80318FC -sub_80318FC: @ 80318FC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - mov r8, r0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - movs r1, 0 - bl GetMonData - str r0, [sp, 0xC] - mov r0, r9 - lsls r1, r0, 2 - ldr r0, _08031938 @ =0x02017800 - adds r2, r1, r0 - ldrh r0, [r2, 0x2] - cmp r0, 0 - bne _0803193C - mov r0, r8 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - ldr r7, [sp, 0xC] - b _08031944 - .align 2, 0 -_08031938: .4byte 0x02017800 -_0803193C: - ldrh r6, [r2, 0x2] - ldr r0, _080319A0 @ =gUnknown_02024E70 - adds r0, r1, r0 - ldr r7, [r0] -_08031944: - mov r0, r8 - movs r1, 0x1 - bl GetMonData - mov r10, r0 - mov r0, r9 - bl battle_get_per_side_status - lsls r0, 24 - lsls r5, r6, 3 - ldr r1, _080319A4 @ =gMonBackPicTable - adds r5, r1 - ldr r1, _080319A8 @ =gMonBackPicCoords - lsls r2, r6, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _080319AC @ =gUnknown_081FAF4C - lsrs r0, 22 - adds r0, r4 - ldr r0, [r0] - str r0, [sp] - str r6, [sp, 0x4] - str r7, [sp, 0x8] - adds r0, r5, 0 - bl HandleLoadSpecialPokePic - mov r1, r9 - lsls r2, r1, 4 - movs r0, 0x80 - lsls r0, 1 - adds r7, r2, r0 - lsls r1, 2 - ldr r0, _080319B0 @ =0x02017800 - adds r0, r1, r0 - ldrh r0, [r0, 0x2] - str r1, [sp, 0x10] - adds r4, r2, 0 - cmp r0, 0 - bne _080319B4 - mov r0, r8 - bl pokemon_get_pal - b _080319BE - .align 2, 0 -_080319A0: .4byte gUnknown_02024E70 -_080319A4: .4byte gMonBackPicTable -_080319A8: .4byte gMonBackPicCoords -_080319AC: .4byte gUnknown_081FAF4C -_080319B0: .4byte 0x02017800 -_080319B4: - adds r0, r6, 0 - mov r1, r10 - ldr r2, [sp, 0xC] - bl species_and_otid_get_pal -_080319BE: - adds r5, r0, 0 - ldr r1, _08031A48 @ =0x02000000 - mov r8, r1 - adds r0, r5, 0 - bl sub_800D238 - mov r0, r8 - adds r1, r7, 0 - movs r2, 0x20 - bl LoadPalette - adds r1, r4, 0 - adds r1, 0x80 - mov r0, r8 - movs r2, 0x20 - bl LoadPalette - ldr r0, _08031A4C @ =SPECIES_CASTFORM - cmp r6, r0 - bne _08031A0A - subs r0, 0x81 - adds r7, r4, r0 - movs r4, 0xB2 - lsls r4, 9 - add r4, r8 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_800D238 - ldr r0, _08031A50 @ =gBattleMonForms - add r0, r9 - ldrb r0, [r0] - lsls r0, 5 - adds r0, r4 - adds r1, r7, 0 - movs r2, 0x20 - bl LoadPalette -_08031A0A: - movs r0, 0xBC - lsls r0, 9 - add r0, r8 - ldr r1, [sp, 0x10] - adds r0, r1, r0 - ldrh r0, [r0, 0x2] - cmp r0, 0 - beq _08031A36 - ldr r3, _08031A54 @ =0x00007fff - adds r0, r7, 0 - movs r1, 0x10 - movs r2, 0x6 - bl BlendPalette - lsls r1, r7, 1 - ldr r0, _08031A58 @ =gPlttBufferFaded - adds r0, r1, r0 - ldr r2, _08031A5C @ =gPlttBufferUnfaded - adds r1, r2 - ldr r2, _08031A60 @ =REG_BG0CNT - bl CpuSet -_08031A36: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08031A48: .4byte 0x02000000 -_08031A4C: .4byte SPECIES_CASTFORM -_08031A50: .4byte gBattleMonForms -_08031A54: .4byte 0x00007fff -_08031A58: .4byte gPlttBufferFaded -_08031A5C: .4byte gPlttBufferUnfaded -_08031A60: .4byte REG_BG0CNT - thumb_func_end sub_80318FC - - thumb_func_start unref_sub_8031A64 -unref_sub_8031A64: @ 8031A64 - bx lr - thumb_func_end unref_sub_8031A64 - - thumb_func_start nullsub_9 -nullsub_9: @ 8031A68 - bx lr - thumb_func_end nullsub_9 - - thumb_func_start sub_8031A6C -sub_8031A6C: @ 8031A6C - push {r4-r6,lr} - sub sp, 0x10 - adds r4, r0, 0 - adds r0, r1, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r0, 24 - lsrs r0, 24 - bl battle_get_per_side_status - lsls r0, 24 - lsls r6, r4, 3 - ldr r5, _08031ADC @ =gTrainerFrontPicTable - adds r5, r6, r5 - ldr r1, _08031AE0 @ =gTrainerFrontPicCoords - lsls r4, 2 - adds r4, r1 - ldrb r1, [r4] - ldrb r2, [r4, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _08031AE4 @ =gUnknown_081FAF4C - lsrs r0, 22 - adds r0, r4 - ldr r4, [r0] - str r4, [sp] - movs r0, 0 - str r0, [sp, 0x4] - adds r0, r5, 0 - bl DecompressPicFromTable_2 - str r4, [sp, 0x8] - ldrh r2, [r5, 0x4] - ldr r0, _08031AE8 @ =0xffff0000 - ldr r1, [sp, 0xC] - ands r1, r0 - orrs r1, r2 - str r1, [sp, 0xC] - ldrh r2, [r5, 0x6] - lsls r2, 16 - ldr r0, _08031AEC @ =0x0000ffff - ands r0, r1 - orrs r0, r2 - str r0, [sp, 0xC] - add r0, sp, 0x8 - bl LoadCompressedObjectPic - ldr r0, _08031AF0 @ =gTrainerFrontPicPaletteTable - adds r6, r0 - adds r0, r6, 0 - bl LoadCompressedObjectPalette - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08031ADC: .4byte gTrainerFrontPicTable -_08031AE0: .4byte gTrainerFrontPicCoords -_08031AE4: .4byte gUnknown_081FAF4C -_08031AE8: .4byte 0xffff0000 -_08031AEC: .4byte 0x0000ffff -_08031AF0: .4byte gTrainerFrontPicPaletteTable - thumb_func_end sub_8031A6C - - thumb_func_start sub_8031AF4 -sub_8031AF4: @ 8031AF4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 24 - lsrs r5, 24 - adds r0, r5, 0 - bl battle_get_per_side_status - lsls r0, 24 - lsls r1, r4, 3 - mov r8, r1 - ldr r6, _08031B60 @ =gTrainerBackPicTable - add r6, r8 - ldr r1, _08031B64 @ =gTrainerBackPicCoords - lsls r4, 2 - adds r4, r1 - ldrb r1, [r4] - ldrb r2, [r4, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _08031B68 @ =gUnknown_081FAF4C - lsrs r0, 22 - adds r0, r4 - ldr r0, [r0] - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - adds r0, r6, 0 - bl DecompressPicFromTable_2 - ldr r0, _08031B6C @ =gTrainerBackPicPaletteTable - add r8, r0 - mov r1, r8 - ldr r0, [r1] - lsls r5, 20 - movs r1, 0x80 - lsls r1, 17 - adds r5, r1 - lsrs r5, 16 - adds r1, r5, 0 - movs r2, 0x20 - bl LoadCompressedPalette - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08031B60: .4byte gTrainerBackPicTable -_08031B64: .4byte gTrainerBackPicCoords -_08031B68: .4byte gUnknown_081FAF4C -_08031B6C: .4byte gTrainerBackPicPaletteTable - thumb_func_end sub_8031AF4 - - thumb_func_start nullsub_10 -nullsub_10: @ 8031B70 - bx lr - thumb_func_end nullsub_10 - - thumb_func_start sub_8031B74 -sub_8031B74: @ 8031B74 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - ldr r0, _08031B98 @ =gTrainerFrontPicPaletteTable - lsrs r4, 13 - adds r0, r4, r0 - ldrh r0, [r0, 0x4] - bl FreeSpritePaletteByTag - ldr r0, _08031B9C @ =gTrainerFrontPicTable - adds r4, r0 - ldrh r0, [r4, 0x6] - bl FreeSpriteTilesByTag - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08031B98: .4byte gTrainerFrontPicPaletteTable -_08031B9C: .4byte gTrainerFrontPicTable - thumb_func_end sub_8031B74 - - thumb_func_start unref_sub_8031BA0 -unref_sub_8031BA0: @ 8031BA0 - push {r4-r7,lr} - ldr r4, _08031BCC @ =gUnknown_0820A4D4 - adds r0, r4, 0 - bl LoadSpritePalette - adds r4, 0x8 - adds r0, r4, 0 - bl LoadSpritePalette - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _08031BD8 - ldr r0, _08031BD0 @ =gUnknown_0820A47C - bl LoadCompressedObjectPic - ldr r0, _08031BD4 @ =gUnknown_0820A484 - bl LoadCompressedObjectPic - movs r5, 0x2 - b _08031BFA - .align 2, 0 -_08031BCC: .4byte gUnknown_0820A4D4 -_08031BD0: .4byte gUnknown_0820A47C -_08031BD4: .4byte gUnknown_0820A484 -_08031BD8: - ldr r4, _08031C20 @ =gUnknown_0820A48C - adds r0, r4, 0 - bl LoadCompressedObjectPic - adds r4, 0x8 - adds r0, r4, 0 - bl LoadCompressedObjectPic - ldr r4, _08031C24 @ =gUnknown_0820A49C - adds r0, r4, 0 - bl LoadCompressedObjectPic - adds r4, 0x8 - adds r0, r4, 0 - bl LoadCompressedObjectPic - movs r5, 0x4 -_08031BFA: - movs r4, 0 - cmp r4, r5 - bcs _08031C1A - ldr r7, _08031C28 @ =gUnknown_02024A72 - ldr r6, _08031C2C @ =gUnknown_0820A4B4 -_08031C04: - adds r0, r4, r7 - ldrb r0, [r0] - lsls r0, 3 - adds r0, r6 - bl LoadCompressedObjectPic - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r5 - bcc _08031C04 -_08031C1A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08031C20: .4byte gUnknown_0820A48C -_08031C24: .4byte gUnknown_0820A49C -_08031C28: .4byte gUnknown_02024A72 -_08031C2C: .4byte gUnknown_0820A4B4 - thumb_func_end unref_sub_8031BA0 - - thumb_func_start sub_8031C30 -sub_8031C30: @ 8031C30 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - movs r6, 0 - cmp r4, 0 - bne _08031C40 - b _08031D52 -_08031C40: - cmp r4, 0x1 - bne _08031C5C - ldr r4, _08031C58 @ =gUnknown_0820A4D4 - adds r0, r4, 0 - bl LoadSpritePalette - adds r4, 0x8 - adds r0, r4, 0 - bl LoadSpritePalette - b _08031D52 - .align 2, 0 -_08031C58: .4byte gUnknown_0820A4D4 -_08031C5C: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _08031CC4 - cmp r4, 0x2 - bne _08031C94 - ldr r0, _08031C80 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08031C88 - ldr r0, _08031C84 @ =gUnknown_0820A4AC - bl LoadCompressedObjectPic - b _08031D52 - .align 2, 0 -_08031C80: .4byte gBattleTypeFlags -_08031C84: .4byte gUnknown_0820A4AC -_08031C88: - ldr r0, _08031C90 @ =gUnknown_0820A47C - bl LoadCompressedObjectPic - b _08031D52 - .align 2, 0 -_08031C90: .4byte gUnknown_0820A47C -_08031C94: - cmp r4, 0x3 - bne _08031CA4 - ldr r0, _08031CA0 @ =gUnknown_0820A484 - bl LoadCompressedObjectPic - b _08031D52 - .align 2, 0 -_08031CA0: .4byte gUnknown_0820A484 -_08031CA4: - cmp r4, 0x4 - bne _08031CB4 - ldr r0, _08031CB0 @ =gUnknown_02024A72 - ldrb r0, [r0] - b _08031D3C - .align 2, 0 -_08031CB0: .4byte gUnknown_02024A72 -_08031CB4: - cmp r4, 0x5 - bne _08031D50 - ldr r0, _08031CC0 @ =gUnknown_02024A72 - ldrb r0, [r0, 0x1] - b _08031D3C - .align 2, 0 -_08031CC0: .4byte gUnknown_02024A72 -_08031CC4: - cmp r4, 0x2 - bne _08031CD4 - ldr r0, _08031CD0 @ =gUnknown_0820A48C - bl LoadCompressedObjectPic - b _08031D52 - .align 2, 0 -_08031CD0: .4byte gUnknown_0820A48C -_08031CD4: - cmp r4, 0x3 - bne _08031CE4 - ldr r0, _08031CE0 @ =gUnknown_0820A494 - bl LoadCompressedObjectPic - b _08031D52 - .align 2, 0 -_08031CE0: .4byte gUnknown_0820A494 -_08031CE4: - cmp r4, 0x4 - bne _08031CF4 - ldr r0, _08031CF0 @ =gUnknown_0820A49C - bl LoadCompressedObjectPic - b _08031D52 - .align 2, 0 -_08031CF0: .4byte gUnknown_0820A49C -_08031CF4: - cmp r4, 0x5 - bne _08031D04 - ldr r0, _08031D00 @ =gUnknown_0820A4A4 - bl LoadCompressedObjectPic - b _08031D52 - .align 2, 0 -_08031D00: .4byte gUnknown_0820A4A4 -_08031D04: - cmp r4, 0x6 - bne _08031D14 - ldr r0, _08031D10 @ =gUnknown_02024A72 - ldrb r0, [r0] - b _08031D3C - .align 2, 0 -_08031D10: .4byte gUnknown_02024A72 -_08031D14: - cmp r4, 0x7 - bne _08031D24 - ldr r0, _08031D20 @ =gUnknown_02024A72 - ldrb r0, [r0, 0x1] - b _08031D3C - .align 2, 0 -_08031D20: .4byte gUnknown_02024A72 -_08031D24: - cmp r4, 0x8 - bne _08031D34 - ldr r0, _08031D30 @ =gUnknown_02024A72 - ldrb r0, [r0, 0x2] - b _08031D3C - .align 2, 0 -_08031D30: .4byte gUnknown_02024A72 -_08031D34: - cmp r5, 0x9 - bne _08031D50 - ldr r0, _08031D48 @ =gUnknown_02024A72 - ldrb r0, [r0, 0x3] -_08031D3C: - lsls r0, 3 - ldr r1, _08031D4C @ =gUnknown_0820A4B4 - adds r0, r1 - bl LoadCompressedObjectPic - b _08031D52 - .align 2, 0 -_08031D48: .4byte gUnknown_02024A72 -_08031D4C: .4byte gUnknown_0820A4B4 -_08031D50: - movs r6, 0x1 -_08031D52: - adds r0, r6, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8031C30 - - thumb_func_start load_gfxc_health_bar -load_gfxc_health_bar: @ 8031D5C - push {lr} - ldr r0, _08031D6C @ =gUnknown_08D09C48 - movs r1, 0x80 - lsls r1, 18 - bl sub_800D238 - pop {r0} - bx r0 - .align 2, 0 -_08031D6C: .4byte gUnknown_08D09C48 - thumb_func_end load_gfxc_health_bar - - thumb_func_start battle_load_something -battle_load_something: @ 8031D70 - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r6, 0 - ldrb r0, [r5] - cmp r0, 0x6 - bls _08031D80 - b _08031EDE -_08031D80: - lsls r0, 2 - ldr r1, _08031D8C @ =_08031D90 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08031D8C: .4byte _08031D90 - .align 2, 0 -_08031D90: - .4byte _08031DAC - .4byte _08031DB2 - .4byte _08031EBC - .4byte _08031DC8 - .4byte _08031DF8 - .4byte _08031E34 - .4byte _08031ED4 -_08031DAC: - bl sub_8031F0C - b _08031EBC -_08031DB2: - ldrb r0, [r4] - bl sub_8031C30 - lsls r0, 24 - cmp r0, 0 - beq _08031DC0 - b _08031EB8 -_08031DC0: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _08031EDE -_08031DC8: - ldr r0, _08031DE0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08031DE4 - ldrb r0, [r4] - cmp r0, 0 - bne _08031DE4 - bl battle_make_oam_safari_battle - b _08031DEA - .align 2, 0 -_08031DE0: .4byte gBattleTypeFlags -_08031DE4: - ldrb r0, [r4] - bl battle_make_oam_normal_battle -_08031DEA: - ldr r2, _08031DF4 @ =gUnknown_03004340 - ldrb r1, [r4] - adds r1, r2 - strb r0, [r1] - b _08031EA6 - .align 2, 0 -_08031DF4: .4byte gUnknown_03004340 -_08031DF8: - ldrb r0, [r4] - bl sub_8043F44 - ldr r0, _08031E18 @ =gUnknown_02024A72 - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0x1 - bhi _08031E20 - ldr r0, _08031E1C @ =gUnknown_03004340 - adds r0, r1, r0 - ldrb r0, [r0] - movs r1, 0 - bl nullsub_11 - b _08031EA6 - .align 2, 0 -_08031E18: .4byte gUnknown_02024A72 -_08031E1C: .4byte gUnknown_03004340 -_08031E20: - ldr r0, _08031E30 @ =gUnknown_03004340 - adds r0, r1, r0 - ldrb r0, [r0] - movs r1, 0x1 - bl nullsub_11 - b _08031EA6 - .align 2, 0 -_08031E30: .4byte gUnknown_03004340 -_08031E34: - ldrb r0, [r4] - bl battle_side_get_owner - lsls r0, 24 - cmp r0, 0 - bne _08031E7C - ldr r0, _08031E6C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08031E9A - ldr r0, _08031E70 @ =gUnknown_03004340 - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - ldr r2, _08031E74 @ =gUnknown_02024A6A - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _08031E78 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C - b _08031E9A - .align 2, 0 -_08031E6C: .4byte gBattleTypeFlags -_08031E70: .4byte gUnknown_03004340 -_08031E74: .4byte gUnknown_02024A6A -_08031E78: .4byte gPlayerParty -_08031E7C: - ldr r0, _08031EC4 @ =gUnknown_03004340 - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - ldr r2, _08031EC8 @ =gUnknown_02024A6A - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _08031ECC @ =gEnemyParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C -_08031E9A: - ldr r1, _08031EC4 @ =gUnknown_03004340 - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - bl sub_8043DB0 -_08031EA6: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _08031ED0 @ =gUnknown_02024A68 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bne _08031EDE -_08031EB8: - movs r0, 0 - strb r0, [r4] -_08031EBC: - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - b _08031EDE - .align 2, 0 -_08031EC4: .4byte gUnknown_03004340 -_08031EC8: .4byte gUnknown_02024A6A -_08031ECC: .4byte gEnemyParty -_08031ED0: .4byte gUnknown_02024A68 -_08031ED4: - bl sub_80327CC - bl sub_8094958 - movs r6, 0x1 -_08031EDE: - adds r0, r6, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end battle_load_something - - thumb_func_start sub_8031EE8 -sub_8031EE8: @ 8031EE8 - push {r4,lr} - ldr r4, _08031F08 @ =0x02017810 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x30 - bl memset - adds r4, 0x30 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x10 - bl memset - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08031F08: .4byte 0x02017810 - thumb_func_end sub_8031EE8 - - thumb_func_start sub_8031F0C -sub_8031F0C: @ 8031F0C - push {lr} - bl sub_8031EE8 - ldr r0, _08031F20 @ =0x02017800 - movs r1, 0 - movs r2, 0x10 - bl memset - pop {r0} - bx r0 - .align 2, 0 -_08031F20: .4byte 0x02017800 - thumb_func_end sub_8031F0C - - thumb_func_start sub_8031F24 -sub_8031F24: @ 8031F24 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r4, 0 - ldr r5, _08031F78 @ =gUnknown_02024A68 - ldrb r0, [r5] - cmp r4, r0 - bge _08031F6E - ldr r0, _08031F7C @ =gSprites - mov r8, r0 - movs r7, 0x1 - movs r0, 0x2 - negs r0, r0 - mov r12, r0 - ldr r6, _08031F80 @ =gUnknown_02024BE0 - ldr r3, _08031F84 @ =0x02017800 -_08031F44: - adds r0, r4, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - adds r0, 0x3E - ldrb r1, [r0] - lsls r1, 29 - lsrs r1, 31 - ands r1, r7 - ldrb r2, [r3] - mov r0, r12 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - adds r3, 0x4 - adds r4, 0x1 - ldrb r0, [r5] - cmp r4, r0 - blt _08031F44 -_08031F6E: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08031F78: .4byte gUnknown_02024A68 -_08031F7C: .4byte gSprites -_08031F80: .4byte gUnknown_02024BE0 -_08031F84: .4byte 0x02017800 - thumb_func_end sub_8031F24 - - thumb_func_start sub_8031F88 -sub_8031F88: @ 8031F88 - lsls r0, 24 - lsrs r0, 24 - lsls r3, r0, 2 - ldr r1, _08031FB8 @ =0x02017800 - adds r3, r1 - ldr r2, _08031FBC @ =gSprites - ldr r1, _08031FC0 @ =gUnknown_02024BE0 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - lsls r1, 29 - lsrs r1, 31 - ldrb r2, [r3] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - bx lr - .align 2, 0 -_08031FB8: .4byte 0x02017800 -_08031FBC: .4byte gSprites -_08031FC0: .4byte gUnknown_02024BE0 - thumb_func_end sub_8031F88 - thumb_func_start sub_8031FC4 sub_8031FC4: @ 8031FC4 push {r4-r7,lr} diff --git a/include/data2.h b/include/data2.h index 987c7cb2e..759efe3d3 100644 --- a/include/data2.h +++ b/include/data2.h @@ -29,7 +29,7 @@ extern const union AnimCmd *const *const gUnknown_081EC2A4[]; extern const union AnimCmd *const *const gUnknown_081ECACC[]; extern struct MonCoords gTrainerBackPicCoords[]; extern struct SpriteSheet gTrainerBackPicTable[]; -extern struct SpritePalette gTrainerBackPicPaletteTable[]; +extern const struct SpritePalette gTrainerBackPicPaletteTable[]; extern u8 gEnemyMonElevation[]; extern const u8 gTrainerClassNames[][13]; extern const struct Trainer gTrainers[]; @@ -40,7 +40,7 @@ extern const u8 gUnknown_081F96C8[]; extern struct SpriteSheet gUnknown_081FAEA4; extern struct SpritePalette gUnknown_081FAEAC; extern const struct SpriteTemplate gSpriteTemplate_81FAF0C; -extern void *gUnknown_081FAF4C[]; +extern void *const gUnknown_081FAF4C[]; extern struct BattleMove gBattleMoves[]; #endif // GUARD_DATA2_H diff --git a/ld_script.txt b/ld_script.txt index 38d564974..2750b023e 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -59,6 +59,7 @@ SECTIONS { asm/battle_6.o(.text); src/battle_6.o(.text); asm/battle_6.o(.text_8030464); + src/battle_7.o(.text); asm/battle_7.o(.text); asm/battle_8.o(.text); asm/battle_9.o(.text); diff --git a/src/battle_7.c b/src/battle_7.c new file mode 100644 index 000000000..9b73eb573 --- /dev/null +++ b/src/battle_7.c @@ -0,0 +1,617 @@ +#include "global.h" +#include "asm.h" +// Include this when my other PR gets merged +//#include "battle.h" +#include "battle_interface.h" +#include "battle_anim.h" +#include "blend_palette.h" +#include "data2.h" +#include "decompress.h" +#include "palette.h" +#include "pokemon.h" +#include "sound.h" +#include "species.h" +#include "sprite.h" +#include "task.h" +#include "gba/m4a_internal.h" + +// Probably the same one from battle_811DA74.c +struct UnknownStruct2_ +{ + u8 unk0_0:1; + u8 unk0_1:2; + u8 unk0_3:1; + u8 unk0_4:1; + u8 unk0_5:1; + u8 unk0_6:1; + u8 unk0_7:1; + u8 unk1_0:1; + u8 filler2[2]; + u8 unk4; + u8 unk5; + u8 filler6[2]; + u8 unk8; + u8 unk9; + u8 fillerA[2]; +}; + +struct UnknownStruct4_ +{ + u8 unk0_0:1; + u8 unk0_1:1; + u8 unk0_2:1; + u8 unk0_3:1; + u16 unk2; +}; + +struct UnknownStruct6 +{ + u16 unk0; + u8 filler2[7]; + u8 unk9; +}; + +extern u8 ewram[]; + +#define ewram17800 ((struct UnknownStruct4_ *)(ewram + 0x17800)) +#define ewram17810 ((struct UnknownStruct2_ *)(ewram + 0x17810)) +#define ewram17840 (*(struct UnknownStruct6 *)(ewram + 0x17840)) + +extern struct MusicPlayerInfo gMPlay_SE1; +extern struct MusicPlayerInfo gMPlay_SE2; +extern u8 gUnknown_02024A60; +extern u8 gUnknown_02024A68; +extern u16 gUnknown_02024A6A[]; +extern u8 gUnknown_02024A72[]; +extern u8 gUnknown_02024BE0[]; +extern u16 gUnknown_02024DE8; +extern u32 gUnknown_02024E70[]; +extern u8 gUnknown_03004340[]; +extern u16 gBattleTypeFlags; +extern u8 gBattleMonForms[]; +extern u8 gBattleAnimPlayerMonIndex; +extern u8 gBattleAnimEnemyMonIndex; +extern void (*gAnimScriptCallback)(void); +extern u8 gAnimScriptActive; +extern const u8 *const gBattleAnims_Unknown1[]; +extern const u8 *const gBattleAnims_Unknown2[]; +extern const struct SpriteSheet gTrainerFrontPicTable[]; +extern const struct MonCoords gTrainerFrontPicCoords[]; +extern const struct SpritePalette gTrainerFrontPicPaletteTable[]; +extern const struct SpriteSheet gUnknown_0820A47C; +extern const struct SpriteSheet gUnknown_0820A484; +extern const struct SpriteSheet gUnknown_0820A48C[]; +extern const struct SpriteSheet gUnknown_0820A49C[]; +extern const struct SpriteSheet gUnknown_0820A4AC; +extern const struct SpriteSheet gUnknown_0820A4B4[]; +extern const struct SpritePalette gUnknown_0820A4D4[]; +extern const u8 gUnknown_08D09C48[]; + +extern void sub_8094958(void); +extern const u16 *pokemon_get_pal(struct Pokemon *); +extern void sub_80105DC(struct Sprite *); +extern void move_anim_start_t2(); +extern void refresh_graphics_maybe(); +extern void sub_80324E0(); +extern const u16 *species_and_otid_get_pal(); + +void sub_80315E8(u8); +u8 sub_803163C(u8); +void sub_80316CC(u8); +void sub_8031F0C(void); +void sub_80327CC(void); + +void sub_80312F0(struct Sprite *sprite) +{ + u8 spriteId = sprite->data1; + + if (gSprites[spriteId].affineAnimEnded && !gSprites[spriteId].invisible) + { + if (gSprites[spriteId].animPaused) + gSprites[spriteId].animPaused = FALSE; + else if (gSprites[spriteId].animEnded) + { + gSprites[spriteId].callback = sub_80105DC; + StartSpriteAffineAnim(&gSprites[spriteId], 0); + sprite->callback = SpriteCallbackDummy; + } + } +} + +void unref_sub_8031364(struct Sprite *sprite, bool8 stupid) +{ + sprite->animPaused = TRUE; + sprite->callback = SpriteCallbackDummy; + if (!stupid) + StartSpriteAffineAnim(sprite, 1); + else + StartSpriteAffineAnim(sprite, 1); + AnimateSprite(sprite); +} + +void sub_80313A0(struct Sprite *sprite) +{ + if (!(gUnknown_02024DE8 & 1)) + { + sprite->pos2.x += sprite->data0; + if (sprite->pos2.x == 0) + sprite->callback = SpriteCallbackDummy; + } +} + +void move_anim_start_t2_for_situation(u8 a, u32 b) +{ + ewram17810[gUnknown_02024A60].unk0_4 = 1; + if (a == 0) + { + if (b == 0x20) + move_anim_start_t2(gUnknown_02024A60, 6); + else if (b == 8 || (b & 0x80)) + move_anim_start_t2(gUnknown_02024A60, 0); + else if (b == 0x10) + move_anim_start_t2(gUnknown_02024A60, 2); + else if (b & 7) + move_anim_start_t2(gUnknown_02024A60, 4); + else if (b == 0x40) + move_anim_start_t2(gUnknown_02024A60, 5); + else + ewram17810[gUnknown_02024A60].unk0_4 = 0; + } + else + { + if (b & 0x000F0000) + move_anim_start_t2(gUnknown_02024A60, 3); + else if (b & 7) + move_anim_start_t2(gUnknown_02024A60, 1); + else if (b & 0x10000000) + move_anim_start_t2(gUnknown_02024A60, 7); + else if (b & 0x08000000) + move_anim_start_t2(gUnknown_02024A60, 8); + else if (b & 0x0000E000) + move_anim_start_t2(gUnknown_02024A60, 9); + else + ewram17810[gUnknown_02024A60].unk0_4 = 0; + } +} + +bool8 move_anim_start_t3(u8 a, u8 b, u8 c, u8 d, u16 e) +{ + u8 taskId; + + if (d == 0 && (e & 0x80)) + { + gBattleMonForms[a] = e & 0x7F; + return TRUE; + } + if (ewram17800[a].unk0_2 && sub_803163C(d) == 0) + return TRUE; + if (ewram17800[a].unk0_2 && d == 2 && gSprites[gUnknown_02024BE0[a]].invisible) + { + refresh_graphics_maybe(a, 1, gUnknown_02024BE0[a]); + sub_80324E0(a); + return TRUE; + } + gBattleAnimPlayerMonIndex = b; + gBattleAnimEnemyMonIndex = c; + ewram17840.unk0 = e; + DoMoveAnim(gBattleAnims_Unknown1, d, 0); + taskId = CreateTask(sub_80315E8, 10); + gTasks[taskId].data[0] = a; + ewram17810[gTasks[taskId].data[0]].unk0_5 = 1; + return FALSE; +} + +void sub_80315E8(u8 taskId) +{ + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + ewram17810[gTasks[taskId].data[0]].unk0_5 = 0; + DestroyTask(taskId); + } +} + +u8 sub_803163C(u8 a) +{ + switch (a) + { + case 2: + case 10: + case 11: + case 12: + case 13: + case 17: + return 1; + default: + return 0; + } +} + +void move_anim_start_t4(u8 a, u8 b, u8 c, u8 d) +{ + u8 taskId; + + gBattleAnimPlayerMonIndex = b; + gBattleAnimEnemyMonIndex = c; + DoMoveAnim(gBattleAnims_Unknown2, d, 0); + taskId = CreateTask(sub_80316CC, 10); + gTasks[taskId].data[0] = a; + ewram17810[gTasks[taskId].data[0]].unk0_6 = 1; +} + +void sub_80316CC(u8 taskId) +{ + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + ewram17810[gTasks[taskId].data[0]].unk0_6 = 0; + DestroyTask(taskId); + } +} + +u8 sub_8031720(int unused1, int unused2) +{ + return 0; +} + +bool8 mplay_80342A4(u8 a) +{ + u8 zero = 0; + + if (IsSEPlaying()) + { + ewram17810[a].unk8++; + if (ewram17810[gUnknown_02024A60].unk8 < 30) + return TRUE; + m4aMPlayStop(&gMPlay_SE1); + m4aMPlayStop(&gMPlay_SE2); + } + if (zero == 0) + { + ewram17810[a].unk8 = 0; + return FALSE; + } + return TRUE; +} + +void sub_8031794(struct Pokemon *pkmn, u8 b) +{ + u32 personalityValue; + u16 species; + u32 r7; + u32 otId; + u8 var; + u16 paletteOffset; + const u16 *palette; + + personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY); + if (ewram17800[b].unk2 == 0) + { + species = GetMonData(pkmn, MON_DATA_SPECIES); + r7 = personalityValue; + } + else + { + species = ewram17800[b].unk2; + r7 = gUnknown_02024E70[b]; + } + otId = GetMonData(pkmn, MON_DATA_OT_ID); + var = battle_get_per_side_status(b); + HandleLoadSpecialPokePic( + &gMonFrontPicTable[species], + gMonFrontPicCoords[species].coords, + gMonFrontPicCoords[species].y_offset, + 0x02000000, + gUnknown_081FAF4C[var], + species, + r7); + paletteOffset = 0x100 + b * 16; + if (ewram17800[b].unk2 == 0) + palette = pokemon_get_pal(pkmn); + else + palette = species_and_otid_get_pal(species, otId, personalityValue); + sub_800D238(palette, ewram); + LoadPalette(ewram, paletteOffset, 0x20); + LoadPalette(ewram, 0x80 + b * 16, 0x20); + if (species == SPECIES_CASTFORM) + { + paletteOffset = 0x100 + b * 16; + sub_800D238(palette, ewram + 0x16400); + LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20); + } + if (ewram17800[b].unk2 != 0) + { + BlendPalette(paletteOffset, 16, 6, 0x7FFF); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); + } +} + +void sub_80318FC(struct Pokemon *pkmn, u8 b) +{ + u32 personalityValue; + u16 species; + u32 r7; + u32 otId; + u8 var; + u16 paletteOffset; + const u16 *palette; + + personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY); + if (ewram17800[b].unk2 == 0) + { + species = GetMonData(pkmn, MON_DATA_SPECIES); + r7 = personalityValue; + } + else + { + species = ewram17800[b].unk2; + r7 = gUnknown_02024E70[b]; + } + otId = GetMonData(pkmn, MON_DATA_OT_ID); + var = battle_get_per_side_status(b); + HandleLoadSpecialPokePic( + &gMonBackPicTable[species], + gMonBackPicCoords[species].coords, + gMonBackPicCoords[species].y_offset, + 0x02000000, + gUnknown_081FAF4C[var], + species, + r7); + paletteOffset = 0x100 + b * 16; + if (ewram17800[b].unk2 == 0) + palette = pokemon_get_pal(pkmn); + else + palette = species_and_otid_get_pal(species, otId, personalityValue); + sub_800D238(palette, ewram); + LoadPalette(ewram, paletteOffset, 0x20); + LoadPalette(ewram, 0x80 + b * 16, 0x20); + if (species == SPECIES_CASTFORM) + { + paletteOffset = 0x100 + b * 16; + sub_800D238(palette, ewram + 0x16400); + LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20); + } + if (ewram17800[b].unk2 != 0) + { + BlendPalette(paletteOffset, 16, 6, 0x7FFF); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); + } +} + +void unref_sub_8031A64(void) +{ +} + +void nullsub_9(u16 unused) +{ +} + +void sub_8031A6C(u16 a, u8 b) +{ + u8 status; + struct SpriteSheet spriteSheet; + + status = battle_get_per_side_status(b); + DecompressPicFromTable_2( + &gTrainerFrontPicTable[a], + gTrainerFrontPicCoords[a].coords, + gTrainerFrontPicCoords[a].y_offset, + (void *)0x02000000, + gUnknown_081FAF4C[status], + 0); + spriteSheet.data = gUnknown_081FAF4C[status]; + spriteSheet.size = gTrainerFrontPicTable[a].size; + spriteSheet.tag = gTrainerFrontPicTable[a].tag; + LoadCompressedObjectPic(&spriteSheet); + LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[a]); +} + +void sub_8031AF4(u16 a, u8 b) +{ + u8 status; + + status = battle_get_per_side_status(b); + DecompressPicFromTable_2( + &gTrainerBackPicTable[a], + gTrainerBackPicCoords[a].coords, + gTrainerBackPicCoords[a].y_offset, + (void *)0x02000000, + gUnknown_081FAF4C[status], + 0); + LoadCompressedPalette(gTrainerBackPicPaletteTable[a].data, 0x100 + b * 16, 32); +} + +void nullsub_10(int unused) +{ +} + +void sub_8031B74(u16 a) +{ + FreeSpritePaletteByTag(gTrainerFrontPicPaletteTable[a].tag); + FreeSpriteTilesByTag(gTrainerFrontPicTable[a].tag); +} + +void unref_sub_8031BA0(void) +{ + u8 count; + u8 i; + + LoadSpritePalette(&gUnknown_0820A4D4[0]); + LoadSpritePalette(&gUnknown_0820A4D4[1]); + if (!IsDoubleBattle()) + { + LoadCompressedObjectPic(&gUnknown_0820A47C); + LoadCompressedObjectPic(&gUnknown_0820A484); + count = 2; + } + else + { + LoadCompressedObjectPic(&gUnknown_0820A48C[0]); + LoadCompressedObjectPic(&gUnknown_0820A48C[1]); + LoadCompressedObjectPic(&gUnknown_0820A49C[0]); + LoadCompressedObjectPic(&gUnknown_0820A49C[1]); + count = 4; + } + for (i = 0; i < count; i++) + LoadCompressedObjectPic(&gUnknown_0820A4B4[gUnknown_02024A72[i]]); +} + +bool8 sub_8031C30(u8 a) +{ + bool8 retVal = FALSE; + + if (a != 0) + { + if (a == 1) + { + LoadSpritePalette(&gUnknown_0820A4D4[0]); + LoadSpritePalette(&gUnknown_0820A4D4[1]); + } + else if (!IsDoubleBattle()) + { + if (a == 2) + { + if (gBattleTypeFlags & 0x80) + LoadCompressedObjectPic(&gUnknown_0820A4AC); + else + LoadCompressedObjectPic(&gUnknown_0820A47C); + } + else if (a == 3) + LoadCompressedObjectPic(&gUnknown_0820A484); + else if (a == 4) + LoadCompressedObjectPic(&gUnknown_0820A4B4[gUnknown_02024A72[0]]); + else if (a == 5) + LoadCompressedObjectPic(&gUnknown_0820A4B4[gUnknown_02024A72[1]]); + else + retVal = TRUE; + } + else + { + if (a == 2) + LoadCompressedObjectPic(&gUnknown_0820A48C[0]); + else if (a == 3) + LoadCompressedObjectPic(&gUnknown_0820A48C[1]); + else if (a == 4) + LoadCompressedObjectPic(&gUnknown_0820A49C[0]); + else if (a == 5) + LoadCompressedObjectPic(&gUnknown_0820A49C[1]); + else if (a == 6) + LoadCompressedObjectPic(&gUnknown_0820A4B4[gUnknown_02024A72[0]]); + else if (a == 7) + LoadCompressedObjectPic(&gUnknown_0820A4B4[gUnknown_02024A72[1]]); + else if (a == 8) + LoadCompressedObjectPic(&gUnknown_0820A4B4[gUnknown_02024A72[2]]); + else if (a == 9) + LoadCompressedObjectPic(&gUnknown_0820A4B4[gUnknown_02024A72[3]]); + else + retVal = TRUE; + } + } + return retVal; +} + +void load_gfxc_health_bar(void) +{ + sub_800D238(gUnknown_08D09C48, (void *)0x02000000); +} + +u8 battle_load_something(u8 *pState, u8 *b) +{ + bool8 retVal = FALSE; + + switch (*pState) + { + case 0: + sub_8031F0C(); + (*pState)++; + break; + case 1: + if (sub_8031C30(*b) == 0) + { + (*b)++; + } + else + { + *b = 0; + (*pState)++; + } + break; + case 2: + (*pState)++; + break; + case 3: + if ((gBattleTypeFlags & 0x80) && *b == 0) + gUnknown_03004340[*b] = battle_make_oam_safari_battle(); + else + gUnknown_03004340[*b] = battle_make_oam_normal_battle(*b); + (*b)++; + if (*b == gUnknown_02024A68) + { + *b = 0; + (*pState)++; + } + break; + case 4: + sub_8043F44(*b); + if (gUnknown_02024A72[*b] <= 1) + nullsub_11(gUnknown_03004340[*b], 0); + else + nullsub_11(gUnknown_03004340[*b], 1); + (*b)++; + if (*b == gUnknown_02024A68) + { + *b = 0; + (*pState)++; + } + break; + case 5: + if (battle_side_get_owner(*b) == 0) + { + if (!(gBattleTypeFlags & 0x80)) + sub_8045A5C(gUnknown_03004340[*b], &gPlayerParty[gUnknown_02024A6A[*b]], 0); + } + else + { + sub_8045A5C(gUnknown_03004340[*b], &gEnemyParty[gUnknown_02024A6A[*b]], 0); + } + sub_8043DB0(gUnknown_03004340[*b]); + (*b)++; + if (*b == gUnknown_02024A68) + { + *b = 0; + (*pState)++; + } + break; + case 6: + sub_80327CC(); + sub_8094958(); + retVal = TRUE; + break; + } + return retVal; +} + +void sub_8031EE8(void) +{ + memset(ewram17810, 0, 0x30); + memset(&ewram17840, 0, 0x10); +} + +void sub_8031F0C(void) +{ + sub_8031EE8(); + memset(ewram17800, 0, 0x10); +} + +void sub_8031F24(void) +{ + s32 i; + + for (i = 0; i < gUnknown_02024A68; i++) + ewram17800[i].unk0_0 = gSprites[gUnknown_02024BE0[i]].invisible; +} + +void sub_8031F88(u8 a) +{ + ewram17800[a].unk0_0 = gSprites[gUnknown_02024BE0[a]].invisible; +} |