mirror of
https://github.com/pret/pokeheartgold.git
synced 2025-02-20 05:10:57 +00:00
added MoveFailFlags
This commit is contained in:
parent
6a718e0490
commit
75ee37006f
@ -8,117 +8,6 @@
|
||||
.text
|
||||
.public AddBattlerVar
|
||||
|
||||
thumb_func_start ov12_02251710
|
||||
ov12_02251710: ; 0x02251710
|
||||
push {r4, r5, r6, r7, lr}
|
||||
sub sp, #0xc
|
||||
str r0, [sp]
|
||||
mov r0, #0
|
||||
str r0, [sp, #4]
|
||||
mov r0, #0x75
|
||||
add r5, r1, #0
|
||||
lsl r0, r0, #2
|
||||
add r7, r5, r0
|
||||
mov r0, #0xd1
|
||||
lsl r0, r0, #2
|
||||
add r6, r5, r0
|
||||
mov r0, #8
|
||||
add r4, r5, #0
|
||||
str r0, [sp, #8]
|
||||
_0225172E:
|
||||
mov r0, #0
|
||||
add r1, r7, #0
|
||||
mov r2, #0x40
|
||||
bl MIi_CpuClearFast
|
||||
mov r0, #0
|
||||
add r1, r6, #0
|
||||
mov r2, #4
|
||||
bl MIi_CpuClearFast
|
||||
ldr r0, _022517D8 ; =0x00002DB0
|
||||
ldr r1, [r4, r0]
|
||||
ldr r0, [sp, #8]
|
||||
bic r1, r0
|
||||
ldr r0, _022517D8 ; =0x00002DB0
|
||||
str r1, [r4, r0]
|
||||
add r0, #0x20
|
||||
ldr r0, [r4, r0]
|
||||
add r1, r0, #1
|
||||
mov r0, #0x15
|
||||
lsl r0, r0, #4
|
||||
ldr r0, [r5, r0]
|
||||
cmp r1, r0
|
||||
bge _0225176A
|
||||
ldr r0, _022517D8 ; =0x00002DB0
|
||||
ldr r1, [r4, r0]
|
||||
ldr r0, _022517DC ; =0xFFBFFFFF
|
||||
and r1, r0
|
||||
ldr r0, _022517D8 ; =0x00002DB0
|
||||
str r1, [r4, r0]
|
||||
_0225176A:
|
||||
ldr r0, _022517E0 ; =0x00002DAC
|
||||
ldr r1, [r4, r0]
|
||||
mov r0, #7
|
||||
tst r0, r1
|
||||
beq _0225178A
|
||||
ldr r0, _022517D8 ; =0x00002DB0
|
||||
ldr r1, [r4, r0]
|
||||
mov r0, #1
|
||||
lsl r0, r0, #0xc
|
||||
tst r0, r1
|
||||
beq _0225178A
|
||||
ldr r0, [sp]
|
||||
ldr r2, [sp, #4]
|
||||
add r1, r5, #0
|
||||
bl UnlockBattlerOutOfCurrentMove
|
||||
_0225178A:
|
||||
ldr r0, _022517E0 ; =0x00002DAC
|
||||
ldr r1, [r4, r0]
|
||||
mov r0, #7
|
||||
tst r0, r1
|
||||
beq _022517AC
|
||||
ldr r0, _022517D8 ; =0x00002DB0
|
||||
ldr r1, [r4, r0]
|
||||
mov r0, #3
|
||||
lsl r0, r0, #0xa
|
||||
tst r0, r1
|
||||
beq _022517AC
|
||||
ldr r0, _022517D8 ; =0x00002DB0
|
||||
ldr r1, [r4, r0]
|
||||
ldr r0, _022517E4 ; =0xFFFFF3FF
|
||||
and r1, r0
|
||||
ldr r0, _022517D8 ; =0x00002DB0
|
||||
str r1, [r4, r0]
|
||||
_022517AC:
|
||||
ldr r0, [sp, #4]
|
||||
add r7, #0x40
|
||||
add r0, r0, #1
|
||||
add r6, r6, #4
|
||||
add r4, #0xc0
|
||||
str r0, [sp, #4]
|
||||
cmp r0, #4
|
||||
blt _0225172E
|
||||
mov r2, #0x71
|
||||
lsl r2, r2, #2
|
||||
ldr r0, [r5, r2]
|
||||
ldr r1, _022517E8 ; =0xFFEFFFFF
|
||||
and r0, r1
|
||||
str r0, [r5, r2]
|
||||
add r0, r2, #0
|
||||
add r0, #8
|
||||
ldr r0, [r5, r0]
|
||||
add r2, #8
|
||||
and r0, r1
|
||||
str r0, [r5, r2]
|
||||
add sp, #0xc
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.balign 4, 0
|
||||
_022517D8: .word 0x00002DB0
|
||||
_022517DC: .word 0xFFBFFFFF
|
||||
_022517E0: .word 0x00002DAC
|
||||
_022517E4: .word 0xFFFFF3FF
|
||||
_022517E8: .word 0xFFEFFFFF
|
||||
thumb_func_end ov12_02251710
|
||||
|
||||
thumb_func_start StruggleCheck
|
||||
StruggleCheck: ; 0x022517EC
|
||||
push {r4, r5, r6, r7, lr}
|
||||
|
@ -124,6 +124,20 @@ typedef struct UnkBtlCtxSub_76 {
|
||||
u16 unk288[4];
|
||||
} UnkBtlCtxSub_76;
|
||||
|
||||
typedef struct MoveFailFlags {
|
||||
u32 paralysis:1;
|
||||
u32 unk0_1:1;
|
||||
u32 imprison:1;
|
||||
u32 infatuation:1;
|
||||
u32 asleep:1;
|
||||
u32 unk0_5:1;
|
||||
u32 flinch:1;
|
||||
u32 confusion:1;
|
||||
u32 unk0_8:1;
|
||||
u32 healBlock:1;
|
||||
u32 unused:21;
|
||||
} MoveFailFlags;
|
||||
|
||||
typedef struct UnkBattlemonSub {
|
||||
u32 disabledTurns:3;
|
||||
u32 encoredTurns:3;
|
||||
@ -306,7 +320,7 @@ typedef struct BATTLECONTEXT {
|
||||
SideConditionData fieldSideConditionData[2];
|
||||
TurnData turnData[4];
|
||||
SelfTurnData selfTurnData[4];
|
||||
u32 unk_324[4]; //note: this is an unidentified bitfield array
|
||||
MoveFailFlags moveFail[4];
|
||||
UnkBtlCtxSub_76 unk_334;
|
||||
u32 * unk_2134;
|
||||
u32 unk_2138;
|
||||
|
@ -134,6 +134,8 @@ enum Terrain {
|
||||
#define CONDITION_PARALYSIS 5
|
||||
|
||||
//Status 2
|
||||
#define STATUS2_FLINCH (1 << 3)
|
||||
#define STATUS2_RAGE (3 << 10)
|
||||
#define STATUS2_LOCKED_INTO_MOVE (1 << 12)
|
||||
#define STATUS2_13 (1 << 13)
|
||||
#define STATUS2_14 (1 << 14)
|
||||
@ -144,6 +146,7 @@ enum Terrain {
|
||||
#define STATUS2_ATTRACT_BATTLER4 (1 << 19)
|
||||
#define STATUS2_FOCUS_ENERGY (1 << 20)
|
||||
#define STATUS2_TRANSFORMED (1 << 21)
|
||||
#define STATUS2_RECHARGE (1 << 22)
|
||||
#define STATUS2_24 (1 << 24)
|
||||
#define STATUS2_MEAN_LOOK (1 << 26)
|
||||
#define STATUS2_27 (1 << 27)
|
||||
|
@ -33,6 +33,7 @@ void BattleContext_Init(BATTLECONTEXT *ctx);
|
||||
void ov12_02251038(BattleSystem *bsys, BATTLECONTEXT *ctx);
|
||||
void InitSwitchWork(BattleSystem *bsys, BATTLECONTEXT *ctx, int battlerId);
|
||||
void InitFaintedWork(BattleSystem *bsys, BATTLECONTEXT *ctx, int battlerId);
|
||||
void ov12_02251710(BattleSystem *bsys, BATTLECONTEXT *ctx);
|
||||
|
||||
//The following functions haven't been decompiled as of now
|
||||
void ov12_02256F78(BattleSystem *bsys, BATTLECONTEXT *ctx, int battlerId, u8 monIndex);
|
||||
|
@ -1939,3 +1939,26 @@ void InitFaintedWork(BattleSystem *bsys, BATTLECONTEXT *ctx, int battlerId) {
|
||||
ov12_0225859C(ctx, battlerId);
|
||||
ov12_022585A8(ctx, battlerId);
|
||||
}
|
||||
|
||||
//BattleContext_InitTurnData..?
|
||||
void ov12_02251710(BattleSystem *bsys, BATTLECONTEXT *ctx) {
|
||||
int battlerId;
|
||||
|
||||
for (battlerId = 0; battlerId < 4; battlerId++) {
|
||||
MIi_CpuClearFast(0, (u32 *)&ctx->turnData[battlerId], sizeof(TurnData));
|
||||
MIi_CpuClearFast(0, (u32 *)&ctx->moveFail[battlerId], sizeof(MoveFailFlags));
|
||||
ctx->battleMons[battlerId].status2 &= ~STATUS2_FLINCH;
|
||||
if (ctx->battleMons[battlerId].unk88.rechargeCount + 1 < ctx->totalTurns) {
|
||||
ctx->battleMons[battlerId].status2 &= ~STATUS2_RECHARGE;
|
||||
}
|
||||
if ((ctx->battleMons[battlerId].status & STATUS_SLEEP) && (ctx->battleMons[battlerId].status2 & STATUS2_LOCKED_INTO_MOVE)) {
|
||||
UnlockBattlerOutOfCurrentMove(bsys, ctx, battlerId);
|
||||
}
|
||||
if ((ctx->battleMons[battlerId].status & STATUS_SLEEP) && (ctx->battleMons[battlerId].status2 & STATUS2_RAGE)) {
|
||||
ctx->battleMons[battlerId].status2 &= ~STATUS2_RAGE;
|
||||
}
|
||||
}
|
||||
|
||||
ctx->fieldSideConditionData[0].followMeFlag = 0;
|
||||
ctx->fieldSideConditionData[1].followMeFlag = 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user