Last active
January 3, 2023 16:56
-
-
Save Lusamine/3ac8daf2cd031e5f6a2c199e67a52014 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void __fastcall Dpr_Battle_Logic_Capture__JudgeCapture( | |
Dpr_Battle_Logic_Capture_JudgeResult_o *result, | |
Dpr_Battle_Logic_Capture_JudgeParam_o *param) | |
{ | |
_BYTE *p_yureCount; // x20 | |
__int32 capture_indicator; // w22 | |
unsigned int species_caught; // w23 | |
bool has_catching_charm; // w24 | |
_QWORD *xoro; // x0 | |
int shake_chance; // w22 | |
char isCritical; // w23 | |
_QWORD *xoro2; // x0 | |
char v12; // w8 | |
*(_WORD *)&result->isCaptured = 0; | |
result->yureCount = 0; | |
p_yureCount = &result->yureCount; | |
if ( param->isMustSuccess | |
|| Dpr_Battle_Logic_MainModule__IsMustCaptureMode( | |
(Dpr_Battle_Logic_MainModule_o *)param->field_0, | |
(unsigned __int16)param->field_20) ) | |
{ | |
result->isCaptured = 1; | |
v12 = 3; | |
} | |
else | |
{ | |
capture_indicator = Dpr_Battle_Logic_Capture__calcCaptureIndicator(param); | |
if ( param->isCriticalEnable ) | |
{ | |
species_caught = sub_71026F54E0(param->field_0); | |
has_catching_charm = sub_71026F54EC(param->field_0); | |
xoro = (_QWORD *)get_xoro_state(param->xoro_state); | |
result->isCritical = Dpr_Battle_Logic_Capture__checkCaptureCritical( | |
capture_indicator, | |
species_caught, | |
has_catching_charm, | |
xoro); | |
} | |
if ( capture_indicator < 0xFF000 ) | |
{ | |
shake_chance = get_shake_chance(capture_indicator); | |
isCritical = result->isCritical; | |
xoro2 = (_QWORD *)get_xoro_state(param->xoro_state); | |
check_capture_shakes(result, p_yureCount, shake_chance, isCritical, xoro2); | |
return; | |
} | |
result->isCaptured = 1; | |
if ( result->isCritical ) | |
v12 = 1; | |
else | |
v12 = 3; | |
} | |
result->yureCount = v12; | |
} | |
===== | |
.text:00000071017262C8 | |
.text:00000071017262C8 ; =============== S U B R O U T I N E ======================================= | |
.text:00000071017262C8 | |
.text:00000071017262C8 ; Attributes: bp-based frame | |
.text:00000071017262C8 | |
.text:00000071017262C8 ; void __fastcall Dpr_Battle_Logic_Capture__JudgeCapture(Dpr_Battle_Logic_Capture_JudgeResult_o *result, Dpr_Battle_Logic_Capture_JudgeParam_o *param) | |
.text:00000071017262C8 Dpr.Battle.Logic.Capture$$JudgeCapture ; CODE XREF: Dpr_Battle_Logic_Section_UseItem_Core__useBall+1D4↓p | |
.text:00000071017262C8 | |
.text:00000071017262C8 var_s0 = 0 | |
.text:00000071017262C8 var_s10 = 0x10 | |
.text:00000071017262C8 var_s20 = 0x20 | |
.text:00000071017262C8 var_s30 = 0x30 | |
.text:00000071017262C8 | |
.text:00000071017262C8 STP X29, X30, [SP,#-0x40+var_s0]! | |
.text:00000071017262CC STP X24, X23, [SP,#var_s10] | |
.text:00000071017262D0 MOV X29, SP | |
.text:00000071017262D4 STP X22, X21, [SP,#var_s20] | |
.text:00000071017262D8 STP X20, X19, [SP,#var_s30] | |
.text:00000071017262DC MOV X20, X0 | |
.text:00000071017262E0 STRH WZR, [X0] | |
.text:00000071017262E4 MOV X19, X0 | |
.text:00000071017262E8 STRB WZR, [X20,#2]! | |
.text:00000071017262EC LDRB W8, [X1,#0x28] | |
.text:00000071017262F0 CBNZ W8, loc_71017263A0 | |
.text:00000071017262F4 MOV X21, X1 | |
.text:00000071017262F8 LDR X0, [X1] | |
.text:00000071017262FC LDRH W1, [X1,#0x20] | |
.text:0000007101726300 BL Dpr.Battle.Logic.MainModule$$IsMustCaptureMode | |
.text:0000007101726304 TBNZ W0, #0, loc_71017263A0 | |
.text:0000007101726308 MOV X0, X21 ; a1 | |
.text:000000710172630C BL Dpr.Battle.Logic.Capture$$calcCaptureIndicator | |
.text:0000007101726310 LDRB W8, [X21,#0x29] | |
.text:0000007101726314 MOV W22, W0 | |
.text:0000007101726318 CBZ W8, loc_7101726358 | |
.text:000000710172631C LDR X0, [X21] | |
.text:0000007101726320 BL sub_71026F54E0 | |
.text:0000007101726324 MOV W23, W0 | |
.text:0000007101726328 LDR X0, [X21] | |
.text:000000710172632C BL sub_71026F54EC | |
.text:0000007101726330 MOV W24, W0 | |
.text:0000007101726334 LDR X0, [X21,#8] | |
.text:0000007101726338 BL get_xoro_state | |
.text:000000710172633C MOV X3, X0 | |
.text:0000007101726340 AND W2, W24, #1 | |
.text:0000007101726344 MOV W0, W22 | |
.text:0000007101726348 MOV W1, W23 | |
.text:000000710172634C BL Dpr.Battle.Logic.Capture$$checkCaptureCritical | |
.text:0000007101726350 AND W8, W0, #1 | |
.text:0000007101726354 STRB W8, [X19,#1] | |
.text:0000007101726358 | |
.text:0000007101726358 loc_7101726358 ; CODE XREF: Dpr.Battle.Logic.Capture$$JudgeCapture+50↑j | |
.text:0000007101726358 CMP W22, #0xFF,LSL#12 | |
.text:000000710172635C B.GE loc_71017263C4 | |
.text:0000007101726360 MOV W0, W22 | |
.text:0000007101726364 BL get_shake_chance | |
.text:0000007101726368 MOV W22, W0 | |
.text:000000710172636C LDR X0, [X21,#8] | |
.text:0000007101726370 LDRB W23, [X19,#1] | |
.text:0000007101726374 BL get_xoro_state | |
.text:0000007101726378 MOV X4, X0 | |
.text:000000710172637C MOV X0, X19 | |
.text:0000007101726380 MOV X1, X20 | |
.text:0000007101726384 MOV W2, W22 | |
.text:0000007101726388 LDP X20, X19, [SP,#var_s30] | |
.text:000000710172638C MOV W3, W23 | |
.text:0000007101726390 LDP X22, X21, [SP,#var_s20] | |
.text:0000007101726394 LDP X24, X23, [SP,#var_s10] | |
.text:0000007101726398 LDP X29, X30, [SP+var_s0],#0x40 | |
.text:000000710172639C B check_capture_shakes | |
.text:00000071017263A0 ; --------------------------------------------------------------------------- | |
.text:00000071017263A0 | |
.text:00000071017263A0 loc_71017263A0 ; CODE XREF: Dpr.Battle.Logic.Capture$$JudgeCapture+28↑j | |
.text:00000071017263A0 ; Dpr.Battle.Logic.Capture$$JudgeCapture+3C↑j | |
.text:00000071017263A0 MOV W8, #1 | |
.text:00000071017263A4 STRB W8, [X19] | |
.text:00000071017263A8 MOV W8, #3 | |
.text:00000071017263AC | |
.text:00000071017263AC loc_71017263AC ; CODE XREF: Dpr.Battle.Logic.Capture$$JudgeCapture+114↓j | |
.text:00000071017263AC STRB W8, [X19,#2] | |
.text:00000071017263B0 LDP X20, X19, [SP,#var_s30] | |
.text:00000071017263B4 LDP X22, X21, [SP,#var_s20] | |
.text:00000071017263B8 LDP X24, X23, [SP,#var_s10] | |
.text:00000071017263BC LDP X29, X30, [SP+var_s0],#0x40 | |
.text:00000071017263C0 RET | |
.text:00000071017263C4 ; --------------------------------------------------------------------------- | |
.text:00000071017263C4 | |
.text:00000071017263C4 loc_71017263C4 ; CODE XREF: Dpr.Battle.Logic.Capture$$JudgeCapture+94↑j | |
.text:00000071017263C4 MOV W8, #1 | |
.text:00000071017263C8 STRB W8, [X19] | |
.text:00000071017263CC LDRB W8, [X19,#1] | |
.text:00000071017263D0 CMP W8, #0 | |
.text:00000071017263D4 MOV W8, #3 | |
.text:00000071017263D8 CSINC W8, W8, WZR, EQ | |
.text:00000071017263DC B loc_71017263AC | |
.text:00000071017263DC ; End of function Dpr.Battle.Logic.Capture$$JudgeCapture | |
.text:00000071017263DC |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment