diff options
| -rw-r--r-- | asm/contest_ai.s | 759 | ||||
| -rwxr-xr-x | src/contest_ai.c | 291 | 
2 files changed, 214 insertions, 836 deletions
| diff --git a/asm/contest_ai.s b/asm/contest_ai.s index e659b4776..dc102c346 100644 --- a/asm/contest_ai.s +++ b/asm/contest_ai.s @@ -5,765 +5,6 @@  	.text -	thumb_func_start ContestAICmd_check_combo_starter -ContestAICmd_check_combo_starter: @ 8129B44 -	push {r4-r7,lr} -	mov r7, r8 -	push {r7} -	movs r5, 0 -	ldr r3, _08129BAC @ =gContestMons -	ldr r2, _08129BB0 @ =gSharedMem + 0x192E4 -	ldrb r1, [r2, 0x4] -	lsls r1, 1 -	adds r2, 0x41 -	ldrb r0, [r2] -	lsls r0, 6 -	adds r1, r0 -	adds r3, 0x1E -	adds r1, r3 -	ldrh r6, [r1] -	movs r4, 0 -	mov r8, r2 -	adds r7, r3, 0 -_08129B68: -	lsls r0, r4, 1 -	mov r2, r8 -	ldrb r1, [r2] -	lsls r1, 6 -	adds r0, r1 -	adds r1, r0, r7 -	ldrh r0, [r1] -	cmp r0, 0 -	beq _08129B8A -	adds r1, r0, 0 -	adds r0, r6, 0 -	bl AreMovesContestCombo -	lsls r0, 24 -	lsrs r5, r0, 24 -	cmp r5, 0 -	bne _08129B94 -_08129B8A: -	adds r4, 0x1 -	cmp r4, 0x3 -	ble _08129B68 -	cmp r5, 0 -	beq _08129B96 -_08129B94: -	movs r5, 0x1 -_08129B96: -	ldr r0, _08129BB0 @ =gSharedMem + 0x192E4 -	strh r5, [r0, 0x18] -	ldr r1, _08129BB4 @ =gAIScriptPtr -	ldr r0, [r1] -	adds r0, 0x1 -	str r0, [r1] -	pop {r3} -	mov r8, r3 -	pop {r4-r7} -	pop {r0} -	bx r0 -	.align 2, 0 -_08129BAC: .4byte gContestMons -_08129BB0: .4byte gSharedMem + 0x192E4 -_08129BB4: .4byte gAIScriptPtr -	thumb_func_end ContestAICmd_check_combo_starter - -	thumb_func_start ContestAICmd_unk_41 -ContestAICmd_unk_41: @ 8129BB8 -	push {lr} -	bl ContestAICmd_check_combo_starter -	ldr r0, _08129BE4 @ =gSharedMem + 0x192E4 -	movs r1, 0x18 -	ldrsh r0, [r0, r1] -	cmp r0, 0 -	beq _08129BEC -	ldr r3, _08129BE8 @ =gAIScriptPtr -	ldr r2, [r3] -	ldrb r1, [r2] -	ldrb r0, [r2, 0x1] -	lsls r0, 8 -	orrs r1, r0 -	ldrb r0, [r2, 0x2] -	lsls r0, 16 -	orrs r1, r0 -	ldrb r0, [r2, 0x3] -	lsls r0, 24 -	orrs r1, r0 -	str r1, [r3] -	b _08129BF4 -	.align 2, 0 -_08129BE4: .4byte gSharedMem + 0x192E4 -_08129BE8: .4byte gAIScriptPtr -_08129BEC: -	ldr r1, _08129BF8 @ =gAIScriptPtr -	ldr r0, [r1] -	adds r0, 0x4 -	str r0, [r1] -_08129BF4: -	pop {r0} -	bx r0 -	.align 2, 0 -_08129BF8: .4byte gAIScriptPtr -	thumb_func_end ContestAICmd_unk_41 - -	thumb_func_start ContestAICmd_unk_42 -ContestAICmd_unk_42: @ 8129BFC -	push {lr} -	bl ContestAICmd_check_combo_starter -	ldr r0, _08129C28 @ =gSharedMem + 0x192E4 -	movs r1, 0x18 -	ldrsh r0, [r0, r1] -	cmp r0, 0 -	bne _08129C30 -	ldr r3, _08129C2C @ =gAIScriptPtr -	ldr r2, [r3] -	ldrb r1, [r2] -	ldrb r0, [r2, 0x1] -	lsls r0, 8 -	orrs r1, r0 -	ldrb r0, [r2, 0x2] -	lsls r0, 16 -	orrs r1, r0 -	ldrb r0, [r2, 0x3] -	lsls r0, 24 -	orrs r1, r0 -	str r1, [r3] -	b _08129C38 -	.align 2, 0 -_08129C28: .4byte gSharedMem + 0x192E4 -_08129C2C: .4byte gAIScriptPtr -_08129C30: -	ldr r1, _08129C3C @ =gAIScriptPtr -	ldr r0, [r1] -	adds r0, 0x4 -	str r0, [r1] -_08129C38: -	pop {r0} -	bx r0 -	.align 2, 0 -_08129C3C: .4byte gAIScriptPtr -	thumb_func_end ContestAICmd_unk_42 - -	thumb_func_start ContestAICmd_check_combo_finisher -ContestAICmd_check_combo_finisher: @ 8129C40 -	push {r4-r7,lr} -	mov r7, r8 -	push {r7} -	movs r5, 0 -	ldr r3, _08129CA8 @ =gContestMons -	ldr r2, _08129CAC @ =gSharedMem + 0x192E4 -	ldrb r1, [r2, 0x4] -	lsls r1, 1 -	adds r2, 0x41 -	ldrb r0, [r2] -	lsls r0, 6 -	adds r1, r0 -	adds r3, 0x1E -	adds r1, r3 -	ldrh r6, [r1] -	movs r4, 0 -	mov r8, r2 -	adds r7, r3, 0 -_08129C64: -	lsls r0, r4, 1 -	mov r2, r8 -	ldrb r1, [r2] -	lsls r1, 6 -	adds r0, r1 -	adds r1, r0, r7 -	ldrh r0, [r1] -	cmp r0, 0 -	beq _08129C84 -	adds r1, r6, 0 -	bl AreMovesContestCombo -	lsls r0, 24 -	lsrs r5, r0, 24 -	cmp r5, 0 -	bne _08129C8E -_08129C84: -	adds r4, 0x1 -	cmp r4, 0x3 -	ble _08129C64 -	cmp r5, 0 -	beq _08129C90 -_08129C8E: -	movs r5, 0x1 -_08129C90: -	ldr r0, _08129CAC @ =gSharedMem + 0x192E4 -	strh r5, [r0, 0x18] -	ldr r1, _08129CB0 @ =gAIScriptPtr -	ldr r0, [r1] -	adds r0, 0x1 -	str r0, [r1] -	pop {r3} -	mov r8, r3 -	pop {r4-r7} -	pop {r0} -	bx r0 -	.align 2, 0 -_08129CA8: .4byte gContestMons -_08129CAC: .4byte gSharedMem + 0x192E4 -_08129CB0: .4byte gAIScriptPtr -	thumb_func_end ContestAICmd_check_combo_finisher - -	thumb_func_start ContestAICmd_unk_44 -ContestAICmd_unk_44: @ 8129CB4 -	push {lr} -	bl ContestAICmd_check_combo_finisher -	ldr r0, _08129CE0 @ =gSharedMem + 0x192E4 -	movs r1, 0x18 -	ldrsh r0, [r0, r1] -	cmp r0, 0 -	beq _08129CE8 -	ldr r3, _08129CE4 @ =gAIScriptPtr -	ldr r2, [r3] -	ldrb r1, [r2] -	ldrb r0, [r2, 0x1] -	lsls r0, 8 -	orrs r1, r0 -	ldrb r0, [r2, 0x2] -	lsls r0, 16 -	orrs r1, r0 -	ldrb r0, [r2, 0x3] -	lsls r0, 24 -	orrs r1, r0 -	str r1, [r3] -	b _08129CF0 -	.align 2, 0 -_08129CE0: .4byte gSharedMem + 0x192E4 -_08129CE4: .4byte gAIScriptPtr -_08129CE8: -	ldr r1, _08129CF4 @ =gAIScriptPtr -	ldr r0, [r1] -	adds r0, 0x4 -	str r0, [r1] -_08129CF0: -	pop {r0} -	bx r0 -	.align 2, 0 -_08129CF4: .4byte gAIScriptPtr -	thumb_func_end ContestAICmd_unk_44 - -	thumb_func_start ContestAICmd_unk_45 -ContestAICmd_unk_45: @ 8129CF8 -	push {lr} -	bl ContestAICmd_check_combo_finisher -	ldr r0, _08129D24 @ =gSharedMem + 0x192E4 -	movs r1, 0x18 -	ldrsh r0, [r0, r1] -	cmp r0, 0 -	bne _08129D2C -	ldr r3, _08129D28 @ =gAIScriptPtr -	ldr r2, [r3] -	ldrb r1, [r2] -	ldrb r0, [r2, 0x1] -	lsls r0, 8 -	orrs r1, r0 -	ldrb r0, [r2, 0x2] -	lsls r0, 16 -	orrs r1, r0 -	ldrb r0, [r2, 0x3] -	lsls r0, 24 -	orrs r1, r0 -	str r1, [r3] -	b _08129D34 -	.align 2, 0 -_08129D24: .4byte gSharedMem + 0x192E4 -_08129D28: .4byte gAIScriptPtr -_08129D2C: -	ldr r1, _08129D38 @ =gAIScriptPtr -	ldr r0, [r1] -	adds r0, 0x4 -	str r0, [r1] -_08129D34: -	pop {r0} -	bx r0 -	.align 2, 0 -_08129D38: .4byte gAIScriptPtr -	thumb_func_end ContestAICmd_unk_45 - -	thumb_func_start ContestAICmd_check_would_finish_combo -ContestAICmd_check_would_finish_combo: @ 8129D3C -	push {r4,r5,lr} -	movs r5, 0 -	ldr r3, _08129D8C @ =gContestMons -	ldr r4, _08129D90 @ =gSharedMem + 0x192E4 -	ldrb r0, [r4, 0x4] -	lsls r0, 1 -	adds r1, r4, 0 -	adds r1, 0x41 -	ldrb r2, [r1] -	lsls r1, r2, 6 -	adds r0, r1 -	adds r3, 0x1E -	adds r0, r3 -	ldrh r3, [r0] -	lsls r0, r2, 3 -	subs r0, r2 -	lsls r0, 2 -	adds r1, r4, 0 -	subs r1, 0x84 -	adds r1, r0, r1 -	ldrh r0, [r1, 0x8] -	cmp r0, 0 -	beq _08129D74 -	adds r1, r3, 0 -	bl AreMovesContestCombo -	lsls r0, 24 -	lsrs r5, r0, 24 -_08129D74: -	cmp r5, 0 -	beq _08129D7A -	movs r5, 0x1 -_08129D7A: -	strh r5, [r4, 0x18] -	ldr r1, _08129D94 @ =gAIScriptPtr -	ldr r0, [r1] -	adds r0, 0x1 -	str r0, [r1] -	pop {r4,r5} -	pop {r0} -	bx r0 -	.align 2, 0 -_08129D8C: .4byte gContestMons -_08129D90: .4byte gSharedMem + 0x192E4 -_08129D94: .4byte gAIScriptPtr -	thumb_func_end ContestAICmd_check_would_finish_combo - -	thumb_func_start ContestAICmd_unk_47 -ContestAICmd_unk_47: @ 8129D98 -	push {lr} -	bl ContestAICmd_check_would_finish_combo -	ldr r0, _08129DC4 @ =gSharedMem + 0x192E4 -	movs r1, 0x18 -	ldrsh r0, [r0, r1] -	cmp r0, 0 -	beq _08129DCC -	ldr r3, _08129DC8 @ =gAIScriptPtr -	ldr r2, [r3] -	ldrb r1, [r2] -	ldrb r0, [r2, 0x1] -	lsls r0, 8 -	orrs r1, r0 -	ldrb r0, [r2, 0x2] -	lsls r0, 16 -	orrs r1, r0 -	ldrb r0, [r2, 0x3] -	lsls r0, 24 -	orrs r1, r0 -	str r1, [r3] -	b _08129DD4 -	.align 2, 0 -_08129DC4: .4byte gSharedMem + 0x192E4 -_08129DC8: .4byte gAIScriptPtr -_08129DCC: -	ldr r1, _08129DD8 @ =gAIScriptPtr -	ldr r0, [r1] -	adds r0, 0x4 -	str r0, [r1] -_08129DD4: -	pop {r0} -	bx r0 -	.align 2, 0 -_08129DD8: .4byte gAIScriptPtr -	thumb_func_end ContestAICmd_unk_47 - -	thumb_func_start ContestAICmd_unk_48 -ContestAICmd_unk_48: @ 8129DDC -	push {lr} -	bl ContestAICmd_check_would_finish_combo -	ldr r0, _08129E08 @ =gSharedMem + 0x192E4 -	movs r1, 0x18 -	ldrsh r0, [r0, r1] -	cmp r0, 0 -	bne _08129E10 -	ldr r3, _08129E0C @ =gAIScriptPtr -	ldr r2, [r3] -	ldrb r1, [r2] -	ldrb r0, [r2, 0x1] -	lsls r0, 8 -	orrs r1, r0 -	ldrb r0, [r2, 0x2] -	lsls r0, 16 -	orrs r1, r0 -	ldrb r0, [r2, 0x3] -	lsls r0, 24 -	orrs r1, r0 -	str r1, [r3] -	b _08129E18 -	.align 2, 0 -_08129E08: .4byte gSharedMem + 0x192E4 -_08129E0C: .4byte gAIScriptPtr -_08129E10: -	ldr r1, _08129E1C @ =gAIScriptPtr -	ldr r0, [r1] -	adds r0, 0x4 -	str r0, [r1] -_08129E18: -	pop {r0} -	bx r0 -	.align 2, 0 -_08129E1C: .4byte gAIScriptPtr -	thumb_func_end ContestAICmd_unk_48 - -	thumb_func_start ContestAICmd_get_condition -ContestAICmd_get_condition: @ 8129E20 -	push {r4,r5,lr} -	ldr r4, _08129E5C @ =gAIScriptPtr -	ldr r0, [r4] -	ldrb r0, [r0, 0x1] -	bl sub_8128A7C -	lsls r0, 24 -	lsrs r0, 24 -	ldr r5, _08129E60 @ =gSharedMem + 0x192E4 -	lsls r1, r0, 3 -	subs r1, r0 -	lsls r1, 2 -	adds r0, r5, 0 -	subs r0, 0x84 -	adds r1, r0 -	movs r0, 0xD -	ldrsb r0, [r1, r0] -	movs r1, 0xA -	bl __divsi3 -	lsls r0, 24 -	asrs r0, 24 -	strh r0, [r5, 0x18] -	ldr r0, [r4] -	adds r0, 0x2 -	str r0, [r4] -	pop {r4,r5} -	pop {r0} -	bx r0 -	.align 2, 0 -_08129E5C: .4byte gAIScriptPtr -_08129E60: .4byte gSharedMem + 0x192E4 -	thumb_func_end ContestAICmd_get_condition - -	thumb_func_start ContestAICmd_unk_4A -ContestAICmd_unk_4A: @ 8129E64 -	push {lr} -	bl ContestAICmd_get_condition -	ldr r0, _08129E94 @ =gSharedMem + 0x192E4 -	movs r1, 0x18 -	ldrsh r0, [r0, r1] -	ldr r3, _08129E98 @ =gAIScriptPtr -	ldr r2, [r3] -	ldrb r1, [r2] -	cmp r0, r1 -	bge _08129E9C -	ldrb r1, [r2, 0x1] -	ldrb r0, [r2, 0x2] -	lsls r0, 8 -	orrs r1, r0 -	ldrb r0, [r2, 0x3] -	lsls r0, 16 -	orrs r1, r0 -	ldrb r0, [r2, 0x4] -	lsls r0, 24 -	orrs r1, r0 -	str r1, [r3] -	b _08129EA0 -	.align 2, 0 -_08129E94: .4byte gSharedMem + 0x192E4 -_08129E98: .4byte gAIScriptPtr -_08129E9C: -	adds r0, r2, 0x5 -	str r0, [r3] -_08129EA0: -	pop {r0} -	bx r0 -	thumb_func_end ContestAICmd_unk_4A - -	thumb_func_start ContestAICmd_unk_4B -ContestAICmd_unk_4B: @ 8129EA4 -	push {lr} -	bl ContestAICmd_get_condition -	ldr r0, _08129ED4 @ =gSharedMem + 0x192E4 -	movs r1, 0x18 -	ldrsh r0, [r0, r1] -	ldr r3, _08129ED8 @ =gAIScriptPtr -	ldr r2, [r3] -	ldrb r1, [r2] -	cmp r0, r1 -	ble _08129EDC -	ldrb r1, [r2, 0x1] -	ldrb r0, [r2, 0x2] -	lsls r0, 8 -	orrs r1, r0 -	ldrb r0, [r2, 0x3] -	lsls r0, 16 -	orrs r1, r0 -	ldrb r0, [r2, 0x4] -	lsls r0, 24 -	orrs r1, r0 -	str r1, [r3] -	b _08129EE0 -	.align 2, 0 -_08129ED4: .4byte gSharedMem + 0x192E4 -_08129ED8: .4byte gAIScriptPtr -_08129EDC: -	adds r0, r2, 0x5 -	str r0, [r3] -_08129EE0: -	pop {r0} -	bx r0 -	thumb_func_end ContestAICmd_unk_4B - -	thumb_func_start ContestAICmd_unk_4C -ContestAICmd_unk_4C: @ 8129EE4 -	push {lr} -	bl ContestAICmd_get_condition -	ldr r0, _08129F14 @ =gSharedMem + 0x192E4 -	movs r1, 0x18 -	ldrsh r0, [r0, r1] -	ldr r3, _08129F18 @ =gAIScriptPtr -	ldr r2, [r3] -	ldrb r1, [r2] -	cmp r0, r1 -	bne _08129F1C -	ldrb r1, [r2, 0x1] -	ldrb r0, [r2, 0x2] -	lsls r0, 8 -	orrs r1, r0 -	ldrb r0, [r2, 0x3] -	lsls r0, 16 -	orrs r1, r0 -	ldrb r0, [r2, 0x4] -	lsls r0, 24 -	orrs r1, r0 -	str r1, [r3] -	b _08129F20 -	.align 2, 0 -_08129F14: .4byte gSharedMem + 0x192E4 -_08129F18: .4byte gAIScriptPtr -_08129F1C: -	adds r0, r2, 0x5 -	str r0, [r3] -_08129F20: -	pop {r0} -	bx r0 -	thumb_func_end ContestAICmd_unk_4C - -	thumb_func_start ContestAICmd_unk_4D -ContestAICmd_unk_4D: @ 8129F24 -	push {lr} -	bl ContestAICmd_get_condition -	ldr r0, _08129F54 @ =gSharedMem + 0x192E4 -	movs r1, 0x18 -	ldrsh r0, [r0, r1] -	ldr r3, _08129F58 @ =gAIScriptPtr -	ldr r2, [r3] -	ldrb r1, [r2] -	cmp r0, r1 -	beq _08129F5C -	ldrb r1, [r2, 0x1] -	ldrb r0, [r2, 0x2] -	lsls r0, 8 -	orrs r1, r0 -	ldrb r0, [r2, 0x3] -	lsls r0, 16 -	orrs r1, r0 -	ldrb r0, [r2, 0x4] -	lsls r0, 24 -	orrs r1, r0 -	str r1, [r3] -	b _08129F60 -	.align 2, 0 -_08129F54: .4byte gSharedMem + 0x192E4 -_08129F58: .4byte gAIScriptPtr -_08129F5C: -	adds r0, r2, 0x5 -	str r0, [r3] -_08129F60: -	pop {r0} -	bx r0 -	thumb_func_end ContestAICmd_unk_4D - -	thumb_func_start ContestAICmd_get_used_combo_starter -ContestAICmd_get_used_combo_starter: @ 8129F64 -	push {r4-r6,lr} -	movs r6, 0 -	ldr r5, _08129FAC @ =gAIScriptPtr -	ldr r0, [r5] -	ldrb r0, [r0, 0x1] -	bl sub_8128A7C -	lsls r0, 24 -	lsrs r4, r0, 24 -	adds r0, r4, 0 -	bl sub_80B214C -	lsls r0, 24 -	cmp r0, 0 -	beq _08129F9C -	ldr r2, _08129FB0 @ =gContestMoves -	lsls r0, r4, 3 -	subs r0, r4 -	lsls r0, 2 -	ldr r1, _08129FB4 @ =gSharedMem + 0x19260 -	adds r0, r1 -	ldrh r0, [r0, 0x8] -	lsls r0, 3 -	adds r0, r2 -	ldrb r1, [r0, 0x2] -	negs r0, r1 -	orrs r0, r1 -	lsrs r6, r0, 31 -_08129F9C: -	ldr r0, _08129FB8 @ =gSharedMem + 0x192E4 -	strh r6, [r0, 0x18] -	ldr r0, [r5] -	adds r0, 0x2 -	str r0, [r5] -	pop {r4-r6} -	pop {r0} -	bx r0 -	.align 2, 0 -_08129FAC: .4byte gAIScriptPtr -_08129FB0: .4byte gContestMoves -_08129FB4: .4byte gSharedMem + 0x19260 -_08129FB8: .4byte gSharedMem + 0x192E4 -	thumb_func_end ContestAICmd_get_used_combo_starter - -	thumb_func_start ContestAICmd_unk_4F -ContestAICmd_unk_4F: @ 8129FBC -	push {lr} -	bl ContestAICmd_get_used_combo_starter -	ldr r0, _08129FEC @ =gSharedMem + 0x192E4 -	movs r1, 0x18 -	ldrsh r0, [r0, r1] -	ldr r3, _08129FF0 @ =gAIScriptPtr -	ldr r2, [r3] -	ldrb r1, [r2] -	cmp r0, r1 -	bge _08129FF4 -	ldrb r1, [r2, 0x1] -	ldrb r0, [r2, 0x2] -	lsls r0, 8 -	orrs r1, r0 -	ldrb r0, [r2, 0x3] -	lsls r0, 16 -	orrs r1, r0 -	ldrb r0, [r2, 0x4] -	lsls r0, 24 -	orrs r1, r0 -	str r1, [r3] -	b _08129FF8 -	.align 2, 0 -_08129FEC: .4byte gSharedMem + 0x192E4 -_08129FF0: .4byte gAIScriptPtr -_08129FF4: -	adds r0, r2, 0x5 -	str r0, [r3] -_08129FF8: -	pop {r0} -	bx r0 -	thumb_func_end ContestAICmd_unk_4F - -	thumb_func_start ContestAICmd_unk_50 -ContestAICmd_unk_50: @ 8129FFC -	push {lr} -	bl ContestAICmd_get_used_combo_starter -	ldr r0, _0812A02C @ =gSharedMem + 0x192E4 -	movs r1, 0x18 -	ldrsh r0, [r0, r1] -	ldr r3, _0812A030 @ =gAIScriptPtr -	ldr r2, [r3] -	ldrb r1, [r2] -	cmp r0, r1 -	ble _0812A034 -	ldrb r1, [r2, 0x1] -	ldrb r0, [r2, 0x2] -	lsls r0, 8 -	orrs r1, r0 -	ldrb r0, [r2, 0x3] -	lsls r0, 16 -	orrs r1, r0 -	ldrb r0, [r2, 0x4] -	lsls r0, 24 -	orrs r1, r0 -	str r1, [r3] -	b _0812A038 -	.align 2, 0 -_0812A02C: .4byte gSharedMem + 0x192E4 -_0812A030: .4byte gAIScriptPtr -_0812A034: -	adds r0, r2, 0x5 -	str r0, [r3] -_0812A038: -	pop {r0} -	bx r0 -	thumb_func_end ContestAICmd_unk_50 - -	thumb_func_start ContestAICmd_unk_51 -ContestAICmd_unk_51: @ 812A03C -	push {lr} -	bl ContestAICmd_get_used_combo_starter -	ldr r0, _0812A06C @ =gSharedMem + 0x192E4 -	movs r1, 0x18 -	ldrsh r0, [r0, r1] -	ldr r3, _0812A070 @ =gAIScriptPtr -	ldr r2, [r3] -	ldrb r1, [r2] -	cmp r0, r1 -	bne _0812A074 -	ldrb r1, [r2, 0x1] -	ldrb r0, [r2, 0x2] -	lsls r0, 8 -	orrs r1, r0 -	ldrb r0, [r2, 0x3] -	lsls r0, 16 -	orrs r1, r0 -	ldrb r0, [r2, 0x4] -	lsls r0, 24 -	orrs r1, r0 -	str r1, [r3] -	b _0812A078 -	.align 2, 0 -_0812A06C: .4byte gSharedMem + 0x192E4 -_0812A070: .4byte gAIScriptPtr -_0812A074: -	adds r0, r2, 0x5 -	str r0, [r3] -_0812A078: -	pop {r0} -	bx r0 -	thumb_func_end ContestAICmd_unk_51 - -	thumb_func_start ContestAICmd_unk_52 -ContestAICmd_unk_52: @ 812A07C -	push {lr} -	bl ContestAICmd_get_used_combo_starter -	ldr r0, _0812A0AC @ =gSharedMem + 0x192E4 -	movs r1, 0x18 -	ldrsh r0, [r0, r1] -	ldr r3, _0812A0B0 @ =gAIScriptPtr -	ldr r2, [r3] -	ldrb r1, [r2] -	cmp r0, r1 -	beq _0812A0B4 -	ldrb r1, [r2, 0x1] -	ldrb r0, [r2, 0x2] -	lsls r0, 8 -	orrs r1, r0 -	ldrb r0, [r2, 0x3] -	lsls r0, 16 -	orrs r1, r0 -	ldrb r0, [r2, 0x4] -	lsls r0, 24 -	orrs r1, r0 -	str r1, [r3] -	b _0812A0B8 -	.align 2, 0 -_0812A0AC: .4byte gSharedMem + 0x192E4 -_0812A0B0: .4byte gAIScriptPtr -_0812A0B4: -	adds r0, r2, 0x5 -	str r0, [r3] -_0812A0B8: -	pop {r0} -	bx r0 -	thumb_func_end ContestAICmd_unk_52 -  	thumb_func_start ContestAICmd_check_can_participate  ContestAICmd_check_can_participate: @ 812A0BC  	push {lr} diff --git a/src/contest_ai.c b/src/contest_ai.c index a62a69194..7c704be0a 100755 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -3,6 +3,10 @@  #include "random.h"  #include "ewram.h" +extern u8 AreMovesContestCombo(u16, u16); +extern bool8 sub_8128A7C(u8); +extern bool8 sub_80B214C(u8); +  enum  {      ContestAI_SettingUp, @@ -745,9 +749,6 @@ void ContestAICmd_unk_3F(void)          gAIScriptPtr += 5;  } -extern u8 AreMovesContestCombo(u16, u16); - -/*  void ContestAICmd_check_combo_starter(void)  {      u8 result = 0; @@ -756,85 +757,221 @@ void ContestAICmd_check_combo_starter(void)      for(i = 0; i < 4; i++)      { -        u16 newMove = gContestMons[eContestAI->unk41].moves[i]; -        u16 isCombo = AreMovesContestCombo(move, gContestMons[eContestAI->unk41].moves[i]); -        if(newMove && isCombo) +        if (gContestMons[eContestAI->unk41].moves[i])          { -            result = 1; -            break; +            result = AreMovesContestCombo(move, gContestMons[eContestAI->unk41].moves[i]); +            if (result) +            { +                result = 1; +                break; +            }          } -        if(isCombo) // dumb double r5 check? +    } + +    if (result) +        result = 1; + +    eContestAI->scriptResult = result; +    gAIScriptPtr += 1; +} + +void ContestAICmd_unk_41(void) +{ +    ContestAICmd_check_combo_starter(); + +    if((s16)eContestAI->scriptResult != 0) +        gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); +    else +        gAIScriptPtr += 4; +} + +void ContestAICmd_unk_42(void) +{ +    ContestAICmd_check_combo_starter(); + +    if((s16)eContestAI->scriptResult == 0) +        gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); +    else +        gAIScriptPtr += 4; +} + +void ContestAICmd_check_combo_finisher(void) +{ +    u8 result = 0; +    int i; +    u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + +    for(i = 0; i < 4; i++) +    { +        if (gContestMons[eContestAI->unk41].moves[i])          { -            result = 1; -            break; +            result = AreMovesContestCombo(gContestMons[eContestAI->unk41].moves[i], move); +            if (result) +            { +                result = 1; +                break; +            }          }      } +    if (result) +        result = 1; +      eContestAI->scriptResult = result;      gAIScriptPtr += 1; -}*/ - -/* -    thumb_func_start ContestAICmd_check_combo_starter -ContestAICmd_check_combo_starter: @ 8129B44 -    push {r4-r7,lr} -    mov r7, r8 -    push {r7} -    movs r5, 0 -    ldr r3, _08129BAC @ =gContestMons -    ldr r2, _08129BB0 @ =gSharedMem + 0x192E4 -    ldrb r1, [r2, 0x4] -    lsls r1, 1 -    adds r2, 0x41 -    ldrb r0, [r2] -    lsls r0, 6 -    adds r1, r0 -    adds r3, 0x1E -    adds r1, r3 -    ldrh r6, [r1] -    movs r4, 0 -    mov r8, r2 -    adds r7, r3, 0 -_08129B68: -    lsls r0, r4, 1 -    mov r2, r8 -    ldrb r1, [r2] -    lsls r1, 6 -    adds r0, r1 -    adds r1, r0, r7 -    ldrh r0, [r1] -    cmp r0, 0 -    beq _08129B8A -    adds r1, r0, 0 -    adds r0, r6, 0 -    bl AreMovesContestCombo -    lsls r0, 24 -    lsrs r5, r0, 24 -    cmp r5, 0 -    bne _08129B94 -_08129B8A: -    adds r4, 0x1 -    cmp r4, 0x3 -    ble _08129B68 -    cmp r5, 0 -    beq _08129B96 -_08129B94: -    movs r5, 0x1 -_08129B96: -    ldr r0, _08129BB0 @ =gSharedMem + 0x192E4 -    strh r5, [r0, 0x18] -    ldr r1, _08129BB4 @ =gAIScriptPtr -    ldr r0, [r1] -    adds r0, 0x1 -    str r0, [r1] -    pop {r3} -    mov r8, r3 -    pop {r4-r7} -    pop {r0} -    bx r0 -    .align 2, 0 -_08129BAC: .4byte gContestMons -_08129BB0: .4byte gSharedMem + 0x192E4 -_08129BB4: .4byte gAIScriptPtr -    thumb_func_end ContestAICmd_check_combo_starter -*/ +} + +void ContestAICmd_unk_44(void) +{ +    ContestAICmd_check_combo_finisher(); + +    if((s16)eContestAI->scriptResult != 0) +        gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); +    else +        gAIScriptPtr += 4; +} + +void ContestAICmd_unk_45(void) +{ +    ContestAICmd_check_combo_finisher(); + +    if((s16)eContestAI->scriptResult == 0) +        gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); +    else +        gAIScriptPtr += 4; +} + +void ContestAICmd_check_would_finish_combo(void) +{ +    u8 result = 0; +    u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + +    if(sContestantStatus[eContestAI->unk41].prevMove) +        result = AreMovesContestCombo(sContestantStatus[eContestAI->unk41].prevMove, move); +     +    if(result) +        result = 1; + +    eContestAI->scriptResult = result; +    gAIScriptPtr += 1; +} + +void ContestAICmd_unk_47(void) +{ +    ContestAICmd_check_would_finish_combo(); + +    if((s16)eContestAI->scriptResult != 0) +        gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); +    else +        gAIScriptPtr += 4; +} + +void ContestAICmd_unk_48(void) +{ +    ContestAICmd_check_would_finish_combo(); + +    if((s16)eContestAI->scriptResult == 0) +        gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); +    else +        gAIScriptPtr += 4; +} + +void ContestAICmd_get_condition(void) +{ +    int var = sub_8128A7C(gAIScriptPtr[1]); + +    eContestAI->scriptResult = sContestantStatus[var].unkD / 10; +    gAIScriptPtr += 2; +} + +void ContestAICmd_unk_4A(void) +{ +    ContestAICmd_get_condition(); + +    if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) +        gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); +    else +        gAIScriptPtr += 5; +} + +void ContestAICmd_unk_4B(void) +{ +    ContestAICmd_get_condition(); + +    if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) +        gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); +    else +        gAIScriptPtr += 5; +} + +void ContestAICmd_unk_4C(void) +{ +    ContestAICmd_get_condition(); + +    if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) +        gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); +    else +        gAIScriptPtr += 5; +} + +void ContestAICmd_unk_4D(void) +{ +    ContestAICmd_get_condition(); + +    if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) +        gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); +    else +        gAIScriptPtr += 5; +} + +void ContestAICmd_get_used_combo_starter(void) +{ +    u16 result = 0; +    u8 var = sub_8128A7C(gAIScriptPtr[1]); + +    if(sub_80B214C(var)) +        result = gContestMoves[sContestantStatus[var].prevMove].comboStarterId ? 1 : 0; + +    eContestAI->scriptResult = result; +    gAIScriptPtr += 2; +} + +void ContestAICmd_unk_4F(void) +{ +    ContestAICmd_get_used_combo_starter(); + +    if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) +        gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); +    else +        gAIScriptPtr += 5; +} + +void ContestAICmd_unk_50(void) +{ +    ContestAICmd_get_used_combo_starter(); + +    if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) +        gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); +    else +        gAIScriptPtr += 5; +} + +void ContestAICmd_unk_51(void) +{ +    ContestAICmd_get_used_combo_starter(); + +    if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) +        gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); +    else +        gAIScriptPtr += 5; +} + +void ContestAICmd_unk_52(void) +{ +    ContestAICmd_get_used_combo_starter(); + +    if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) +        gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); +    else +        gAIScriptPtr += 5; +} | 
