start decompilation

This commit is contained in:
Evan 2019-11-30 11:36:22 -05:00
parent 1196d0b533
commit 0b547dff4d
4 changed files with 138 additions and 195 deletions

View File

@ -5,131 +5,6 @@
.text
thumb_func_start ClearBattleAnimationVars
ClearBattleAnimationVars: @ 80724C0
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r0, _08072554 @ =gUnknown_2037EE0
movs r1, 0
strb r1, [r0]
ldr r0, _08072558 @ =gAnimScriptActive
strb r1, [r0]
ldr r0, _0807255C @ =gAnimVisualTaskCount
strb r1, [r0]
ldr r0, _08072560 @ =gUnknown_2037EE3
strb r1, [r0]
ldr r0, _08072564 @ =gAnimDisableStructPtr
movs r1, 0
str r1, [r0]
ldr r0, _08072568 @ =gAnimMoveDmg
str r1, [r0]
ldr r0, _0807256C @ =gAnimMovePower
movs r2, 0
strh r1, [r0]
ldr r0, _08072570 @ =gAnimFriendship
strb r2, [r0]
ldr r4, _08072574 @ =gUnknown_2037F14
ldr r5, _08072578 @ =gAnimMoveTurn
ldr r6, _0807257C @ =gUnknown_2037F17
ldr r7, _08072580 @ =gUnknown_2037F18
ldr r0, _08072584 @ =gBattleAnimAttacker
mov r12, r0
ldr r1, _08072588 @ =gBattleAnimTarget
mov r8, r1
ldr r0, _0807258C @ =gUnknown_2037F24
mov r9, r0
ldr r1, _08072590 @ =0x0000ffff
adds r3, r1, 0
ldr r1, _08072594 @ =gUnknown_2037EEE
movs r2, 0x7
_0807250A:
ldrh r0, [r1]
orrs r0, r3
strh r0, [r1]
adds r1, 0x2
subs r2, 0x1
cmp r2, 0
bge _0807250A
ldr r1, _08072598 @ =gBattleAnimArgs
movs r2, 0
adds r0, r1, 0
adds r0, 0xE
_08072520:
strh r2, [r0]
subs r0, 0x2
cmp r0, r1
bge _08072520
movs r1, 0
movs r0, 0xFF
strb r0, [r4]
movs r0, 0x1
negs r0, r0
strb r0, [r4, 0x1]
strb r1, [r5]
strb r1, [r6]
movs r0, 0
strh r1, [r7]
mov r1, r12
strb r0, [r1]
mov r1, r8
strb r0, [r1]
mov r1, r9
strb r0, [r1]
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08072554: .4byte gUnknown_2037EE0
_08072558: .4byte gAnimScriptActive
_0807255C: .4byte gAnimVisualTaskCount
_08072560: .4byte gUnknown_2037EE3
_08072564: .4byte gAnimDisableStructPtr
_08072568: .4byte gAnimMoveDmg
_0807256C: .4byte gAnimMovePower
_08072570: .4byte gAnimFriendship
_08072574: .4byte gUnknown_2037F14
_08072578: .4byte gAnimMoveTurn
_0807257C: .4byte gUnknown_2037F17
_08072580: .4byte gUnknown_2037F18
_08072584: .4byte gBattleAnimAttacker
_08072588: .4byte gBattleAnimTarget
_0807258C: .4byte gUnknown_2037F24
_08072590: .4byte 0x0000ffff
_08072594: .4byte gUnknown_2037EEE
_08072598: .4byte gBattleAnimArgs
thumb_func_end ClearBattleAnimationVars
thumb_func_start DoMoveAnim
DoMoveAnim: @ 807259C
push {lr}
adds r1, r0, 0
lsls r1, 16
lsrs r1, 16
ldr r2, _080725C0 @ =gBattleAnimAttacker
ldr r0, _080725C4 @ =gBattlerAttacker
ldrb r0, [r0]
strb r0, [r2]
ldr r2, _080725C8 @ =gBattleAnimTarget
ldr r0, _080725CC @ =gBattlerTarget
ldrb r0, [r0]
strb r0, [r2]
ldr r0, _080725D0 @ =gBattleAnims_Moves
movs r2, 0x1
bl LaunchBattleAnimation
pop {r0}
bx r0
.align 2, 0
_080725C0: .4byte gBattleAnimAttacker
_080725C4: .4byte gBattlerAttacker
_080725C8: .4byte gBattleAnimTarget
_080725CC: .4byte gBattlerTarget
_080725D0: .4byte gBattleAnims_Moves
thumb_func_end DoMoveAnim
thumb_func_start LaunchBattleAnimation
LaunchBattleAnimation: @ 80725D4

View File

@ -111,6 +111,7 @@ SECTIONS {
src/tileset_anims.o(.text);
src/palette.o(.text);
src/sound.o(.text);
src/battle_anim.o(.text);
asm/battle_anim.o(.text);
src/battle_anim_mons.o(.text);
src/task.o(.text);

136
src/battle_anim.c Normal file
View File

@ -0,0 +1,136 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
#include "battle_controllers.h"
#include "battle_interface.h"
// Defines
#define ANIM_SPRITE_INDEX_COUNT 8
// RAM
EWRAM_DATA static const u8 *sBattleAnimScriptPtr = NULL;
EWRAM_DATA static const u8 *sBattleAnimScriptRetAddr = NULL;
EWRAM_DATA void (*gAnimScriptCallback)(void) = NULL;
EWRAM_DATA static s8 gAnimFramesToWait = 0;
EWRAM_DATA bool8 gAnimScriptActive = FALSE;
EWRAM_DATA u8 gAnimVisualTaskCount = 0;
EWRAM_DATA u8 gAnimSoundTaskCount = 0;
EWRAM_DATA struct DisableStruct *gAnimDisableStructPtr = NULL;
EWRAM_DATA s32 gAnimMoveDmg = 0;
EWRAM_DATA u16 gAnimMovePower = 0;
EWRAM_DATA static u16 sAnimSpriteIndexArray[ANIM_SPRITE_INDEX_COUNT] = {0};
EWRAM_DATA u8 gAnimFriendship = 0;
EWRAM_DATA u16 gWeatherMoveAnim = 0;
EWRAM_DATA s16 gBattleAnimArgs[ANIM_ARGS_COUNT] = {0};
EWRAM_DATA static u16 sSoundAnimFramesToWait = 0;
EWRAM_DATA static u8 sMonAnimTaskIdArray[2] = {0};
EWRAM_DATA u8 gAnimMoveTurn = 0;
EWRAM_DATA static u8 sAnimBackgroundFadeState = 0;
EWRAM_DATA static u16 sAnimMoveIndex = 0; // Set but unused.
EWRAM_DATA u8 gBattleAnimAttacker = 0;
EWRAM_DATA u8 gBattleAnimTarget = 0;
EWRAM_DATA u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT] = {0};
EWRAM_DATA u8 gUnknown_2037F24 = 0;
// Data
// Function Declarations
void ClearBattleAnimationVars(void)
{
s32 i;
gAnimFramesToWait = 0;
gAnimScriptActive = FALSE;
gAnimVisualTaskCount = 0;
gAnimSoundTaskCount = 0;
gAnimDisableStructPtr = NULL;
gAnimMoveDmg = 0;
gAnimMovePower = 0;
gAnimFriendship = 0;
// Clear index array.
for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++)
sAnimSpriteIndexArray[i] |= 0xFFFF;
// Clear anim args.
for (i = 0; i < ANIM_ARGS_COUNT; i++)
gBattleAnimArgs[i] = 0;
sMonAnimTaskIdArray[0] = 0xFF;
sMonAnimTaskIdArray[1] = (s8)0xFF;
gAnimMoveTurn = 0;
sAnimBackgroundFadeState = 0;
sAnimMoveIndex = 0;
gBattleAnimAttacker = 0;
gBattleAnimTarget = 0;
gUnknown_2037F24 = 0;
}
void DoMoveAnim(u16 move)
{
gBattleAnimAttacker = gBattlerAttacker;
gBattleAnimTarget = gBattlerTarget;
LaunchBattleAnimation(gBattleAnims_Moves, move, TRUE);
}
void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim)
{
s32 i;
if (!IsContest())
{
sub_80A8278();
UpdateOamPriorityInAllHealthboxes(0);
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
if (GetBattlerSide(i) != B_SIDE_PLAYER)
gAnimBattlerSpecies[i] = GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_SPECIES);
else
gAnimBattlerSpecies[i] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_SPECIES);
}
}
else
{
for (i = 0; i < 4; i++)
gAnimBattlerSpecies[i] = gContestResources->field_18->species;
}
if (!isMoveAnim)
sAnimMoveIndex = 0;
else
sAnimMoveIndex = tableId;
for (i = 0; i < ANIM_ARGS_COUNT; i++)
gBattleAnimArgs[i] = 0;
sMonAnimTaskIdArray[0] = 0xFF;
sMonAnimTaskIdArray[1] = 0xFF;
sBattleAnimScriptPtr = animsTable[tableId];
gAnimScriptActive = TRUE;
gAnimFramesToWait = 0;
gAnimScriptCallback = RunAnimScriptCommand;
for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++)
sAnimSpriteIndexArray[i] = 0xFFFF;
if (isMoveAnim)
{
for (i = 0; gMovesWithQuietBGM[i] != 0xFFFF; i++)
{
if (tableId == gMovesWithQuietBGM[i])
{
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 128);
break;
}
}
}
gBattle_WIN0H = 0;
gBattle_WIN0V = 0;
gBattle_WIN1H = 0;
gBattle_WIN1V = 0;
}

View File

@ -119,77 +119,8 @@ gUnknown_203709C: @ 203709C
.include "src/palette.o"
.align 2
.include "src/sound.o"
.align 2
gUnknown_2037ED4: @ 2037ED4
.space 0x4
gUnknown_2037ED8: @ 2037ED8
.space 0x4
gAnimScriptCallback: @ 2037EDC
.space 0x4
gUnknown_2037EE0: @ 2037EE0
.space 0x1
gAnimScriptActive: @ 2037EE1
.space 0x1
gAnimVisualTaskCount: @ 2037EE2
.space 0x1
gUnknown_2037EE3: @ 2037EE3
.space 0x1
gAnimDisableStructPtr: @ 2037EE4
.space 0x4
gAnimMoveDmg: @ 2037EE8
.space 0x4
gAnimMovePower: @ 2037EEC
.space 0x2
gUnknown_2037EEE: @ 2037EEE
.space 0x10
gAnimFriendship: @ 2037EFE
.space 0x2
gWeatherMoveAnim: @ 2037F00
.space 0x2
gBattleAnimArgs: @ 2037F02
.space 0x10
gUnknown_2037F12: @ 2037F12
.space 0x2
gUnknown_2037F14: @ 2037F14
.space 0x2
gAnimMoveTurn: @ 2037F16
.space 0x1
gUnknown_2037F17: @ 2037F17
.space 0x1
gUnknown_2037F18: @ 2037F18
.space 0x2
gBattleAnimAttacker: @ 2037F1A
.space 0x1
gBattleAnimTarget: @ 2037F1B
.space 0x1
gAnimBattlerSpecies: @ 2037F1C
.space 0x8
gUnknown_2037F24: @ 2037F24
.space 0x4
.include "src/battle_anim.o"
.align 2
.include "src/battle_anim_mons.o"
.align 2