diff options
Diffstat (limited to 'arm9')
| -rw-r--r-- | arm9/asm/pokemon_s.s | 1113 | ||||
| -rw-r--r-- | arm9/asm/unk_0206B16C.s | 2 | ||||
| -rw-r--r-- | arm9/asm/unk_0207FD00.s | 50 | ||||
| -rw-r--r-- | arm9/global.inc | 2 | ||||
| -rw-r--r-- | arm9/modules/05/asm/module_05.s | 2 | ||||
| -rw-r--r-- | arm9/modules/14/asm/module_14.s | 4 | ||||
| -rw-r--r-- | arm9/modules/83/asm/module_83.s | 122 | ||||
| -rw-r--r-- | arm9/src/pokemon.c | 522 | 
8 files changed, 592 insertions, 1225 deletions
| diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index ecd0ba95..c901ba32 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -24,1081 +24,6 @@ UNK_021C5AC0: ; 0x021C5AC0  	.text -	thumb_func_start SetMonData -SetMonData: ; 0x02067830 -	push {r4-r6, lr} -	add r5, r0, #0x0 -	ldrh r0, [r5, #0x4] -	add r4, r1, #0x0 -	add r6, r2, #0x0 -	lsl r0, r0, #0x1f -	lsr r0, r0, #0x1f -	bne _02067886 -	add r0, r5, #0x0 -	ldr r2, [r5, #0x0] -	add r0, #0x88 -	mov r1, #0x64 -	bl MonDecryptSegment -	add r0, r5, #0x0 -	ldrh r2, [r5, #0x6] -	add r0, #0x8 -	mov r1, #0x80 -	bl MonDecryptSegment -	add r0, r5, #0x0 -	add r0, #0x8 -	mov r1, #0x80 -	bl CalcMonChecksum -	ldrh r1, [r5, #0x6] -	cmp r0, r1 -	beq _02067886 -	cmp r0, r1 -	beq _02067870 -	bl ErrorHandling -_02067870: -	ldrh r1, [r5, #0x4] -	mov r0, #0x4 -	orr r0, r1 -	strh r0, [r5, #0x4] -	ldrh r2, [r5, #0x6] -	add r0, r5, #0x0 -	add r0, #0x8 -	mov r1, #0x80 -	bl MonEncryptSegment -	pop {r4-r6, pc} -_02067886: -	add r0, r5, #0x0 -	add r1, r4, #0x0 -	add r2, r6, #0x0 -	bl SetMonDataInternal -	ldrh r0, [r5, #0x4] -	lsl r0, r0, #0x1f -	lsr r0, r0, #0x1f -	bne _020678BC -	add r0, r5, #0x0 -	ldr r2, [r5, #0x0] -	add r0, #0x88 -	mov r1, #0x64 -	bl MonEncryptSegment -	add r0, r5, #0x0 -	add r0, #0x8 -	mov r1, #0x80 -	bl CalcMonChecksum -	strh r0, [r5, #0x6] -	add r0, r5, #0x0 -	ldrh r2, [r5, #0x6] -	add r0, #0x8 -	mov r1, #0x80 -	bl MonEncryptSegment -_020678BC: -	pop {r4-r6, pc} -	.balign 4 - -	thumb_func_start SetMonDataInternal -SetMonDataInternal: ; 0x020678C0 -	push {r3, lr} -	add r3, r0, #0x0 -	add r0, r1, #0x0 -	sub r0, #0x9f -	cmp r0, #0xb -	bhi _02067958 -	add r0, r0, r0 -	add r0, pc -	ldrh r0, [r0, #0x6] -	lsl r0, r0, #0x10 -	asr r0, r0, #0x10 -	add pc, r0 -_020678D8: ; jump table (using 16-bit offset) -	.short _020678F0 - _020678D8 - 2; case 0 -	.short _020678F8 - _020678D8 - 2; case 1 -	.short _02067900 - _020678D8 - 2; case 2 -	.short _02067908 - _020678D8 - 2; case 3 -	.short _02067910 - _020678D8 - 2; case 4 -	.short _02067918 - _020678D8 - 2; case 5 -	.short _02067920 - _020678D8 - 2; case 6 -	.short _02067928 - _020678D8 - 2; case 7 -	.short _02067930 - _020678D8 - 2; case 8 -	.short _02067938 - _020678D8 - 2; case 9 -	.short _02067940 - _020678D8 - 2; case 10 -	.short _0206794C - _020678D8 - 2; case 11 -_020678F0: -	ldr r0, [r2, #0x0] -	add r3, #0x88 -	str r0, [r3, #0x0] -	pop {r3, pc} -_020678F8: -	ldrb r0, [r2, #0x0] -	add r3, #0x8c -	strb r0, [r3, #0x0] -	pop {r3, pc} -_02067900: -	ldrb r0, [r2, #0x0] -	add r3, #0x8d -	strb r0, [r3, #0x0] -	pop {r3, pc} -_02067908: -	ldrh r0, [r2, #0x0] -	add r3, #0x8e -	strh r0, [r3, #0x0] -	pop {r3, pc} -_02067910: -	ldrh r0, [r2, #0x0] -	add r3, #0x90 -	strh r0, [r3, #0x0] -	pop {r3, pc} -_02067918: -	ldrh r0, [r2, #0x0] -	add r3, #0x92 -	strh r0, [r3, #0x0] -	pop {r3, pc} -_02067920: -	ldrh r0, [r2, #0x0] -	add r3, #0x94 -	strh r0, [r3, #0x0] -	pop {r3, pc} -_02067928: -	ldrh r0, [r2, #0x0] -	add r3, #0x96 -	strh r0, [r3, #0x0] -	pop {r3, pc} -_02067930: -	ldrh r0, [r2, #0x0] -	add r3, #0x98 -	strh r0, [r3, #0x0] -	pop {r3, pc} -_02067938: -	ldrh r0, [r2, #0x0] -	add r3, #0x9a -	strh r0, [r3, #0x0] -	pop {r3, pc} -_02067940: -	add r3, #0x9c -	add r0, r2, #0x0 -	add r1, r3, #0x0 -	bl CopySealsObject -	pop {r3, pc} -_0206794C: -	add r3, #0xd4 -	add r0, r2, #0x0 -	add r1, r3, #0x0 -	bl FUN_02029C74 -	pop {r3, pc} -_02067958: -	add r0, r3, #0x0 -	bl SetBoxMonData -	pop {r3, pc} - -	thumb_func_start SetBoxMonDataEncrypted -SetBoxMonDataEncrypted: ; 0x02067960 -	push {r4-r6, lr} -	add r5, r0, #0x0 -	ldrh r0, [r5, #0x4] -	add r4, r1, #0x0 -	add r6, r2, #0x0 -	lsl r0, r0, #0x1e -	lsr r0, r0, #0x1f -	bne _020679AA -	ldrh r2, [r5, #0x6] -	add r0, r5, #0x0 -	add r0, #0x8 -	mov r1, #0x80 -	bl MonDecryptSegment -	add r0, r5, #0x0 -	add r0, #0x8 -	mov r1, #0x80 -	bl CalcMonChecksum -	ldrh r1, [r5, #0x6] -	cmp r0, r1 -	beq _020679AA -	cmp r0, r1 -	beq _02067994 -	bl ErrorHandling -_02067994: -	ldrh r1, [r5, #0x4] -	mov r0, #0x4 -	orr r0, r1 -	strh r0, [r5, #0x4] -	ldrh r2, [r5, #0x6] -	add r0, r5, #0x0 -	add r0, #0x8 -	mov r1, #0x80 -	bl MonEncryptSegment -	pop {r4-r6, pc} -_020679AA: -	add r0, r5, #0x0 -	add r1, r4, #0x0 -	add r2, r6, #0x0 -	bl SetBoxMonData -	ldrh r0, [r5, #0x4] -	lsl r0, r0, #0x1e -	lsr r0, r0, #0x1f -	bne _020679D4 -	add r0, r5, #0x0 -	add r0, #0x8 -	mov r1, #0x80 -	bl CalcMonChecksum -	strh r0, [r5, #0x6] -	add r0, r5, #0x0 -	ldrh r2, [r5, #0x6] -	add r0, #0x8 -	mov r1, #0x80 -	bl MonEncryptSegment -_020679D4: -	pop {r4-r6, pc} -	.balign 4 - -	thumb_func_start SetBoxMonData -SetBoxMonData: ; 0x020679D8 -	push {r4-r7, lr} -	sub sp, #0x4c -	str r1, [sp, #0x4] -	add r1, r0, #0x0 -	add r4, r2, #0x0 -	ldr r1, [r1, #0x0] -	str r0, [sp, #0x0] -	mov r2, #0x0 -	bl GetSubstruct -	add r7, r0, #0x0 -	ldr r0, [sp, #0x0] -	mov r2, #0x1 -	add r1, r0, #0x0 -	ldr r1, [r1, #0x0] -	bl GetSubstruct -	add r5, r0, #0x0 -	ldr r0, [sp, #0x0] -	mov r2, #0x2 -	add r1, r0, #0x0 -	ldr r1, [r1, #0x0] -	bl GetSubstruct -	add r6, r0, #0x0 -	ldr r0, [sp, #0x0] -	mov r2, #0x3 -	add r1, r0, #0x0 -	ldr r1, [r1, #0x0] -	bl GetSubstruct -	add r1, r0, #0x0 -	ldr r0, [sp, #0x4] -	cmp r0, #0xb2 -	bls _02067A20 -	b _02067FF6 -_02067A20: -	add r0, r0, r0 -	add r0, pc -	ldrh r0, [r0, #0x6] -	lsl r0, r0, #0x10 -	asr r0, r0, #0x10 -	add pc, r0 -_02067A2C: ; jump table (using 16-bit offset) -	.short _02067B92 - _02067A2C - 2; case 0 -	.short _02067B9C - _02067A2C - 2; case 1 -	.short _02067BBA - _02067A2C - 2; case 2 -	.short _02067BD6 - _02067A2C - 2; case 3 -	.short _02067BEE - _02067A2C - 2; case 4 -	.short _02067BF8 - _02067A2C - 2; case 5 -	.short _02067C00 - _02067A2C - 2; case 6 -	.short _02067C08 - _02067A2C - 2; case 7 -	.short _02067C10 - _02067A2C - 2; case 8 -	.short _02067C18 - _02067A2C - 2; case 9 -	.short _02067C20 - _02067A2C - 2; case 10 -	.short _02067C28 - _02067A2C - 2; case 11 -	.short _02067C30 - _02067A2C - 2; case 12 -	.short _02067C38 - _02067A2C - 2; case 13 -	.short _02067C40 - _02067A2C - 2; case 14 -	.short _02067C48 - _02067A2C - 2; case 15 -	.short _02067C50 - _02067A2C - 2; case 16 -	.short _02067C58 - _02067A2C - 2; case 17 -	.short _02067C60 - _02067A2C - 2; case 18 -	.short _02067C68 - _02067A2C - 2; case 19 -	.short _02067C70 - _02067A2C - 2; case 20 -	.short _02067C78 - _02067A2C - 2; case 21 -	.short _02067C80 - _02067A2C - 2; case 22 -	.short _02067C88 - _02067A2C - 2; case 23 -	.short _02067C90 - _02067A2C - 2; case 24 -	.short _02067C98 - _02067A2C - 2; case 25 -	.short _02067C98 - _02067A2C - 2; case 26 -	.short _02067C98 - _02067A2C - 2; case 27 -	.short _02067C98 - _02067A2C - 2; case 28 -	.short _02067C98 - _02067A2C - 2; case 29 -	.short _02067C98 - _02067A2C - 2; case 30 -	.short _02067C98 - _02067A2C - 2; case 31 -	.short _02067C98 - _02067A2C - 2; case 32 -	.short _02067C98 - _02067A2C - 2; case 33 -	.short _02067C98 - _02067A2C - 2; case 34 -	.short _02067C98 - _02067A2C - 2; case 35 -	.short _02067C98 - _02067A2C - 2; case 36 -	.short _02067C98 - _02067A2C - 2; case 37 -	.short _02067C98 - _02067A2C - 2; case 38 -	.short _02067C98 - _02067A2C - 2; case 39 -	.short _02067C98 - _02067A2C - 2; case 40 -	.short _02067C98 - _02067A2C - 2; case 41 -	.short _02067C98 - _02067A2C - 2; case 42 -	.short _02067C98 - _02067A2C - 2; case 43 -	.short _02067C98 - _02067A2C - 2; case 44 -	.short _02067C98 - _02067A2C - 2; case 45 -	.short _02067C98 - _02067A2C - 2; case 46 -	.short _02067C98 - _02067A2C - 2; case 47 -	.short _02067C98 - _02067A2C - 2; case 48 -	.short _02067C98 - _02067A2C - 2; case 49 -	.short _02067C98 - _02067A2C - 2; case 50 -	.short _02067C98 - _02067A2C - 2; case 51 -	.short _02067C98 - _02067A2C - 2; case 52 -	.short _02067C98 - _02067A2C - 2; case 53 -	.short _02067CC6 - _02067A2C - 2; case 54 -	.short _02067CC6 - _02067A2C - 2; case 55 -	.short _02067CC6 - _02067A2C - 2; case 56 -	.short _02067CC6 - _02067A2C - 2; case 57 -	.short _02067CD6 - _02067A2C - 2; case 58 -	.short _02067CD6 - _02067A2C - 2; case 59 -	.short _02067CD6 - _02067A2C - 2; case 60 -	.short _02067CD6 - _02067A2C - 2; case 61 -	.short _02067CE6 - _02067A2C - 2; case 62 -	.short _02067CE6 - _02067A2C - 2; case 63 -	.short _02067CE6 - _02067A2C - 2; case 64 -	.short _02067CE6 - _02067A2C - 2; case 65 -	.short _02067FF6 - _02067A2C - 2; case 66 -	.short _02067FF6 - _02067A2C - 2; case 67 -	.short _02067FF6 - _02067A2C - 2; case 68 -	.short _02067FF6 - _02067A2C - 2; case 69 -	.short _02067CF6 - _02067A2C - 2; case 70 -	.short _02067D0A - _02067A2C - 2; case 71 -	.short _02067D1E - _02067A2C - 2; case 72 -	.short _02067D32 - _02067A2C - 2; case 73 -	.short _02067D46 - _02067A2C - 2; case 74 -	.short _02067D5A - _02067A2C - 2; case 75 -	.short _02067D6E - _02067A2C - 2; case 76 -	.short _02067D82 - _02067A2C - 2; case 77 -	.short _02067D94 - _02067A2C - 2; case 78 -	.short _02067D94 - _02067A2C - 2; case 79 -	.short _02067D94 - _02067A2C - 2; case 80 -	.short _02067D94 - _02067A2C - 2; case 81 -	.short _02067D94 - _02067A2C - 2; case 82 -	.short _02067D94 - _02067A2C - 2; case 83 -	.short _02067D94 - _02067A2C - 2; case 84 -	.short _02067D94 - _02067A2C - 2; case 85 -	.short _02067D94 - _02067A2C - 2; case 86 -	.short _02067D94 - _02067A2C - 2; case 87 -	.short _02067D94 - _02067A2C - 2; case 88 -	.short _02067D94 - _02067A2C - 2; case 89 -	.short _02067D94 - _02067A2C - 2; case 90 -	.short _02067D94 - _02067A2C - 2; case 91 -	.short _02067D94 - _02067A2C - 2; case 92 -	.short _02067D94 - _02067A2C - 2; case 93 -	.short _02067D94 - _02067A2C - 2; case 94 -	.short _02067D94 - _02067A2C - 2; case 95 -	.short _02067D94 - _02067A2C - 2; case 96 -	.short _02067D94 - _02067A2C - 2; case 97 -	.short _02067D94 - _02067A2C - 2; case 98 -	.short _02067D94 - _02067A2C - 2; case 99 -	.short _02067D94 - _02067A2C - 2; case 100 -	.short _02067D94 - _02067A2C - 2; case 101 -	.short _02067D94 - _02067A2C - 2; case 102 -	.short _02067D94 - _02067A2C - 2; case 103 -	.short _02067D94 - _02067A2C - 2; case 104 -	.short _02067D94 - _02067A2C - 2; case 105 -	.short _02067D94 - _02067A2C - 2; case 106 -	.short _02067D94 - _02067A2C - 2; case 107 -	.short _02067D94 - _02067A2C - 2; case 108 -	.short _02067D94 - _02067A2C - 2; case 109 -	.short _02067DC2 - _02067A2C - 2; case 110 -	.short _02067DD6 - _02067A2C - 2; case 111 -	.short _02067DEA - _02067A2C - 2; case 112 -	.short _02067DFE - _02067A2C - 2; case 113 -	.short _02067E06 - _02067A2C - 2; case 114 -	.short _02067FF6 - _02067A2C - 2; case 115 -	.short _02067E2C - _02067A2C - 2; case 116 -	.short _02067E0E - _02067A2C - 2; case 117 -	.short _02067E6C - _02067A2C - 2; case 118 -	.short _02067E40 - _02067A2C - 2; case 119 -	.short _02067E7A - _02067A2C - 2; case 120 -	.short _02067E82 - _02067A2C - 2; case 121 -	.short _02067E8A - _02067A2C - 2; case 122 -	.short _02067E8A - _02067A2C - 2; case 123 -	.short _02067E8A - _02067A2C - 2; case 124 -	.short _02067E8A - _02067A2C - 2; case 125 -	.short _02067E8A - _02067A2C - 2; case 126 -	.short _02067E8A - _02067A2C - 2; case 127 -	.short _02067E8A - _02067A2C - 2; case 128 -	.short _02067E8A - _02067A2C - 2; case 129 -	.short _02067E8A - _02067A2C - 2; case 130 -	.short _02067E8A - _02067A2C - 2; case 131 -	.short _02067E8A - _02067A2C - 2; case 132 -	.short _02067E8A - _02067A2C - 2; case 133 -	.short _02067E8A - _02067A2C - 2; case 134 -	.short _02067E8A - _02067A2C - 2; case 135 -	.short _02067E8A - _02067A2C - 2; case 136 -	.short _02067E8A - _02067A2C - 2; case 137 -	.short _02067E8A - _02067A2C - 2; case 138 -	.short _02067E8A - _02067A2C - 2; case 139 -	.short _02067E8A - _02067A2C - 2; case 140 -	.short _02067E8A - _02067A2C - 2; case 141 -	.short _02067E8A - _02067A2C - 2; case 142 -	.short _02067ECE - _02067A2C - 2; case 143 -	.short _02067EE2 - _02067A2C - 2; case 144 -	.short _02067EEE - _02067A2C - 2; case 145 -	.short _02067EF6 - _02067A2C - 2; case 146 -	.short _02067EFE - _02067A2C - 2; case 147 -	.short _02067F06 - _02067A2C - 2; case 148 -	.short _02067F0E - _02067A2C - 2; case 149 -	.short _02067F16 - _02067A2C - 2; case 150 -	.short _02067F1E - _02067A2C - 2; case 151 -	.short _02067F26 - _02067A2C - 2; case 152 -	.short _02067F2E - _02067A2C - 2; case 153 -	.short _02067F36 - _02067A2C - 2; case 154 -	.short _02067F3E - _02067A2C - 2; case 155 -	.short _02067F52 - _02067A2C - 2; case 156 -	.short _02067F66 - _02067A2C - 2; case 157 -	.short _02067F6E - _02067A2C - 2; case 158 -	.short _02067FF6 - _02067A2C - 2; case 159 -	.short _02067FF6 - _02067A2C - 2; case 160 -	.short _02067FF6 - _02067A2C - 2; case 161 -	.short _02067FF6 - _02067A2C - 2; case 162 -	.short _02067FF6 - _02067A2C - 2; case 163 -	.short _02067FF6 - _02067A2C - 2; case 164 -	.short _02067FF6 - _02067A2C - 2; case 165 -	.short _02067FF6 - _02067A2C - 2; case 166 -	.short _02067FF6 - _02067A2C - 2; case 167 -	.short _02067FF6 - _02067A2C - 2; case 168 -	.short _02067FF6 - _02067A2C - 2; case 169 -	.short _02067FF6 - _02067A2C - 2; case 170 -	.short _02067FF6 - _02067A2C - 2; case 171 -	.short _02067FF6 - _02067A2C - 2; case 172 -	.short _02067FF6 - _02067A2C - 2; case 173 -	.short _02067F76 - _02067A2C - 2; case 174 -	.short _02067FF6 - _02067A2C - 2; case 175 -	.short _02067FF6 - _02067A2C - 2; case 176 -	.short _02067FF6 - _02067A2C - 2; case 177 -	.short _02067FDE - _02067A2C - 2; case 178 -_02067B92: -	ldr r0, [sp, #0x0] -	ldr r1, [r4, #0x0] -	add sp, #0x4c -	str r1, [r0, #0x0] -	pop {r4-r7, pc} -_02067B9C: -	bl ErrorHandling -	ldr r0, [sp, #0x0] -	ldrb r1, [r4, #0x0] -	ldrh r2, [r0, #0x4] -	mov r0, #0x1 -	bic r2, r0 -	mov r0, #0x1 -	and r0, r1 -	add r1, r2, #0x0 -	orr r1, r0 -	ldr r0, [sp, #0x0] -	add sp, #0x4c -	strh r1, [r0, #0x4] -	pop {r4-r7, pc} -_02067BBA: -	bl ErrorHandling -	ldr r0, [sp, #0x0] -	ldrh r1, [r0, #0x4] -	mov r0, #0x2 -	bic r1, r0 -	ldrb r0, [r4, #0x0] -	lsl r0, r0, #0x1f -	lsr r0, r0, #0x1e -	orr r1, r0 -	ldr r0, [sp, #0x0] -	add sp, #0x4c -	strh r1, [r0, #0x4] -	pop {r4-r7, pc} -_02067BD6: -	ldr r0, [sp, #0x0] -	ldrh r1, [r0, #0x4] -	mov r0, #0x4 -	bic r1, r0 -	ldrb r0, [r4, #0x0] -	lsl r0, r0, #0x1f -	lsr r0, r0, #0x1d -	orr r1, r0 -	ldr r0, [sp, #0x0] -	add sp, #0x4c -	strh r1, [r0, #0x4] -	pop {r4-r7, pc} -_02067BEE: -	ldrh r1, [r4, #0x0] -	ldr r0, [sp, #0x0] -	add sp, #0x4c -	strh r1, [r0, #0x6] -	pop {r4-r7, pc} -_02067BF8: -	ldrh r0, [r4, #0x0] -	add sp, #0x4c -	strh r0, [r7, #0x0] -	pop {r4-r7, pc} -_02067C00: -	ldrh r0, [r4, #0x0] -	add sp, #0x4c -	strh r0, [r7, #0x2] -	pop {r4-r7, pc} -_02067C08: -	ldr r0, [r4, #0x0] -	add sp, #0x4c -	str r0, [r7, #0x4] -	pop {r4-r7, pc} -_02067C10: -	ldr r0, [r4, #0x0] -	add sp, #0x4c -	str r0, [r7, #0x8] -	pop {r4-r7, pc} -_02067C18: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r7, #0xc] -	pop {r4-r7, pc} -_02067C20: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r7, #0xd] -	pop {r4-r7, pc} -_02067C28: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r7, #0xe] -	pop {r4-r7, pc} -_02067C30: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r7, #0xf] -	pop {r4-r7, pc} -_02067C38: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r7, #0x10] -	pop {r4-r7, pc} -_02067C40: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r7, #0x11] -	pop {r4-r7, pc} -_02067C48: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r7, #0x12] -	pop {r4-r7, pc} -_02067C50: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r7, #0x13] -	pop {r4-r7, pc} -_02067C58: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r7, #0x14] -	pop {r4-r7, pc} -_02067C60: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r7, #0x15] -	pop {r4-r7, pc} -_02067C68: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r7, #0x16] -	pop {r4-r7, pc} -_02067C70: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r7, #0x17] -	pop {r4-r7, pc} -_02067C78: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r7, #0x18] -	pop {r4-r7, pc} -_02067C80: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r7, #0x19] -	pop {r4-r7, pc} -_02067C88: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r7, #0x1a] -	pop {r4-r7, pc} -_02067C90: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r7, #0x1b] -	pop {r4-r7, pc} -_02067C98: -	ldrb r4, [r4, #0x0] -	ldr r2, [sp, #0x4] -	mov r1, #0x0 -	sub r2, #0x19 -	add r0, r4, #0x0 -	str r2, [sp, #0x4] -	bl _ll_shl -	cmp r4, #0x0 -	beq _02067CB6 -	ldr r1, [r7, #0x1c] -	add sp, #0x4c -	orr r0, r1 -	str r0, [r7, #0x1c] -	pop {r4-r7, pc} -_02067CB6: -	mov r1, #0x0 -	sub r1, r1, #0x1 -	ldr r2, [r7, #0x1c] -	eor r0, r1 -	and r0, r2 -	add sp, #0x4c -	str r0, [r7, #0x1c] -	pop {r4-r7, pc} -_02067CC6: -	ldr r0, [sp, #0x4] -	ldrh r1, [r4, #0x0] -	sub r0, #0x36 -	str r0, [sp, #0x4] -	lsl r0, r0, #0x1 -	add sp, #0x4c -	strh r1, [r5, r0] -	pop {r4-r7, pc} -_02067CD6: -	ldr r0, [sp, #0x4] -	ldrb r1, [r4, #0x0] -	sub r0, #0x3a -	str r0, [sp, #0x4] -	add r0, r5, r0 -	strb r1, [r0, #0x8] -	add sp, #0x4c -	pop {r4-r7, pc} -_02067CE6: -	ldr r0, [sp, #0x4] -	ldrb r1, [r4, #0x0] -	sub r0, #0x3e -	str r0, [sp, #0x4] -	add r0, r5, r0 -	strb r1, [r0, #0xc] -	add sp, #0x4c -	pop {r4-r7, pc} -_02067CF6: -	ldr r2, [r5, #0x10] -	mov r0, #0x1f -	bic r2, r0 -	ldrb r1, [r4, #0x0] -	mov r0, #0x1f -	add sp, #0x4c -	and r0, r1 -	orr r0, r2 -	str r0, [r5, #0x10] -	pop {r4-r7, pc} -_02067D0A: -	ldr r1, [r5, #0x10] -	ldr r0, _02067FFC ; =0xFFFFFC1F -	add sp, #0x4c -	and r1, r0 -	ldrb r0, [r4, #0x0] -	lsl r0, r0, #0x1b -	lsr r0, r0, #0x16 -	orr r0, r1 -	str r0, [r5, #0x10] -	pop {r4-r7, pc} -_02067D1E: -	ldr r1, [r5, #0x10] -	ldr r0, _02068000 ; =0xFFFF83FF -	add sp, #0x4c -	and r1, r0 -	ldrb r0, [r4, #0x0] -	lsl r0, r0, #0x1b -	lsr r0, r0, #0x11 -	orr r0, r1 -	str r0, [r5, #0x10] -	pop {r4-r7, pc} -_02067D32: -	ldr r1, [r5, #0x10] -	ldr r0, _02068004 ; =0xFFF07FFF -	add sp, #0x4c -	and r1, r0 -	ldrb r0, [r4, #0x0] -	lsl r0, r0, #0x1b -	lsr r0, r0, #0xc -	orr r0, r1 -	str r0, [r5, #0x10] -	pop {r4-r7, pc} -_02067D46: -	ldr r1, [r5, #0x10] -	ldr r0, _02068008 ; =0xFE0FFFFF -	add sp, #0x4c -	and r1, r0 -	ldrb r0, [r4, #0x0] -	lsl r0, r0, #0x1b -	lsr r0, r0, #0x7 -	orr r0, r1 -	str r0, [r5, #0x10] -	pop {r4-r7, pc} -_02067D5A: -	ldr r1, [r5, #0x10] -	ldr r0, _0206800C ; =0xC1FFFFFF -	add sp, #0x4c -	and r1, r0 -	ldrb r0, [r4, #0x0] -	lsl r0, r0, #0x1b -	lsr r0, r0, #0x2 -	orr r0, r1 -	str r0, [r5, #0x10] -	pop {r4-r7, pc} -_02067D6E: -	ldr r1, [r5, #0x10] -	ldr r0, _02068010 ; =0xBFFFFFFF -	add sp, #0x4c -	and r1, r0 -	ldrb r0, [r4, #0x0] -	lsl r0, r0, #0x1f -	lsr r0, r0, #0x1 -	orr r0, r1 -	str r0, [r5, #0x10] -	pop {r4-r7, pc} -_02067D82: -	ldr r1, [r5, #0x10] -	ldr r0, _02068014 ; =0x7FFFFFFF -	add sp, #0x4c -	and r1, r0 -	ldrb r0, [r4, #0x0] -	lsl r0, r0, #0x1f -	orr r0, r1 -	str r0, [r5, #0x10] -	pop {r4-r7, pc} -_02067D94: -	ldrb r4, [r4, #0x0] -	ldr r2, [sp, #0x4] -	mov r1, #0x0 -	sub r2, #0x4e -	add r0, r4, #0x0 -	str r2, [sp, #0x4] -	bl _ll_shl -	cmp r4, #0x0 -	beq _02067DB2 -	ldr r1, [r5, #0x14] -	add sp, #0x4c -	orr r0, r1 -	str r0, [r5, #0x14] -	pop {r4-r7, pc} -_02067DB2: -	mov r1, #0x0 -	sub r1, r1, #0x1 -	ldr r2, [r5, #0x14] -	eor r0, r1 -	and r0, r2 -	add sp, #0x4c -	str r0, [r5, #0x14] -	pop {r4-r7, pc} -_02067DC2: -	ldrb r2, [r5, #0x18] -	ldrb r1, [r4, #0x0] -	mov r0, #0x1 -	bic r2, r0 -	mov r0, #0x1 -	and r0, r1 -	orr r0, r2 -	add sp, #0x4c -	strb r0, [r5, #0x18] -	pop {r4-r7, pc} -_02067DD6: -	ldrb r1, [r5, #0x18] -	mov r0, #0x6 -	add sp, #0x4c -	bic r1, r0 -	ldrb r0, [r4, #0x0] -	lsl r0, r0, #0x1e -	lsr r0, r0, #0x1d -	orr r0, r1 -	strb r0, [r5, #0x18] -	pop {r4-r7, pc} -_02067DEA: -	ldrb r1, [r5, #0x18] -	mov r0, #0xf8 -	add sp, #0x4c -	bic r1, r0 -	ldrb r0, [r4, #0x0] -	lsl r0, r0, #0x1b -	lsr r0, r0, #0x18 -	orr r0, r1 -	strb r0, [r5, #0x18] -	pop {r4-r7, pc} -_02067DFE: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r5, #0x19] -	pop {r4-r7, pc} -_02067E06: -	ldrh r0, [r4, #0x0] -	add sp, #0x4c -	strh r0, [r5, #0x1a] -	pop {r4-r7, pc} -_02067E0E: -	ldrh r0, [r7, #0x0] -	mov r1, #0x0 -	add r2, sp, #0x34 -	bl GetSpeciesName -	add r0, sp, #0x34 -	add r1, r4, #0x0 -	bl StringNotEqual -	ldr r2, [r5, #0x10] -	ldr r1, _02068014 ; =0x7FFFFFFF -	lsl r0, r0, #0x1f -	and r1, r2 -	orr r0, r1 -	str r0, [r5, #0x10] -_02067E2C: -	mov r1, #0x0 -_02067E2E: -	ldrh r0, [r4, #0x0] -	add r1, r1, #0x1 -	add r4, r4, #0x2 -	strh r0, [r6, #0x0] -	add r6, r6, #0x2 -	cmp r1, #0xb -	blo _02067E2E -	add sp, #0x4c -	pop {r4-r7, pc} -_02067E40: -	ldrh r0, [r7, #0x0] -	add r2, sp, #0x1c -	mov r1, #0x0 -	add r2, #0x2 -	bl GetSpeciesName -	add r0, r4, #0x0 -	add r1, sp, #0x8 -	mov r2, #0xb -	bl FUN_02021EF0 -	add r0, sp, #0x1c -	add r0, #0x2 -	add r1, sp, #0x8 -	bl StringNotEqual -	ldr r2, [r5, #0x10] -	ldr r1, _02068014 ; =0x7FFFFFFF -	lsl r0, r0, #0x1f -	and r1, r2 -	orr r0, r1 -	str r0, [r5, #0x10] -_02067E6C: -	add r0, r4, #0x0 -	add r1, r6, #0x0 -	mov r2, #0xb -	bl FUN_02021EF0 -	add sp, #0x4c -	pop {r4-r7, pc} -_02067E7A: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r6, #0x16] -	pop {r4-r7, pc} -_02067E82: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r6, #0x17] -	pop {r4-r7, pc} -_02067E8A: -	ldrb r4, [r4, #0x0] -	ldr r2, [sp, #0x4] -	mov r1, #0x0 -	sub r2, #0x7a -	add r0, r4, #0x0 -	str r2, [sp, #0x4] -	bl _ll_shl -	cmp r4, #0x0 -	beq _02067EB2 -	add r4, r6, #0x0 -	add r4, #0x18 -	ldr r3, [r6, #0x18] -	ldr r2, [r4, #0x4] -	orr r0, r3 -	orr r1, r2 -	str r0, [r6, #0x18] -	add sp, #0x4c -	str r1, [r4, #0x4] -	pop {r4-r7, pc} -_02067EB2: -	add r4, r6, #0x0 -	mov r5, #0x0 -	mvn r5, r5 -	add r4, #0x18 -	ldr r3, [r6, #0x18] -	eor r0, r5 -	ldr r2, [r4, #0x4] -	eor r1, r5 -	and r0, r3 -	and r1, r2 -	str r0, [r6, #0x18] -	add sp, #0x4c -	str r1, [r4, #0x4] -	pop {r4-r7, pc} -_02067ECE: -	mov r2, #0x0 -_02067ED0: -	ldrh r0, [r4, #0x0] -	add r2, r2, #0x1 -	add r4, r4, #0x2 -	strh r0, [r1, #0x0] -	add r1, r1, #0x2 -	cmp r2, #0x8 -	blo _02067ED0 -	add sp, #0x4c -	pop {r4-r7, pc} -_02067EE2: -	add r0, r4, #0x0 -	mov r2, #0x8 -	bl FUN_02021EF0 -	add sp, #0x4c -	pop {r4-r7, pc} -_02067EEE: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r1, #0x10] -	pop {r4-r7, pc} -_02067EF6: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r1, #0x11] -	pop {r4-r7, pc} -_02067EFE: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r1, #0x12] -	pop {r4-r7, pc} -_02067F06: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r1, #0x13] -	pop {r4-r7, pc} -_02067F0E: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r1, #0x14] -	pop {r4-r7, pc} -_02067F16: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r1, #0x15] -	pop {r4-r7, pc} -_02067F1E: -	ldrh r0, [r4, #0x0] -	add sp, #0x4c -	strh r0, [r1, #0x16] -	pop {r4-r7, pc} -_02067F26: -	ldrh r0, [r4, #0x0] -	add sp, #0x4c -	strh r0, [r1, #0x18] -	pop {r4-r7, pc} -_02067F2E: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r1, #0x1a] -	pop {r4-r7, pc} -_02067F36: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r1, #0x1b] -	pop {r4-r7, pc} -_02067F3E: -	ldrb r3, [r1, #0x1c] -	ldrb r2, [r4, #0x0] -	mov r0, #0x7f -	bic r3, r0 -	mov r0, #0x7f -	and r0, r2 -	orr r0, r3 -	strb r0, [r1, #0x1c] -	add sp, #0x4c -	pop {r4-r7, pc} -_02067F52: -	ldrb r2, [r1, #0x1c] -	mov r0, #0x80 -	add sp, #0x4c -	bic r2, r0 -	ldrb r0, [r4, #0x0] -	lsl r0, r0, #0x1f -	lsr r0, r0, #0x18 -	orr r0, r2 -	strb r0, [r1, #0x1c] -	pop {r4-r7, pc} -_02067F66: -	ldrb r0, [r4, #0x0] -	add sp, #0x4c -	strb r0, [r1, #0x1d] -	pop {r4-r7, pc} -_02067F6E: -	ldrh r0, [r4, #0x0] -	add sp, #0x4c -	strh r0, [r1, #0x1e] -	pop {r4-r7, pc} -_02067F76: -	ldr r2, [r5, #0x10] -	mov r0, #0x1f -	bic r2, r0 -	ldr r1, [r4, #0x0] -	mov r0, #0x1f -	and r1, r0 -	and r0, r1 -	add r1, r2, #0x0 -	orr r1, r0 -	ldr r0, _02067FFC ; =0xFFFFFC1F -	str r1, [r5, #0x10] -	and r1, r0 -	ldr r0, [r4, #0x0] -	add sp, #0x4c -	lsr r0, r0, #0x5 -	lsl r0, r0, #0x1b -	lsr r0, r0, #0x16 -	orr r1, r0 -	ldr r0, _02068000 ; =0xFFFF83FF -	str r1, [r5, #0x10] -	and r1, r0 -	ldr r0, [r4, #0x0] -	lsr r0, r0, #0xa -	lsl r0, r0, #0x1b -	lsr r0, r0, #0x11 -	orr r1, r0 -	ldr r0, _02068004 ; =0xFFF07FFF -	str r1, [r5, #0x10] -	and r1, r0 -	ldr r0, [r4, #0x0] -	lsr r0, r0, #0xf -	lsl r0, r0, #0x1b -	lsr r0, r0, #0xc -	orr r1, r0 -	ldr r0, _02068008 ; =0xFE0FFFFF -	str r1, [r5, #0x10] -	and r1, r0 -	ldr r0, [r4, #0x0] -	lsr r0, r0, #0x14 -	lsl r0, r0, #0x1b -	lsr r0, r0, #0x7 -	orr r1, r0 -	ldr r0, _0206800C ; =0xC1FFFFFF -	str r1, [r5, #0x10] -	and r1, r0 -	ldr r0, [r4, #0x0] -	lsr r0, r0, #0x19 -	lsl r0, r0, #0x1b -	lsr r0, r0, #0x2 -	orr r0, r1 -	str r0, [r5, #0x10] -	pop {r4-r7, pc} -_02067FDE: -	ldrh r0, [r7, #0x0] -	mov r1, #0x0 -	bl FUN_0200AA50 -	add r4, r0, #0x0 -	add r1, r6, #0x0 -	mov r2, #0xb -	bl FUN_02021EF0 -	add r0, r4, #0x0 -	bl FUN_02021A20 -_02067FF6: -	add sp, #0x4c -	pop {r4-r7, pc} -	nop -_02067FFC: .word 0xFFFFFC1F -_02068000: .word 0xFFFF83FF -_02068004: .word 0xFFF07FFF -_02068008: .word 0xFE0FFFFF -_0206800C: .word 0xC1FFFFFF -_02068010: .word 0xBFFFFFFF -_02068014: .word 0x7FFFFFFF -  	thumb_func_start AddMonPartyStatEncrypted  AddMonPartyStatEncrypted: ; 0x02068018  	push {r4-r6, lr} @@ -4317,17 +3242,17 @@ _0206978A:  	ldr r2, [sp, #0x8]  	add r0, r5, #0x0  	add r1, #0x36 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r1, r4, #0x0  	add r0, r5, #0x0  	add r1, #0x3a  	add r2, r7, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r1, r4, #0x0  	add r0, r5, #0x0  	add r1, #0x3e  	add r2, r6, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	ldr r0, [sp, #0x8]  	add r4, r4, #0x1  	add r0, r0, #0x2 @@ -4359,7 +3284,7 @@ FUN_020697D4: ; 0x020697D4  	add r1, #0x36  	add r2, sp, #0x14  	add r5, r0, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r1, r4, #0x0  	add r0, r5, #0x0  	add r1, #0x3e @@ -4376,7 +3301,7 @@ FUN_020697D4: ; 0x020697D4  	add r0, r5, #0x0  	add r1, r4, #0x0  	add r2, sp, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	pop {r3-r5}  	pop {r3}  	add sp, #0x10 @@ -4540,35 +3465,35 @@ FUN_020698E8: ; 0x020698E8  	add r0, r5, #0x0  	add r1, #0x36  	add r2, #0x2 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r1, r4, #0x0  	add r2, sp, #0x0  	add r0, r5, #0x0  	add r1, #0x3a  	add r2, #0x3 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r4, #0x3e  	add r2, sp, #0x0  	add r0, r5, #0x0  	add r1, r4, #0x0  	add r2, #0x1 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r1, r6, #0x0  	add r0, r5, #0x0  	add r1, #0x36  	add r2, sp, #0x4 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r1, r6, #0x0  	add r2, sp, #0x0  	add r0, r5, #0x0  	add r1, #0x3a  	add r2, #0x2 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r6, #0x3e  	add r0, r5, #0x0  	add r1, r6, #0x0  	add r2, sp, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add sp, #0x8  	pop {r4-r6, pc}  	.balign 4 @@ -5304,7 +4229,7 @@ FUN_02069ECC: ; 0x02069ECC  	add r0, r5, #0x0  	mov r1, #0x70  	add r2, sp, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  _02069F1C:  	add sp, #0x4  	pop {r3-r6, pc} @@ -5497,15 +4422,15 @@ FUN_0206A054: ; 0x0206A054  	ldr r2, _0206A090 ; =gGameVersion  	add r0, r4, #0x0  	mov r1, #0x79 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r4, #0x0  	mov r1, #0x9a  	add r2, sp, #0x18 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r4, #0x0  	mov r1, #0x9d  	add r2, sp, #0x20 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add sp, #0x4  	pop {r3-r4}  	pop {r3} @@ -5712,19 +4637,19 @@ FUN_0206A1CC: ; 0x0206A1CC  	add r0, r5, #0x0  	mov r1, #0xa  	add r2, sp, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	b _0206A230  _0206A21A:  	add r0, r5, #0x0  	mov r1, #0xa  	add r2, sp, #0x4 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	b _0206A230  _0206A226:  	add r0, r5, #0x0  	mov r1, #0xa  	add r2, sp, #0x4 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  _0206A230:  	add r0, r5, #0x0  	add r1, r7, #0x0 @@ -7034,7 +5959,7 @@ _0206AAC6:  	add r0, r5, #0x0  	add r1, #0x3a  	add r2, sp, #0x4 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  _0206AAF0:  	add r4, r4, #0x1  	cmp r4, #0x4 diff --git a/arm9/asm/unk_0206B16C.s b/arm9/asm/unk_0206B16C.s index 3d75fe2c..f454c441 100644 --- a/arm9/asm/unk_0206B16C.s +++ b/arm9/asm/unk_0206B16C.s @@ -635,7 +635,7 @@ _0206B5C4:  	add r0, r1, r0  	ldr r2, [sp, #0x18]  	add r1, r7, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	bl FUN_02022830  	pop {r3-r7, pc}  	.balign 4 diff --git a/arm9/asm/unk_0207FD00.s b/arm9/asm/unk_0207FD00.s index 8103e3c4..1f17ee0a 100644 --- a/arm9/asm/unk_0207FD00.s +++ b/arm9/asm/unk_0207FD00.s @@ -1662,7 +1662,7 @@ _02080A66:  	add r0, r4, #0x0  	mov r1, #0x97  	add r2, sp, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r4, #0x0  	mov r1, #0x94  	mov r2, #0x0 @@ -1671,7 +1671,7 @@ _02080A66:  	add r0, r4, #0x0  	mov r1, #0x91  	add r2, sp, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r4, #0x0  	mov r1, #0x95  	mov r2, #0x0 @@ -1680,7 +1680,7 @@ _02080A66:  	add r0, r4, #0x0  	mov r1, #0x92  	add r2, sp, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r4, #0x0  	mov r1, #0x96  	mov r2, #0x0 @@ -1689,7 +1689,7 @@ _02080A66:  	add r0, r4, #0x0  	mov r1, #0x93  	add r2, sp, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  _02080ACC:  	add r0, r4, #0x0  	add r1, r5, #0x0 @@ -1723,15 +1723,15 @@ FUN_02080AE4: ; 0x02080AE4  	add r0, r5, #0x0  	mov r1, #0x7  	add r2, sp, #0x4 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r5, #0x0  	mov r1, #0x9c  	add r2, sp, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r5, #0x0  	mov r1, #0x90  	add r2, r4, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r4, #0x0  	bl FUN_02021A20  	add sp, #0x8 @@ -1751,19 +1751,19 @@ FUN_02080B30: ; 0x02080B30  	bne _02080B76  	add r0, r5, #0x0  	mov r1, #0x97 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r5, #0x0  	mov r1, #0x91  	add r2, sp, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r5, #0x0  	mov r1, #0x92  	add r2, sp, #0x4 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r5, #0x0  	mov r1, #0x93  	add r2, sp, #0x8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add sp, #0x10  	pop {r3-r5}  	pop {r3} @@ -1772,19 +1772,19 @@ FUN_02080B30: ; 0x02080B30  _02080B76:  	add r0, r5, #0x0  	mov r1, #0x98 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r5, #0x0  	mov r1, #0x94  	add r2, sp, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r5, #0x0  	mov r1, #0x95  	add r2, sp, #0x4 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r5, #0x0  	mov r1, #0x96  	add r2, sp, #0x8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add sp, #0x10  	pop {r3-r5}  	pop {r3} @@ -1803,36 +1803,36 @@ FUN_02080BA8: ; 0x02080BA8  	add r2, sp, #0x0  	bne _02080BE0  	mov r1, #0x97 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r4, #0x0  	mov r1, #0x91  	add r2, sp, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r4, #0x0  	mov r1, #0x92  	add r2, sp, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r4, #0x0  	mov r1, #0x93  	add r2, sp, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add sp, #0x4  	pop {r3-r4, pc}  _02080BE0:  	mov r1, #0x98 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r4, #0x0  	mov r1, #0x94  	add r2, sp, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r4, #0x0  	mov r1, #0x95  	add r2, sp, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r4, #0x0  	mov r1, #0x96  	add r2, sp, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add sp, #0x4  	pop {r3-r4, pc} @@ -1848,7 +1848,7 @@ FUN_02080C08: ; 0x02080C08  	add r0, r4, #0x0  	mov r1, #0x9b  	add r2, sp, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add sp, #0x4  	pop {r3-r4, pc}  	.balign 4 @@ -1860,5 +1860,5 @@ FUN_02080C28: ; 0x02080C28  	str r1, [sp, #0x0]  	mov r1, #0x6e  	add r2, sp, #0x0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	pop {r3, pc} diff --git a/arm9/global.inc b/arm9/global.inc index c35613ab..f7346352 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4722,7 +4722,7 @@  .extern GetMonData
  .extern GetBoxMonData
  .extern SetMonData
 -.extern SetBoxMonDataEncrypted
 +.extern SetBoxMonData
  .extern AddMonPartyStatEncrypted
  .extern AllocAndLoadMonPersonal
  .extern GetPersonalAttr
 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 442a394e..cb8c25bd 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -43401,7 +43401,7 @@ MOD05_021EC744: ; 0x021EC744  	add r0, r4, #0  	mov r1, #8  	add r2, sp, #0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r4, #0  	bl CalcBoxMonLevelEncrypted  	add r4, r0, #0 diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s index 7b09367a..e8b7dfbc 100644 --- a/arm9/modules/14/asm/module_14.s +++ b/arm9/modules/14/asm/module_14.s @@ -9557,7 +9557,7 @@ MOD14_021DC1AC: ; 0x021DC1AC  	ldr r0, [r4, #0x4c]  	mov r1, #0xb  	add r2, sp, #0 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r4, #0  	bl MOD14_021DC3CC  	cmp r0, #0 @@ -9623,7 +9623,7 @@ _021DC24A:  	ldr r0, [r4]  	mov r1, #6  	add r2, sp, #0x1c -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  _021DC254:  	ldr r0, [r4]  	mov r1, #5 diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s index 21f1b081..1dbf90c3 100644 --- a/arm9/modules/83/asm/module_83.s +++ b/arm9/modules/83/asm/module_83.s @@ -21876,7 +21876,7 @@ MOD83_02237F6C: ; 0x02237F6C  	add r0, r4, #0  	mov r1, #0  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0xb  	mov r2, #0 @@ -21887,7 +21887,7 @@ MOD83_02237F6C: ; 0x02237F6C  	add r0, r4, #0  	mov r1, #5  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0xc  	mov r2, #0 @@ -21903,7 +21903,7 @@ _02237FCE:  	add r0, r4, #0  	mov r1, #6  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #1  	mov r2, #0 @@ -21912,7 +21912,7 @@ _02237FCE:  	add r0, r4, #0  	mov r1, #7  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x19  	mov r2, #0 @@ -21921,13 +21921,13 @@ _02237FCE:  	add r0, r4, #0  	mov r1, #8  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	mov r0, #0x46  	str r0, [sp, #8]  	add r0, r4, #0  	mov r1, #9  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	add r1, r4, #0  	bl MOD83_02237F04 @@ -21935,7 +21935,7 @@ _02237FCE:  	add r0, r4, #0  	mov r1, #0xa  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #8  	mov r2, #0 @@ -21944,7 +21944,7 @@ _02237FCE:  	add r0, r4, #0  	mov r1, #0xb  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #3  	mov r2, #0 @@ -21953,7 +21953,7 @@ _02237FCE:  	add r0, r4, #0  	mov r1, #0xc  	add r2, sp, #4 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x1a  	mov r2, #0 @@ -21962,7 +21962,7 @@ _02237FCE:  	add r0, r4, #0  	mov r1, #0xd  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x1b  	mov r2, #0 @@ -21971,7 +21971,7 @@ _02237FCE:  	add r0, r4, #0  	mov r1, #0xe  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x1c  	mov r2, #0 @@ -21980,7 +21980,7 @@ _02237FCE:  	add r0, r4, #0  	mov r1, #0xf  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x1d  	mov r2, #0 @@ -21989,7 +21989,7 @@ _02237FCE:  	add r0, r4, #0  	mov r1, #0x10  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x1e  	mov r2, #0 @@ -21998,7 +21998,7 @@ _02237FCE:  	add r0, r4, #0  	mov r1, #0x11  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x1f  	mov r2, #0 @@ -22007,7 +22007,7 @@ _02237FCE:  	add r0, r4, #0  	mov r1, #0x12  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x16  	mov r2, #0 @@ -22016,7 +22016,7 @@ _02237FCE:  	add r0, r4, #0  	mov r1, #0x13  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x17  	mov r2, #0 @@ -22025,7 +22025,7 @@ _02237FCE:  	add r0, r4, #0  	mov r1, #0x14  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x18  	mov r2, #0 @@ -22034,7 +22034,7 @@ _02237FCE:  	add r0, r4, #0  	mov r1, #0x15  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x21  	mov r2, #0 @@ -22043,7 +22043,7 @@ _02237FCE:  	add r0, r4, #0  	mov r1, #0x16  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x2f  	mov r2, #0 @@ -22052,7 +22052,7 @@ _02237FCE:  	add r0, r4, #0  	mov r1, #0x17  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x30  	mov r2, #0 @@ -22061,7 +22061,7 @@ _02237FCE:  	add r0, r4, #0  	mov r1, #0x18  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	mov r5, #0  	add r7, r5, #0  _0223815E: @@ -22075,7 +22075,7 @@ _0223815E:  	add r0, r4, #0  	add r1, #0x36  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x15  	mov r2, #0 @@ -22090,7 +22090,7 @@ _0223815E:  	add r0, r4, #0  	add r1, #0x3e  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r1, r5, #0  	add r0, r4, #0  	add r1, #0x42 @@ -22101,7 +22101,7 @@ _0223815E:  	add r0, r4, #0  	add r1, #0x3a  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r5, r5, #1  	add r7, r7, #2  	cmp r5, #4 @@ -22114,7 +22114,7 @@ _0223815E:  	add r0, r4, #0  	mov r1, #0x46  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x28  	mov r2, #0 @@ -22123,7 +22123,7 @@ _0223815E:  	add r0, r4, #0  	mov r1, #0x47  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x29  	mov r2, #0 @@ -22132,7 +22132,7 @@ _0223815E:  	add r0, r4, #0  	mov r1, #0x48  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x2a  	mov r2, #0 @@ -22141,7 +22141,7 @@ _0223815E:  	add r0, r4, #0  	mov r1, #0x49  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x2b  	mov r2, #0 @@ -22150,7 +22150,7 @@ _0223815E:  	add r0, r4, #0  	mov r1, #0x4a  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x2c  	mov r2, #0 @@ -22159,7 +22159,7 @@ _0223815E:  	add r0, r4, #0  	mov r1, #0x4b  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x2d  	mov r2, #0 @@ -22168,7 +22168,7 @@ _0223815E:  	add r0, r4, #0  	mov r1, #0x4c  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x32  	mov r2, #0 @@ -22186,7 +22186,7 @@ _0223826C:  	add r0, r4, #0  	add r1, #0x4e  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r5, r5, #1  	cmp r5, r7  	blt _0223826C @@ -22208,7 +22208,7 @@ _02238298:  	add r0, r4, #0  	add r1, #0x52  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r5, r5, #1  	cmp r5, r7  	blt _02238298 @@ -22230,7 +22230,7 @@ _022382C4:  	add r0, r4, #0  	add r1, #0x56  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r5, r5, #1  	cmp r5, r7  	blt _022382C4 @@ -22252,7 +22252,7 @@ _022382F0:  	add r0, r4, #0  	add r1, #0x5a  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r5, r5, #1  	cmp r5, r7  	blt _022382F0 @@ -22274,7 +22274,7 @@ _0223831C:  	add r0, r4, #0  	add r1, #0x5e  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r5, r5, #1  	cmp r5, r7  	blt _0223831C @@ -22287,7 +22287,7 @@ _02238332:  	add r0, r4, #0  	mov r1, #0x62  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x44  	mov r2, #0 @@ -22296,7 +22296,7 @@ _02238332:  	add r0, r4, #0  	mov r1, #0x63  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x45  	mov r2, #0 @@ -22305,7 +22305,7 @@ _02238332:  	add r0, r4, #0  	mov r1, #0x64  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x46  	mov r2, #0 @@ -22314,7 +22314,7 @@ _02238332:  	add r0, r4, #0  	mov r1, #0x65  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x47  	mov r2, #0 @@ -22323,7 +22323,7 @@ _02238332:  	add r0, r4, #0  	mov r1, #0x66  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x48  	mov r2, #0 @@ -22332,7 +22332,7 @@ _02238332:  	add r0, r4, #0  	mov r1, #0x67  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x49  	mov r2, #0 @@ -22341,7 +22341,7 @@ _02238332:  	add r0, r4, #0  	mov r1, #0x68  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x4a  	mov r2, #0 @@ -22350,7 +22350,7 @@ _02238332:  	add r0, r4, #0  	mov r1, #0x69  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x4b  	mov r2, #0 @@ -22359,7 +22359,7 @@ _02238332:  	add r0, r4, #0  	mov r1, #0x6a  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x4c  	mov r2, #0 @@ -22368,7 +22368,7 @@ _02238332:  	add r0, r4, #0  	mov r1, #0x6b  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x4d  	mov r2, #0 @@ -22377,7 +22377,7 @@ _02238332:  	add r0, r4, #0  	mov r1, #0x6c  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x4e  	mov r2, #0 @@ -22386,7 +22386,7 @@ _02238332:  	add r0, r4, #0  	mov r1, #0x6d  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x50  	mov r2, #0 @@ -22395,14 +22395,14 @@ _02238332:  	add r0, r4, #0  	mov r1, #0x6e  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r4, #0  	bl GetBoxMonGenderEncrypted  	str r0, [sp, #8]  	add r0, r4, #0  	mov r1, #0x6f  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r4, #0  	mov r1, #5  	mov r2, #0 @@ -22436,7 +22436,7 @@ _02238332:  	add r0, r4, #0  	mov r1, #0x70  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  _022384AE:  	add r0, r4, #0  	mov r1, #5 @@ -22481,7 +22481,7 @@ _022384F4:  	add r0, r4, #0  	mov r1, #0x70  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  _022384FE:  	add r0, r6, #0  	mov r1, #2 @@ -22495,7 +22495,7 @@ _022384FE:  	add r0, r4, #0  	mov r1, #0x75  	add r2, sp, #0xc -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #3  	mov r2, #0 @@ -22509,7 +22509,7 @@ _022384FE:  	add r0, r4, #0  	mov r1, #0x4d  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  _0223853E:  	add r0, r6, #0  	mov r1, #0x25 @@ -22519,7 +22519,7 @@ _0223853E:  	add r0, r4, #0  	mov r1, #0x79  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #7  	add r2, sp, #0x24 @@ -22532,7 +22532,7 @@ _0223853E:  	add r0, r4, #0  	mov r1, #0x8f  	add r2, sp, #0xc -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x23  	mov r2, #0 @@ -22541,7 +22541,7 @@ _0223853E:  	add r0, r4, #0  	mov r1, #0x98  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x22  	mov r2, #0 @@ -22550,7 +22550,7 @@ _0223853E:  	add r0, r4, #0  	mov r1, #0x99  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x26  	mov r2, #0 @@ -22559,7 +22559,7 @@ _0223853E:  	add r0, r4, #0  	mov r1, #0x9a  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x24  	mov r2, #0 @@ -22568,7 +22568,7 @@ _0223853E:  	add r0, r4, #0  	mov r1, #0x9b  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	add r0, r6, #0  	mov r1, #0x31  	mov r2, #0 @@ -22577,7 +22577,7 @@ _0223853E:  	add r0, r4, #0  	mov r1, #0x9c  	add r2, sp, #8 -	bl SetBoxMonDataEncrypted +	bl SetBoxMonData  	ldr r1, [sp]  	add r0, r4, #0  	bl TryEncryptBoxMon diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 43404100..c1f69ded 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -29,6 +29,7 @@ int ApplyNatureModToStat(u8 nature, u16 statval, u32 statno);  #define ENCRYPT_BOX(boxmon) MonEncryptSegment(ENCRY_ARGS_BOX(boxmon))  #define DECRYPT_PTY(mon) MonDecryptSegment(ENCRY_ARGS_PTY(mon))  #define DECRYPT_BOX(boxmon) MonDecryptSegment(ENCRY_ARGS_BOX(boxmon)) +#define CHECKSUM(boxmon) CalcMonChecksum((boxmon)->substructs, sizeof((boxmon)->substructs))  #define SHINY_CHECK(otid, pid) (( \      ((((otid) & 0xFFFF0000u) >> 16u)) ^ \      (((otid) & 0xFFFFu)) ^ \ @@ -183,7 +184,7 @@ BOOL TryEncryptMon(struct Pokemon * mon, BOOL decrypt_result)          mon->box.party_lock = FALSE;          mon->box.box_lock = FALSE;          ENCRYPT_PTY(mon); -        mon->box.checksum = CalcMonChecksum(&mon->box.substructs, sizeof(mon->box.substructs)); +        mon->box.checksum = CHECKSUM(&mon->box);          ENCRYPT_BOX(&mon->box);      }      return ret; @@ -209,7 +210,7 @@ BOOL TryEncryptBoxMon(struct BoxPokemon * mon, BOOL decrypt_result)      {          ret = TRUE;          mon->box_lock = FALSE; -        mon->checksum = CalcMonChecksum(&mon->substructs, sizeof(mon->substructs)); +        mon->checksum = CHECKSUM(mon);          ENCRYPT_BOX(mon);      }      return ret; @@ -247,7 +248,7 @@ void CreateBoxMon(struct BoxPokemon * boxPokemon, int species, int level, int fi      {          fixedPersonality = (rand_LC() | (rand_LC() << 16));      } -    SetBoxMonDataEncrypted(boxPokemon, MON_DATA_PERSONALITY, &fixedPersonality); +    SetBoxMonData(boxPokemon, MON_DATA_PERSONALITY, &fixedPersonality);      if (otIdType == 2)      {          do @@ -257,57 +258,57 @@ void CreateBoxMon(struct BoxPokemon * boxPokemon, int species, int level, int fi      }      else if (otIdType != 1)          fixedOtId = 0; -    SetBoxMonDataEncrypted(boxPokemon, MON_DATA_OTID, &fixedOtId); -    SetBoxMonDataEncrypted(boxPokemon, MON_DATA_GAME_LANGUAGE, &gGameLanguage); -    SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPECIES, &species); -    SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPECIES_NAME, NULL); +    SetBoxMonData(boxPokemon, MON_DATA_OTID, &fixedOtId); +    SetBoxMonData(boxPokemon, MON_DATA_GAME_LANGUAGE, (void *)&gGameLanguage); +    SetBoxMonData(boxPokemon, MON_DATA_SPECIES, &species); +    SetBoxMonData(boxPokemon, MON_DATA_SPECIES_NAME, NULL);      exp = GetMonExpBySpeciesAndLevel(species, level); -    SetBoxMonDataEncrypted(boxPokemon, MON_DATA_EXPERIENCE, &exp); +    SetBoxMonData(boxPokemon, MON_DATA_EXPERIENCE, &exp);      exp = GetMonBaseStat(species, BASE_FRIENDSHIP); -    SetBoxMonDataEncrypted(boxPokemon, MON_DATA_FRIENDSHIP, &exp); -    SetBoxMonDataEncrypted(boxPokemon, MON_DATA_MET_LEVEL, &level); -    SetBoxMonDataEncrypted(boxPokemon, MON_DATA_GAME_VERSION, &gGameVersion); +    SetBoxMonData(boxPokemon, MON_DATA_FRIENDSHIP, &exp); +    SetBoxMonData(boxPokemon, MON_DATA_MET_LEVEL, &level); +    SetBoxMonData(boxPokemon, MON_DATA_GAME_VERSION, (void *)&gGameVersion);      exp = 4; -    SetBoxMonDataEncrypted(boxPokemon, MON_DATA_POKEBALL, &exp); +    SetBoxMonData(boxPokemon, MON_DATA_POKEBALL, &exp);      if (fixedIV < 0x20)      { -        SetBoxMonDataEncrypted(boxPokemon, MON_DATA_HP_IV, &fixedIV); -        SetBoxMonDataEncrypted(boxPokemon, MON_DATA_ATK_IV, &fixedIV); -        SetBoxMonDataEncrypted(boxPokemon, MON_DATA_DEF_IV, &fixedIV); -        SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPEED_IV, &fixedIV); -        SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPATK_IV, &fixedIV); -        SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPDEF_IV, &fixedIV); +        SetBoxMonData(boxPokemon, MON_DATA_HP_IV, &fixedIV); +        SetBoxMonData(boxPokemon, MON_DATA_ATK_IV, &fixedIV); +        SetBoxMonData(boxPokemon, MON_DATA_DEF_IV, &fixedIV); +        SetBoxMonData(boxPokemon, MON_DATA_SPEED_IV, &fixedIV); +        SetBoxMonData(boxPokemon, MON_DATA_SPATK_IV, &fixedIV); +        SetBoxMonData(boxPokemon, MON_DATA_SPDEF_IV, &fixedIV);      }      else      {          exp = rand_LC();          iv = exp & 0x1F; -        SetBoxMonDataEncrypted(boxPokemon, MON_DATA_HP_IV, &iv); +        SetBoxMonData(boxPokemon, MON_DATA_HP_IV, &iv);          iv = (exp & 0x3E0) >> 5; -        SetBoxMonDataEncrypted(boxPokemon, MON_DATA_ATK_IV, &iv); +        SetBoxMonData(boxPokemon, MON_DATA_ATK_IV, &iv);          iv = (exp & 0x7C00) >> 10; -        SetBoxMonDataEncrypted(boxPokemon, MON_DATA_DEF_IV, &iv); +        SetBoxMonData(boxPokemon, MON_DATA_DEF_IV, &iv);          exp = rand_LC();          iv = exp & 0x1F; -        SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPEED_IV, &iv); +        SetBoxMonData(boxPokemon, MON_DATA_SPEED_IV, &iv);          iv = (exp & 0x3E0) >> 5; -        SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPATK_IV, &iv); +        SetBoxMonData(boxPokemon, MON_DATA_SPATK_IV, &iv);          iv = (exp & 0x7C00) >> 10; -        SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPDEF_IV, &iv); +        SetBoxMonData(boxPokemon, MON_DATA_SPDEF_IV, &iv);      }      exp = GetMonBaseStat(species, BASE_ABILITY_1);      iv = GetMonBaseStat(species, BASE_ABILITY_2);      if (iv != 0)      {          if (fixedPersonality & 1) -            SetBoxMonDataEncrypted(boxPokemon, MON_DATA_ABILITY, &iv); +            SetBoxMonData(boxPokemon, MON_DATA_ABILITY, &iv);          else -            SetBoxMonDataEncrypted(boxPokemon, MON_DATA_ABILITY, &exp); +            SetBoxMonData(boxPokemon, MON_DATA_ABILITY, &exp);      }      else -        SetBoxMonDataEncrypted(boxPokemon, MON_DATA_ABILITY, &exp); +        SetBoxMonData(boxPokemon, MON_DATA_ABILITY, &exp);      exp = GetBoxMonGenderEncrypted(boxPokemon); -    SetBoxMonDataEncrypted(boxPokemon, MON_DATA_GENDER, &exp); +    SetBoxMonData(boxPokemon, MON_DATA_GENDER, &exp);      InitBoxMonMoveset(boxPokemon);      TryEncryptBoxMon(boxPokemon, decry);  } @@ -480,7 +481,7 @@ u32 GetMonData(struct Pokemon * pokemon, int attr, void * dest)      {          DECRYPT_PTY(pokemon);          DECRYPT_BOX(&pokemon->box); -        checksum = CalcMonChecksum(&pokemon->box.substructs, sizeof(pokemon->box.substructs)); +        checksum = CHECKSUM(&pokemon->box);          if (checksum != pokemon->box.checksum)          {              GF_ASSERT(checksum == pokemon->box.checksum); @@ -538,7 +539,7 @@ u32 GetBoxMonData(struct BoxPokemon * boxmon, int attr, void * dest)      if (!boxmon->box_lock)      {          DECRYPT_BOX(boxmon); -        checksum = CalcMonChecksum(&boxmon->substructs, sizeof(boxmon->substructs)); +        checksum = CHECKSUM(boxmon);          if (checksum != boxmon->checksum)          {              GF_ASSERT(checksum == boxmon->checksum); @@ -707,29 +708,25 @@ u32 GetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * dest)      case MON_DATA_MOVE2:      case MON_DATA_MOVE3:      case MON_DATA_MOVE4: -        attr -= MON_DATA_MOVE1; -        ret = blockB->moves[attr]; +        ret = blockB->moves[attr - MON_DATA_MOVE1];          break;      case MON_DATA_MOVE1PP:      case MON_DATA_MOVE2PP:      case MON_DATA_MOVE3PP:      case MON_DATA_MOVE4PP: -        attr -= MON_DATA_MOVE1PP; -        ret = blockB->movePP[attr]; +        ret = blockB->movePP[attr - MON_DATA_MOVE1PP];          break;      case MON_DATA_MOVE1PPUP:      case MON_DATA_MOVE2PPUP:      case MON_DATA_MOVE3PPUP:      case MON_DATA_MOVE4PPUP: -        attr -= MON_DATA_MOVE1PPUP; -        ret = blockB->movePpUps[attr]; +        ret = blockB->movePpUps[attr - MON_DATA_MOVE1PPUP];          break;      case MON_DATA_MOVE1MAXPP:      case MON_DATA_MOVE2MAXPP:      case MON_DATA_MOVE3MAXPP:      case MON_DATA_MOVE4MAXPP: -        attr -= MON_DATA_MOVE1MAXPP; -        ret = FUN_0206AB30(blockB->moves[attr], blockB->movePpUps[attr]); +        ret = FUN_0206AB30(blockB->moves[attr - MON_DATA_MOVE1MAXPP], blockB->movePpUps[attr - MON_DATA_MOVE1MAXPP]);          break;      case MON_DATA_HP_IV:          ret = blockB->hpIV; @@ -822,10 +819,10 @@ u32 GetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * dest)              dest16[ret] = EOS;          }          break; -    case MON_DATA_NICKNAME_3: +    case MON_DATA_NICKNAME_4:          ret = blockB->isNicknamed;          // fallthrough -    case MON_DATA_NICKNAME_2: +    case MON_DATA_NICKNAME_3:          if (boxmon->checksum_fail)          {              u16 * buffer = FUN_0200AA50(SPECIES_MANAPHY_EGG, 0); @@ -951,3 +948,448 @@ u32 GetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * dest)      }      return ret;  } + +void SetMonData(struct Pokemon * pokemon, int attr, void * value) +{ +    u16 checksum; +    if (!pokemon->box.party_lock) +    { +        DECRYPT_PTY(pokemon); +        DECRYPT_BOX(&pokemon->box); +        checksum = CHECKSUM(&pokemon->box); +        if (checksum != pokemon->box.checksum) +        { +            GF_ASSERT(checksum == pokemon->box.checksum); +            pokemon->box.checksum_fail = TRUE; +            ENCRYPT_BOX(&pokemon->box); +            return; +        } +    } +    SetMonDataInternal(pokemon, attr, value); +    if (!pokemon->box.party_lock) +    { +        ENCRYPT_PTY(pokemon); +        pokemon->box.checksum = CHECKSUM(&pokemon->box); +        ENCRYPT_BOX(&pokemon->box); +    } +} + +void SetMonDataInternal(struct Pokemon * pokemon, int attr, void * value) +{ +#define VALUE(type) (*(const type *)value) +    switch (attr) +    { +    case MON_DATA_STATUS: +        pokemon->party.status = VALUE(u32); +        break; +    case MON_DATA_LEVEL: +        pokemon->party.level = VALUE(u8); +        break; +    case MON_DATA_CAPSULE: +        pokemon->party.capsule = VALUE(u8); +        break; +    case MON_DATA_HP: +        pokemon->party.hp = VALUE(u16); +        break; +    case MON_DATA_MAXHP: +        pokemon->party.maxHp = VALUE(u16); +        break; +    case MON_DATA_ATK: +        pokemon->party.atk = VALUE(u16); +        break; +    case MON_DATA_DEF: +        pokemon->party.def = VALUE(u16); +        break; +    case MON_DATA_SPEED: +        pokemon->party.speed = VALUE(u16); +        break; +    case MON_DATA_SPATK: +        pokemon->party.spatk = VALUE(u16); +        break; +    case MON_DATA_SPDEF: +        pokemon->party.spdef = VALUE(u16); +        break; +    case MON_DATA_SEAL_STRUCT: +        CopySealsObject((const struct SealStruct *)value, &pokemon->party.seal_something); +        break; +    case MON_DATA_SEAL_COORDS: +        FUN_02029C74((const u8 *)value, pokemon->party.sealCoords); +        break; +    default: +        SetBoxMonDataInternal(&pokemon->box, attr, value); +        break; +    } +#undef VALUE +} + +void SetBoxMonData(struct BoxPokemon * boxmon, int attr, void * value) +{ +    u16 checksum; +    if (!boxmon->box_lock) +    { +        DECRYPT_BOX(boxmon); +        checksum = CHECKSUM(boxmon); +        if (checksum != boxmon->checksum) +        { +            GF_ASSERT(checksum == boxmon->checksum); +            boxmon->checksum_fail = TRUE; +            ENCRYPT_BOX(boxmon); +            return; +        } +    } +    SetBoxMonDataInternal(boxmon, attr, value); +    if (!boxmon->box_lock) +    { +        boxmon->checksum = CHECKSUM(boxmon); +        ENCRYPT_BOX(boxmon); +    } +} + + +void SetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * value) +{ +#define VALUE(type) (*(const type *)value) +    u8 flag; +    u64 mask; +    u32 i; +    u16 namebuf[POKEMON_NAME_LENGTH + 1]; +    u16 namebuf2[POKEMON_NAME_LENGTH + 1]; +    u16 namebuf3[POKEMON_NAME_LENGTH + 1]; +    u16 * speciesName; +    u8 iv; + +    PokemonDataBlockA *blockA = &GetSubstruct(boxmon, boxmon->pid, 0)->blockA; +    PokemonDataBlockB *blockB = &GetSubstruct(boxmon, boxmon->pid, 1)->blockB; +    PokemonDataBlockC *blockC = &GetSubstruct(boxmon, boxmon->pid, 2)->blockC; +    PokemonDataBlockD *blockD = &GetSubstruct(boxmon, boxmon->pid, 3)->blockD; + +    switch (attr) +    { +    case MON_DATA_PERSONALITY: +        boxmon->pid = VALUE(u32); +        break; +    case MON_DATA_PARTY_LOCK: +        GF_ASSERT(0); +        boxmon->party_lock = VALUE(u8); +        break; +    case MON_DATA_BOX_LOCK: +        GF_ASSERT(0); +        boxmon->box_lock = VALUE(u8); +        break; +    case MON_DATA_CHECKSUM_FAILED: +        boxmon->checksum_fail = VALUE(u8); +        break; +    case MON_DATA_CHECKSUM: +        boxmon->checksum = VALUE(u16); +        break; +    case MON_DATA_SPECIES: +        blockA->species = VALUE(u16); +        break; +    case MON_DATA_HELD_ITEM: +        blockA->heldItem = VALUE(u16); +        break; +    case MON_DATA_OTID: +        blockA->otID = VALUE(u32); +        break; +    case MON_DATA_EXPERIENCE: +        blockA->exp = VALUE(u32); +        break; +    case MON_DATA_FRIENDSHIP: +        blockA->friendship = VALUE(u8); +        break; +    case MON_DATA_ABILITY: +        blockA->ability = VALUE(u8); +        break; +    case MON_DATA_MARKINGS: +        blockA->markings = VALUE(u8); +        break; +    case MON_DATA_GAME_LANGUAGE: +        blockA->originLanguage = VALUE(u8); +        break; +    case MON_DATA_HP_EV: +        blockA->hpEV = VALUE(u8); +        break; +    case MON_DATA_ATK_EV: +        blockA->atkEV = VALUE(u8); +        break; +    case MON_DATA_DEF_EV: +        blockA->defEV = VALUE(u8); +        break; +    case MON_DATA_SPEED_EV: +        blockA->spdEV = VALUE(u8); +        break; +    case MON_DATA_SPATK_EV: +        blockA->spatkEV = VALUE(u8); +        break; +    case MON_DATA_SPDEF_EV: +        blockA->spdefEV = VALUE(u8); +        break; +    case MON_DATA_COOL: +        blockA->coolStat = VALUE(u8); +        break; +    case MON_DATA_BEAUTY: +        blockA->beautyStat = VALUE(u8); +        break; +    case MON_DATA_CUTE: +        blockA->cuteStat = VALUE(u8); +        break; +    case MON_DATA_SMART: +        blockA->smartStat = VALUE(u8); +        break; +    case MON_DATA_TOUGH: +        blockA->toughStat = VALUE(u8); +        break; +    case MON_DATA_SHEEN: +        blockA->sheen = VALUE(u8); +        break; +    case MON_DATA_SINNOH_CHAMP_RIBBON: +    case MON_DATA_SINNOH_RIBBON_26: +    case MON_DATA_SINNOH_RIBBON_27: +    case MON_DATA_SINNOH_RIBBON_28: +    case MON_DATA_SINNOH_RIBBON_29: +    case MON_DATA_SINNOH_RIBBON_30: +    case MON_DATA_SINNOH_RIBBON_31: +    case MON_DATA_SINNOH_RIBBON_32: +    case MON_DATA_SINNOH_RIBBON_33: +    case MON_DATA_SINNOH_RIBBON_34: +    case MON_DATA_SINNOH_RIBBON_35: +    case MON_DATA_SINNOH_RIBBON_36: +    case MON_DATA_SINNOH_RIBBON_37: +    case MON_DATA_SINNOH_RIBBON_38: +    case MON_DATA_SINNOH_RIBBON_39: +    case MON_DATA_SINNOH_RIBBON_40: +    case MON_DATA_SINNOH_RIBBON_41: +    case MON_DATA_SINNOH_RIBBON_42: +    case MON_DATA_SINNOH_RIBBON_43: +    case MON_DATA_SINNOH_RIBBON_44: +    case MON_DATA_SINNOH_RIBBON_45: +    case MON_DATA_SINNOH_RIBBON_46: +    case MON_DATA_SINNOH_RIBBON_47: +    case MON_DATA_SINNOH_RIBBON_48: +    case MON_DATA_SINNOH_RIBBON_49: +    case MON_DATA_SINNOH_RIBBON_50: +    case MON_DATA_SINNOH_RIBBON_51: +    case MON_DATA_SINNOH_RIBBON_52: +    case MON_DATA_SINNOH_RIBBON_53: +        flag = VALUE(u8); +        mask = (u64)flag << (attr - MON_DATA_SINNOH_CHAMP_RIBBON); +        if (flag) +            blockA->sinnohRibbons |= mask; +        else +            blockA->sinnohRibbons &= -1ull ^ mask; +        break; +    case MON_DATA_MOVE1: +    case MON_DATA_MOVE2: +    case MON_DATA_MOVE3: +    case MON_DATA_MOVE4: +        blockB->moves[attr - MON_DATA_MOVE1] = VALUE(u16); +        break; +    case MON_DATA_MOVE1PP: +    case MON_DATA_MOVE2PP: +    case MON_DATA_MOVE3PP: +    case MON_DATA_MOVE4PP: +        blockB->movePP[attr - MON_DATA_MOVE1PP] = VALUE(u8); +        break; +    case MON_DATA_MOVE1PPUP: +    case MON_DATA_MOVE2PPUP: +    case MON_DATA_MOVE3PPUP: +    case MON_DATA_MOVE4PPUP: +        blockB->movePpUps[attr - MON_DATA_MOVE1PPUP] = VALUE(u8); +        break; +    case MON_DATA_HP_IV: +        blockB->hpIV = VALUE(u8); +        break; +    case MON_DATA_ATK_IV: +        blockB->atkIV = VALUE(u8); +        break; +    case MON_DATA_DEF_IV: +        blockB->defIV = VALUE(u8); +        break; +    case MON_DATA_SPEED_IV: +        blockB->spdIV = VALUE(u8); +        break; +    case MON_DATA_SPATK_IV: +        blockB->spatkIV = VALUE(u8); +        break; +    case MON_DATA_SPDEF_IV: +        blockB->spdefIV = VALUE(u8); +        break; +    case MON_DATA_IS_EGG: +        blockB->isEgg = VALUE(u8); +        break; +    case MON_DATA_HAS_NICKNAME: +        blockB->isNicknamed = VALUE(u8); +        break; +    case MON_DATA_COOL_RIBBON: +    case MON_DATA_HOENN_RIBBON_79: +    case MON_DATA_HOENN_RIBBON_80: +    case MON_DATA_HOENN_RIBBON_81: +    case MON_DATA_HOENN_RIBBON_82: +    case MON_DATA_HOENN_RIBBON_83: +    case MON_DATA_HOENN_RIBBON_84: +    case MON_DATA_HOENN_RIBBON_85: +    case MON_DATA_HOENN_RIBBON_86: +    case MON_DATA_HOENN_RIBBON_87: +    case MON_DATA_HOENN_RIBBON_88: +    case MON_DATA_HOENN_RIBBON_89: +    case MON_DATA_HOENN_RIBBON_90: +    case MON_DATA_HOENN_RIBBON_91: +    case MON_DATA_HOENN_RIBBON_92: +    case MON_DATA_HOENN_RIBBON_93: +    case MON_DATA_HOENN_RIBBON_94: +    case MON_DATA_HOENN_RIBBON_95: +    case MON_DATA_HOENN_RIBBON_96: +    case MON_DATA_HOENN_RIBBON_97: +    case MON_DATA_HOENN_RIBBON_98: +    case MON_DATA_HOENN_RIBBON_99: +    case MON_DATA_HOENN_RIBBON_100: +    case MON_DATA_HOENN_RIBBON_101: +    case MON_DATA_HOENN_RIBBON_102: +    case MON_DATA_HOENN_RIBBON_103: +    case MON_DATA_HOENN_RIBBON_104: +    case MON_DATA_HOENN_RIBBON_105: +    case MON_DATA_HOENN_RIBBON_106: +    case MON_DATA_HOENN_RIBBON_107: +    case MON_DATA_HOENN_RIBBON_108: +    case MON_DATA_HOENN_RIBBON_109: +        flag = VALUE(u8); +        mask = (u64)flag << (attr - MON_DATA_COOL_RIBBON); +        if (flag) +            blockB->ribbonFlags |= mask; +        else +            blockB->ribbonFlags &= -1ull ^ mask; +        break; +    case MON_DATA_FATEFUL_ENCOUNTER: +        blockB->fatefulEncounter = VALUE(u8); +        break; +    case MON_DATA_GENDER: +        blockB->gender = VALUE(u8); +        break; +    case MON_DATA_FORME: +        blockB->alternateForm = VALUE(u8); +        break; +    case MON_DATA_RESERVED_113: +        blockB->HGSS_shinyLeaves = VALUE(u8); +        break; +    case MON_DATA_RESERVED_114: +        blockB->Unused = VALUE(u16); +        break; +    case MON_DATA_NICKNAME_2: +        GetSpeciesName(blockA->species, 0, namebuf); +        blockB->isNicknamed = StringNotEqual(namebuf, value); +        // fallthrough +    case MON_DATA_NICKNAME: +        for (i = 0; i < POKEMON_NAME_LENGTH + 1; i++) +        { +            blockC->nickname[i] = VALUE(u16); value = (void *const )((char *)value + 2); +        } +        break; +    case MON_DATA_NICKNAME_4: +        GetSpeciesName(blockA->species, 0, namebuf2); +        FUN_02021EF0(value, namebuf3, POKEMON_NAME_LENGTH + 1); +        blockB->isNicknamed = StringNotEqual(namebuf2, namebuf3); +        // fallthrough +    case MON_DATA_NICKNAME_3: +        FUN_02021EF0(value, blockC->nickname, POKEMON_NAME_LENGTH + 1); +        break; +    case MON_DATA_UNK_120: +        blockC->Unused = VALUE(u8); +        break; +    case MON_DATA_GAME_VERSION: +        blockC->originGame = VALUE(u8); +        break; +    case MON_DATA_SINNOH_RIBBON_122: +    case MON_DATA_SINNOH_RIBBON_123: +    case MON_DATA_SINNOH_RIBBON_124: +    case MON_DATA_SINNOH_RIBBON_125: +    case MON_DATA_SINNOH_RIBBON_126: +    case MON_DATA_SINNOH_RIBBON_127: +    case MON_DATA_SINNOH_RIBBON_128: +    case MON_DATA_SINNOH_RIBBON_129: +    case MON_DATA_SINNOH_RIBBON_130: +    case MON_DATA_SINNOH_RIBBON_131: +    case MON_DATA_SINNOH_RIBBON_132: +    case MON_DATA_SINNOH_RIBBON_133: +    case MON_DATA_SINNOH_RIBBON_134: +    case MON_DATA_SINNOH_RIBBON_135: +    case MON_DATA_SINNOH_RIBBON_136: +    case MON_DATA_SINNOH_RIBBON_137: +    case MON_DATA_SINNOH_RIBBON_138: +    case MON_DATA_SINNOH_RIBBON_139: +    case MON_DATA_SINNOH_RIBBON_140: +    case MON_DATA_SINNOH_RIBBON_141: +    case MON_DATA_SINNOH_RIBBON_142: +        flag = VALUE(u8); +        mask = (u64)flag << (attr - MON_DATA_SINNOH_RIBBON_122); +        if (flag) +            blockC->sinnohRibbons2 |= mask; +        else +            blockC->sinnohRibbons2 &= -1ull ^ mask; +        break; +    case MON_DATA_OT_NAME: +        for (i = 0; i < OT_NAME_LENGTH + 1; i++) +        { +            blockD->otTrainerName[i] = VALUE(u16); value = (void *)((char *)value + 2); +        } +        break; +    case MON_DATA_OT_NAME_2: +        FUN_02021EF0(value, blockD->otTrainerName, OT_NAME_LENGTH + 1); +        break; +    case MON_DATA_EGG_MET_YEAR: +        blockD->dateEggReceived[0] = VALUE(u8); +        break; +    case MON_DATA_EGG_MET_MONTH: +        blockD->dateEggReceived[1] = VALUE(u8); +        break; +    case MON_DATA_EGG_MET_DAY: +        blockD->dateEggReceived[2] = VALUE(u8); +        break; +    case MON_DATA_MET_YEAR: +        blockD->dateMet[0] = VALUE(u8); +        break; +    case MON_DATA_MET_MONTH: +        blockD->dateMet[1] = VALUE(u8); +        break; +    case MON_DATA_MET_DAY: +        blockD->dateMet[2] = VALUE(u8); +        break; +    case MON_DATA_EGG_MET_LOCATION: +        blockD->DP_EggLocation = VALUE(u16); +        break; +    case MON_DATA_MET_LOCATION: +        blockD->DP_MetLocation = VALUE(u16); +        break; +    case MON_DATA_POKERUS: +        blockD->pokerus = VALUE(u8); +        break; +    case MON_DATA_POKEBALL: +        blockD->pokeball = VALUE(u8); +        break; +    case MON_DATA_MET_LEVEL: +        blockD->metLevel = VALUE(u8); +        break; +    case MON_DATA_MET_GENDER: +        blockD->metGender = VALUE(u8); +        break; +    case MON_DATA_ENCOUNTER_TYPE: +        blockD->encounterType = VALUE(u8); +        break; +    case MON_DATA_RESERVED_158: +        blockD->HGSS_Pokeball = VALUE(u16); +        break; +    case MON_DATA_IVS_WORD: +        blockB->hpIV    = (VALUE(u32) >>  0) & 0x1F; +        blockB->atkIV   = (VALUE(u32) >>  5) & 0x1F; +        blockB->defIV   = (VALUE(u32) >> 10) & 0x1F; +        blockB->spdIV   = (VALUE(u32) >> 15) & 0x1F; +        blockB->spatkIV = (VALUE(u32) >> 20) & 0x1F; +        blockB->spdefIV = (VALUE(u32) >> 25) & 0x1F; +        break; +    case MON_DATA_SPECIES_NAME: +        speciesName = FUN_0200AA50(blockA->species, 0); +        FUN_02021EF0(speciesName, blockC->nickname, POKEMON_NAME_LENGTH + 1); +        FUN_02021A20(speciesName); +        break; +    } +#undef VALUE +} | 
