diff options
-rw-r--r-- | asm/battle_tower.s | 1028 | ||||
-rw-r--r-- | include/battle_tower.h | 3 | ||||
-rw-r--r-- | include/global.h | 85 | ||||
-rw-r--r-- | include/record_mixing.h | 2 | ||||
-rw-r--r-- | src/battle/battle_records.c | 4 | ||||
-rw-r--r-- | src/battle_tower.c | 1062 | ||||
-rw-r--r-- | src/debug/unknown_debug_menu.c | 9 | ||||
-rw-r--r-- | src/engine/mystery_event_script.c | 2 | ||||
-rw-r--r-- | src/engine/record_mixing.c | 12 | ||||
-rw-r--r-- | src/engine/trainer_card.c | 56 | ||||
-rw-r--r-- | src/field/choose_party.c | 2 | ||||
-rw-r--r-- | src/field/tv.c | 8 |
12 files changed, 1180 insertions, 1093 deletions
diff --git a/asm/battle_tower.s b/asm/battle_tower.s index 973486f64..8339d8e21 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -6,1034 +6,6 @@ .text - thumb_func_start sub_813461C -sub_813461C: @ 813461C - lsls r0, 24 - lsrs r0, 24 - ldr r3, _08134644 @ =gSaveBlock2 - ldr r2, _08134648 @ =0x00000556 - adds r1, r3, r2 - adds r1, r0, r1 - movs r2, 0 - strb r2, [r1] - lsls r0, 1 - movs r2, 0xAB - lsls r2, 3 - adds r1, r3, r2 - adds r1, r0, r1 - movs r2, 0x1 - strh r2, [r1] - ldr r1, _0813464C @ =0x0000055c - adds r3, r1 - adds r0, r3 - strh r2, [r0] - bx lr - .align 2, 0 -_08134644: .4byte gSaveBlock2 -_08134648: .4byte 0x00000556 -_0813464C: .4byte 0x0000055c - thumb_func_end sub_813461C - - thumb_func_start sub_8134650 -sub_8134650: @ 8134650 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x2C - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 16 - lsrs r6, r1, 16 - add r4, sp, 0x28 - movs r0, 0 - strb r0, [r4] - bl sub_813601C - ldr r0, _08134684 @ =gScriptResult - ldrh r0, [r0] - adds r7, r4, 0 - cmp r0, 0 - bne _08134680 - ldr r1, _08134688 @ =gSaveBlock2 - ldr r2, _0813468C @ =0x0000049a - adds r0, r1, r2 - ldrh r0, [r0] - cmp r0, r6 - beq _08134690 -_08134680: - movs r0, 0 - b _081346E2 - .align 2, 0 -_08134684: .4byte gScriptResult -_08134688: .4byte gSaveBlock2 -_0813468C: .4byte 0x0000049a -_08134690: - movs r6, 0x32 - cmp r5, 0 - beq _08134698 - movs r6, 0x64 -_08134698: - movs r4, 0 - mov r8, r1 -_0813469C: - movs r0, 0x2C - muls r0, r4 - mov r3, r8 - adds r1, r0, r3 - movs r2, 0x9B - lsls r2, 3 - adds r0, r1, r2 - ldrb r2, [r0] - cmp r2, r6 - bne _08134680 - ldr r3, _081346F0 @ =0x000004cc - adds r0, r1, r3 - ldrh r0, [r0] - adds r3, 0x2 - adds r1, r3 - ldrh r1, [r1] - str r2, [sp] - add r2, sp, 0x10 - str r2, [sp, 0x4] - add r2, sp, 0x1C - str r2, [sp, 0x8] - str r7, [sp, 0xC] - movs r2, 0x1 - adds r3, r5, 0 - bl CheckMonBattleTowerBanlist - adds r4, 0x1 - cmp r4, 0x2 - ble _0813469C - movs r1, 0 - ldrb r0, [r7] - cmp r0, 0x3 - bne _081346E0 - movs r1, 0x1 -_081346E0: - adds r0, r1, 0 -_081346E2: - add sp, 0x2C - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_081346F0: .4byte 0x000004cc - thumb_func_end sub_8134650 - - thumb_func_start sub_81346F4 -sub_81346F4: @ 81346F4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - movs r0, 0 - mov r9, r0 - ldr r4, _08134738 @ =gSaveBlock2 - ldr r1, _0813473C @ =0x00000554 - adds r0, r4, r1 - ldrb r0, [r0] - lsls r0, 31 - lsrs r7, r0, 31 - adds r0, r7, 0 - bl sub_8135D3C - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - adds r0, r7, 0 - mov r1, r8 - bl sub_8134650 - lsls r0, 24 - adds r1, r4, 0 - cmp r0, 0 - beq _08134744 - ldr r2, _08134740 @ =0x00000564 - adds r1, r2 - movs r0, 0xC8 - strb r0, [r1] - b _081347DE - .align 2, 0 -_08134738: .4byte gSaveBlock2 -_0813473C: .4byte 0x00000554 -_08134740: .4byte 0x00000564 -_08134744: - movs r5, 0 - movs r3, 0xA4 - mov r12, r3 - mov r10, sp -_0813474C: - mov r0, r12 - muls r0, r5 - movs r4, 0 - movs r1, 0 - movs r2, 0 - adds r6, r5, 0x1 - str r6, [sp, 0x14] - ldr r6, _081347B4 @ =gSaveBlock2 + 0x14C - adds r3, r0, r6 -_0813475E: - ldm r3!, {r0} - orrs r4, r0 - adds r1, r0 - adds r2, 0x1 - cmp r2, 0x27 - bls _0813475E - mov r3, r12 - muls r3, r5 - ldr r0, _081347B8 @ =gSaveBlock2 - adds r2, r3, r0 - movs r6, 0xA7 - lsls r6, 1 - adds r0, r2, r6 - ldrh r0, [r0] - cmp r0, r8 - bne _081347A4 - subs r6, 0x2 - adds r0, r2, r6 - ldrb r0, [r0] - cmp r0, r7 - bne _081347A4 - cmp r4, 0 - beq _081347A4 - ldr r2, _081347BC @ =gSaveBlock2 + 0x1EC - adds r0, r3, r2 - ldr r0, [r0] - cmp r0, r1 - bne _081347A4 - mov r3, r10 - adds r3, 0x4 - mov r10, r3 - subs r3, 0x4 - stm r3!, {r5} - movs r6, 0x1 - add r9, r6 -_081347A4: - ldr r5, [sp, 0x14] - cmp r5, 0x4 - ble _0813474C - mov r0, r9 - cmp r0, 0 - bne _081347C0 - movs r0, 0 - b _081347E0 - .align 2, 0 -_081347B4: .4byte gSaveBlock2 + 0x14C -_081347B8: .4byte gSaveBlock2 -_081347BC: .4byte gSaveBlock2 + 0x1EC -_081347C0: - bl Random - ldr r4, _081347F0 @ =gSaveBlock2 - lsls r0, 16 - lsrs r0, 16 - mov r1, r9 - bl __modsi3 - lsls r0, 2 - add r0, sp - ldr r0, [r0] - adds r0, 0x64 - ldr r1, _081347F4 @ =0x00000564 - adds r4, r1 - strb r0, [r4] -_081347DE: - movs r0, 0x1 -_081347E0: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_081347F0: .4byte gSaveBlock2 -_081347F4: .4byte 0x00000564 - thumb_func_end sub_81346F4 - - thumb_func_start sub_81347F8 -sub_81347F8: @ 81347F8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r5, _08134838 @ =gSaveBlock2 - ldr r1, _0813483C @ =0x00000554 - adds r0, r5, r1 - ldrb r0, [r0] - lsls r0, 31 - lsrs r6, r0, 31 - bl sub_81346F4 - lsls r0, 24 - cmp r0, 0 - beq _08134848 - ldr r2, _08134840 @ =0x00000564 - adds r4, r5, r2 - ldrb r0, [r4] - bl sub_81349FC - lsls r0, r6, 1 - movs r3, 0xAB - lsls r3, 3 - adds r1, r5, r3 - adds r0, r1 - ldrh r0, [r0] - adds r0, r5, r0 - ldr r1, _08134844 @ =0x00000569 - adds r0, r1 - ldrb r1, [r4] - b _081349DC - .align 2, 0 -_08134838: .4byte gSaveBlock2 -_0813483C: .4byte 0x00000554 -_08134840: .4byte 0x00000564 -_08134844: .4byte 0x00000569 -_08134848: - lsls r0, r6, 1 - ldr r2, _081348D8 @ =0x0000055c - adds r1, r5, r2 - adds r1, r0, r1 - ldrh r1, [r1] - adds r7, r0, 0 - cmp r1, 0x7 - bls _0813485A - b _0813495C -_0813485A: - movs r3, 0xAB - lsls r3, 3 - adds r0, r5, r3 - adds r1, r7, r0 - ldrh r0, [r1] - cmp r0, 0x7 - bne _081348E4 - adds r6, r5, 0 - mov r9, r7 - adds r5, r1, 0 - ldr r0, _081348DC @ =0x0000056a - adds r0, r6 - mov r10, r0 - mov r8, r5 -_08134876: - bl Random - movs r1, 0xFF - ands r1, r0 - lsls r2, r1, 2 - adds r2, r1 - ldr r1, _081348D8 @ =0x0000055c - adds r4, r6, r1 - mov r3, r9 - adds r0, r3, r4 - ldrh r1, [r0] - subs r1, 0x1 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - adds r0, 0x14 - lsrs r2, 7 - adds r2, r0 - lsls r2, 16 - lsrs r2, 16 - movs r1, 0 - ldrh r0, [r5] - subs r0, 0x1 - cmp r1, r0 - bge _081348C8 - mov r3, r10 - ldrb r0, [r3] - cmp r0, r2 - beq _081348C8 - subs r0, r4, 0x4 - adds r0, r7, r0 - ldrh r0, [r0] - subs r3, r0, 0x1 - adds r4, 0xE -_081348BA: - adds r1, 0x1 - cmp r1, r3 - bge _081348C8 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, r2 - bne _081348BA -_081348C8: - mov r3, r8 - ldrh r0, [r3] - subs r0, 0x1 - ldr r4, _081348E0 @ =gSaveBlock2 - cmp r1, r0 - bne _08134876 - b _081349B6 - .align 2, 0 -_081348D8: .4byte 0x0000055c -_081348DC: .4byte 0x0000056a -_081348E0: .4byte gSaveBlock2 -_081348E4: - adds r6, r5, 0 - mov r9, r7 - adds r5, r1, 0 - ldr r2, _08134950 @ =0x0000056a - adds r2, r6 - mov r10, r2 - mov r8, r5 -_081348F2: - bl Random - movs r1, 0xFF - ands r1, r0 - lsls r0, r1, 2 - adds r0, r1 - lsrs r2, r0, 6 - ldr r3, _08134954 @ =0x0000055c - adds r4, r6, r3 - mov r1, r9 - adds r0, r1, r4 - ldrh r1, [r0] - subs r1, 0x1 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - adds r0, r2, r0 - lsls r0, 16 - lsrs r2, r0, 16 - movs r1, 0 - ldrh r0, [r5] - subs r0, 0x1 - cmp r1, r0 - bge _08134942 - mov r3, r10 - ldrb r0, [r3] - cmp r0, r2 - beq _08134942 - subs r0, r4, 0x4 - adds r0, r7, r0 - ldrh r0, [r0] - subs r3, r0, 0x1 - adds r4, 0xE -_08134934: - adds r1, 0x1 - cmp r1, r3 - bge _08134942 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, r2 - bne _08134934 -_08134942: - mov r3, r8 - ldrh r0, [r3] - subs r0, 0x1 - ldr r4, _08134958 @ =gSaveBlock2 - cmp r1, r0 - bne _081348F2 - b _081349B6 - .align 2, 0 -_08134950: .4byte 0x0000056a -_08134954: .4byte 0x0000055c -_08134958: .4byte gSaveBlock2 -_0813495C: - movs r2, 0xAB - lsls r2, 3 - adds r0, r5, r2 - adds r6, r7, r0 - ldr r3, _081349EC @ =0x0000056a - adds r3, r5 - mov r8, r3 - adds r5, r6, 0 -_0813496C: - bl Random - movs r1, 0xFF - ands r1, r0 - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 1 - asrs r0, 8 - adds r0, 0x46 - lsls r0, 16 - lsrs r2, r0, 16 - movs r1, 0 - ldrh r0, [r6] - subs r0, 0x1 - cmp r1, r0 - bge _081349AC - mov r3, r8 - ldrb r0, [r3] - ldr r4, _081349F0 @ =gSaveBlock2 - cmp r0, r2 - beq _081349AC - ldrh r0, [r5] - subs r3, r0, 0x1 - ldr r0, _081349EC @ =0x0000056a - adds r4, r0 -_0813499E: - adds r1, 0x1 - cmp r1, r3 - bge _081349AC - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, r2 - bne _0813499E -_081349AC: - ldrh r0, [r6] - subs r0, 0x1 - ldr r4, _081349F0 @ =gSaveBlock2 - cmp r1, r0 - bne _0813496C -_081349B6: - ldr r1, _081349F4 @ =0x00000564 - adds r0, r4, r1 - strb r2, [r0] - ldr r2, _081349F4 @ =0x00000564 - adds r5, r4, r2 - ldrb r0, [r5] - bl sub_81349FC - movs r3, 0xAB - lsls r3, 3 - adds r0, r4, r3 - adds r1, r7, r0 - ldrh r0, [r1] - cmp r0, 0x6 - bhi _081349DE - adds r0, r4, r0 - ldr r1, _081349F8 @ =0x00000569 - adds r0, r1 - ldrb r1, [r5] -_081349DC: - strb r1, [r0] -_081349DE: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081349EC: .4byte 0x0000056a -_081349F0: .4byte gSaveBlock2 -_081349F4: .4byte 0x00000564 -_081349F8: .4byte 0x00000569 - thumb_func_end sub_81347F8 - - thumb_func_start sub_81349FC -sub_81349FC: @ 81349FC - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - adds r1, r2, 0 - cmp r2, 0x63 - bhi _08134A18 - ldr r1, _08134A14 @ =gBattleTowerTrainers - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 3 - b _08134A38 - .align 2, 0 -_08134A14: .4byte gBattleTowerTrainers -_08134A18: - cmp r1, 0xC7 - bhi _08134A34 - ldr r2, _08134A2C @ =gSaveBlock2 - subs r1, 0x64 - movs r0, 0xA4 - muls r0, r1 - adds r0, r2 - ldr r1, _08134A30 @ =0x0000014d - b _08134A38 - .align 2, 0 -_08134A2C: .4byte gSaveBlock2 -_08134A30: .4byte 0x0000014d -_08134A34: - ldr r0, _08134A5C @ =gSaveBlock2 - ldr r1, _08134A60 @ =0x00000499 -_08134A38: - adds r0, r1 - ldrb r1, [r0] - movs r2, 0 - ldr r3, _08134A64 @ =gUnknown_08405E60 - ldrb r0, [r3] - cmp r0, r1 - beq _08134A54 -_08134A46: - adds r2, 0x1 - cmp r2, 0x1D - bhi _08134A54 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r0, r1 - bne _08134A46 -_08134A54: - cmp r2, 0x1E - beq _08134A6C - ldr r0, _08134A68 @ =gUnknown_08405E92 - b _08134A8A - .align 2, 0 -_08134A5C: .4byte gSaveBlock2 -_08134A60: .4byte 0x00000499 -_08134A64: .4byte gUnknown_08405E60 -_08134A68: .4byte gUnknown_08405E92 -_08134A6C: - movs r2, 0 - ldr r3, _08134A98 @ =gUnknown_08405E7E - ldrb r0, [r3] - cmp r0, r1 - beq _08134A84 -_08134A76: - adds r2, 0x1 - cmp r2, 0x13 - bhi _08134A84 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r0, r1 - bne _08134A76 -_08134A84: - cmp r2, 0x14 - beq _08134AA4 - ldr r0, _08134A9C @ =gUnknown_08405EB0 -_08134A8A: - adds r0, r2, r0 - ldrb r1, [r0] - ldr r0, _08134AA0 @ =0x00004010 - bl VarSet - b _08134AAC - .align 2, 0 -_08134A98: .4byte gUnknown_08405E7E -_08134A9C: .4byte gUnknown_08405EB0 -_08134AA0: .4byte 0x00004010 -_08134AA4: - ldr r0, _08134AB0 @ =0x00004010 - movs r1, 0x7 - bl VarSet -_08134AAC: - pop {r0} - bx r0 - .align 2, 0 -_08134AB0: .4byte 0x00004010 - thumb_func_end sub_81349FC - - thumb_func_start sub_8134AB4 -sub_8134AB4: @ 8134AB4 - push {lr} - movs r0, 0xC8 - bl sub_81349FC - pop {r0} - bx r0 - thumb_func_end sub_8134AB4 - - thumb_func_start sub_8134AC0 -sub_8134AC0: @ 8134AC0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - movs r7, 0 - mov r8, r0 - movs r5, 0 - ldr r0, _08134B3C @ =gSaveBlock2 - mov r12, r0 - mov r1, r8 - ldrb r1, [r1, 0xC] - str r1, [sp, 0x18] - movs r2, 0xAA - lsls r2, 1 - add r2, r12 - mov r10, r2 - mov r9, r5 -_08134AE6: - movs r6, 0 - movs r3, 0 - ldr r0, _08134B40 @ =gSaveBlock2 + 0x158 - add r0, r9 - ldrb r0, [r0] - ldr r1, [sp, 0x18] - cmp r0, r1 - bne _08134B14 - movs r0, 0xA4 - muls r0, r5 - ldr r1, _08134B40 @ =gSaveBlock2 + 0x158 - adds r2, r0, r1 - mov r4, r8 - adds r4, 0xC -_08134B02: - adds r2, 0x1 - adds r3, 0x1 - cmp r3, 0x3 - bgt _08134B14 - adds r1, r4, r3 - ldrb r0, [r2] - ldrb r1, [r1] - cmp r0, r1 - beq _08134B02 -_08134B14: - cmp r3, 0x4 - bne _08134B54 - movs r6, 0 - mov r2, r10 - ldrb r0, [r2] - mov r3, r8 - ldrb r3, [r3, 0x8] - cmp r0, r3 - bne _08134B54 - adds r1, r0, 0 - movs r0, 0xA4 - muls r0, r5 - adds r0, 0x4 - ldr r3, _08134B44 @ =gSaveBlock2 + 0x150 - adds r2, r0, r3 -_08134B32: - cmp r1, 0xFF - bne _08134B48 - movs r6, 0x7 - b _08134B54 - .align 2, 0 -_08134B3C: .4byte gSaveBlock2 -_08134B40: .4byte gSaveBlock2 + 0x158 -_08134B44: .4byte gSaveBlock2 + 0x150 -_08134B48: - adds r6, 0x1 - cmp r6, 0x6 - bgt _08134B54 - ldrb r0, [r2] - cmp r0, r1 - beq _08134B32 -_08134B54: - cmp r6, 0x7 - beq _08134B64 - movs r0, 0xA4 - add r10, r0 - add r9, r0 - adds r5, 0x1 - cmp r5, 0x4 - ble _08134AE6 -_08134B64: - cmp r5, 0x4 - bgt _08134B76 - movs r0, 0xA4 - muls r0, r5 - add r0, r12 - movs r1, 0xA6 - lsls r1, 1 - adds r0, r1 - b _08134B9E -_08134B76: - movs r5, 0 - movs r1, 0xA7 - lsls r1, 1 - add r1, r12 - b _08134B88 -_08134B80: - adds r1, 0xA4 - adds r5, 0x1 - cmp r5, 0x4 - bgt _08134BA8 -_08134B88: - ldrh r0, [r1] - cmp r0, 0 - bne _08134B80 - cmp r5, 0x4 - bgt _08134BA8 - movs r0, 0xA4 - muls r0, r5 - add r0, r12 - movs r2, 0xA6 - lsls r2, 1 - adds r0, r2 -_08134B9E: - mov r1, r8 - movs r2, 0xA4 - bl memcpy - b _08134C5E -_08134BA8: - mov r2, sp - movs r3, 0xA7 - lsls r3, 1 - mov r1, r12 - adds r0, r1, r3 - ldrh r0, [r0] - movs r1, 0 - strh r0, [r2] - add r0, sp, 0xC - strh r1, [r0] - adds r7, 0x1 - movs r5, 0x1 - add r2, sp, 0xC - mov r9, r2 - mov r10, r3 -_08134BC6: - movs r3, 0 - adds r0, r5, 0x1 - mov r12, r0 - cmp r3, r7 - bge _08134C0A - movs r1, 0xA4 - adds r0, r5, 0 - muls r0, r1 - ldr r2, _08134BFC @ =gSaveBlock2 - adds r0, r2 - mov r1, r10 - adds r4, r0, r1 - mov r6, sp -_08134BE0: - lsls r0, r3, 1 - add r0, sp - ldrh r2, [r4] - adds r1, r2, 0 - ldrh r0, [r0] - cmp r1, r0 - bcs _08134C00 - movs r3, 0 - movs r7, 0x1 - strh r2, [r6] - mov r2, r9 - strh r5, [r2] - b _08134C0A - .align 2, 0 -_08134BFC: .4byte gSaveBlock2 -_08134C00: - cmp r1, r0 - bhi _08134C0A - adds r3, 0x1 - cmp r3, r7 - blt _08134BE0 -_08134C0A: - cmp r3, r7 - bne _08134C2A - lsls r1, r7, 1 - mov r3, sp - adds r2, r3, r1 - movs r3, 0xA4 - adds r0, r5, 0 - muls r0, r3 - ldr r3, _08134C70 @ =gSaveBlock2 - adds r0, r3 - add r0, r10 - ldrh r0, [r0] - strh r0, [r2] - add r1, r9 - strh r5, [r1] - adds r7, 0x1 -_08134C2A: - mov r5, r12 - cmp r5, 0x4 - ble _08134BC6 - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r7, 0 - bl __modsi3 - adds r5, r0, 0 - ldr r2, _08134C70 @ =gSaveBlock2 - lsls r0, r5, 1 - add r0, sp - adds r0, 0xC - ldrh r1, [r0] - movs r0, 0xA4 - muls r0, r1 - adds r0, r2 - movs r1, 0xA6 - lsls r1, 1 - adds r0, r1 - mov r1, r8 - movs r2, 0xA4 - bl memcpy -_08134C5E: - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08134C70: .4byte gSaveBlock2 - thumb_func_end sub_8134AC0 - - thumb_func_start get_trainer_class_pic_index -get_trainer_class_pic_index: @ 8134C74 - push {lr} - ldr r3, _08134C90 @ =gSaveBlock2 - ldr r0, _08134C94 @ =0x00000564 - adds r1, r3, r0 - ldrb r0, [r1] - cmp r0, 0xC8 - bne _08134CA0 - ldr r1, _08134C98 @ =gTrainerClassToPicIndex - ldr r2, _08134C9C @ =0x00000499 - adds r0, r3, r2 - ldrb r0, [r0] - adds r0, r1 - b _08134CD2 - .align 2, 0 -_08134C90: .4byte gSaveBlock2 -_08134C94: .4byte 0x00000564 -_08134C98: .4byte gTrainerClassToPicIndex -_08134C9C: .4byte 0x00000499 -_08134CA0: - cmp r0, 0x63 - bls _08134CC0 - ldr r2, _08134CBC @ =gTrainerClassToPicIndex - ldrb r0, [r1] - subs r0, 0x64 - movs r1, 0xA4 - muls r0, r1 - adds r0, r3 - adds r1, 0xA9 - adds r0, r1 - ldrb r0, [r0] - adds r0, r2 - b _08134CD2 - .align 2, 0 -_08134CBC: .4byte gTrainerClassToPicIndex -_08134CC0: - ldr r3, _08134CD8 @ =gTrainerClassToPicIndex - ldr r2, _08134CDC @ =gBattleTowerTrainers - ldrb r1, [r1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0] - adds r0, r3 -_08134CD2: - ldrb r0, [r0] - pop {r1} - bx r1 - .align 2, 0 -_08134CD8: .4byte gTrainerClassToPicIndex -_08134CDC: .4byte gBattleTowerTrainers - thumb_func_end get_trainer_class_pic_index - - thumb_func_start get_trainer_class_name_index -get_trainer_class_name_index: @ 8134CE0 - push {lr} - ldr r3, _08134CFC @ =gSaveBlock2 - ldr r0, _08134D00 @ =0x00000564 - adds r1, r3, r0 - ldrb r0, [r1] - cmp r0, 0xC8 - bne _08134D0C - ldr r1, _08134D04 @ =gTrainerClassToNameIndex - ldr r2, _08134D08 @ =0x00000499 - adds r0, r3, r2 - ldrb r0, [r0] - adds r0, r1 - b _08134D40 - .align 2, 0 -_08134CFC: .4byte gSaveBlock2 -_08134D00: .4byte 0x00000564 -_08134D04: .4byte gTrainerClassToNameIndex -_08134D08: .4byte 0x00000499 -_08134D0C: - cmp r0, 0x63 - bhi _08134D2C - ldr r3, _08134D24 @ =gTrainerClassToNameIndex - ldr r2, _08134D28 @ =gBattleTowerTrainers - ldrb r1, [r1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0] - adds r0, r3 - b _08134D40 - .align 2, 0 -_08134D24: .4byte gTrainerClassToNameIndex -_08134D28: .4byte gBattleTowerTrainers -_08134D2C: - ldr r2, _08134D48 @ =gTrainerClassToNameIndex - ldrb r0, [r1] - subs r0, 0x64 - movs r1, 0xA4 - muls r0, r1 - adds r0, r3 - adds r1, 0xA9 - adds r0, r1 - ldrb r0, [r0] - adds r0, r2 -_08134D40: - ldrb r0, [r0] - pop {r1} - bx r1 - .align 2, 0 -_08134D48: .4byte gTrainerClassToNameIndex - thumb_func_end get_trainer_class_name_index - - thumb_func_start get_trainer_name -get_trainer_name: @ 8134D4C - push {r4,r5,lr} - adds r4, r0, 0 - ldr r2, _08134D74 @ =gSaveBlock2 - ldr r0, _08134D78 @ =0x00000564 - adds r1, r2, r0 - ldrb r0, [r1] - cmp r0, 0xC8 - bne _08134D80 - movs r3, 0 - ldr r5, _08134D7C @ =0x0000049c - adds r2, r5 -_08134D62: - adds r0, r4, r3 - adds r1, r3, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r3, 0x1 - cmp r3, 0x6 - ble _08134D62 - b _08134DC8 - .align 2, 0 -_08134D74: .4byte gSaveBlock2 -_08134D78: .4byte 0x00000564 -_08134D7C: .4byte 0x0000049c -_08134D80: - cmp r0, 0x63 - bhi _08134DA8 - movs r3, 0 - ldr r2, _08134DA4 @ =gBattleTowerTrainers - ldrb r1, [r1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r2, 0x1 - adds r2, r0, r2 -_08134D94: - adds r1, r4, r3 - ldrb r0, [r2] - strb r0, [r1] - adds r2, 0x1 - adds r3, 0x1 - cmp r3, 0x6 - ble _08134D94 - b _08134DC8 - .align 2, 0 -_08134DA4: .4byte gBattleTowerTrainers -_08134DA8: - movs r3, 0 - ldrb r0, [r1] - subs r0, 0x64 - movs r1, 0xA4 - muls r1, r0 - movs r5, 0xA8 - lsls r5, 1 - adds r0, r2, r5 - adds r2, r1, r0 -_08134DBA: - adds r1, r4, r3 - ldrb r0, [r2] - strb r0, [r1] - adds r2, 0x1 - adds r3, 0x1 - cmp r3, 0x6 - ble _08134DBA -_08134DC8: - adds r1, r4, r3 - movs r0, 0xFF - strb r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end get_trainer_name - thumb_func_start sub_8134DD4 sub_8134DD4: @ 8134DD4 push {r4-r7,lr} diff --git a/include/battle_tower.h b/include/battle_tower.h index 75ea405ab..e70930faa 100644 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -1,7 +1,8 @@ #ifndef GUARD_BATTLE_TOWER_H #define GUARD_BATTLE_TOWER_H -void sub_8134AC0(void *); +void sub_813461C(u8 levelType); +void sub_8134AC0(struct BattleTowerRecord *); u16 sub_8135D3C(u8); void sub_8135FF4(u8*); diff --git a/include/global.h b/include/global.h index 7c1ac9c68..6a7f6396c 100644 --- a/include/global.h +++ b/include/global.h @@ -727,26 +727,79 @@ struct Pokedex /*0x44*/ u8 seen[DEX_FLAGS_NO]; }; +// struct EReaderTrainerPokemon +// { +// /*0x00, 0x4CC*/u16 unk0; +// /*0x02, 0x4CE*/u16 unk2; +// /*0x04, 0x4D0*/u8 unk4[0x8]; +// /*0x0C, 0x4D8*/u8 level; +// /*0x0D, 0x4D9*/u8 unk9[0x1F]; +// }; + +// struct EReaderTrainer +// { +// /*0x00, 0x498*/u8 filler_0[2]; +// /*0x02, 0x49A*/u16 unk2; +// /*0x04, 0x49C*/u8 filler_4[0x30]; +// /*0x34, 0x4CC*/struct EReaderTrainerPokemon party[3]; +// /*0xB8, 0x550*/u32 unkB8; +// }; + +struct SaveBlock2_1 +{ + u32 filler_0[0x29]; +}; + +struct BattleTowerTrainer +{ + u8 trainerClass; + u8 name[8]; + u8 teamFlags; + u16 padding; + u16 easyChat[6]; +}; + +struct BattleTowerRecord // record mixing +{ + /*0x00*/u8 var_0; + /*0x01*/u8 trainerClass; + /*0x02*/u16 var_2; + /*0x04*/u8 name[8]; + /*0x0C*/u8 var_C[5]; + u8 filler[0x93]; +}; + +struct BattleTowerEReaderTrainer +{ + /*0x00*/u8 unk0; + /*0x01*/u8 trainerClass; + /*0x02*/u16 filler_2; + /*0x04*/u8 name[8]; + /*0x0B*/u8 ereaderTrainer[0xB0]; +}; + struct SaveBlock2_Sub { - /*0x0000, 0x00A8*/ u8 filler_000[0x3D8]; - /*0x03D8, 0x0480*/ u16 var_480; - /*0x03DA, 0x0482*/ u16 var_482; + /*0x0000, 0x00A8*/ struct BattleTowerRecord var_A8; + /*0x00A4, 0x014C*/ struct BattleTowerRecord var_14C[5]; + /*0x03D8, 0x0480*/ u16 firstMonSpecies; // species of the first pokemon in the player's battle tower party + /*0x03DA, 0x0482*/ u16 defeatedBySpecies; // species of the pokemon that defated the player in their battle tower streak. /*0x03DC, 0x0484*/ u8 filler_3DC[0x14]; - /*0x03F0, 0x0498*/ u8 ereaderTrainer[0xBC]; - /*0x04AC, 0x0554*/ u8 var_4AC; - /*0x04AD, 0x0555*/ u8 var_4AD; + /*0x03F0, 0x0498*/ struct BattleTowerEReaderTrainer ereaderTrainer; + /*0x04AC, 0x0554*/ u8 battleTowerLevelType:1; // 0 = level 50; 1 = level 100 + /*0x04AD, 0x0555*/ u8 var_4AD; // used by tv, but ultimately does nothing, since both code paths are identical /*0x04AE, 0x0556*/ u8 var_4AE[2]; - /*0x04B0, 0x0558*/ u16 var_4B0; - /*0x04B2, 0x055A*/ u16 var_4B2; - /*0x04B4, 0x055C*/ u16 var_4B4; - /*0x04B6, 0x055E*/ u16 var_4B6; - /*0x04B8, 0x0560*/ u16 recordWinStreak[2]; - /*0x04BC, 0x0564*/ u8 filler_4BC[0xC]; - /*0x04C8, 0x0570*/ u16 var_4C8; - /*0x04CA, 0x0572*/ u16 var_4CA; - /*0x04CC, 0x0574*/ u16 winStreak[2]; - /*0x04D0, 0x0578*/ u8 var_4D0; + /*0x04B0, 0x0558*/ u16 var_4B0[2]; + /*0x04B4, 0x055C*/ u16 var_4B4[2]; + /*0x04B8, 0x0560*/ u16 recordWinStreaks[2]; + /*0x04BC, 0x0564*/ u8 battleTowerTrainerId; // index for gBattleTowerTrainers table + /*0x04BD, 0x0565*/ u8 var_4BD[0x3]; + /*0x04C0, 0x0568*/ u8 var_4C0; + /*0x04C1, 0x0569*/ u8 var_4C1[0x7]; + /*0x04C8, 0x0570*/ u16 totalBattleTowerWins; + /*0x04CA, 0x0572*/ u16 bestBattleTowerWinStreak; + /*0x04CC, 0x0574*/ u16 currentWinStreaks[2]; + /*0x04D0, 0x0578*/ u8 lastStreakLevelType; // 0 = level 50, 1 = level 100. level type of the last streak. Used by tv to report the level mode. /*0x04D1, 0x0579*/ u8 filler_4D1[0x317]; }; diff --git a/include/record_mixing.h b/include/record_mixing.h index ca60b04a7..96105f3f7 100644 --- a/include/record_mixing.h +++ b/include/record_mixing.h @@ -21,7 +21,7 @@ u16 *GetPlayerRecvBuffer(u8 player); void sub_80B9A78(void); void sub_80B9A88(u8 *a); void sub_80B9B1C(u8 *a, size_t size, u8 index); -void sub_80B9B70(u8 *a, size_t size, u8 index); +void sub_80B9B70(void *a, u32 size, u8 index); u8 sub_80B9BBC(u16 *a); void sub_80B9BC4(u8 *, size_t, u8[][2], u8 d, u8 e); u8 sub_80B9C4C(u8 *a); diff --git a/src/battle/battle_records.c b/src/battle/battle_records.c index d848a10b8..59da6ba73 100644 --- a/src/battle/battle_records.c +++ b/src/battle/battle_records.c @@ -295,13 +295,13 @@ static void PrintWinStreak(const u8 *str, u16 streak, u8 left, u8 top) static void PrintRecordWinStreak(u8 level, u8 left, u8 top) { struct SaveBlock2_Sub *sb2sub = &gSaveBlock2.filler_A8; - u16 winStreak = sb2sub->recordWinStreak[level]; + u16 winStreak = sb2sub->recordWinStreaks[level]; PrintWinStreak(gOtherText_Record, winStreak, left, top); } static u16 GetLastWinStreak(u8 level) { - u16 result = gSaveBlock2.filler_A8.winStreak[level]; + u16 result = gSaveBlock2.filler_A8.currentWinStreaks[level]; if (result > 9999) result = 9999; return result; diff --git a/src/battle_tower.c b/src/battle_tower.c index 51f4ca93d..90884ec98 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -1,11 +1,21 @@ #include "global.h" #include "battle_tower.h" #include "event_data.h" +#include "map_object_constants.h" +#include "rng.h" #include "vars.h" +extern u8 gTrainerClassToPicIndex[]; +extern u8 gTrainerClassToNameIndex[]; +extern u8 gUnknown_08405EB0[]; +extern u8 gUnknown_08405E7E[]; +extern u8 gUnknown_08405E92[]; +extern u8 gUnknown_08405E60[]; +extern struct BattleTowerTrainer gBattleTowerTrainers[]; -extern void sub_813461C(u8 levelType); extern void sub_8135C44(void); +extern void sub_813601C(void); +extern void sub_81349FC(u8); void sub_8134548(void) @@ -56,3 +66,1053 @@ void sub_8134548(void) sub_8135C44(); } + +void sub_813461C(u8 levelType) +{ + gSaveBlock2.filler_A8.var_4AE[levelType] = 0; + gSaveBlock2.filler_A8.var_4B0[levelType] = 1; + gSaveBlock2.filler_A8.var_4B4[levelType] = 1; +} + +// u8 sub_8134650(u8 levelType, u16 b) +// { +// u8 trainerTeamLevel; +// s32 i; +// u32 numValid = 0; + +// sub_813601C(); + +// if (gScriptResult || gSaveBlock2.filler_A8.ereaderTrainer.unk2 != b) +// { +// return 0; +// } + +// trainerTeamLevel = 50; +// if (levelType != 0) +// { +// trainerTeamLevel = 100; +// } + +// for (i = 0; i < 3; i++) +// { +// if (!gSaveBlock2.filler_A8.ereaderTrainer.party[i].level != trainerTeamLevel) +// { +// return 0; +// } + +// CheckMonBattleTowerBanlist(gSaveBlock2.filler_A8.ereaderTrainer.party[i].unk0, gSaveBlock2.filler_A8.ereaderTrainer.party[i].unk2, 1, levelType, &numValid); +// } + +// return numValid == 3; +// } + +__attribute__((naked)) +u8 sub_8134650(u8 levelType, u16 b) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + sub sp, 0x2C\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + lsls r1, 16\n\ + lsrs r6, r1, 16\n\ + add r4, sp, 0x28\n\ + movs r0, 0\n\ + strb r0, [r4]\n\ + bl sub_813601C\n\ + ldr r0, _08134684 @ =gScriptResult\n\ + ldrh r0, [r0]\n\ + adds r7, r4, 0\n\ + cmp r0, 0\n\ + bne _08134680\n\ + ldr r1, _08134688 @ =gSaveBlock2\n\ + ldr r2, _0813468C @ =0x0000049a\n\ + adds r0, r1, r2\n\ + ldrh r0, [r0]\n\ + cmp r0, r6\n\ + beq _08134690\n\ +_08134680:\n\ + movs r0, 0\n\ + b _081346E2\n\ + .align 2, 0\n\ +_08134684: .4byte gScriptResult\n\ +_08134688: .4byte gSaveBlock2\n\ +_0813468C: .4byte 0x0000049a\n\ +_08134690:\n\ + movs r6, 0x32\n\ + cmp r5, 0\n\ + beq _08134698\n\ + movs r6, 0x64\n\ +_08134698:\n\ + movs r4, 0\n\ + mov r8, r1\n\ +_0813469C:\n\ + movs r0, 0x2C\n\ + muls r0, r4\n\ + mov r3, r8\n\ + adds r1, r0, r3\n\ + movs r2, 0x9B\n\ + lsls r2, 3\n\ + adds r0, r1, r2\n\ + ldrb r2, [r0]\n\ + cmp r2, r6\n\ + bne _08134680\n\ + ldr r3, _081346F0 @ =0x000004cc\n\ + adds r0, r1, r3\n\ + ldrh r0, [r0]\n\ + adds r3, 0x2\n\ + adds r1, r3\n\ + ldrh r1, [r1]\n\ + str r2, [sp]\n\ + add r2, sp, 0x10\n\ + str r2, [sp, 0x4]\n\ + add r2, sp, 0x1C\n\ + str r2, [sp, 0x8]\n\ + str r7, [sp, 0xC]\n\ + movs r2, 0x1\n\ + adds r3, r5, 0\n\ + bl CheckMonBattleTowerBanlist\n\ + adds r4, 0x1\n\ + cmp r4, 0x2\n\ + ble _0813469C\n\ + movs r1, 0\n\ + ldrb r0, [r7]\n\ + cmp r0, 0x3\n\ + bne _081346E0\n\ + movs r1, 0x1\n\ +_081346E0:\n\ + adds r0, r1, 0\n\ +_081346E2:\n\ + add sp, 0x2C\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_081346F0: .4byte 0x000004cc\n\ +.syntax divided\n"); +} + +// bool8 sub_81346F4(void) +// { +// s32 i; +// u32 j; +// u32 arr[4]; +// u16 var2 = sub_8135D3C(gSaveBlock2.filler_A8.battleTowerLevelType); + +// if (sub_8134650(gSaveBlock2.filler_A8.battleTowerLevelType)) +// { +// gSaveBlock2.filler_A8.battleTowerTrainerId = 0xC8; +// return TRUE; +// } + +// for (i = 0; i < 5; i++) +// { +// u32 var_or = 0; +// u32 var_add = 0; +// for (j = 0; j < 40; j++) +// { +// var_or |= gSaveBlock2.filler_A8.var_0A4[i][j]; +// var_add += gSaveBlock2.filler_A8.var_0A4[i][j]; +// } + + +// } +// } + +__attribute__((naked)) +bool8 sub_81346F4(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x18\n\ + movs r0, 0\n\ + mov r9, r0\n\ + ldr r4, _08134738 @ =gSaveBlock2\n\ + ldr r1, _0813473C @ =0x00000554\n\ + adds r0, r4, r1\n\ + ldrb r0, [r0]\n\ + lsls r0, 31\n\ + lsrs r7, r0, 31\n\ + adds r0, r7, 0\n\ + bl sub_8135D3C\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r8, r0\n\ + adds r0, r7, 0\n\ + mov r1, r8\n\ + bl sub_8134650\n\ + lsls r0, 24\n\ + adds r1, r4, 0\n\ + cmp r0, 0\n\ + beq _08134744\n\ + ldr r2, _08134740 @ =0x00000564\n\ + adds r1, r2\n\ + movs r0, 0xC8\n\ + strb r0, [r1]\n\ + b _081347DE\n\ + .align 2, 0\n\ +_08134738: .4byte gSaveBlock2\n\ +_0813473C: .4byte 0x00000554\n\ +_08134740: .4byte 0x00000564\n\ +_08134744:\n\ + movs r5, 0\n\ + movs r3, 0xA4\n\ + mov r12, r3\n\ + mov r10, sp\n\ +_0813474C:\n\ + mov r0, r12\n\ + muls r0, r5\n\ + movs r4, 0\n\ + movs r1, 0\n\ + movs r2, 0\n\ + adds r6, r5, 0x1\n\ + str r6, [sp, 0x14]\n\ + ldr r6, _081347B4 @ =gSaveBlock2 + 0x14C\n\ + adds r3, r0, r6\n\ +_0813475E:\n\ + ldm r3!, {r0}\n\ + orrs r4, r0\n\ + adds r1, r0\n\ + adds r2, 0x1\n\ + cmp r2, 0x27\n\ + bls _0813475E\n\ + mov r3, r12\n\ + muls r3, r5\n\ + ldr r0, _081347B8 @ =gSaveBlock2\n\ + adds r2, r3, r0\n\ + movs r6, 0xA7\n\ + lsls r6, 1\n\ + adds r0, r2, r6\n\ + ldrh r0, [r0]\n\ + cmp r0, r8\n\ + bne _081347A4\n\ + subs r6, 0x2\n\ + adds r0, r2, r6\n\ + ldrb r0, [r0]\n\ + cmp r0, r7\n\ + bne _081347A4\n\ + cmp r4, 0\n\ + beq _081347A4\n\ + ldr r2, _081347BC @ =gSaveBlock2 + 0x1EC\n\ + adds r0, r3, r2\n\ + ldr r0, [r0]\n\ + cmp r0, r1\n\ + bne _081347A4\n\ + mov r3, r10\n\ + adds r3, 0x4\n\ + mov r10, r3\n\ + subs r3, 0x4\n\ + stm r3!, {r5}\n\ + movs r6, 0x1\n\ + add r9, r6\n\ +_081347A4:\n\ + ldr r5, [sp, 0x14]\n\ + cmp r5, 0x4\n\ + ble _0813474C\n\ + mov r0, r9\n\ + cmp r0, 0\n\ + bne _081347C0\n\ + movs r0, 0\n\ + b _081347E0\n\ + .align 2, 0\n\ +_081347B4: .4byte gSaveBlock2 + 0x14C\n\ +_081347B8: .4byte gSaveBlock2\n\ +_081347BC: .4byte gSaveBlock2 + 0x1EC\n\ +_081347C0:\n\ + bl Random\n\ + ldr r4, _081347F0 @ =gSaveBlock2\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r1, r9\n\ + bl __modsi3\n\ + lsls r0, 2\n\ + add r0, sp\n\ + ldr r0, [r0]\n\ + adds r0, 0x64\n\ + ldr r1, _081347F4 @ =0x00000564\n\ + adds r4, r1\n\ + strb r0, [r4]\n\ +_081347DE:\n\ + movs r0, 0x1\n\ +_081347E0:\n\ + add sp, 0x18\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_081347F0: .4byte gSaveBlock2\n\ +_081347F4: .4byte 0x00000564\n\ +.syntax divided\n"); +} + +// void sub_81347F8(void) +// { +// bool8 levelType = gSaveBlock2.filler_A8.battleTowerLevelType; +// if (sub_81346F4()) +// { +// sub_81349FC(gSaveBlock2.filler_A8.battleTowerTrainerId); +// gSaveBlock2.filler_A8.var_4C1[gSaveBlock2.filler_A8.var_4B0[levelType]] = gSaveBlock2.filler_A8.battleTowerTrainerId; +// } +// else +// { +// u16 var1; + +// if (gSaveBlock2.filler_A8.var_4B4[levelType] > 7) +// { +// while (1) +// { +// s32 i; +// u32 temp = ((Random() & 0xFF) * 30) >> 8; +// var1 = temp + 70; +// for (i = 0; i < gSaveBlock2.filler_A8.var_4B0[levelType] - 1 && var1 != gSaveBlock2.filler_A8.var_4C1[i]; i++) // TODO: [i + 1]??? +// { } + +// if (i == gSaveBlock2.filler_A8.var_4B0[levelType] - 1) +// { +// break; +// } +// } +// } +// else +// { +// if (gSaveBlock2.filler_A8.var_4B0[levelType] == 7) +// { +// while (1) +// { +// s32 i; +// u32 temp = ((Random() & 0xFF) * 5); +// u32 temp2 = (((gSaveBlock2.filler_A8.var_4B4[levelType] - 1) * 10) + 20); +// var1 = temp / 128 + temp2; +// for (i = 0; i < gSaveBlock2.filler_A8.var_4B0[levelType] - 1 && gSaveBlock2.filler_A8.var_4C1[i] != var1; i++) // TODO: [i + 1]???? +// { } + +// if (i == gSaveBlock2.filler_A8.var_4B0[levelType] - 1) +// { +// break; +// } +// } +// } +// else +// { +// while (1) +// { +// s32 i; +// u32 temp = ((Random() & 0xFF) * 320); +// u32 temp2 = ((gSaveBlock2.filler_A8.var_4B4[levelType] - 1) * 10); +// var1 = temp + temp2; +// for (i = 0; i < gSaveBlock2.filler_A8.var_4B0[levelType] - 1 && gSaveBlock2.filler_A8.var_4C1[i] != var1; i++) +// { } + +// if (i == gSaveBlock2.filler_A8.var_4B0[levelType] - 1) +// { +// break; +// } +// } +// } +// } + +// gSaveBlock2.filler_A8.battleTowerTrainerId = var1; +// sub_81349FC(gSaveBlock2.filler_A8.battleTowerTrainerId); + +// if (gSaveBlock2.filler_A8.var_4B0[levelType] < 7) +// { +// gSaveBlock2.filler_A8.var_4C1[gSaveBlock2.filler_A8.var_4B0[levelType]] = gSaveBlock2.filler_A8.battleTowerTrainerId; +// } +// } +// } + +__attribute__((naked)) +void sub_81347F8(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + ldr r5, _08134838 @ =gSaveBlock2\n\ + ldr r1, _0813483C @ =0x00000554\n\ + adds r0, r5, r1\n\ + ldrb r0, [r0]\n\ + lsls r0, 31\n\ + lsrs r6, r0, 31\n\ + bl sub_81346F4\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08134848\n\ + ldr r2, _08134840 @ =0x00000564\n\ + adds r4, r5, r2\n\ + ldrb r0, [r4]\n\ + bl sub_81349FC\n\ + lsls r0, r6, 1\n\ + movs r3, 0xAB\n\ + lsls r3, 3\n\ + adds r1, r5, r3\n\ + adds r0, r1\n\ + ldrh r0, [r0]\n\ + adds r0, r5, r0\n\ + ldr r1, _08134844 @ =0x00000569\n\ + adds r0, r1\n\ + ldrb r1, [r4]\n\ + b _081349DC\n\ + .align 2, 0\n\ +_08134838: .4byte gSaveBlock2\n\ +_0813483C: .4byte 0x00000554\n\ +_08134840: .4byte 0x00000564\n\ +_08134844: .4byte 0x00000569\n\ +_08134848:\n\ + lsls r0, r6, 1\n\ + ldr r2, _081348D8 @ =0x0000055c\n\ + adds r1, r5, r2\n\ + adds r1, r0, r1\n\ + ldrh r1, [r1]\n\ + adds r7, r0, 0\n\ + cmp r1, 0x7\n\ + bls _0813485A\n\ + b _0813495C\n\ +_0813485A:\n\ + movs r3, 0xAB\n\ + lsls r3, 3\n\ + adds r0, r5, r3\n\ + adds r1, r7, r0\n\ + ldrh r0, [r1]\n\ + cmp r0, 0x7\n\ + bne _081348E4\n\ + adds r6, r5, 0\n\ + mov r9, r7\n\ + adds r5, r1, 0\n\ + ldr r0, _081348DC @ =0x0000056a\n\ + adds r0, r6\n\ + mov r10, r0\n\ + mov r8, r5\n\ +_08134876:\n\ + bl Random\n\ + movs r1, 0xFF\n\ + ands r1, r0\n\ + lsls r2, r1, 2\n\ + adds r2, r1\n\ + ldr r1, _081348D8 @ =0x0000055c\n\ + adds r4, r6, r1\n\ + mov r3, r9\n\ + adds r0, r3, r4\n\ + ldrh r1, [r0]\n\ + subs r1, 0x1\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 1\n\ + adds r0, 0x14\n\ + lsrs r2, 7\n\ + adds r2, r0\n\ + lsls r2, 16\n\ + lsrs r2, 16\n\ + movs r1, 0\n\ + ldrh r0, [r5]\n\ + subs r0, 0x1\n\ + cmp r1, r0\n\ + bge _081348C8\n\ + mov r3, r10\n\ + ldrb r0, [r3]\n\ + cmp r0, r2\n\ + beq _081348C8\n\ + subs r0, r4, 0x4\n\ + adds r0, r7, r0\n\ + ldrh r0, [r0]\n\ + subs r3, r0, 0x1\n\ + adds r4, 0xE\n\ +_081348BA:\n\ + adds r1, 0x1\n\ + cmp r1, r3\n\ + bge _081348C8\n\ + adds r0, r1, r4\n\ + ldrb r0, [r0]\n\ + cmp r0, r2\n\ + bne _081348BA\n\ +_081348C8:\n\ + mov r3, r8\n\ + ldrh r0, [r3]\n\ + subs r0, 0x1\n\ + ldr r4, _081348E0 @ =gSaveBlock2\n\ + cmp r1, r0\n\ + bne _08134876\n\ + b _081349B6\n\ + .align 2, 0\n\ +_081348D8: .4byte 0x0000055c\n\ +_081348DC: .4byte 0x0000056a\n\ +_081348E0: .4byte gSaveBlock2\n\ +_081348E4:\n\ + adds r6, r5, 0\n\ + mov r9, r7\n\ + adds r5, r1, 0\n\ + ldr r2, _08134950 @ =0x0000056a\n\ + adds r2, r6\n\ + mov r10, r2\n\ + mov r8, r5\n\ +_081348F2:\n\ + bl Random\n\ + movs r1, 0xFF\n\ + ands r1, r0\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsrs r2, r0, 6\n\ + ldr r3, _08134954 @ =0x0000055c\n\ + adds r4, r6, r3\n\ + mov r1, r9\n\ + adds r0, r1, r4\n\ + ldrh r1, [r0]\n\ + subs r1, 0x1\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 1\n\ + adds r0, r2, r0\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + movs r1, 0\n\ + ldrh r0, [r5]\n\ + subs r0, 0x1\n\ + cmp r1, r0\n\ + bge _08134942\n\ + mov r3, r10\n\ + ldrb r0, [r3]\n\ + cmp r0, r2\n\ + beq _08134942\n\ + subs r0, r4, 0x4\n\ + adds r0, r7, r0\n\ + ldrh r0, [r0]\n\ + subs r3, r0, 0x1\n\ + adds r4, 0xE\n\ +_08134934:\n\ + adds r1, 0x1\n\ + cmp r1, r3\n\ + bge _08134942\n\ + adds r0, r1, r4\n\ + ldrb r0, [r0]\n\ + cmp r0, r2\n\ + bne _08134934\n\ +_08134942:\n\ + mov r3, r8\n\ + ldrh r0, [r3]\n\ + subs r0, 0x1\n\ + ldr r4, _08134958 @ =gSaveBlock2\n\ + cmp r1, r0\n\ + bne _081348F2\n\ + b _081349B6\n\ + .align 2, 0\n\ +_08134950: .4byte 0x0000056a\n\ +_08134954: .4byte 0x0000055c\n\ +_08134958: .4byte gSaveBlock2\n\ +_0813495C:\n\ + movs r2, 0xAB\n\ + lsls r2, 3\n\ + adds r0, r5, r2\n\ + adds r6, r7, r0\n\ + ldr r3, _081349EC @ =0x0000056a\n\ + adds r3, r5\n\ + mov r8, r3\n\ + adds r5, r6, 0\n\ +_0813496C:\n\ + bl Random\n\ + movs r1, 0xFF\n\ + ands r1, r0\n\ + lsls r0, r1, 4\n\ + subs r0, r1\n\ + lsls r0, 1\n\ + asrs r0, 8\n\ + adds r0, 0x46\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + movs r1, 0\n\ + ldrh r0, [r6]\n\ + subs r0, 0x1\n\ + cmp r1, r0\n\ + bge _081349AC\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + ldr r4, _081349F0 @ =gSaveBlock2\n\ + cmp r0, r2\n\ + beq _081349AC\n\ + ldrh r0, [r5]\n\ + subs r3, r0, 0x1\n\ + ldr r0, _081349EC @ =0x0000056a\n\ + adds r4, r0\n\ +_0813499E:\n\ + adds r1, 0x1\n\ + cmp r1, r3\n\ + bge _081349AC\n\ + adds r0, r1, r4\n\ + ldrb r0, [r0]\n\ + cmp r0, r2\n\ + bne _0813499E\n\ +_081349AC:\n\ + ldrh r0, [r6]\n\ + subs r0, 0x1\n\ + ldr r4, _081349F0 @ =gSaveBlock2\n\ + cmp r1, r0\n\ + bne _0813496C\n\ +_081349B6:\n\ + ldr r1, _081349F4 @ =0x00000564\n\ + adds r0, r4, r1\n\ + strb r2, [r0]\n\ + ldr r2, _081349F4 @ =0x00000564\n\ + adds r5, r4, r2\n\ + ldrb r0, [r5]\n\ + bl sub_81349FC\n\ + movs r3, 0xAB\n\ + lsls r3, 3\n\ + adds r0, r4, r3\n\ + adds r1, r7, r0\n\ + ldrh r0, [r1]\n\ + cmp r0, 0x6\n\ + bhi _081349DE\n\ + adds r0, r4, r0\n\ + ldr r1, _081349F8 @ =0x00000569\n\ + adds r0, r1\n\ + ldrb r1, [r5]\n\ +_081349DC:\n\ + strb r1, [r0]\n\ +_081349DE:\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_081349EC: .4byte 0x0000056a\n\ +_081349F0: .4byte gSaveBlock2\n\ +_081349F4: .4byte 0x00000564\n\ +_081349F8: .4byte 0x00000569\n\ +.syntax divided\n"); +} + +void sub_81349FC(u8 trainerIndex) +{ + u32 i; + u8 trainerClass; + + if (trainerIndex < 100) + { + trainerClass = gBattleTowerTrainers[trainerIndex].trainerClass; + } + else if (trainerIndex < 200) + { + trainerClass = gSaveBlock2.filler_A8.var_14C[trainerIndex - 100].trainerClass; + } + else + { + trainerClass = gSaveBlock2.filler_A8.ereaderTrainer.trainerClass; + } + + for (i = 0; i < 30 && gUnknown_08405E60[i] != trainerClass; i++); + if (i != 30) + { + u8 trainerObjectGfxId = gUnknown_08405E92[i]; + VarSet(0x4010, trainerObjectGfxId); + return; + } + + for (i = 0; i < 20 && gUnknown_08405E7E[i] != trainerClass; i++); + if (i != 20) + { + u8 trainerObjectGfxId = gUnknown_08405EB0[i]; + VarSet(0x4010, trainerObjectGfxId); + return; + } + + VarSet(0x4010, MAP_OBJ_GFX_BOY_1); +} + +void sub_8134AB4() +{ + sub_81349FC(200); +} + +// void sub_8134AC0(struct BattleTowerRecord *record) +// { +// u16 var1[5]; +// u16 var2[5]; +// s32 i, j, k; +// s16 l = 0; + +// for (i = 0; i < 5; i++) +// { +// k = 0; +// for (j = 0; j < 4 && gSaveBlock2.filler_A8.var_14C[i].var_C[i] != record->var_C[j]; j++); +// if (j == 4) +// { +// for (k = 0; k < 7 && gSaveBlock2.filler_A8.var_14C[i].var_8 == record->var_8; k++) +// { +// if (record->var_8 == 0xFF) +// { +// k = 7; +// break; +// } +// } +// } + +// if (k == 7) +// { +// break; +// } +// } + +// if (i < 5) +// { +// gSaveBlock2.filler_A8.var_14C[i] = *record; +// return; +// } + +// i = 0; +// while (i < 5) +// { +// if (gSaveBlock2.filler_A8.var_14C[i].var_2 == 0) +// { +// if (i > 4) +// { +// break; +// } + +// gSaveBlock2.filler_A8.var_14C[i] = *record; +// return; +// } + +// i++; +// } + +// var1[0] = gSaveBlock2.filler_A8.var_14C[0].var_2; +// var2[0] = 0; +// l++; + +// for (i = 1; i < 5; i++) +// { +// for (j = 0; gSaveBlock2.filler_A8.var_14C[i].var_2 <= var1[0] && j < l; j++) +// { +// if (gSaveBlock2.filler_A8.var_14C[i].var_2 < var1[0]) +// { +// j = 0; +// l = 1; +// var1[0] = gSaveBlock2.filler_A8.var_14C[i].var_2; +// var2[0] = i; +// break; +// } +// } + +// if (j == l) +// { +// var1[l] = gSaveBlock2.filler_A8.var_14C[i].var_2; +// var2[l] = i; +// l++; +// } +// } + +// gSaveBlock2.filler_A8.var_14C[var2[(Random() % l)]] = *record; +// } + +__attribute__((naked)) +void sub_8134AC0(struct BattleTowerRecord *record) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x1C\n\ + movs r7, 0\n\ + mov r8, r0\n\ + movs r5, 0\n\ + ldr r0, _08134B3C @ =gSaveBlock2\n\ + mov r12, r0\n\ + mov r1, r8\n\ + ldrb r1, [r1, 0xC]\n\ + str r1, [sp, 0x18]\n\ + movs r2, 0xAA\n\ + lsls r2, 1\n\ + add r2, r12\n\ + mov r10, r2\n\ + mov r9, r5\n\ +_08134AE6:\n\ + movs r6, 0\n\ + movs r3, 0\n\ + ldr r0, _08134B40 @ =gSaveBlock2 + 0x158\n\ + add r0, r9\n\ + ldrb r0, [r0]\n\ + ldr r1, [sp, 0x18]\n\ + cmp r0, r1\n\ + bne _08134B14\n\ + movs r0, 0xA4\n\ + muls r0, r5\n\ + ldr r1, _08134B40 @ =gSaveBlock2 + 0x158\n\ + adds r2, r0, r1\n\ + mov r4, r8\n\ + adds r4, 0xC\n\ +_08134B02:\n\ + adds r2, 0x1\n\ + adds r3, 0x1\n\ + cmp r3, 0x3\n\ + bgt _08134B14\n\ + adds r1, r4, r3\n\ + ldrb r0, [r2]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + beq _08134B02\n\ +_08134B14:\n\ + cmp r3, 0x4\n\ + bne _08134B54\n\ + movs r6, 0\n\ + mov r2, r10\n\ + ldrb r0, [r2]\n\ + mov r3, r8\n\ + ldrb r3, [r3, 0x8]\n\ + cmp r0, r3\n\ + bne _08134B54\n\ + adds r1, r0, 0\n\ + movs r0, 0xA4\n\ + muls r0, r5\n\ + adds r0, 0x4\n\ + ldr r3, _08134B44 @ =gSaveBlock2 + 0x150\n\ + adds r2, r0, r3\n\ +_08134B32:\n\ + cmp r1, 0xFF\n\ + bne _08134B48\n\ + movs r6, 0x7\n\ + b _08134B54\n\ + .align 2, 0\n\ +_08134B3C: .4byte gSaveBlock2\n\ +_08134B40: .4byte gSaveBlock2 + 0x158\n\ +_08134B44: .4byte gSaveBlock2 + 0x150\n\ +_08134B48:\n\ + adds r6, 0x1\n\ + cmp r6, 0x6\n\ + bgt _08134B54\n\ + ldrb r0, [r2]\n\ + cmp r0, r1\n\ + beq _08134B32\n\ +_08134B54:\n\ + cmp r6, 0x7\n\ + beq _08134B64\n\ + movs r0, 0xA4\n\ + add r10, r0\n\ + add r9, r0\n\ + adds r5, 0x1\n\ + cmp r5, 0x4\n\ + ble _08134AE6\n\ +\n\ +_08134B64:\n\ + cmp r5, 0x4\n\ + bgt _08134B76\n\ + movs r0, 0xA4\n\ + muls r0, r5\n\ + add r0, r12\n\ + movs r1, 0xA6\n\ + lsls r1, 1\n\ + adds r0, r1\n\ + b _08134B9E\n\ +_08134B76:\n\ + movs r5, 0\n\ + movs r1, 0xA7\n\ + lsls r1, 1\n\ + add r1, r12\n\ + b _08134B88\n\ +_08134B80:\n\ + adds r1, 0xA4\n\ + adds r5, 0x1\n\ + cmp r5, 0x4\n\ + bgt _08134BA8\n\ +_08134B88:\n\ + ldrh r0, [r1]\n\ + cmp r0, 0\n\ + bne _08134B80\n\ + cmp r5, 0x4\n\ + bgt _08134BA8\n\ + movs r0, 0xA4\n\ + muls r0, r5\n\ + add r0, r12\n\ + movs r2, 0xA6\n\ + lsls r2, 1\n\ + adds r0, r2\n\ +_08134B9E:\n\ + mov r1, r8\n\ + movs r2, 0xA4\n\ + bl memcpy\n\ + b _08134C5E\n\ +\n\ +_08134BA8:\n\ + mov r2, sp\n\ + movs r3, 0xA7\n\ + lsls r3, 1\n\ + mov r1, r12\n\ + adds r0, r1, r3\n\ + ldrh r0, [r0]\n\ + movs r1, 0\n\ + strh r0, [r2]\n\ + add r0, sp, 0xC\n\ + strh r1, [r0]\n\ + adds r7, 0x1\n\ + movs r5, 0x1\n\ + add r2, sp, 0xC @var2 = r2\n\ + mov r9, r2\n\ + mov r10, r3\n\ +_08134BC6:\n\ + movs r3, 0\n\ + adds r0, r5, 0x1\n\ + mov r12, r0\n\ + cmp r3, r7\n\ + bge _08134C0A\n\ + movs r1, 0xA4\n\ + adds r0, r5, 0\n\ + muls r0, r1\n\ + ldr r2, _08134BFC @ =gSaveBlock2\n\ + adds r0, r2\n\ + mov r1, r10\n\ + adds r4, r0, r1\n\ + mov r6, sp\n\ +_08134BE0:\n\ + lsls r0, r3, 1\n\ + add r0, sp\n\ + ldrh r2, [r4]\n\ + adds r1, r2, 0\n\ + ldrh r0, [r0]\n\ + cmp r1, r0\n\ + bcs _08134C00\n\ + movs r3, 0\n\ + movs r7, 0x1\n\ + strh r2, [r6]\n\ + mov r2, r9\n\ + strh r5, [r2]\n\ + b _08134C0A\n\ + .align 2, 0\n\ +_08134BFC: .4byte gSaveBlock2\n\ +_08134C00:\n\ + cmp r1, r0\n\ + bhi _08134C0A\n\ + adds r3, 0x1\n\ + cmp r3, r7\n\ + blt _08134BE0\n\ +_08134C0A:\n\ + cmp r3, r7\n\ + bne _08134C2A\n\ + lsls r1, r7, 1\n\ + mov r3, sp\n\ + adds r2, r3, r1\n\ + movs r3, 0xA4\n\ + adds r0, r5, 0\n\ + muls r0, r3\n\ + ldr r3, _08134C70 @ =gSaveBlock2\n\ + adds r0, r3\n\ + add r0, r10\n\ + ldrh r0, [r0]\n\ + strh r0, [r2]\n\ + add r1, r9\n\ + strh r5, [r1]\n\ + adds r7, 0x1\n\ +_08134C2A:\n\ + mov r5, r12\n\ + cmp r5, 0x4\n\ + ble _08134BC6\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + adds r1, r7, 0\n\ + bl __modsi3\n\ + adds r5, r0, 0\n\ + ldr r2, _08134C70 @ =gSaveBlock2\n\ + lsls r0, r5, 1\n\ + add r0, sp\n\ + adds r0, 0xC\n\ + ldrh r1, [r0]\n\ + movs r0, 0xA4\n\ + muls r0, r1\n\ + adds r0, r2\n\ + movs r1, 0xA6\n\ + lsls r1, 1\n\ + adds r0, r1\n\ + mov r1, r8\n\ + movs r2, 0xA4\n\ + bl memcpy\n\ +_08134C5E:\n\ + add sp, 0x1C\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08134C70: .4byte gSaveBlock2\n\ +.syntax divided\n"); +} + +u8 get_trainer_class_pic_index(void) +{ + if (gSaveBlock2.filler_A8.battleTowerTrainerId == 200) + { + return gTrainerClassToPicIndex[gSaveBlock2.filler_A8.ereaderTrainer.trainerClass]; + } + else if (gSaveBlock2.filler_A8.battleTowerTrainerId < 100) + { + return gTrainerClassToPicIndex[gBattleTowerTrainers[gSaveBlock2.filler_A8.battleTowerTrainerId].trainerClass]; + } + else + { + return gTrainerClassToPicIndex[gSaveBlock2.filler_A8.var_14C[gSaveBlock2.filler_A8.battleTowerTrainerId - 100].trainerClass]; + } +} + +u8 get_trainer_class_name_index(void) +{ + if (gSaveBlock2.filler_A8.battleTowerTrainerId == 200) + { + return gTrainerClassToNameIndex[gSaveBlock2.filler_A8.ereaderTrainer.trainerClass]; + } + else if (gSaveBlock2.filler_A8.battleTowerTrainerId >= 100) + { + return gTrainerClassToNameIndex[gSaveBlock2.filler_A8.var_14C[gSaveBlock2.filler_A8.battleTowerTrainerId - 100].trainerClass]; + } + else + { + return gTrainerClassToNameIndex[gBattleTowerTrainers[gSaveBlock2.filler_A8.battleTowerTrainerId].trainerClass]; + } +} + +void get_trainer_name(u8* dest) +{ + s32 i; + + if (gSaveBlock2.filler_A8.battleTowerTrainerId == 200) + { + for (i = 0; i < 7; i++) + { + dest[i] = gSaveBlock2.filler_A8.ereaderTrainer.name[i]; + } + } + else if (gSaveBlock2.filler_A8.battleTowerTrainerId < 100) + { + for (i = 0; i < 7; i++) + { + dest[i] = gBattleTowerTrainers[gSaveBlock2.filler_A8.battleTowerTrainerId].name[i]; + } + } + else + { + for (i = 0; i < 7; i++) + { + dest[i] = gSaveBlock2.filler_A8.var_14C[gSaveBlock2.filler_A8.battleTowerTrainerId - 100].name[i]; + } + } + + dest[i] = 0xFF; +} diff --git a/src/debug/unknown_debug_menu.c b/src/debug/unknown_debug_menu.c index a81625f2a..995fb38fc 100644 --- a/src/debug/unknown_debug_menu.c +++ b/src/debug/unknown_debug_menu.c @@ -1,4 +1,5 @@ #include "global.h" +#include "battle_tower.h" #include "menu.h" extern u8 gBattleCommunication[]; @@ -43,10 +44,10 @@ u8 sub_814A4B8(void) { gSaveBlock2.filler_A8.var_4AE[0] = 3; gSaveBlock2.filler_A8.var_4AE[1] = 3; - gSaveBlock2.filler_A8.var_4B4 = gBattleCommunication[0] + 1; - gSaveBlock2.filler_A8.var_4B6 = gBattleCommunication[0] + 1; - gSaveBlock2.filler_A8.var_4B0 = 1; - gSaveBlock2.filler_A8.var_4B2 = 1; + gSaveBlock2.filler_A8.var_4B4[0] = gBattleCommunication[0] + 1; + gSaveBlock2.filler_A8.var_4B4[1] = gBattleCommunication[0] + 1; + gSaveBlock2.filler_A8.var_4B0[0] = 1; + gSaveBlock2.filler_A8.var_4B0[1] = 1; CloseMenu(); return 1; } diff --git a/src/engine/mystery_event_script.c b/src/engine/mystery_event_script.c index a6568f5de..38ada0685 100644 --- a/src/engine/mystery_event_script.c +++ b/src/engine/mystery_event_script.c @@ -420,7 +420,7 @@ bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx) bool8 MEScrCmd_addtrainer(struct ScriptContext *ctx) { u32 data = ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]; - memcpy(gSaveBlock2.filler_A8.ereaderTrainer, (void *)data, sizeof(gSaveBlock2.filler_A8.ereaderTrainer)); + memcpy(&gSaveBlock2.filler_A8.ereaderTrainer, (void *)data, sizeof(gSaveBlock2.filler_A8.ereaderTrainer)); sub_813601C(); StringExpandPlaceholders(gStringVar4, gOtherText_NewTrainerInHoenn); ctx->data[2] = 2; diff --git a/src/engine/record_mixing.c b/src/engine/record_mixing.c index 8dff432c1..000bafa4e 100644 --- a/src/engine/record_mixing.c +++ b/src/engine/record_mixing.c @@ -60,7 +60,7 @@ struct PlayerRecords u8 filler1044[0x40]; struct EasyChatPair easyChatPairs[5]; struct RecordMixingDayCareMail filler10AC; - u8 filler1124[0xA4]; + struct BattleTowerRecord battleTowerRecord; u16 filler11C8[0x34]; }; @@ -78,7 +78,7 @@ void RecordMixing_PrepareExchangePacket(void) gUnknown_02038738.mail[1] = gSaveBlock1.daycareData.misc.mail[1]; sub_8041324(gSaveBlock1.daycareData.mons, &gUnknown_02038738); memcpy(&unk_2018000.filler10AC, gUnknown_083D0280, sizeof(struct RecordMixingDayCareMail)); - memcpy(unk_2018000.filler1124, gUnknown_083D0284, sizeof(unk_2018000.filler1124)); + memcpy(&unk_2018000.battleTowerRecord, gUnknown_083D0284, sizeof(struct BattleTowerRecord)); if (GetMultiplayerId() == 0) unk_2018000.filler11C8[0] = GetRecordMixingGift(); @@ -92,7 +92,7 @@ void RecordMixing_ReceiveExchangePacket(u32 a) sub_80B9B1C(unk_2008000.filler1044, sizeof(struct PlayerRecords), a); sub_80FA4E4(unk_2008000.easyChatPairs, sizeof(struct PlayerRecords), a); sub_80B9C6C((u8 *)&unk_2008000.filler10AC, sizeof(struct PlayerRecords), a, unk_2008000.tvShows); - sub_80B9B70(unk_2008000.filler1124, sizeof(struct PlayerRecords), a); + sub_80B9B70(&unk_2008000.battleTowerRecord, sizeof(struct PlayerRecords), a); sub_80B9F3C(unk_2008000.filler11C8, a); } @@ -447,11 +447,11 @@ void sub_80B9B1C(u8 *a, size_t size, u8 index) sub_80F7F30(); } -void sub_80B9B70(u8 *a, size_t size, u8 index) +void sub_80B9B70(void *battleTowerRecord, u32 size, u8 index) { sub_80B9A88(gUnknown_0300071C); - memcpy(a + size * index, a + size * gUnknown_0300071C[index], 0xA4); - sub_8134AC0(a + size * index); + memcpy(battleTowerRecord + size * index, battleTowerRecord + size * gUnknown_0300071C[index], sizeof(struct BattleTowerRecord)); + sub_8134AC0(battleTowerRecord + size * index); } u8 sub_80B9BBC(u16 *a) diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index bcb62ede6..c8847b258 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -311,16 +311,16 @@ static void nullsub_60(u8 taskid) { } -void sub_8093390(struct TrainerCard *arg1) +void sub_8093390(struct TrainerCard *trainerCard) { u32 playTime; bool32 enteredHallOfFame; bool8 r4; u8 i; - arg1->gender = gSaveBlock2.playerGender; - arg1->playTimeHours = gSaveBlock2.playTimeHours; - arg1->playTimeMinutes = gSaveBlock2.playTimeMinutes; + trainerCard->gender = gSaveBlock2.playerGender; + trainerCard->playTimeHours = gSaveBlock2.playTimeHours; + trainerCard->playTimeMinutes = gSaveBlock2.playTimeMinutes; playTime = GetGameStat(GAME_STAT_FIRST_HOF_PLAY_TIME); enteredHallOfFame = GetGameStat(GAME_STAT_ENTERED_HOF); @@ -328,39 +328,39 @@ void sub_8093390(struct TrainerCard *arg1) { playTime = 0; } - arg1->firstHallOfFameA = playTime >> 16; - arg1->firstHallOfFameB = (playTime >> 8) & 0xFF; - arg1->firstHallOfFameC = playTime & 0xFF; + trainerCard->firstHallOfFameA = playTime >> 16; + trainerCard->firstHallOfFameB = (playTime >> 8) & 0xFF; + trainerCard->firstHallOfFameC = playTime & 0xFF; - arg1->hasPokedex = FlagGet(SYS_POKEDEX_GET); - arg1->var_3 = sub_8090FC0(); - arg1->pokedexSeen = GetPokedexSeenCount(); + trainerCard->hasPokedex = FlagGet(SYS_POKEDEX_GET); + trainerCard->var_3 = sub_8090FC0(); + trainerCard->pokedexSeen = GetPokedexSeenCount(); - arg1->trainerId = (gSaveBlock2.playerTrainerId[1] << 8) | gSaveBlock2.playerTrainerId[0]; + trainerCard->trainerId = (gSaveBlock2.playerTrainerId[1] << 8) | gSaveBlock2.playerTrainerId[0]; // Link Cable Battles - arg1->linkBattleWins = sav12_xor_get_clamped_above(GAME_STAT_LINK_BATTLE_WINS, 9999); - arg1->linkBattleLosses = sav12_xor_get_clamped_above(GAME_STAT_LINK_BATTLE_LOSSES, 9999); + trainerCard->linkBattleWins = sav12_xor_get_clamped_above(GAME_STAT_LINK_BATTLE_WINS, 9999); + trainerCard->linkBattleLosses = sav12_xor_get_clamped_above(GAME_STAT_LINK_BATTLE_LOSSES, 9999); // Contests w/ Friends - arg1->contestsWithFriends = sav12_xor_get_clamped_above(GAME_STAT_WON_LINK_CONTEST, 999); + trainerCard->contestsWithFriends = sav12_xor_get_clamped_above(GAME_STAT_WON_LINK_CONTEST, 999); // Pokéblocks w/ Friends - arg1->pokeblocksWithFriends = sav12_xor_get_clamped_above(GAME_STAT_POKEBLOCKS_WITH_FRIENDS, 0xFFFF); + trainerCard->pokeblocksWithFriends = sav12_xor_get_clamped_above(GAME_STAT_POKEBLOCKS_WITH_FRIENDS, 0xFFFF); // Pokémon Trades - arg1->pokemonTrades = sav12_xor_get_clamped_above(GAME_STAT_POKEMON_TRADES, 0xFFFF); + trainerCard->pokemonTrades = sav12_xor_get_clamped_above(GAME_STAT_POKEMON_TRADES, 0xFFFF); - // Battle tower? - arg1->battleTowerWins = gSaveBlock2.filler_A8.var_4C8; - arg1->battleTowerLosses = gSaveBlock2.filler_A8.var_4CA; - if (arg1->battleTowerWins > 9999) + // Battle Tower + trainerCard->battleTowerWins = gSaveBlock2.filler_A8.totalBattleTowerWins; + trainerCard->battleTowerLosses = gSaveBlock2.filler_A8.bestBattleTowerWinStreak; + if (trainerCard->battleTowerWins > 9999) { - arg1->battleTowerWins = 9999; + trainerCard->battleTowerWins = 9999; } - if (arg1->battleTowerLosses > 9999) + if (trainerCard->battleTowerLosses > 9999) { - arg1->battleTowerLosses = 9999; + trainerCard->battleTowerLosses = 9999; } r4 = FALSE; @@ -368,21 +368,21 @@ void sub_8093390(struct TrainerCard *arg1) { r4 = TRUE; } - arg1->var_4 = r4; + trainerCard->var_4 = r4; - arg1->money = gSaveBlock1.money; + trainerCard->money = gSaveBlock1.money; for (i = 0; i < 4; i++) { - arg1->var_28[i] = gSaveBlock1.unk2B1C[i]; + trainerCard->var_28[i] = gSaveBlock1.unk2B1C[i]; } for (i = 0; i < 8; i++) { - arg1->playerName[i] = gSaveBlock2.playerName[i]; + trainerCard->playerName[i] = gSaveBlock2.playerName[i]; } - arg1->stars = sub_80934F4(arg1); + trainerCard->stars = sub_80934F4(trainerCard); } u8 sub_80934C4(u8 id) diff --git a/src/field/choose_party.c b/src/field/choose_party.c index f35dcdf56..879139aa4 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -176,7 +176,7 @@ static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn) return TRUE; } - if ((gSaveBlock2.filler_A8.var_4AC & 1) == 0 + if ((gSaveBlock2.filler_A8.battleTowerLevelType) == 0 && GetMonData(pkmn, MON_DATA_LEVEL) > 50) return FALSE; diff --git a/src/field/tv.c b/src/field/tv.c index e9b5e850d..89e978d00 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -675,11 +675,11 @@ void sub_80BE320(void) bravoTrainerTower->var01 = 1; StringCopy(bravoTrainerTower->trainerName, gSaveBlock2.playerName); StringCopy(bravoTrainerTower->pokemonName, gSaveBlock2.filler_A8.filler_3DC); - bravoTrainerTower->species = gSaveBlock2.filler_A8.var_480; - bravoTrainerTower->defeatedSpecies = gSaveBlock2.filler_A8.var_482; - bravoTrainerTower->var16 = sub_8135D3C(gSaveBlock2.filler_A8.var_4D0); + bravoTrainerTower->species = gSaveBlock2.filler_A8.firstMonSpecies; + bravoTrainerTower->defeatedSpecies = gSaveBlock2.filler_A8.defeatedBySpecies; + bravoTrainerTower->var16 = sub_8135D3C(gSaveBlock2.filler_A8.lastStreakLevelType); bravoTrainerTower->var1c = gSaveBlock2.filler_A8.var_4AD; - if (gSaveBlock2.filler_A8.var_4D0 == 0) + if (gSaveBlock2.filler_A8.lastStreakLevelType == 0) bravoTrainerTower->btLevel = 50; else bravoTrainerTower->btLevel = 100; |