diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-06-12 20:54:34 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-06-12 20:54:34 -0400 |
commit | 0747fe684c46d010d8917c4257dd1f1a52241385 (patch) | |
tree | bb1f1ae0e2fecc944124b66f8a6af7809223c2d4 | |
parent | 6e12ebdda862b77eb4d6afa6533e82373e5834ce (diff) |
GetBoxMonDataInternal
-rw-r--r-- | arm9/asm/pokemon_s.s | 725 | ||||
-rw-r--r-- | arm9/asm/unk_0206E5B4.s | 730 | ||||
-rw-r--r-- | arm9/src/pokemon.c | 415 | ||||
-rw-r--r-- | arm9/src/string_util.c | 3 | ||||
-rw-r--r-- | include/constants/abilities.h | 129 | ||||
-rw-r--r-- | include/move_data.h | 6 | ||||
-rw-r--r-- | include/pokemon.h | 123 | ||||
-rw-r--r-- | include/proto.h | 13 | ||||
-rw-r--r-- | include/string_util.h | 3 | ||||
-rw-r--r-- | include/text.h | 6 |
10 files changed, 1144 insertions, 1009 deletions
diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index 0371e142..ecd0ba95 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -24,731 +24,6 @@ UNK_021C5AC0: ; 0x021C5AC0 .text - thumb_func_start GetBoxMonDataInternal -GetBoxMonDataInternal: ; 0x0206731C - push {r4-r7, lr} - sub sp, #0xc - str r1, [sp, #0x4] - add r1, r0, #0x0 - mov r4, #0x0 - str r2, [sp, #0x8] - ldr r1, [r1, #0x0] - str r0, [sp, #0x0] - add r2, r4, #0x0 - bl GetSubstruct - add r5, r0, #0x0 - - ldr r0, [sp, #0x0] - mov r2, #0x1 - add r1, r0, #0x0 - ldr r1, [r1, #0x0] - bl GetSubstruct - add r6, r0, #0x0 - - ldr r0, [sp, #0x0] - mov r2, #0x2 - add r1, r0, #0x0 - ldr r1, [r1, #0x0] - bl GetSubstruct - add r7, 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 _02067366 - b _020674D8 -_02067366: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02067372: ; jump table (using 16-bit offset) - .short _020674DC - _02067372 - 2; case 0 - .short _020674E2 - _02067372 - 2; case 1 - .short _020674EC - _02067372 - 2; case 2 - .short _020674F6 - _02067372 - 2; case 3 - .short _02067500 - _02067372 - 2; case 4 - .short _0206754C - _02067372 - 2; case 5 - .short _0206755E - _02067372 - 2; case 6 - .short _02067562 - _02067372 - 2; case 7 - .short _02067566 - _02067372 - 2; case 8 - .short _0206756A - _02067372 - 2; case 9 - .short _0206756E - _02067372 - 2; case 10 - .short _02067572 - _02067372 - 2; case 11 - .short _02067576 - _02067372 - 2; case 12 - .short _0206757A - _02067372 - 2; case 13 - .short _0206757E - _02067372 - 2; case 14 - .short _02067582 - _02067372 - 2; case 15 - .short _02067586 - _02067372 - 2; case 16 - .short _0206758A - _02067372 - 2; case 17 - .short _0206758E - _02067372 - 2; case 18 - .short _02067592 - _02067372 - 2; case 19 - .short _02067596 - _02067372 - 2; case 20 - .short _0206759A - _02067372 - 2; case 21 - .short _0206759E - _02067372 - 2; case 22 - .short _020675A2 - _02067372 - 2; case 23 - .short _020675A6 - _02067372 - 2; case 24 - .short _020675AA - _02067372 - 2; case 25 - .short _020675AA - _02067372 - 2; case 26 - .short _020675AA - _02067372 - 2; case 27 - .short _020675AA - _02067372 - 2; case 28 - .short _020675AA - _02067372 - 2; case 29 - .short _020675AA - _02067372 - 2; case 30 - .short _020675AA - _02067372 - 2; case 31 - .short _020675AA - _02067372 - 2; case 32 - .short _020675AA - _02067372 - 2; case 33 - .short _020675AA - _02067372 - 2; case 34 - .short _020675AA - _02067372 - 2; case 35 - .short _020675AA - _02067372 - 2; case 36 - .short _020675AA - _02067372 - 2; case 37 - .short _020675AA - _02067372 - 2; case 38 - .short _020675AA - _02067372 - 2; case 39 - .short _020675AA - _02067372 - 2; case 40 - .short _020675AA - _02067372 - 2; case 41 - .short _020675AA - _02067372 - 2; case 42 - .short _020675AA - _02067372 - 2; case 43 - .short _020675AA - _02067372 - 2; case 44 - .short _020675AA - _02067372 - 2; case 45 - .short _020675AA - _02067372 - 2; case 46 - .short _020675AA - _02067372 - 2; case 47 - .short _020675AA - _02067372 - 2; case 48 - .short _020675AA - _02067372 - 2; case 49 - .short _020675AA - _02067372 - 2; case 50 - .short _020675AA - _02067372 - 2; case 51 - .short _020675AA - _02067372 - 2; case 52 - .short _020675AA - _02067372 - 2; case 53 - .short _020675D0 - _02067372 - 2; case 54 - .short _020675D0 - _02067372 - 2; case 55 - .short _020675D0 - _02067372 - 2; case 56 - .short _020675D0 - _02067372 - 2; case 57 - .short _020675DC - _02067372 - 2; case 58 - .short _020675DC - _02067372 - 2; case 59 - .short _020675DC - _02067372 - 2; case 60 - .short _020675DC - _02067372 - 2; case 61 - .short _020675E8 - _02067372 - 2; case 62 - .short _020675E8 - _02067372 - 2; case 63 - .short _020675E8 - _02067372 - 2; case 64 - .short _020675E8 - _02067372 - 2; case 65 - .short _020675F4 - _02067372 - 2; case 66 - .short _020675F4 - _02067372 - 2; case 67 - .short _020675F4 - _02067372 - 2; case 68 - .short _020675F4 - _02067372 - 2; case 69 - .short _0206760C - _02067372 - 2; case 70 - .short _02067614 - _02067372 - 2; case 71 - .short _0206761C - _02067372 - 2; case 72 - .short _02067624 - _02067372 - 2; case 73 - .short _0206762C - _02067372 - 2; case 74 - .short _02067634 - _02067372 - 2; case 75 - .short _0206763C - _02067372 - 2; case 76 - .short _0206764E - _02067372 - 2; case 77 - .short _02067654 - _02067372 - 2; case 78 - .short _02067654 - _02067372 - 2; case 79 - .short _02067654 - _02067372 - 2; case 80 - .short _02067654 - _02067372 - 2; case 81 - .short _02067654 - _02067372 - 2; case 82 - .short _02067654 - _02067372 - 2; case 83 - .short _02067654 - _02067372 - 2; case 84 - .short _02067654 - _02067372 - 2; case 85 - .short _02067654 - _02067372 - 2; case 86 - .short _02067654 - _02067372 - 2; case 87 - .short _02067654 - _02067372 - 2; case 88 - .short _02067654 - _02067372 - 2; case 89 - .short _02067654 - _02067372 - 2; case 90 - .short _02067654 - _02067372 - 2; case 91 - .short _02067654 - _02067372 - 2; case 92 - .short _02067654 - _02067372 - 2; case 93 - .short _02067654 - _02067372 - 2; case 94 - .short _02067654 - _02067372 - 2; case 95 - .short _02067654 - _02067372 - 2; case 96 - .short _02067654 - _02067372 - 2; case 97 - .short _02067654 - _02067372 - 2; case 98 - .short _02067654 - _02067372 - 2; case 99 - .short _02067654 - _02067372 - 2; case 100 - .short _02067654 - _02067372 - 2; case 101 - .short _02067654 - _02067372 - 2; case 102 - .short _02067654 - _02067372 - 2; case 103 - .short _02067654 - _02067372 - 2; case 104 - .short _02067654 - _02067372 - 2; case 105 - .short _02067654 - _02067372 - 2; case 106 - .short _02067654 - _02067372 - 2; case 107 - .short _02067654 - _02067372 - 2; case 108 - .short _02067654 - _02067372 - 2; case 109 - .short _0206767C - _02067372 - 2; case 110 - .short _02067684 - _02067372 - 2; case 111 - .short _0206768C - _02067372 - 2; case 112 - .short _02067694 - _02067372 - 2; case 113 - .short _02067698 - _02067372 - 2; case 114 - .short _020674D8 - _02067372 - 2; case 115 - .short _0206769C - _02067372 - 2; case 116 - .short _020674D8 - _02067372 - 2; case 117 - .short _020676D0 - _02067372 - 2; case 118 - .short _020676CC - _02067372 - 2; case 119 - .short _020676FE - _02067372 - 2; case 120 - .short _02067702 - _02067372 - 2; case 121 - .short _02067706 - _02067372 - 2; case 122 - .short _02067706 - _02067372 - 2; case 123 - .short _02067706 - _02067372 - 2; case 124 - .short _02067706 - _02067372 - 2; case 125 - .short _02067706 - _02067372 - 2; case 126 - .short _02067706 - _02067372 - 2; case 127 - .short _02067706 - _02067372 - 2; case 128 - .short _02067706 - _02067372 - 2; case 129 - .short _02067706 - _02067372 - 2; case 130 - .short _02067706 - _02067372 - 2; case 131 - .short _02067706 - _02067372 - 2; case 132 - .short _02067706 - _02067372 - 2; case 133 - .short _02067706 - _02067372 - 2; case 134 - .short _02067706 - _02067372 - 2; case 135 - .short _02067706 - _02067372 - 2; case 136 - .short _02067706 - _02067372 - 2; case 137 - .short _02067706 - _02067372 - 2; case 138 - .short _02067706 - _02067372 - 2; case 139 - .short _02067706 - _02067372 - 2; case 140 - .short _02067706 - _02067372 - 2; case 141 - .short _02067706 - _02067372 - 2; case 142 - .short _0206772C - _02067372 - 2; case 143 - .short _02067746 - _02067372 - 2; case 144 - .short _0206774E - _02067372 - 2; case 145 - .short _02067752 - _02067372 - 2; case 146 - .short _02067756 - _02067372 - 2; case 147 - .short _0206775A - _02067372 - 2; case 148 - .short _0206775E - _02067372 - 2; case 149 - .short _02067762 - _02067372 - 2; case 150 - .short _02067766 - _02067372 - 2; case 151 - .short _0206776A - _02067372 - 2; case 152 - .short _0206776E - _02067372 - 2; case 153 - .short _02067772 - _02067372 - 2; case 154 - .short _02067776 - _02067372 - 2; case 155 - .short _0206777E - _02067372 - 2; case 156 - .short _02067786 - _02067372 - 2; case 157 - .short _0206778A - _02067372 - 2; case 158 - .short _020674D8 - _02067372 - 2; case 159 - .short _02067540 - _02067372 - 2; case 160 - .short _020674D8 - _02067372 - 2; case 161 - .short _020674D8 - _02067372 - 2; case 162 - .short _020674D8 - _02067372 - 2; case 163 - .short _020674D8 - _02067372 - 2; case 164 - .short _020674D8 - _02067372 - 2; case 165 - .short _020674D8 - _02067372 - 2; case 166 - .short _020674D8 - _02067372 - 2; case 167 - .short _020674D8 - _02067372 - 2; case 168 - .short _020674D8 - _02067372 - 2; case 169 - .short _020674D8 - _02067372 - 2; case 170 - .short _02067506 - _02067372 - 2; case 171 - .short _02067510 - _02067372 - 2; case 172 - .short _02067522 - _02067372 - 2; case 173 - .short _0206778E - _02067372 - 2; case 174 - .short _020677C0 - _02067372 - 2; case 175 - .short _020677D8 - _02067372 - 2; case 176 - .short _020677D8 - _02067372 - 2; case 177 - .short _02067810 - _02067372 - 2; case 178 -_020674D8: - mov r4, #0x0 - b _0206781A -_020674DC: - ldr r0, [sp, #0x0] - ldr r4, [r0, #0x0] - b _0206781A -_020674E2: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1f - lsr r4, r0, #0x1f - b _0206781A -_020674EC: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1e - lsr r4, r0, #0x1f - b _0206781A -_020674F6: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1d - lsr r4, r0, #0x1f - b _0206781A -_02067500: - ldr r0, [sp, #0x0] - ldrh r4, [r0, #0x6] - b _0206781A -_02067506: - ldrh r0, [r5, #0x0] - cmp r0, #0x0 - beq _0206753A - mov r4, #0x1 - b _0206781A -_02067510: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1d - lsr r4, r0, #0x1f - bne _0206753A - ldr r0, [r6, #0x10] - lsl r0, r0, #0x1 - lsr r4, r0, #0x1f - b _0206781A -_02067522: - ldrh r4, [r5, #0x0] - cmp r4, #0x0 - beq _0206753A - ldr r0, [r6, #0x10] - lsl r0, r0, #0x1 - lsr r0, r0, #0x1f - bne _0206753C - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1d - lsr r0, r0, #0x1f - bne _0206753C -_0206753A: - b _0206781A -_0206753C: - ldr r4, _02067820 ; =SPECIES_EGG - b _0206781A -_02067540: - ldrh r0, [r5, #0x0] - ldr r1, [r5, #0x8] - bl CalcLevelBySpeciesAndExp - add r4, r0, #0x0 - b _0206781A -_0206754C: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1d - lsr r0, r0, #0x1f - beq _0206755A - ldr r4, _02067820 ; =SPECIES_EGG - b _0206781A -_0206755A: - ldrh r4, [r5, #0x0] - b _0206781A -_0206755E: - ldrh r4, [r5, #0x2] - b _0206781A -_02067562: - ldr r4, [r5, #0x4] - b _0206781A -_02067566: - ldr r4, [r5, #0x8] - b _0206781A -_0206756A: - ldrb r4, [r5, #0xc] - b _0206781A -_0206756E: - ldrb r4, [r5, #0xd] - b _0206781A -_02067572: - ldrb r4, [r5, #0xe] - b _0206781A -_02067576: - ldrb r4, [r5, #0xf] - b _0206781A -_0206757A: - ldrb r4, [r5, #0x10] - b _0206781A -_0206757E: - ldrb r4, [r5, #0x11] - b _0206781A -_02067582: - ldrb r4, [r5, #0x12] - b _0206781A -_02067586: - ldrb r4, [r5, #0x13] - b _0206781A -_0206758A: - ldrb r4, [r5, #0x14] - b _0206781A -_0206758E: - ldrb r4, [r5, #0x15] - b _0206781A -_02067592: - ldrb r4, [r5, #0x16] - b _0206781A -_02067596: - ldrb r4, [r5, #0x17] - b _0206781A -_0206759A: - ldrb r4, [r5, #0x18] - b _0206781A -_0206759E: - ldrb r4, [r5, #0x19] - b _0206781A -_020675A2: - ldrb r4, [r5, #0x1a] - b _0206781A -_020675A6: - ldrb r4, [r5, #0x1b] - b _0206781A -_020675AA: - ldr r2, [sp, #0x4] - mov r0, #0x1 - sub r2, #0x19 - add r1, r4, #0x0 - str r2, [sp, #0x4] - bl _ll_shl - ldr r2, [r5, #0x1c] - add r3, r4, #0x0 - and r3, r1 - and r2, r0 - mov r1, #0x0 - mov r0, #0x0 - eor r1, r3 - eor r0, r2 - orr r0, r1 - beq _02067676 - mov r4, #0x1 - b _0206781A -_020675D0: - ldr r0, [sp, #0x4] - sub r0, #0x36 - str r0, [sp, #0x4] - lsl r0, r0, #0x1 - ldrh r4, [r6, r0] - b _0206781A -_020675DC: - ldr r0, [sp, #0x4] - sub r0, #0x3a - str r0, [sp, #0x4] - add r0, r6, r0 - ldrb r4, [r0, #0x8] - b _0206781A -_020675E8: - ldr r0, [sp, #0x4] - sub r0, #0x3e - str r0, [sp, #0x4] - add r0, r6, r0 - ldrb r4, [r0, #0xc] - b _0206781A -_020675F4: - ldr r0, [sp, #0x4] - sub r0, #0x42 - str r0, [sp, #0x4] - ldr r1, [sp, #0x4] - lsl r0, r0, #0x1 - add r1, r6, r1 - ldrh r0, [r6, r0] - ldrb r1, [r1, #0xc] - bl FUN_0206AB30 - add r4, r0, #0x0 - b _0206781A -_0206760C: - ldr r0, [r6, #0x10] - lsl r0, r0, #0x1b - lsr r4, r0, #0x1b - b _0206781A -_02067614: - ldr r0, [r6, #0x10] - lsl r0, r0, #0x16 - lsr r4, r0, #0x1b - b _0206781A -_0206761C: - ldr r0, [r6, #0x10] - lsl r0, r0, #0x11 - lsr r4, r0, #0x1b - b _0206781A -_02067624: - ldr r0, [r6, #0x10] - lsl r0, r0, #0xc - lsr r4, r0, #0x1b - b _0206781A -_0206762C: - ldr r0, [r6, #0x10] - lsl r0, r0, #0x7 - lsr r4, r0, #0x1b - b _0206781A -_02067634: - ldr r0, [r6, #0x10] - lsl r0, r0, #0x2 - lsr r4, r0, #0x1b - b _0206781A -_0206763C: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1d - lsr r4, r0, #0x1f - bne _02067676 - ldr r0, [r6, #0x10] - lsl r0, r0, #0x1 - lsr r4, r0, #0x1f - b _0206781A -_0206764E: - ldr r0, [r6, #0x10] - lsr r4, r0, #0x1f - b _0206781A -_02067654: - ldr r2, [sp, #0x4] - mov r0, #0x1 - sub r2, #0x4e - add r1, r4, #0x0 - str r2, [sp, #0x4] - bl _ll_shl - ldr r2, [r6, #0x14] - add r3, r4, #0x0 - and r3, r1 - and r2, r0 - mov r1, #0x0 - mov r0, #0x0 - eor r1, r3 - eor r0, r2 - orr r0, r1 - bne _02067678 -_02067676: - b _0206781A -_02067678: - mov r4, #0x1 - b _0206781A -_0206767C: - ldrb r0, [r6, #0x18] - lsl r0, r0, #0x1f - lsr r4, r0, #0x1f - b _0206781A -_02067684: - ldrb r0, [r6, #0x18] - lsl r0, r0, #0x1d - lsr r4, r0, #0x1e - b _0206781A -_0206768C: - ldrb r0, [r6, #0x18] - lsl r0, r0, #0x18 - lsr r4, r0, #0x1b - b _0206781A -_02067694: - ldrb r4, [r6, #0x19] - b _0206781A -_02067698: - ldrh r4, [r6, #0x1a] - b _0206781A -_0206769C: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1d - lsr r0, r0, #0x1f - beq _020676B2 - ldr r0, _02067824 ; =SPECIES_MANAPHY_EGG - ldr r2, [sp, #0x8] - add r1, r4, #0x0 - bl GetSpeciesName - b _0206781A -_020676B2: - ldr r1, [sp, #0x8] -_020676B4: - ldrh r0, [r7, #0x0] - add r4, r4, #0x1 - add r7, r7, #0x2 - strh r0, [r1, #0x0] - add r1, r1, #0x2 - cmp r4, #0xa - blo _020676B4 - ldr r2, _02067828 ; =0x0000FFFF - ldr r0, [sp, #0x8] - lsl r1, r4, #0x1 - strh r2, [r0, r1] - b _0206781A -_020676CC: - ldr r0, [r6, #0x10] - lsr r4, r0, #0x1f -_020676D0: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1d - lsr r0, r0, #0x1f - beq _020676F4 - ldr r0, _02067824 ; =SPECIES_MANAPHY_EGG - mov r1, #0x0 - bl FUN_0200AA50 - add r5, r0, #0x0 - ldr r0, [sp, #0x8] - add r1, r5, #0x0 - bl FUN_02021A74 - add r0, r5, #0x0 - bl FUN_02021A20 - b _0206781A -_020676F4: - ldr r0, [sp, #0x8] - add r1, r7, #0x0 - bl FUN_02021E28 - b _0206781A -_020676FE: - ldrb r4, [r7, #0x16] - b _0206781A -_02067702: - ldrb r4, [r7, #0x17] - b _0206781A -_02067706: - ldr r2, [sp, #0x4] - mov r0, #0x1 - sub r2, #0x7a - add r1, r4, #0x0 - str r2, [sp, #0x4] - bl _ll_shl - ldr r3, [r7, #0x18] - ldr r2, [r7, #0x1c] - and r3, r0 - and r2, r1 - mov r1, #0x0 - mov r0, #0x0 - eor r1, r2 - eor r0, r3 - orr r0, r1 - beq _0206781A - mov r4, #0x1 - b _0206781A -_0206772C: - ldr r2, [sp, #0x8] -_0206772E: - ldrh r0, [r1, #0x0] - add r4, r4, #0x1 - add r1, r1, #0x2 - strh r0, [r2, #0x0] - add r2, r2, #0x2 - cmp r4, #0x7 - blo _0206772E - ldr r2, _02067828 ; =0x0000FFFF - ldr r0, [sp, #0x8] - lsl r1, r4, #0x1 - strh r2, [r0, r1] - b _0206781A -_02067746: - ldr r0, [sp, #0x8] - bl FUN_02021E28 - b _0206781A -_0206774E: - ldrb r4, [r1, #0x10] - b _0206781A -_02067752: - ldrb r4, [r1, #0x11] - b _0206781A -_02067756: - ldrb r4, [r1, #0x12] - b _0206781A -_0206775A: - ldrb r4, [r1, #0x13] - b _0206781A -_0206775E: - ldrb r4, [r1, #0x14] - b _0206781A -_02067762: - ldrb r4, [r1, #0x15] - b _0206781A -_02067766: - ldrh r4, [r1, #0x16] - b _0206781A -_0206776A: - ldrh r4, [r1, #0x18] - b _0206781A -_0206776E: - ldrb r4, [r1, #0x1a] - b _0206781A -_02067772: - ldrb r4, [r1, #0x1b] - b _0206781A -_02067776: - ldrb r0, [r1, #0x1c] - lsl r0, r0, #0x19 - lsr r4, r0, #0x19 - b _0206781A -_0206777E: - ldrb r0, [r1, #0x1c] - lsl r0, r0, #0x18 - lsr r4, r0, #0x1f - b _0206781A -_02067786: - ldrb r4, [r1, #0x1d] - b _0206781A -_0206778A: - ldrh r4, [r1, #0x1e] - b _0206781A -_0206778E: - ldr r4, [r6, #0x10] - lsl r0, r4, #0x2 - lsr r0, r0, #0x1b - lsl r5, r0, #0x19 - lsl r0, r4, #0x7 - lsr r0, r0, #0x1b - lsl r3, r0, #0x14 - lsl r0, r4, #0xc - lsr r0, r0, #0x1b - lsl r2, r0, #0xf - lsl r0, r4, #0x11 - lsr r0, r0, #0x1b - lsl r1, r0, #0xa - lsl r0, r4, #0x1b - lsl r4, r4, #0x16 - lsr r4, r4, #0x1b - lsr r0, r0, #0x1b - lsl r4, r4, #0x5 - orr r0, r4 - orr r0, r1 - orr r0, r2 - orr r0, r3 - add r4, r5, #0x0 - orr r4, r0 - b _0206781A -_020677C0: - ldrh r0, [r5, #0x0] - cmp r0, #0x1d - beq _020677CA - cmp r0, #0x20 - bne _020677D4 -_020677CA: - ldr r0, [r6, #0x10] - lsr r0, r0, #0x1f - bne _020677D4 - mov r4, #0x0 - b _0206781A -_020677D4: - mov r4, #0x1 - b _0206781A -_020677D8: - ldrh r0, [r5, #0x0] - ldr r1, _0206782C ; =SPECIES_ARCEUS - cmp r0, r1 - bne _020677FC - ldrb r1, [r5, #0xd] - cmp r1, #0x79 - bne _020677FC - ldrh r0, [r5, #0x2] - mov r1, #0x1 - add r2, r4, #0x0 - bl FUN_0206E7B8 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl GetArceusTypeByPlate - add r4, r0, #0x0 - b _0206781A -_020677FC: - ldrb r1, [r6, #0x18] - ldr r2, [sp, #0x4] - lsl r1, r1, #0x18 - sub r2, #0xaa - lsr r1, r1, #0x1b - str r2, [sp, #0x4] - bl GetMonBaseStat_HandleFormeConversion - add r4, r0, #0x0 - b _0206781A -_02067810: - ldrh r0, [r5, #0x0] - ldr r2, [sp, #0x8] - add r1, r4, #0x0 - bl GetSpeciesName -_0206781A: - add r0, r4, #0x0 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 -_02067820: .word SPECIES_EGG -_02067824: .word SPECIES_MANAPHY_EGG -_02067828: .word 0x0000FFFF -_0206782C: .word SPECIES_ARCEUS - thumb_func_start SetMonData SetMonData: ; 0x02067830 push {r4-r6, lr} diff --git a/arm9/asm/unk_0206E5B4.s b/arm9/asm/unk_0206E5B4.s index e527bfb2..316ba0db 100644 --- a/arm9/asm/unk_0206E5B4.s +++ b/arm9/asm/unk_0206E5B4.s @@ -37,251 +37,471 @@ UNK_020F84EC: ; 0x020F84EC .global UNK_020F85B4 UNK_020F85B4: ; 0x020F85B4 - .byte 0x00, 0x00 - - .global UNK_020F85B6 -UNK_020F85B6: ; 0x020F85B6 - .byte 0xBB, 0x02 - - .global UNK_020F85B8 -UNK_020F85B8: ; 0x020F85B8 - .byte 0xBC, 0x02 - - .global UNK_020F85BA -UNK_020F85BA: ; 0x020F85BA - .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x05, 0x00 - .byte 0x02, 0x00, 0x03, 0x00, 0x06, 0x00, 0x07, 0x00, 0x03, 0x00, 0x04, 0x00, 0x08, 0x00, 0x09, 0x00 - .byte 0x04, 0x00, 0x05, 0x00, 0x0A, 0x00, 0x0B, 0x00, 0x05, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x0D, 0x00 - .byte 0x06, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x07, 0x00, 0x08, 0x00, 0x10, 0x00, 0x11, 0x00 - .byte 0x08, 0x00, 0x09, 0x00, 0x12, 0x00, 0x13, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x13, 0x00 - .byte 0x0A, 0x00, 0x0B, 0x00, 0x15, 0x00, 0x16, 0x00, 0x0B, 0x00, 0x0C, 0x00, 0x17, 0x00, 0x16, 0x00 - .byte 0x0C, 0x00, 0x0D, 0x00, 0x97, 0x02, 0x98, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x99, 0x02, 0x9A, 0x02 - .byte 0x00, 0x00, 0x0F, 0x00, 0x9B, 0x02, 0x9C, 0x02, 0x00, 0x00, 0x10, 0x00, 0x9D, 0x02, 0x9E, 0x02 - .byte 0x00, 0x00, 0x11, 0x00, 0x18, 0x00, 0x19, 0x00, 0x0D, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x1B, 0x00 - .byte 0x0E, 0x00, 0x13, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x1E, 0x00, 0x1D, 0x00 - .byte 0x10, 0x00, 0x15, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x16, 0x00, 0x1E, 0x00, 0x20, 0x00 - .byte 0x12, 0x00, 0x17, 0x00, 0x21, 0x00, 0x22, 0x00, 0x13, 0x00, 0x18, 0x00, 0x21, 0x00, 0x23, 0x00 - .byte 0x14, 0x00, 0x19, 0x00, 0x18, 0x00, 0x24, 0x00, 0x15, 0x00, 0x1A, 0x00, 0x18, 0x00, 0x25, 0x00 - .byte 0x16, 0x00, 0x1B, 0x00, 0x26, 0x00, 0x27, 0x00, 0x17, 0x00, 0x1C, 0x00, 0x28, 0x00, 0x2A, 0x00 - .byte 0x18, 0x00, 0x1D, 0x00, 0x29, 0x00, 0x2A, 0x00, 0x19, 0x00, 0x1E, 0x00, 0x2B, 0x00, 0x2C, 0x00 - .byte 0x1A, 0x00, 0x1F, 0x00, 0x2D, 0x00, 0x2E, 0x00, 0x1B, 0x00, 0x20, 0x00, 0x2F, 0x00, 0x30, 0x00 - .byte 0x1C, 0x00, 0x21, 0x00, 0x31, 0x00, 0x32, 0x00, 0x1D, 0x00, 0x22, 0x00, 0x33, 0x00, 0x34, 0x00 - .byte 0x1E, 0x00, 0x23, 0x00, 0x35, 0x00, 0x36, 0x00, 0x1F, 0x00, 0x24, 0x00, 0x33, 0x00, 0x37, 0x00 - .byte 0x20, 0x00, 0x25, 0x00, 0x38, 0x00, 0x39, 0x00, 0x21, 0x00, 0x26, 0x00, 0x3A, 0x00, 0x3B, 0x00 - .byte 0x22, 0x00, 0x27, 0x00, 0x3A, 0x00, 0x3C, 0x00, 0x23, 0x00, 0x28, 0x00, 0x3A, 0x00, 0x3D, 0x00 - .byte 0x24, 0x00, 0x29, 0x00, 0x3A, 0x00, 0x3E, 0x00, 0x25, 0x00, 0x2A, 0x00, 0x3F, 0x00, 0x40, 0x00 - .byte 0x26, 0x00, 0x2B, 0x00, 0x47, 0x00, 0x48, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x49, 0x00, 0x4A, 0x00 - .byte 0x2D, 0x00, 0x2D, 0x00, 0x53, 0x00, 0x54, 0x00, 0x3F, 0x00, 0x2E, 0x00, 0x55, 0x00, 0x56, 0x00 - .byte 0x40, 0x00, 0x2F, 0x00, 0x55, 0x00, 0x57, 0x00, 0x41, 0x00, 0x30, 0x00, 0x55, 0x00, 0x58, 0x00 - .byte 0x42, 0x00, 0x31, 0x00, 0x55, 0x00, 0x59, 0x00, 0x43, 0x00, 0x32, 0x00, 0x5A, 0x00, 0x5B, 0x00 - .byte 0x44, 0x00, 0x33, 0x00, 0x5C, 0x00, 0x5D, 0x00, 0x45, 0x00, 0x34, 0x00, 0x55, 0x00, 0x5E, 0x00 - .byte 0x46, 0x00, 0x35, 0x00, 0x5F, 0x00, 0x60, 0x00, 0x47, 0x00, 0x36, 0x00, 0xD2, 0x01, 0xD3, 0x01 - .byte 0x00, 0x00, 0x37, 0x00, 0x64, 0x00, 0x61, 0x00, 0x49, 0x00, 0x38, 0x00, 0x64, 0x00, 0x62, 0x00 - .byte 0x4A, 0x00, 0x39, 0x00, 0x64, 0x00, 0x63, 0x00, 0x4B, 0x00, 0x3A, 0x00, 0x64, 0x00, 0x65, 0x00 - .byte 0x4C, 0x00, 0x3B, 0x00, 0x64, 0x00, 0x66, 0x00, 0x4D, 0x00, 0x3C, 0x00, 0x64, 0x00, 0x67, 0x00 - .byte 0x4E, 0x00, 0x3D, 0x00, 0x64, 0x00, 0x68, 0x00, 0x4F, 0x00, 0x3E, 0x00, 0x64, 0x00, 0xD5, 0x01 - .byte 0x00, 0x00, 0x3F, 0x00, 0x69, 0x00, 0x6A, 0x00, 0x50, 0x00, 0x40, 0x00, 0x6B, 0x00, 0x6C, 0x00 - .byte 0x51, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x27, 0x00, 0x42, 0x00, 0x41, 0x00, 0x43, 0x00 - .byte 0x28, 0x00, 0x43, 0x00, 0x41, 0x00, 0x44, 0x00, 0x29, 0x00, 0x44, 0x00, 0x41, 0x00, 0x45, 0x00 - .byte 0x2A, 0x00, 0x45, 0x00, 0x41, 0x00, 0x46, 0x00, 0x2B, 0x00, 0x46, 0x00, 0x33, 0x00, 0x4B, 0x00 - .byte 0x2E, 0x00, 0x47, 0x00, 0x4C, 0x00, 0x4D, 0x00, 0x2F, 0x00, 0x48, 0x00, 0x4E, 0x00, 0x4F, 0x00 - .byte 0x30, 0x00, 0x49, 0x00, 0x4E, 0x00, 0x50, 0x00, 0x31, 0x00, 0x4A, 0x00, 0x4E, 0x00, 0x51, 0x00 - .byte 0x32, 0x00, 0x4B, 0x00, 0x4E, 0x00, 0x52, 0x00, 0x33, 0x00, 0x4C, 0x00, 0x6D, 0x00, 0x6E, 0x00 - .byte 0x53, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x6F, 0x00, 0x54, 0x00, 0x4E, 0x00, 0x70, 0x00, 0x71, 0x00 - .byte 0x55, 0x00, 0x4F, 0x00, 0x6D, 0x00, 0x72, 0x00, 0x56, 0x00, 0x50, 0x00, 0x73, 0x00, 0x74, 0x00 - .byte 0x5D, 0x00, 0x51, 0x00, 0x75, 0x00, 0x76, 0x00, 0x5E, 0x00, 0x52, 0x00, 0x77, 0x00, 0x78, 0x00 - .byte 0x5F, 0x00, 0x53, 0x00, 0x79, 0x00, 0x7A, 0x00, 0x60, 0x00, 0x54, 0x00, 0x7B, 0x00, 0x7C, 0x00 - .byte 0x61, 0x00, 0x55, 0x00, 0x7D, 0x00, 0x7E, 0x00, 0x62, 0x00, 0x56, 0x00, 0x7F, 0x00, 0x81, 0x00 - .byte 0x67, 0x00, 0x57, 0x00, 0x80, 0x00, 0x81, 0x00, 0x68, 0x00, 0x58, 0x00, 0x82, 0x00, 0x83, 0x00 - .byte 0x6A, 0x00, 0x59, 0x00, 0x84, 0x00, 0x83, 0x00, 0x6B, 0x00, 0x5A, 0x00, 0x85, 0x00, 0x86, 0x00 - .byte 0x6C, 0x00, 0x5B, 0x00, 0x87, 0x00, 0x86, 0x00, 0x6D, 0x00, 0x5C, 0x00, 0x88, 0x00, 0x89, 0x00 - .byte 0x6E, 0x00, 0x5D, 0x00, 0x8A, 0x00, 0x8B, 0x00, 0x6F, 0x00, 0x5E, 0x00, 0xD6, 0x01, 0xD7, 0x01 - .byte 0x00, 0x00, 0x5F, 0x00, 0xD8, 0x01, 0xD9, 0x01, 0x00, 0x00, 0x60, 0x00, 0xDA, 0x01, 0xDB, 0x01 - .byte 0x00, 0x00, 0x61, 0x00, 0xDC, 0x01, 0xDD, 0x01, 0x00, 0x00, 0x62, 0x00, 0xDE, 0x01, 0xDF, 0x01 - .byte 0x00, 0x00, 0x63, 0x00, 0x88, 0x01, 0x89, 0x01, 0x1E, 0x01, 0x64, 0x00, 0x8A, 0x01, 0x89, 0x01 - .byte 0x1F, 0x01, 0x65, 0x00, 0xAF, 0x01, 0xB0, 0x01, 0x65, 0x01, 0x66, 0x00, 0xB1, 0x01, 0xB0, 0x01 - .byte 0x66, 0x01, 0x67, 0x00, 0xA9, 0x01, 0xAA, 0x01, 0x62, 0x01, 0x68, 0x00, 0x69, 0x02, 0x6A, 0x02 - .byte 0x00, 0x00, 0x69, 0x00, 0x67, 0x02, 0x68, 0x02, 0x00, 0x00, 0x6A, 0x00, 0x51, 0x01, 0x52, 0x01 - .byte 0x00, 0x00, 0x6B, 0x00, 0xE0, 0x01, 0xE1, 0x01, 0x00, 0x00, 0x6C, 0x00, 0xE2, 0x01, 0xE3, 0x01 - .byte 0x00, 0x00, 0x6D, 0x00, 0xE4, 0x01, 0xE5, 0x01, 0x00, 0x00, 0x6E, 0x00, 0xE6, 0x01, 0xE7, 0x01 - .byte 0x00, 0x00, 0x6F, 0x00, 0xE8, 0x01, 0xE9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x70, 0x00, 0x88, 0x02, 0x89, 0x02, 0x00, 0x00, 0x71, 0x00, 0x86, 0x02, 0x87, 0x02 - .byte 0x00, 0x00, 0x72, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x73, 0x00, 0x8E, 0x00, 0x8F, 0x00 - .byte 0x00, 0x00, 0x74, 0x00, 0x90, 0x00, 0x91, 0x00, 0x00, 0x00, 0x75, 0x00, 0x92, 0x00, 0x93, 0x00 - .byte 0x00, 0x00, 0x76, 0x00, 0x94, 0x00, 0x95, 0x00, 0x00, 0x00, 0x77, 0x00, 0x96, 0x00, 0x97, 0x00 - .byte 0x00, 0x00, 0x78, 0x00, 0x98, 0x00, 0x99, 0x00, 0x00, 0x00, 0x79, 0x00, 0x9A, 0x00, 0x9B, 0x00 - .byte 0x00, 0x00, 0x7A, 0x00, 0x9C, 0x00, 0x9D, 0x00, 0x00, 0x00, 0x7B, 0x00, 0x9E, 0x00, 0x9F, 0x00 - .byte 0x00, 0x00, 0x7C, 0x00, 0xA0, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x7D, 0x00, 0xA2, 0x00, 0xA3, 0x00 - .byte 0x00, 0x00, 0x7E, 0x00, 0xA4, 0x00, 0xA5, 0x00, 0x85, 0x00, 0x7F, 0x00, 0xA6, 0x00, 0xA7, 0x00 - .byte 0x86, 0x00, 0x80, 0x00, 0xA8, 0x00, 0xA9, 0x00, 0x87, 0x00, 0x81, 0x00, 0xAA, 0x00, 0xAB, 0x00 - .byte 0x88, 0x00, 0x82, 0x00, 0xAC, 0x00, 0xAD, 0x00, 0x89, 0x00, 0x83, 0x00, 0xAE, 0x00, 0xAF, 0x00 - .byte 0x8A, 0x00, 0x84, 0x00, 0xB0, 0x00, 0xB1, 0x00, 0x8B, 0x00, 0x85, 0x00, 0xB2, 0x00, 0xB3, 0x00 - .byte 0x8C, 0x00, 0x86, 0x00, 0xB4, 0x00, 0xB5, 0x00, 0x8D, 0x00, 0x87, 0x00, 0xB6, 0x00, 0xB7, 0x00 - .byte 0x8E, 0x00, 0x88, 0x00, 0xB8, 0x00, 0xB9, 0x00, 0x8F, 0x00, 0x89, 0x00, 0xBA, 0x00, 0xBB, 0x00 - .byte 0x90, 0x00, 0x8A, 0x00, 0xBC, 0x00, 0xBD, 0x00, 0x91, 0x00, 0x8B, 0x00, 0xBE, 0x00, 0xBF, 0x00 - .byte 0x92, 0x00, 0x8C, 0x00, 0xC0, 0x00, 0xC1, 0x00, 0x93, 0x00, 0x8D, 0x00, 0xC2, 0x00, 0xC3, 0x00 - .byte 0x94, 0x00, 0x8E, 0x00, 0xC4, 0x00, 0xC5, 0x00, 0x95, 0x00, 0x8F, 0x00, 0xC6, 0x00, 0xC7, 0x00 - .byte 0x96, 0x00, 0x90, 0x00, 0xC8, 0x00, 0xC9, 0x00, 0x97, 0x00, 0x91, 0x00, 0xCA, 0x00, 0xCB, 0x00 - .byte 0x98, 0x00, 0x92, 0x00, 0xCC, 0x00, 0xCD, 0x00, 0x99, 0x00, 0x93, 0x00, 0xCE, 0x00, 0xCF, 0x00 - .byte 0x9A, 0x00, 0x94, 0x00, 0xD0, 0x00, 0xD1, 0x00, 0x9B, 0x00, 0x95, 0x00, 0xD2, 0x00, 0xD3, 0x00 - .byte 0x9C, 0x00, 0x96, 0x00, 0xD4, 0x00, 0xD5, 0x00, 0x9D, 0x00, 0x97, 0x00, 0xD6, 0x00, 0xD7, 0x00 - .byte 0x9E, 0x00, 0x98, 0x00, 0xD8, 0x00, 0xD9, 0x00, 0x9F, 0x00, 0x99, 0x00, 0xDA, 0x00, 0xDB, 0x00 - .byte 0xA0, 0x00, 0x9A, 0x00, 0xDC, 0x00, 0xDD, 0x00, 0xA1, 0x00, 0x9B, 0x00, 0xDE, 0x00, 0xDF, 0x00 - .byte 0xA2, 0x00, 0x9C, 0x00, 0xE0, 0x00, 0xE1, 0x00, 0xA3, 0x00, 0x9D, 0x00, 0xE2, 0x00, 0xE3, 0x00 - .byte 0xA4, 0x00, 0x9E, 0x00, 0xE4, 0x00, 0xE5, 0x00, 0xA5, 0x00, 0x9F, 0x00, 0xE6, 0x00, 0xE7, 0x00 - .byte 0xA6, 0x00, 0xA0, 0x00, 0xE8, 0x00, 0xE9, 0x00, 0xA7, 0x00, 0xA1, 0x00, 0x2A, 0x02, 0x2B, 0x02 - .byte 0x00, 0x00, 0xA2, 0x00, 0x2C, 0x02, 0x2D, 0x02, 0x00, 0x00, 0xA3, 0x00, 0x2E, 0x02, 0x2F, 0x02 - .byte 0x00, 0x00, 0xA4, 0x00, 0x30, 0x02, 0x31, 0x02, 0x00, 0x00, 0xA5, 0x00, 0x32, 0x02, 0x33, 0x02 - .byte 0x00, 0x00, 0xA6, 0x00, 0x34, 0x02, 0x35, 0x02, 0x00, 0x00, 0xA7, 0x00, 0x36, 0x02, 0x37, 0x02 - .byte 0x00, 0x00, 0xA8, 0x00, 0x38, 0x02, 0x39, 0x02, 0x00, 0x00, 0xA9, 0x00, 0x3A, 0x02, 0x3B, 0x02 - .byte 0x00, 0x00, 0xAA, 0x00, 0x3C, 0x02, 0x3D, 0x02, 0x00, 0x00, 0xAB, 0x00, 0x3E, 0x02, 0x3F, 0x02 - .byte 0x00, 0x00, 0xAC, 0x00, 0x40, 0x02, 0x41, 0x02, 0x00, 0x00, 0xAD, 0x00, 0x42, 0x02, 0x43, 0x02 - .byte 0x00, 0x00, 0xAE, 0x00, 0x44, 0x02, 0x45, 0x02, 0x00, 0x00, 0xAF, 0x00, 0x46, 0x02, 0x47, 0x02 - .byte 0x00, 0x00, 0xB0, 0x00, 0x48, 0x02, 0x49, 0x02, 0x00, 0x00, 0xB1, 0x00, 0x4A, 0x02, 0x4B, 0x02 - .byte 0x00, 0x00, 0xB2, 0x00, 0xEA, 0x00, 0xEB, 0x00, 0xA8, 0x00, 0xB3, 0x00, 0xEC, 0x00, 0xED, 0x00 - .byte 0xA9, 0x00, 0xB4, 0x00, 0xEE, 0x00, 0xEF, 0x00, 0xAA, 0x00, 0xB5, 0x00, 0xF0, 0x00, 0xF1, 0x00 - .byte 0xAB, 0x00, 0xB6, 0x00, 0xF2, 0x00, 0xF3, 0x00, 0xAC, 0x00, 0xB7, 0x00, 0xF4, 0x00, 0xF5, 0x00 - .byte 0xAD, 0x00, 0xB8, 0x00, 0xF6, 0x00, 0xF7, 0x00, 0xAE, 0x00, 0xB9, 0x00, 0xF8, 0x00, 0xF9, 0x00 - .byte 0xAF, 0x00, 0xBA, 0x00, 0x4C, 0x02, 0x4D, 0x02, 0x00, 0x00, 0xBB, 0x00, 0x4E, 0x02, 0x4F, 0x02 - .byte 0x00, 0x00, 0xBC, 0x00, 0x50, 0x02, 0x51, 0x02, 0x00, 0x00, 0xBD, 0x00, 0x52, 0x02, 0x53, 0x02 - .byte 0x00, 0x00, 0xBE, 0x00, 0xFA, 0x00, 0xFB, 0x00, 0xB3, 0x00, 0xBF, 0x00, 0xFC, 0x00, 0xFD, 0x00 - .byte 0xB4, 0x00, 0xC0, 0x00, 0xFE, 0x00, 0xFF, 0x00, 0xB5, 0x00, 0xC1, 0x00, 0x00, 0x01, 0x01, 0x01 - .byte 0xB6, 0x00, 0xC2, 0x00, 0x02, 0x01, 0x03, 0x01, 0xB7, 0x00, 0xC3, 0x00, 0x04, 0x01, 0x05, 0x01 - .byte 0xB8, 0x00, 0xC4, 0x00, 0xFC, 0x00, 0x06, 0x01, 0xB9, 0x00, 0xC5, 0x00, 0x07, 0x01, 0x08, 0x01 - .byte 0xBA, 0x00, 0xC6, 0x00, 0x09, 0x01, 0x0A, 0x01, 0xBB, 0x00, 0xC7, 0x00, 0x0B, 0x01, 0x0C, 0x01 - .byte 0xBC, 0x00, 0xC8, 0x00, 0x0D, 0x01, 0x0E, 0x01, 0xBD, 0x00, 0xC9, 0x00, 0x0F, 0x01, 0x10, 0x01 - .byte 0xBE, 0x00, 0xCA, 0x00, 0x11, 0x01, 0x12, 0x01, 0xBF, 0x00, 0xCB, 0x00, 0x13, 0x01, 0x14, 0x01 - .byte 0xC0, 0x00, 0xCC, 0x00, 0x15, 0x01, 0x16, 0x01, 0xC1, 0x00, 0xCD, 0x00, 0x17, 0x01, 0x18, 0x01 - .byte 0xC2, 0x00, 0xCE, 0x00, 0x19, 0x01, 0x1A, 0x01, 0xC3, 0x00, 0xCF, 0x00, 0x1B, 0x01, 0x1C, 0x01 - .byte 0xC4, 0x00, 0xD0, 0x00, 0x1D, 0x01, 0x1E, 0x01, 0xC5, 0x00, 0xD1, 0x00, 0x1F, 0x01, 0x20, 0x01 - .byte 0xC6, 0x00, 0xD2, 0x00, 0x21, 0x01, 0x22, 0x01, 0xC7, 0x00, 0xD3, 0x00, 0x23, 0x01, 0x24, 0x01 - .byte 0xC8, 0x00, 0xD4, 0x00, 0x25, 0x01, 0x26, 0x01, 0xC9, 0x00, 0xD5, 0x00, 0x27, 0x01, 0x28, 0x01 - .byte 0xCA, 0x00, 0xD6, 0x00, 0x29, 0x01, 0x2A, 0x01, 0xCB, 0x00, 0xD7, 0x00, 0x2B, 0x01, 0x2C, 0x01 - .byte 0xCC, 0x00, 0xD8, 0x00, 0x2D, 0x01, 0x2E, 0x01, 0xCD, 0x00, 0xD9, 0x00, 0x2F, 0x01, 0x30, 0x01 - .byte 0xCE, 0x00, 0xDA, 0x00, 0x31, 0x01, 0x30, 0x01, 0xCF, 0x00, 0xDB, 0x00, 0x32, 0x01, 0x33, 0x01 - .byte 0xD0, 0x00, 0xDC, 0x00, 0x34, 0x01, 0x35, 0x01, 0xD1, 0x00, 0xDD, 0x00, 0x36, 0x01, 0x37, 0x01 - .byte 0xD2, 0x00, 0xDE, 0x00, 0x38, 0x01, 0x39, 0x01, 0xD3, 0x00, 0xDF, 0x00, 0x3A, 0x01, 0x3B, 0x01 - .byte 0xD4, 0x00, 0xE0, 0x00, 0x3C, 0x01, 0x3D, 0x01, 0xD5, 0x00, 0xE1, 0x00, 0x3E, 0x01, 0x3F, 0x01 - .byte 0xD6, 0x00, 0xE2, 0x00, 0x40, 0x01, 0x41, 0x01, 0xD7, 0x00, 0xE3, 0x00, 0x42, 0x01, 0x43, 0x01 - .byte 0xD8, 0x00, 0xE4, 0x00, 0x44, 0x01, 0x45, 0x01, 0xD9, 0x00, 0xE5, 0x00, 0x46, 0x01, 0x47, 0x01 - .byte 0xDA, 0x00, 0xE6, 0x00, 0x48, 0x01, 0x4D, 0x00, 0xDB, 0x00, 0xE7, 0x00, 0x49, 0x01, 0x4A, 0x01 - .byte 0xDC, 0x00, 0xE8, 0x00, 0x4B, 0x01, 0x4C, 0x01, 0xDD, 0x00, 0xE9, 0x00, 0x4D, 0x01, 0x4E, 0x01 - .byte 0xDE, 0x00, 0xEA, 0x00, 0x4F, 0x01, 0x50, 0x01, 0xDF, 0x00, 0xEB, 0x00, 0x51, 0x01, 0x52, 0x01 - .byte 0xE0, 0x00, 0xEC, 0x00, 0x53, 0x01, 0x54, 0x01, 0xE1, 0x00, 0xED, 0x00, 0x55, 0x01, 0x56, 0x01 - .byte 0xFE, 0x00, 0xEE, 0x00, 0x55, 0x01, 0x57, 0x01, 0xFF, 0x00, 0xEF, 0x00, 0x55, 0x01, 0x58, 0x01 - .byte 0x00, 0x01, 0xF0, 0x00, 0x55, 0x01, 0x59, 0x01, 0x01, 0x01, 0xF1, 0x00, 0x55, 0x01, 0x5A, 0x01 - .byte 0x02, 0x01, 0xF2, 0x00, 0xEA, 0x01, 0xEB, 0x01, 0x00, 0x00, 0xF3, 0x00, 0xEC, 0x01, 0xED, 0x01 - .byte 0x00, 0x00, 0xF4, 0x00, 0xEE, 0x01, 0xEF, 0x01, 0x00, 0x00, 0xF5, 0x00, 0xF0, 0x01, 0xF1, 0x01 - .byte 0x00, 0x00, 0xF6, 0x00, 0x63, 0x02, 0x64, 0x02, 0x00, 0x00, 0xF7, 0x00, 0xF2, 0x01, 0xF3, 0x01 - .byte 0x00, 0x00, 0xF8, 0x00, 0xF4, 0x01, 0xF5, 0x01, 0x00, 0x00, 0xF9, 0x00, 0xF6, 0x01, 0xF7, 0x01 - .byte 0x00, 0x00, 0xFA, 0x00, 0xF8, 0x01, 0xF9, 0x01, 0x00, 0x00, 0xFB, 0x00, 0x4F, 0x01, 0x92, 0x02 - .byte 0x00, 0x00, 0xFC, 0x00, 0x93, 0x02, 0x94, 0x02, 0x00, 0x00, 0xFD, 0x00, 0xFA, 0x01, 0xFB, 0x01 - .byte 0x00, 0x00, 0xFE, 0x00, 0xFC, 0x01, 0xFD, 0x01, 0x00, 0x00, 0xFF, 0x00, 0x65, 0x02, 0x66, 0x02 - .byte 0x00, 0x00, 0x00, 0x01, 0x8A, 0x02, 0x8B, 0x02, 0x00, 0x00, 0x01, 0x01, 0x8E, 0x02, 0x8F, 0x02 - .byte 0x00, 0x00, 0x02, 0x01, 0xFE, 0x01, 0xFF, 0x01, 0x00, 0x00, 0x03, 0x01, 0x7C, 0x02, 0x7D, 0x02 - .byte 0x00, 0x00, 0x04, 0x01, 0x7E, 0x02, 0x7F, 0x02, 0x00, 0x00, 0x05, 0x01, 0x80, 0x02, 0x81, 0x02 - .byte 0x00, 0x00, 0x06, 0x01, 0x82, 0x02, 0x83, 0x02, 0x00, 0x00, 0x07, 0x01, 0x8C, 0x02, 0x8D, 0x02 - .byte 0x00, 0x00, 0x08, 0x01, 0x00, 0x02, 0x01, 0x02, 0x00, 0x00, 0x09, 0x01, 0x02, 0x02, 0x03, 0x02 - .byte 0x00, 0x00, 0x0A, 0x01, 0xAB, 0x02, 0xAC, 0x02, 0x00, 0x00, 0x0B, 0x01, 0xB3, 0x02, 0xB4, 0x02 - .byte 0x00, 0x00, 0x0C, 0x01, 0xB5, 0x02, 0xB6, 0x02, 0x00, 0x00, 0x0D, 0x01, 0xAD, 0x02, 0xAE, 0x02 - .byte 0x00, 0x00, 0x0E, 0x01, 0xAF, 0x02, 0xB0, 0x02, 0x00, 0x00, 0x0F, 0x01, 0xB1, 0x02, 0xB2, 0x02 - .byte 0x00, 0x00, 0x10, 0x01, 0x04, 0x02, 0x05, 0x02, 0x00, 0x00, 0x11, 0x01, 0x06, 0x02, 0x07, 0x02 - .byte 0x00, 0x00, 0x12, 0x01, 0x08, 0x02, 0x09, 0x02, 0x00, 0x00, 0x13, 0x01, 0x6B, 0x02, 0x6C, 0x02 - .byte 0x00, 0x00, 0x14, 0x01, 0x6B, 0x02, 0x6D, 0x02, 0x00, 0x00, 0x15, 0x01, 0x6B, 0x02, 0x6E, 0x02 - .byte 0x00, 0x00, 0x16, 0x01, 0x6B, 0x02, 0x6F, 0x02, 0x00, 0x00, 0x17, 0x01, 0x6B, 0x02, 0x70, 0x02 - .byte 0x00, 0x00, 0x18, 0x01, 0x6B, 0x02, 0x71, 0x02, 0x00, 0x00, 0x19, 0x01, 0x6B, 0x02, 0x72, 0x02 - .byte 0x00, 0x00, 0x1A, 0x01, 0x6B, 0x02, 0x73, 0x02, 0x00, 0x00, 0x1B, 0x01, 0x6B, 0x02, 0x74, 0x02 - .byte 0x00, 0x00, 0x1C, 0x01, 0x6B, 0x02, 0x75, 0x02, 0x00, 0x00, 0x1D, 0x01, 0x6B, 0x02, 0x76, 0x02 - .byte 0x00, 0x00, 0x1E, 0x01, 0x6B, 0x02, 0x77, 0x02, 0x00, 0x00, 0x1F, 0x01, 0x6B, 0x02, 0x78, 0x02 - .byte 0x00, 0x00, 0x20, 0x01, 0x6B, 0x02, 0x79, 0x02, 0x00, 0x00, 0x21, 0x01, 0x6B, 0x02, 0x7A, 0x02 - .byte 0x00, 0x00, 0x22, 0x01, 0x6B, 0x02, 0x7B, 0x02, 0x00, 0x00, 0x23, 0x01, 0x0A, 0x02, 0x0B, 0x02 - .byte 0x00, 0x00, 0x24, 0x01, 0x0C, 0x02, 0x0D, 0x02, 0x00, 0x00, 0x25, 0x01, 0x0E, 0x02, 0x0F, 0x02 - .byte 0x00, 0x00, 0x26, 0x01, 0x10, 0x02, 0x11, 0x02, 0x00, 0x00, 0x27, 0x01, 0x12, 0x02, 0x13, 0x02 - .byte 0x00, 0x00, 0x28, 0x01, 0x14, 0x02, 0x15, 0x02, 0x00, 0x00, 0x29, 0x01, 0x16, 0x02, 0x17, 0x02 - .byte 0x00, 0x00, 0x2A, 0x01, 0xB7, 0x02, 0xB8, 0x02, 0x00, 0x00, 0x2B, 0x01, 0x18, 0x02, 0x19, 0x02 - .byte 0x00, 0x00, 0x2C, 0x01, 0x1A, 0x02, 0x1B, 0x02, 0x00, 0x00, 0x2D, 0x01, 0x1C, 0x02, 0x1D, 0x02 - .byte 0x00, 0x00, 0x2E, 0x01, 0x1E, 0x02, 0x1F, 0x02, 0x00, 0x00, 0x2F, 0x01, 0x20, 0x02, 0x21, 0x02 - .byte 0x00, 0x00, 0x30, 0x01, 0x22, 0x02, 0x23, 0x02, 0x00, 0x00, 0x31, 0x01, 0x8D, 0x01, 0x8E, 0x01 - .byte 0x21, 0x01, 0x32, 0x01, 0x8D, 0x01, 0x8F, 0x01, 0x22, 0x01, 0x33, 0x01, 0x8D, 0x01, 0x90, 0x01 - .byte 0x23, 0x01, 0x34, 0x01, 0x8D, 0x01, 0x91, 0x01, 0x24, 0x01, 0x35, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x25, 0x01, 0x36, 0x01, 0x8D, 0x01, 0x93, 0x01, 0x26, 0x01, 0x37, 0x01, 0x8D, 0x01, 0x94, 0x01 - .byte 0x27, 0x01, 0x38, 0x01, 0x8D, 0x01, 0x8E, 0x01, 0x28, 0x01, 0x39, 0x01, 0x8D, 0x01, 0x95, 0x01 - .byte 0x29, 0x01, 0x3A, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x2A, 0x01, 0x3B, 0x01, 0x8D, 0x01, 0x96, 0x01 - .byte 0x2B, 0x01, 0x3C, 0x01, 0x8D, 0x01, 0x97, 0x01, 0x2C, 0x01, 0x3D, 0x01, 0x8D, 0x01, 0x94, 0x01 - .byte 0x2D, 0x01, 0x3E, 0x01, 0x8D, 0x01, 0x94, 0x01, 0x2E, 0x01, 0x3F, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x2F, 0x01, 0x40, 0x01, 0x8D, 0x01, 0x91, 0x01, 0x30, 0x01, 0x41, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x31, 0x01, 0x42, 0x01, 0x8D, 0x01, 0x90, 0x01, 0x32, 0x01, 0x43, 0x01, 0x8D, 0x01, 0x95, 0x01 - .byte 0x33, 0x01, 0x44, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x34, 0x01, 0x45, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x35, 0x01, 0x46, 0x01, 0x8D, 0x01, 0x95, 0x01, 0x36, 0x01, 0x47, 0x01, 0x8D, 0x01, 0x98, 0x01 - .byte 0x37, 0x01, 0x48, 0x01, 0x8D, 0x01, 0x99, 0x01, 0x38, 0x01, 0x49, 0x01, 0x8D, 0x01, 0x99, 0x01 - .byte 0x39, 0x01, 0x4A, 0x01, 0x8D, 0x01, 0x9A, 0x01, 0x3A, 0x01, 0x4B, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x3B, 0x01, 0x4C, 0x01, 0x8D, 0x01, 0x9A, 0x01, 0x3C, 0x01, 0x4D, 0x01, 0x8D, 0x01, 0x91, 0x01 - .byte 0x3D, 0x01, 0x4E, 0x01, 0x8D, 0x01, 0x9B, 0x01, 0x3E, 0x01, 0x4F, 0x01, 0x8D, 0x01, 0x8E, 0x01 - .byte 0x3F, 0x01, 0x50, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x40, 0x01, 0x51, 0x01, 0x8D, 0x01, 0x91, 0x01 - .byte 0x41, 0x01, 0x52, 0x01, 0x8D, 0x01, 0x99, 0x01, 0x42, 0x01, 0x53, 0x01, 0x8D, 0x01, 0x96, 0x01 - .byte 0x43, 0x01, 0x54, 0x01, 0x8D, 0x01, 0x93, 0x01, 0x44, 0x01, 0x55, 0x01, 0x8D, 0x01, 0x9C, 0x01 - .byte 0x45, 0x01, 0x56, 0x01, 0x8D, 0x01, 0x96, 0x01, 0x46, 0x01, 0x57, 0x01, 0x8D, 0x01, 0x9C, 0x01 - .byte 0x47, 0x01, 0x58, 0x01, 0x8D, 0x01, 0x9D, 0x01, 0x48, 0x01, 0x59, 0x01, 0x8D, 0x01, 0x97, 0x01 - .byte 0x49, 0x01, 0x5A, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x4A, 0x01, 0x5B, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x4B, 0x01, 0x5C, 0x01, 0x8D, 0x01, 0x91, 0x01, 0x4C, 0x01, 0x5D, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x4D, 0x01, 0x5E, 0x01, 0x8D, 0x01, 0x97, 0x01, 0x4E, 0x01, 0x5F, 0x01, 0x8D, 0x01, 0x98, 0x01 - .byte 0x4F, 0x01, 0x60, 0x01, 0x8D, 0x01, 0x91, 0x01, 0x50, 0x01, 0x61, 0x01, 0x8D, 0x01, 0x97, 0x01 - .byte 0x51, 0x01, 0x62, 0x01, 0x8D, 0x01, 0x96, 0x01, 0x52, 0x01, 0x63, 0x01, 0x8D, 0x01, 0x9D, 0x01 - .byte 0x00, 0x00, 0x64, 0x01, 0x8D, 0x01, 0x8E, 0x01, 0x00, 0x00, 0x65, 0x01, 0x8D, 0x01, 0x95, 0x01 - .byte 0x00, 0x00, 0x66, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x00, 0x00, 0x67, 0x01, 0x8D, 0x01, 0x90, 0x01 - .byte 0x00, 0x00, 0x68, 0x01, 0x8D, 0x01, 0x97, 0x01, 0x00, 0x00, 0x69, 0x01, 0x8D, 0x01, 0x99, 0x01 - .byte 0x00, 0x00, 0x6A, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x00, 0x00, 0x6B, 0x01, 0x8D, 0x01, 0x8F, 0x01 - .byte 0x00, 0x00, 0x6C, 0x01, 0x8D, 0x01, 0x8E, 0x01, 0x00, 0x00, 0x6D, 0x01, 0x8D, 0x01, 0x96, 0x01 - .byte 0x00, 0x00, 0x6E, 0x01, 0x8D, 0x01, 0x62, 0x02, 0x00, 0x00, 0x6F, 0x01, 0x8D, 0x01, 0x97, 0x01 - .byte 0x00, 0x00, 0x70, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x00, 0x00, 0x71, 0x01, 0x8D, 0x01, 0x9B, 0x01 - .byte 0x00, 0x00, 0x72, 0x01, 0x8D, 0x01, 0x97, 0x01, 0x00, 0x00, 0x73, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x00, 0x00, 0x74, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x00, 0x00, 0x75, 0x01, 0x8D, 0x01, 0x9C, 0x01 - .byte 0x00, 0x00, 0x76, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x00, 0x00, 0x77, 0x01, 0x8D, 0x01, 0x9C, 0x01 - .byte 0x00, 0x00, 0x78, 0x01, 0x8D, 0x01, 0x94, 0x01, 0x00, 0x00, 0x79, 0x01, 0x8D, 0x01, 0x99, 0x01 - .byte 0x00, 0x00, 0x7A, 0x01, 0x8D, 0x01, 0x98, 0x01, 0x00, 0x00, 0x7B, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x00, 0x00, 0x7C, 0x01, 0x8D, 0x01, 0x9C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x00, 0x00, 0x7E, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x8D, 0x01, 0x97, 0x01 - .byte 0x00, 0x00, 0x80, 0x01, 0x8D, 0x01, 0x9C, 0x01, 0x00, 0x00, 0x81, 0x01, 0x8D, 0x01, 0x62, 0x02 - .byte 0x00, 0x00, 0x82, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x00, 0x00, 0x83, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x00, 0x00, 0x84, 0x01, 0x8D, 0x01, 0x93, 0x01, 0x00, 0x00, 0x85, 0x01, 0x8D, 0x01, 0x91, 0x01 - .byte 0x00, 0x00, 0x86, 0x01, 0x8D, 0x01, 0x95, 0x01, 0x00, 0x00, 0x87, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x00, 0x00, 0x88, 0x01, 0x8D, 0x01, 0x9D, 0x01, 0x00, 0x00, 0x89, 0x01, 0x8D, 0x01, 0x62, 0x02 - .byte 0x00, 0x00, 0x8A, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x00, 0x00, 0x8B, 0x01, 0x8D, 0x01, 0x98, 0x01 - .byte 0x00, 0x00, 0x8C, 0x01, 0x8D, 0x01, 0x91, 0x01, 0x00, 0x00, 0x8D, 0x01, 0x9E, 0x01, 0x92, 0x01 - .byte 0x53, 0x01, 0x8E, 0x01, 0x9E, 0x01, 0x9D, 0x01, 0x54, 0x01, 0x8F, 0x01, 0x9E, 0x01, 0x90, 0x01 - .byte 0x55, 0x01, 0x90, 0x01, 0x9E, 0x01, 0x92, 0x01, 0x56, 0x01, 0x91, 0x01, 0x9E, 0x01, 0x90, 0x01 - .byte 0x57, 0x01, 0x92, 0x01, 0x9E, 0x01, 0x8E, 0x01, 0x58, 0x01, 0x93, 0x01, 0x9E, 0x01, 0x90, 0x01 - .byte 0x59, 0x01, 0x94, 0x01, 0x9E, 0x01, 0x92, 0x01, 0x5A, 0x01, 0x95, 0x01, 0x24, 0x02, 0x25, 0x02 - .byte 0x00, 0x00, 0x96, 0x01, 0x26, 0x02, 0x27, 0x02, 0x00, 0x00, 0x97, 0x01, 0x28, 0x02, 0x29, 0x02 - .byte 0x00, 0x00, 0x98, 0x01, 0xB9, 0x02, 0xBA, 0x02, 0x00, 0x00, 0x99, 0x01, 0xA9, 0x02, 0xAA, 0x02 - .byte 0x00, 0x00, 0x9A, 0x01, 0x5E, 0x02, 0x5F, 0x02, 0x00, 0x00, 0x9B, 0x01, 0x9F, 0x02, 0xA0, 0x02 - .byte 0x00, 0x00, 0x9C, 0x01, 0xA3, 0x02, 0xA4, 0x02, 0x00, 0x00, 0x9D, 0x01, 0xA1, 0x02, 0xA2, 0x02 - .byte 0x00, 0x00, 0x9E, 0x01, 0x95, 0x02, 0x96, 0x02, 0x00, 0x00, 0x9F, 0x01, 0x84, 0x02, 0x85, 0x02 - .byte 0x00, 0x00, 0xA0, 0x01, 0x5C, 0x02, 0x5D, 0x02, 0x00, 0x00, 0xA1, 0x01, 0x90, 0x02, 0x91, 0x02 - .byte 0x00, 0x00, 0xA2, 0x01, 0xA7, 0x02, 0xA8, 0x02, 0x00, 0x00, 0xA3, 0x01, 0xB7, 0x01, 0xB8, 0x01 - .byte 0x69, 0x01, 0xA4, 0x01, 0xB9, 0x01, 0xBA, 0x01, 0x6A, 0x01, 0xA5, 0x01, 0x5D, 0x01, 0x5E, 0x01 - .byte 0x04, 0x01, 0xA6, 0x01, 0x61, 0x01, 0x62, 0x01, 0x06, 0x01, 0xA7, 0x01, 0x63, 0x01, 0x64, 0x01 - .byte 0x07, 0x01, 0xA8, 0x01, 0x65, 0x01, 0x66, 0x01, 0x08, 0x01, 0xA9, 0x01, 0x6B, 0x01, 0x6C, 0x01 - .byte 0x00, 0x00, 0xAA, 0x01, 0x75, 0x01, 0x76, 0x01, 0x00, 0x00, 0xAB, 0x01, 0xB5, 0x01, 0xB6, 0x01 - .byte 0x68, 0x01, 0xAC, 0x01, 0xAD, 0x01, 0xAE, 0x01, 0x00, 0x00, 0xAD, 0x01, 0x77, 0x01, 0x40, 0x00 - .byte 0x00, 0x00, 0xAE, 0x01, 0x5A, 0x02, 0x5B, 0x02, 0x00, 0x00, 0xAF, 0x01, 0x60, 0x02, 0x61, 0x02 - .byte 0x00, 0x00, 0xB0, 0x01, 0xA5, 0x02, 0xA6, 0x02, 0x00, 0x00, 0xB1, 0x01, 0x67, 0x01, 0x68, 0x01 - .byte 0x09, 0x01, 0xB2, 0x01, 0x69, 0x01, 0x6A, 0x01, 0x0A, 0x01, 0xB3, 0x01, 0x54, 0x02, 0x55, 0x02 - .byte 0x00, 0x00, 0xB4, 0x01, 0x9F, 0x01, 0xA0, 0x01, 0x5D, 0x01, 0xB5, 0x01, 0xA1, 0x01, 0xA2, 0x01 - .byte 0x00, 0x00, 0xB6, 0x01, 0xA3, 0x01, 0xA4, 0x01, 0x00, 0x00, 0xB7, 0x01, 0xA5, 0x01, 0xA6, 0x01 - .byte 0x00, 0x00, 0xB8, 0x01, 0x56, 0x02, 0x57, 0x02, 0x1D, 0x01, 0xB9, 0x01, 0x58, 0x02, 0x59, 0x02 - .byte 0x00, 0x00 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0001, 0x0002, 0x0003, 0x0001 + .short 0x0002, 0x0004, 0x0005, 0x0002 + .short 0x0003, 0x0006, 0x0007, 0x0003 + .short 0x0004, 0x0008, 0x0009, 0x0004 + .short 0x0005, 0x000A, 0x000B, 0x0005 + .short 0x0006, 0x000C, 0x000D, 0x0006 + .short 0x0007, 0x000E, 0x000F, 0x0007 + .short 0x0008, 0x0010, 0x0011, 0x0008 + .short 0x0009, 0x0012, 0x0013, 0x0009 + .short 0x000A, 0x0014, 0x0013, 0x000A + .short 0x000B, 0x0015, 0x0016, 0x000B + .short 0x000C, 0x0017, 0x0016, 0x000C + .short 0x000D, 0x0297, 0x0298, 0x0000 + .short 0x000E, 0x0299, 0x029A, 0x0000 + .short 0x000F, 0x029B, 0x029C, 0x0000 + .short 0x0010, 0x029D, 0x029E, 0x0000 + .short 0x0011, 0x0018, 0x0019, 0x000D + .short 0x0012, 0x001A, 0x001B, 0x000E + .short 0x0013, 0x001E, 0x001C, 0x000F + .short 0x0014, 0x001E, 0x001D, 0x0010 + .short 0x0015, 0x001E, 0x001F, 0x0011 + .short 0x0016, 0x001E, 0x0020, 0x0012 + .short 0x0017, 0x0021, 0x0022, 0x0013 + .short 0x0018, 0x0021, 0x0023, 0x0014 + .short 0x0019, 0x0018, 0x0024, 0x0015 + .short 0x001A, 0x0018, 0x0025, 0x0016 + .short 0x001B, 0x0026, 0x0027, 0x0017 + .short 0x001C, 0x0028, 0x002A, 0x0018 + .short 0x001D, 0x0029, 0x002A, 0x0019 + .short 0x001E, 0x002B, 0x002C, 0x001A + .short 0x001F, 0x002D, 0x002E, 0x001B + .short 0x0020, 0x002F, 0x0030, 0x001C + .short 0x0021, 0x0031, 0x0032, 0x001D + .short 0x0022, 0x0033, 0x0034, 0x001E + .short 0x0023, 0x0035, 0x0036, 0x001F + .short 0x0024, 0x0033, 0x0037, 0x0020 + .short 0x0025, 0x0038, 0x0039, 0x0021 + .short 0x0026, 0x003A, 0x003B, 0x0022 + .short 0x0027, 0x003A, 0x003C, 0x0023 + .short 0x0028, 0x003A, 0x003D, 0x0024 + .short 0x0029, 0x003A, 0x003E, 0x0025 + .short 0x002A, 0x003F, 0x0040, 0x0026 + .short 0x002B, 0x0047, 0x0048, 0x002C + .short 0x002C, 0x0049, 0x004A, 0x002D + .short 0x002D, 0x0053, 0x0054, 0x003F + .short 0x002E, 0x0055, 0x0056, 0x0040 + .short 0x002F, 0x0055, 0x0057, 0x0041 + .short 0x0030, 0x0055, 0x0058, 0x0042 + .short 0x0031, 0x0055, 0x0059, 0x0043 + .short 0x0032, 0x005A, 0x005B, 0x0044 + .short 0x0033, 0x005C, 0x005D, 0x0045 + .short 0x0034, 0x0055, 0x005E, 0x0046 + .short 0x0035, 0x005F, 0x0060, 0x0047 + .short 0x0036, 0x01D2, 0x01D3, 0x0000 + .short 0x0037, 0x0064, 0x0061, 0x0049 + .short 0x0038, 0x0064, 0x0062, 0x004A + .short 0x0039, 0x0064, 0x0063, 0x004B + .short 0x003A, 0x0064, 0x0065, 0x004C + .short 0x003B, 0x0064, 0x0066, 0x004D + .short 0x003C, 0x0064, 0x0067, 0x004E + .short 0x003D, 0x0064, 0x0068, 0x004F + .short 0x003E, 0x0064, 0x01D5, 0x0000 + .short 0x003F, 0x0069, 0x006A, 0x0050 + .short 0x0040, 0x006B, 0x006C, 0x0051 + .short 0x0041, 0x0041, 0x0042, 0x0027 + .short 0x0042, 0x0041, 0x0043, 0x0028 + .short 0x0043, 0x0041, 0x0044, 0x0029 + .short 0x0044, 0x0041, 0x0045, 0x002A + .short 0x0045, 0x0041, 0x0046, 0x002B + .short 0x0046, 0x0033, 0x004B, 0x002E + .short 0x0047, 0x004C, 0x004D, 0x002F + .short 0x0048, 0x004E, 0x004F, 0x0030 + .short 0x0049, 0x004E, 0x0050, 0x0031 + .short 0x004A, 0x004E, 0x0051, 0x0032 + .short 0x004B, 0x004E, 0x0052, 0x0033 + .short 0x004C, 0x006D, 0x006E, 0x0053 + .short 0x004D, 0x006D, 0x006F, 0x0054 + .short 0x004E, 0x0070, 0x0071, 0x0055 + .short 0x004F, 0x006D, 0x0072, 0x0056 + .short 0x0050, 0x0073, 0x0074, 0x005D + .short 0x0051, 0x0075, 0x0076, 0x005E + .short 0x0052, 0x0077, 0x0078, 0x005F + .short 0x0053, 0x0079, 0x007A, 0x0060 + .short 0x0054, 0x007B, 0x007C, 0x0061 + .short 0x0055, 0x007D, 0x007E, 0x0062 + .short 0x0056, 0x007F, 0x0081, 0x0067 + .short 0x0057, 0x0080, 0x0081, 0x0068 + .short 0x0058, 0x0082, 0x0083, 0x006A + .short 0x0059, 0x0084, 0x0083, 0x006B + .short 0x005A, 0x0085, 0x0086, 0x006C + .short 0x005B, 0x0087, 0x0086, 0x006D + .short 0x005C, 0x0088, 0x0089, 0x006E + .short 0x005D, 0x008A, 0x008B, 0x006F + .short 0x005E, 0x01D6, 0x01D7, 0x0000 + .short 0x005F, 0x01D8, 0x01D9, 0x0000 + .short 0x0060, 0x01DA, 0x01DB, 0x0000 + .short 0x0061, 0x01DC, 0x01DD, 0x0000 + .short 0x0062, 0x01DE, 0x01DF, 0x0000 + .short 0x0063, 0x0188, 0x0189, 0x011E + .short 0x0064, 0x018A, 0x0189, 0x011F + .short 0x0065, 0x01AF, 0x01B0, 0x0165 + .short 0x0066, 0x01B1, 0x01B0, 0x0166 + .short 0x0067, 0x01A9, 0x01AA, 0x0162 + .short 0x0068, 0x0269, 0x026A, 0x0000 + .short 0x0069, 0x0267, 0x0268, 0x0000 + .short 0x006A, 0x0151, 0x0152, 0x0000 + .short 0x006B, 0x01E0, 0x01E1, 0x0000 + .short 0x006C, 0x01E2, 0x01E3, 0x0000 + .short 0x006D, 0x01E4, 0x01E5, 0x0000 + .short 0x006E, 0x01E6, 0x01E7, 0x0000 + .short 0x006F, 0x01E8, 0x01E9, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0070, 0x0288, 0x0289, 0x0000 + .short 0x0071, 0x0286, 0x0287, 0x0000 + .short 0x0072, 0x008C, 0x008D, 0x0000 + .short 0x0073, 0x008E, 0x008F, 0x0000 + .short 0x0074, 0x0090, 0x0091, 0x0000 + .short 0x0075, 0x0092, 0x0093, 0x0000 + .short 0x0076, 0x0094, 0x0095, 0x0000 + .short 0x0077, 0x0096, 0x0097, 0x0000 + .short 0x0078, 0x0098, 0x0099, 0x0000 + .short 0x0079, 0x009A, 0x009B, 0x0000 + .short 0x007A, 0x009C, 0x009D, 0x0000 + .short 0x007B, 0x009E, 0x009F, 0x0000 + .short 0x007C, 0x00A0, 0x00A1, 0x0000 + .short 0x007D, 0x00A2, 0x00A3, 0x0000 + .short 0x007E, 0x00A4, 0x00A5, 0x0085 + .short 0x007F, 0x00A6, 0x00A7, 0x0086 + .short 0x0080, 0x00A8, 0x00A9, 0x0087 + .short 0x0081, 0x00AA, 0x00AB, 0x0088 + .short 0x0082, 0x00AC, 0x00AD, 0x0089 + .short 0x0083, 0x00AE, 0x00AF, 0x008A + .short 0x0084, 0x00B0, 0x00B1, 0x008B + .short 0x0085, 0x00B2, 0x00B3, 0x008C + .short 0x0086, 0x00B4, 0x00B5, 0x008D + .short 0x0087, 0x00B6, 0x00B7, 0x008E + .short 0x0088, 0x00B8, 0x00B9, 0x008F + .short 0x0089, 0x00BA, 0x00BB, 0x0090 + .short 0x008A, 0x00BC, 0x00BD, 0x0091 + .short 0x008B, 0x00BE, 0x00BF, 0x0092 + .short 0x008C, 0x00C0, 0x00C1, 0x0093 + .short 0x008D, 0x00C2, 0x00C3, 0x0094 + .short 0x008E, 0x00C4, 0x00C5, 0x0095 + .short 0x008F, 0x00C6, 0x00C7, 0x0096 + .short 0x0090, 0x00C8, 0x00C9, 0x0097 + .short 0x0091, 0x00CA, 0x00CB, 0x0098 + .short 0x0092, 0x00CC, 0x00CD, 0x0099 + .short 0x0093, 0x00CE, 0x00CF, 0x009A + .short 0x0094, 0x00D0, 0x00D1, 0x009B + .short 0x0095, 0x00D2, 0x00D3, 0x009C + .short 0x0096, 0x00D4, 0x00D5, 0x009D + .short 0x0097, 0x00D6, 0x00D7, 0x009E + .short 0x0098, 0x00D8, 0x00D9, 0x009F + .short 0x0099, 0x00DA, 0x00DB, 0x00A0 + .short 0x009A, 0x00DC, 0x00DD, 0x00A1 + .short 0x009B, 0x00DE, 0x00DF, 0x00A2 + .short 0x009C, 0x00E0, 0x00E1, 0x00A3 + .short 0x009D, 0x00E2, 0x00E3, 0x00A4 + .short 0x009E, 0x00E4, 0x00E5, 0x00A5 + .short 0x009F, 0x00E6, 0x00E7, 0x00A6 + .short 0x00A0, 0x00E8, 0x00E9, 0x00A7 + .short 0x00A1, 0x022A, 0x022B, 0x0000 + .short 0x00A2, 0x022C, 0x022D, 0x0000 + .short 0x00A3, 0x022E, 0x022F, 0x0000 + .short 0x00A4, 0x0230, 0x0231, 0x0000 + .short 0x00A5, 0x0232, 0x0233, 0x0000 + .short 0x00A6, 0x0234, 0x0235, 0x0000 + .short 0x00A7, 0x0236, 0x0237, 0x0000 + .short 0x00A8, 0x0238, 0x0239, 0x0000 + .short 0x00A9, 0x023A, 0x023B, 0x0000 + .short 0x00AA, 0x023C, 0x023D, 0x0000 + .short 0x00AB, 0x023E, 0x023F, 0x0000 + .short 0x00AC, 0x0240, 0x0241, 0x0000 + .short 0x00AD, 0x0242, 0x0243, 0x0000 + .short 0x00AE, 0x0244, 0x0245, 0x0000 + .short 0x00AF, 0x0246, 0x0247, 0x0000 + .short 0x00B0, 0x0248, 0x0249, 0x0000 + .short 0x00B1, 0x024A, 0x024B, 0x0000 + .short 0x00B2, 0x00EA, 0x00EB, 0x00A8 + .short 0x00B3, 0x00EC, 0x00ED, 0x00A9 + .short 0x00B4, 0x00EE, 0x00EF, 0x00AA + .short 0x00B5, 0x00F0, 0x00F1, 0x00AB + .short 0x00B6, 0x00F2, 0x00F3, 0x00AC + .short 0x00B7, 0x00F4, 0x00F5, 0x00AD + .short 0x00B8, 0x00F6, 0x00F7, 0x00AE + .short 0x00B9, 0x00F8, 0x00F9, 0x00AF + .short 0x00BA, 0x024C, 0x024D, 0x0000 + .short 0x00BB, 0x024E, 0x024F, 0x0000 + .short 0x00BC, 0x0250, 0x0251, 0x0000 + .short 0x00BD, 0x0252, 0x0253, 0x0000 + .short 0x00BE, 0x00FA, 0x00FB, 0x00B3 + .short 0x00BF, 0x00FC, 0x00FD, 0x00B4 + .short 0x00C0, 0x00FE, 0x00FF, 0x00B5 + .short 0x00C1, 0x0100, 0x0101, 0x00B6 + .short 0x00C2, 0x0102, 0x0103, 0x00B7 + .short 0x00C3, 0x0104, 0x0105, 0x00B8 + .short 0x00C4, 0x00FC, 0x0106, 0x00B9 + .short 0x00C5, 0x0107, 0x0108, 0x00BA + .short 0x00C6, 0x0109, 0x010A, 0x00BB + .short 0x00C7, 0x010B, 0x010C, 0x00BC + .short 0x00C8, 0x010D, 0x010E, 0x00BD + .short 0x00C9, 0x010F, 0x0110, 0x00BE + .short 0x00CA, 0x0111, 0x0112, 0x00BF + .short 0x00CB, 0x0113, 0x0114, 0x00C0 + .short 0x00CC, 0x0115, 0x0116, 0x00C1 + .short 0x00CD, 0x0117, 0x0118, 0x00C2 + .short 0x00CE, 0x0119, 0x011A, 0x00C3 + .short 0x00CF, 0x011B, 0x011C, 0x00C4 + .short 0x00D0, 0x011D, 0x011E, 0x00C5 + .short 0x00D1, 0x011F, 0x0120, 0x00C6 + .short 0x00D2, 0x0121, 0x0122, 0x00C7 + .short 0x00D3, 0x0123, 0x0124, 0x00C8 + .short 0x00D4, 0x0125, 0x0126, 0x00C9 + .short 0x00D5, 0x0127, 0x0128, 0x00CA + .short 0x00D6, 0x0129, 0x012A, 0x00CB + .short 0x00D7, 0x012B, 0x012C, 0x00CC + .short 0x00D8, 0x012D, 0x012E, 0x00CD + .short 0x00D9, 0x012F, 0x0130, 0x00CE + .short 0x00DA, 0x0131, 0x0130, 0x00CF + .short 0x00DB, 0x0132, 0x0133, 0x00D0 + .short 0x00DC, 0x0134, 0x0135, 0x00D1 + .short 0x00DD, 0x0136, 0x0137, 0x00D2 + .short 0x00DE, 0x0138, 0x0139, 0x00D3 + .short 0x00DF, 0x013A, 0x013B, 0x00D4 + .short 0x00E0, 0x013C, 0x013D, 0x00D5 + .short 0x00E1, 0x013E, 0x013F, 0x00D6 + .short 0x00E2, 0x0140, 0x0141, 0x00D7 + .short 0x00E3, 0x0142, 0x0143, 0x00D8 + .short 0x00E4, 0x0144, 0x0145, 0x00D9 + .short 0x00E5, 0x0146, 0x0147, 0x00DA + .short 0x00E6, 0x0148, 0x004D, 0x00DB + .short 0x00E7, 0x0149, 0x014A, 0x00DC + .short 0x00E8, 0x014B, 0x014C, 0x00DD + .short 0x00E9, 0x014D, 0x014E, 0x00DE + .short 0x00EA, 0x014F, 0x0150, 0x00DF + .short 0x00EB, 0x0151, 0x0152, 0x00E0 + .short 0x00EC, 0x0153, 0x0154, 0x00E1 + .short 0x00ED, 0x0155, 0x0156, 0x00FE + .short 0x00EE, 0x0155, 0x0157, 0x00FF + .short 0x00EF, 0x0155, 0x0158, 0x0100 + .short 0x00F0, 0x0155, 0x0159, 0x0101 + .short 0x00F1, 0x0155, 0x015A, 0x0102 + .short 0x00F2, 0x01EA, 0x01EB, 0x0000 + .short 0x00F3, 0x01EC, 0x01ED, 0x0000 + .short 0x00F4, 0x01EE, 0x01EF, 0x0000 + .short 0x00F5, 0x01F0, 0x01F1, 0x0000 + .short 0x00F6, 0x0263, 0x0264, 0x0000 + .short 0x00F7, 0x01F2, 0x01F3, 0x0000 + .short 0x00F8, 0x01F4, 0x01F5, 0x0000 + .short 0x00F9, 0x01F6, 0x01F7, 0x0000 + .short 0x00FA, 0x01F8, 0x01F9, 0x0000 + .short 0x00FB, 0x014F, 0x0292, 0x0000 + .short 0x00FC, 0x0293, 0x0294, 0x0000 + .short 0x00FD, 0x01FA, 0x01FB, 0x0000 + .short 0x00FE, 0x01FC, 0x01FD, 0x0000 + .short 0x00FF, 0x0265, 0x0266, 0x0000 + .short 0x0100, 0x028A, 0x028B, 0x0000 + .short 0x0101, 0x028E, 0x028F, 0x0000 + .short 0x0102, 0x01FE, 0x01FF, 0x0000 + .short 0x0103, 0x027C, 0x027D, 0x0000 + .short 0x0104, 0x027E, 0x027F, 0x0000 + .short 0x0105, 0x0280, 0x0281, 0x0000 + .short 0x0106, 0x0282, 0x0283, 0x0000 + .short 0x0107, 0x028C, 0x028D, 0x0000 + .short 0x0108, 0x0200, 0x0201, 0x0000 + .short 0x0109, 0x0202, 0x0203, 0x0000 + .short 0x010A, 0x02AB, 0x02AC, 0x0000 + .short 0x010B, 0x02B3, 0x02B4, 0x0000 + .short 0x010C, 0x02B5, 0x02B6, 0x0000 + .short 0x010D, 0x02AD, 0x02AE, 0x0000 + .short 0x010E, 0x02AF, 0x02B0, 0x0000 + .short 0x010F, 0x02B1, 0x02B2, 0x0000 + .short 0x0110, 0x0204, 0x0205, 0x0000 + .short 0x0111, 0x0206, 0x0207, 0x0000 + .short 0x0112, 0x0208, 0x0209, 0x0000 + .short 0x0113, 0x026B, 0x026C, 0x0000 + .short 0x0114, 0x026B, 0x026D, 0x0000 + .short 0x0115, 0x026B, 0x026E, 0x0000 + .short 0x0116, 0x026B, 0x026F, 0x0000 + .short 0x0117, 0x026B, 0x0270, 0x0000 + .short 0x0118, 0x026B, 0x0271, 0x0000 + .short 0x0119, 0x026B, 0x0272, 0x0000 + .short 0x011A, 0x026B, 0x0273, 0x0000 + .short 0x011B, 0x026B, 0x0274, 0x0000 + .short 0x011C, 0x026B, 0x0275, 0x0000 + .short 0x011D, 0x026B, 0x0276, 0x0000 + .short 0x011E, 0x026B, 0x0277, 0x0000 + .short 0x011F, 0x026B, 0x0278, 0x0000 + .short 0x0120, 0x026B, 0x0279, 0x0000 + .short 0x0121, 0x026B, 0x027A, 0x0000 + .short 0x0122, 0x026B, 0x027B, 0x0000 + .short 0x0123, 0x020A, 0x020B, 0x0000 + .short 0x0124, 0x020C, 0x020D, 0x0000 + .short 0x0125, 0x020E, 0x020F, 0x0000 + .short 0x0126, 0x0210, 0x0211, 0x0000 + .short 0x0127, 0x0212, 0x0213, 0x0000 + .short 0x0128, 0x0214, 0x0215, 0x0000 + .short 0x0129, 0x0216, 0x0217, 0x0000 + .short 0x012A, 0x02B7, 0x02B8, 0x0000 + .short 0x012B, 0x0218, 0x0219, 0x0000 + .short 0x012C, 0x021A, 0x021B, 0x0000 + .short 0x012D, 0x021C, 0x021D, 0x0000 + .short 0x012E, 0x021E, 0x021F, 0x0000 + .short 0x012F, 0x0220, 0x0221, 0x0000 + .short 0x0130, 0x0222, 0x0223, 0x0000 + .short 0x0131, 0x018D, 0x018E, 0x0121 + .short 0x0132, 0x018D, 0x018F, 0x0122 + .short 0x0133, 0x018D, 0x0190, 0x0123 + .short 0x0134, 0x018D, 0x0191, 0x0124 + .short 0x0135, 0x018D, 0x0192, 0x0125 + .short 0x0136, 0x018D, 0x0193, 0x0126 + .short 0x0137, 0x018D, 0x0194, 0x0127 + .short 0x0138, 0x018D, 0x018E, 0x0128 + .short 0x0139, 0x018D, 0x0195, 0x0129 + .short 0x013A, 0x018D, 0x0192, 0x012A + .short 0x013B, 0x018D, 0x0196, 0x012B + .short 0x013C, 0x018D, 0x0197, 0x012C + .short 0x013D, 0x018D, 0x0194, 0x012D + .short 0x013E, 0x018D, 0x0194, 0x012E + .short 0x013F, 0x018D, 0x0192, 0x012F + .short 0x0140, 0x018D, 0x0191, 0x0130 + .short 0x0141, 0x018D, 0x0192, 0x0131 + .short 0x0142, 0x018D, 0x0190, 0x0132 + .short 0x0143, 0x018D, 0x0195, 0x0133 + .short 0x0144, 0x018D, 0x0192, 0x0134 + .short 0x0145, 0x018D, 0x0192, 0x0135 + .short 0x0146, 0x018D, 0x0195, 0x0136 + .short 0x0147, 0x018D, 0x0198, 0x0137 + .short 0x0148, 0x018D, 0x0199, 0x0138 + .short 0x0149, 0x018D, 0x0199, 0x0139 + .short 0x014A, 0x018D, 0x019A, 0x013A + .short 0x014B, 0x018D, 0x0192, 0x013B + .short 0x014C, 0x018D, 0x019A, 0x013C + .short 0x014D, 0x018D, 0x0191, 0x013D + .short 0x014E, 0x018D, 0x019B, 0x013E + .short 0x014F, 0x018D, 0x018E, 0x013F + .short 0x0150, 0x018D, 0x0192, 0x0140 + .short 0x0151, 0x018D, 0x0191, 0x0141 + .short 0x0152, 0x018D, 0x0199, 0x0142 + .short 0x0153, 0x018D, 0x0196, 0x0143 + .short 0x0154, 0x018D, 0x0193, 0x0144 + .short 0x0155, 0x018D, 0x019C, 0x0145 + .short 0x0156, 0x018D, 0x0196, 0x0146 + .short 0x0157, 0x018D, 0x019C, 0x0147 + .short 0x0158, 0x018D, 0x019D, 0x0148 + .short 0x0159, 0x018D, 0x0197, 0x0149 + .short 0x015A, 0x018D, 0x0192, 0x014A + .short 0x015B, 0x018D, 0x0192, 0x014B + .short 0x015C, 0x018D, 0x0191, 0x014C + .short 0x015D, 0x018D, 0x0192, 0x014D + .short 0x015E, 0x018D, 0x0197, 0x014E + .short 0x015F, 0x018D, 0x0198, 0x014F + .short 0x0160, 0x018D, 0x0191, 0x0150 + .short 0x0161, 0x018D, 0x0197, 0x0151 + .short 0x0162, 0x018D, 0x0196, 0x0152 + .short 0x0163, 0x018D, 0x019D, 0x0000 + .short 0x0164, 0x018D, 0x018E, 0x0000 + .short 0x0165, 0x018D, 0x0195, 0x0000 + .short 0x0166, 0x018D, 0x0192, 0x0000 + .short 0x0167, 0x018D, 0x0190, 0x0000 + .short 0x0168, 0x018D, 0x0197, 0x0000 + .short 0x0169, 0x018D, 0x0199, 0x0000 + .short 0x016A, 0x018D, 0x0192, 0x0000 + .short 0x016B, 0x018D, 0x018F, 0x0000 + .short 0x016C, 0x018D, 0x018E, 0x0000 + .short 0x016D, 0x018D, 0x0196, 0x0000 + .short 0x016E, 0x018D, 0x0262, 0x0000 + .short 0x016F, 0x018D, 0x0197, 0x0000 + .short 0x0170, 0x018D, 0x0192, 0x0000 + .short 0x0171, 0x018D, 0x019B, 0x0000 + .short 0x0172, 0x018D, 0x0197, 0x0000 + .short 0x0173, 0x018D, 0x0192, 0x0000 + .short 0x0174, 0x018D, 0x0192, 0x0000 + .short 0x0175, 0x018D, 0x019C, 0x0000 + .short 0x0176, 0x018D, 0x0192, 0x0000 + .short 0x0177, 0x018D, 0x019C, 0x0000 + .short 0x0178, 0x018D, 0x0194, 0x0000 + .short 0x0179, 0x018D, 0x0199, 0x0000 + .short 0x017A, 0x018D, 0x0198, 0x0000 + .short 0x017B, 0x018D, 0x0192, 0x0000 + .short 0x017C, 0x018D, 0x019C, 0x0000 + .short 0x017D, 0x018D, 0x0192, 0x0000 + .short 0x017E, 0x018D, 0x0192, 0x0000 + .short 0x017F, 0x018D, 0x0197, 0x0000 + .short 0x0180, 0x018D, 0x019C, 0x0000 + .short 0x0181, 0x018D, 0x0262, 0x0000 + .short 0x0182, 0x018D, 0x0192, 0x0000 + .short 0x0183, 0x018D, 0x0192, 0x0000 + .short 0x0184, 0x018D, 0x0193, 0x0000 + .short 0x0185, 0x018D, 0x0191, 0x0000 + .short 0x0186, 0x018D, 0x0195, 0x0000 + .short 0x0187, 0x018D, 0x0192, 0x0000 + .short 0x0188, 0x018D, 0x019D, 0x0000 + .short 0x0189, 0x018D, 0x0262, 0x0000 + .short 0x018A, 0x018D, 0x0192, 0x0000 + .short 0x018B, 0x018D, 0x0198, 0x0000 + .short 0x018C, 0x018D, 0x0191, 0x0000 + .short 0x018D, 0x019E, 0x0192, 0x0153 + .short 0x018E, 0x019E, 0x019D, 0x0154 + .short 0x018F, 0x019E, 0x0190, 0x0155 + .short 0x0190, 0x019E, 0x0192, 0x0156 + .short 0x0191, 0x019E, 0x0190, 0x0157 + .short 0x0192, 0x019E, 0x018E, 0x0158 + .short 0x0193, 0x019E, 0x0190, 0x0159 + .short 0x0194, 0x019E, 0x0192, 0x015A + .short 0x0195, 0x0224, 0x0225, 0x0000 + .short 0x0196, 0x0226, 0x0227, 0x0000 + .short 0x0197, 0x0228, 0x0229, 0x0000 + .short 0x0198, 0x02B9, 0x02BA, 0x0000 + .short 0x0199, 0x02A9, 0x02AA, 0x0000 + .short 0x019A, 0x025E, 0x025F, 0x0000 + .short 0x019B, 0x029F, 0x02A0, 0x0000 + .short 0x019C, 0x02A3, 0x02A4, 0x0000 + .short 0x019D, 0x02A1, 0x02A2, 0x0000 + .short 0x019E, 0x0295, 0x0296, 0x0000 + .short 0x019F, 0x0284, 0x0285, 0x0000 + .short 0x01A0, 0x025C, 0x025D, 0x0000 + .short 0x01A1, 0x0290, 0x0291, 0x0000 + .short 0x01A2, 0x02A7, 0x02A8, 0x0000 + .short 0x01A3, 0x01B7, 0x01B8, 0x0169 + .short 0x01A4, 0x01B9, 0x01BA, 0x016A + .short 0x01A5, 0x015D, 0x015E, 0x0104 + .short 0x01A6, 0x0161, 0x0162, 0x0106 + .short 0x01A7, 0x0163, 0x0164, 0x0107 + .short 0x01A8, 0x0165, 0x0166, 0x0108 + .short 0x01A9, 0x016B, 0x016C, 0x0000 + .short 0x01AA, 0x0175, 0x0176, 0x0000 + .short 0x01AB, 0x01B5, 0x01B6, 0x0168 + .short 0x01AC, 0x01AD, 0x01AE, 0x0000 + .short 0x01AD, 0x0177, 0x0040, 0x0000 + .short 0x01AE, 0x025A, 0x025B, 0x0000 + .short 0x01AF, 0x0260, 0x0261, 0x0000 + .short 0x01B0, 0x02A5, 0x02A6, 0x0000 + .short 0x01B1, 0x0167, 0x0168, 0x0109 + .short 0x01B2, 0x0169, 0x016A, 0x010A + .short 0x01B3, 0x0254, 0x0255, 0x0000 + .short 0x01B4, 0x019F, 0x01A0, 0x015D + .short 0x01B5, 0x01A1, 0x01A2, 0x0000 + .short 0x01B6, 0x01A3, 0x01A4, 0x0000 + .short 0x01B7, 0x01A5, 0x01A6, 0x0000 + .short 0x01B8, 0x0256, 0x0257, 0x011D + .short 0x01B9, 0x0258, 0x0259, 0x0000 .text @@ -401,7 +621,7 @@ _0206E672: bx lr _0206E67C: lsl r1, r0, #0x3 - ldr r0, _0206E6C8 ; =UNK_020F85B6 + ldr r0, _0206E6C8 ; =UNK_020F85B4 + 2 ldrh r0, [r0, r1] bx lr _0206E684: @@ -418,7 +638,7 @@ _0206E68E: bx lr _0206E698: lsl r1, r0, #0x3 - ldr r0, _0206E6D0 ; =UNK_020F85B8 + ldr r0, _0206E6D0 ; =UNK_020F85B4 + 4 ldrh r0, [r0, r1] bx lr _0206E6A0: @@ -428,7 +648,7 @@ _0206E6A0: cmp r0, r1 beq _0206E6B2 lsl r1, r0, #0x3 - ldr r0, _0206E6D4 ; =UNK_020F85BA + ldr r0, _0206E6D4 ; =UNK_020F85B4 + 6 ldrh r0, [r0, r1] bx lr _0206E6B2: @@ -439,10 +659,10 @@ _0206E6B8: .word 0x0000FFFF _0206E6BC: .word UNK_020F85B4 _0206E6C0: .word 0x000002BB _0206E6C4: .word 0x000002BD -_0206E6C8: .word UNK_020F85B6 +_0206E6C8: .word UNK_020F85B4 + 2 _0206E6CC: .word 0x000002BE -_0206E6D0: .word UNK_020F85B8 -_0206E6D4: .word UNK_020F85BA +_0206E6D0: .word UNK_020F85B4 + 4 +_0206E6D4: .word UNK_020F85B4 + 6 thumb_func_start FUN_0206E6D8 FUN_0206E6D8: ; 0x0206E6D8 @@ -507,14 +727,14 @@ _0206E72C: bl AllocAndReadWholeNarcMemberByIdPair pop {r3, pc} _0206E73A: - ldr r1, _0206E760 ; =UNK_020F85B6 + ldr r1, _0206E760 ; =UNK_020F85B4 + 2 lsl r3, r3, #0x3 ldrh r1, [r1, r3] mov r0, #0x10 bl AllocAndReadWholeNarcMemberByIdPair pop {r3, pc} _0206E748: - ldr r1, _0206E764 ; =UNK_020F85B8 + ldr r1, _0206E764 ; =UNK_020F85B4 + 4 lsl r3, r3, #0x3 ldrh r1, [r1, r3] mov r0, #0x10 @@ -525,8 +745,8 @@ _0206E756: pop {r3, pc} nop _0206E75C: .word UNK_020F85B4 -_0206E760: .word UNK_020F85B6 -_0206E764: .word UNK_020F85B8 +_0206E760: .word UNK_020F85B4 + 2 +_0206E764: .word UNK_020F85B4 + 4 thumb_func_start FUN_0206E768 FUN_0206E768: ; 0x0206E768 diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 591bf401..43404100 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -1,9 +1,14 @@ #include "global.h" #define IN_POKEMON_C +#include "proto.h" #include "pokemon.h" #include "heap.h" #include "MI_memory.h" #include "math_util.h" +#include "move_data.h" +#include "string_util.h" +#include "text.h" +#include "constants/abilities.h" #pragma thumb on @@ -12,8 +17,9 @@ void MonDecryptSegment(void * datap, u32 size, u32 key); u16 MonEncryptionLCRNG(u32 * seed); u16 CalcMonChecksum(void * datap, u32 size); void InitBoxMonMoveset(struct BoxPokemon * boxmon); -u32 GetMonDataInternal(struct Pokemon * pokemon, u32 attr, void * ptr); -u32 GetBoxMonDataInternal(struct BoxPokemon * pokemon, u32 attr, void * ptr); +u32 GetMonDataInternal(struct Pokemon * pokemon, int attr, void * ptr); +PokemonDataBlock * GetSubstruct(struct BoxPokemon * boxmon, u32 personality, u32 which_struct); +u32 GetBoxMonDataInternal(struct BoxPokemon * pokemon, int attr, void * ptr); void LoadMonBaseStats_HandleAlternateForme(u32 species, u32 forme, struct BaseStats * baseStats); int ApplyNatureModToStat(u8 nature, u16 statval, u32 statno); @@ -466,7 +472,7 @@ void CalcMonStats(struct Pokemon * pokemon) TryEncryptMon(pokemon, decry); } -u32 GetMonData(struct Pokemon * pokemon, u32 attr, void * dest) +u32 GetMonData(struct Pokemon * pokemon, int attr, void * dest) { u32 ret; u32 checksum; @@ -490,7 +496,7 @@ u32 GetMonData(struct Pokemon * pokemon, u32 attr, void * dest) return ret; } -u32 GetMonDataInternal(struct Pokemon * pokemon, u32 attr, void * dest) +u32 GetMonDataInternal(struct Pokemon * pokemon, int attr, void * dest) { switch (attr) { @@ -525,7 +531,7 @@ u32 GetMonDataInternal(struct Pokemon * pokemon, u32 attr, void * dest) } } -u32 GetBoxMonData(struct BoxPokemon * boxmon, u32 attr, void * dest) +u32 GetBoxMonData(struct BoxPokemon * boxmon, int attr, void * dest) { u32 ret; u32 checksum; @@ -546,3 +552,402 @@ u32 GetBoxMonData(struct BoxPokemon * boxmon, u32 attr, void * dest) } return ret; } + +u32 GetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * dest) +{ + u32 ret = 0; + 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) + { + default: + ret = 0; + break; + case MON_DATA_PERSONALITY: + ret = boxmon->pid; + break; + case MON_DATA_PARTY_LOCK: + ret = boxmon->party_lock; + break; + case MON_DATA_BOX_LOCK: + ret = boxmon->box_lock; + break; + case MON_DATA_CHECKSUM_FAILED: + ret = boxmon->checksum_fail; + break; + case MON_DATA_CHECKSUM: + ret = boxmon->checksum; + break; + case MON_DATA_SPECIES_EXISTS: + if (blockA->species != SPECIES_NONE) + ret = TRUE; + else + ret = FALSE; + break; + case MON_DATA_SANITY_IS_EGG: + ret = boxmon->checksum_fail; + if (!ret) + ret = blockB->isEgg; + break; + case MON_DATA_SPECIES2: + ret = blockA->species; + if (ret != SPECIES_NONE && (blockB->isEgg || boxmon->checksum_fail)) + ret = SPECIES_EGG; + break; + case MON_DATA_LEVEL: + ret = CalcLevelBySpeciesAndExp(blockA->species, blockA->exp); + break; + case MON_DATA_SPECIES: + if (boxmon->checksum_fail) + ret = SPECIES_EGG; + else + ret = blockA->species; + break; + case MON_DATA_HELD_ITEM: + ret = blockA->heldItem; + break; + case MON_DATA_OTID: + ret = blockA->otID; + break; + case MON_DATA_EXPERIENCE: + ret = blockA->exp; + break; + case MON_DATA_FRIENDSHIP: + ret = blockA->friendship; + break; + case MON_DATA_ABILITY: + ret = blockA->ability; + break; + case MON_DATA_MARKINGS: + ret = blockA->markings; + break; + case MON_DATA_GAME_LANGUAGE: + ret = blockA->originLanguage; + break; + case MON_DATA_HP_EV: + ret = blockA->hpEV; + break; + case MON_DATA_ATK_EV: + ret = blockA->atkEV; + break; + case MON_DATA_DEF_EV: + ret = blockA->defEV; + break; + case MON_DATA_SPEED_EV: + ret = blockA->spdEV; + break; + case MON_DATA_SPATK_EV: + ret = blockA->spatkEV; + break; + case MON_DATA_SPDEF_EV: + ret = blockA->spdefEV; + break; + case MON_DATA_COOL: + ret = blockA->coolStat; + break; + case MON_DATA_BEAUTY: + ret = blockA->beautyStat; + break; + case MON_DATA_CUTE: + ret = blockA->cuteStat; + break; + case MON_DATA_SMART: + ret = blockA->smartStat; + break; + case MON_DATA_TOUGH: + ret = blockA->toughStat; + break; + case MON_DATA_SHEEN: + ret = blockA->sheen; + 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: + { + if (blockA->sinnohRibbons & (1ll << (attr - MON_DATA_SINNOH_CHAMP_RIBBON))) + { + ret = TRUE; + } + else + { + ret = FALSE; + } + } + break; + case MON_DATA_MOVE1: + case MON_DATA_MOVE2: + case MON_DATA_MOVE3: + case MON_DATA_MOVE4: + attr -= MON_DATA_MOVE1; + ret = blockB->moves[attr]; + 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]; + 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]; + 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]); + break; + case MON_DATA_HP_IV: + ret = blockB->hpIV; + break; + case MON_DATA_ATK_IV: + ret = blockB->atkIV; + break; + case MON_DATA_DEF_IV: + ret = blockB->defIV; + break; + case MON_DATA_SPEED_IV: + ret = blockB->spdIV; + break; + case MON_DATA_SPATK_IV: + ret = blockB->spatkIV; + break; + case MON_DATA_SPDEF_IV: + ret = blockB->spdefIV; + break; + case MON_DATA_IS_EGG: + ret = boxmon->checksum_fail; + if (!ret) + ret = blockB->isEgg; + break; + case MON_DATA_HAS_NICKNAME: + ret = blockB->isNicknamed; + 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: + if (blockB->ribbonFlags & (1ll << (attr - MON_DATA_COOL_RIBBON))) + ret = TRUE; + else + ret = FALSE; + break; + case MON_DATA_FATEFUL_ENCOUNTER: + ret = blockB->fatefulEncounter; + break; + case MON_DATA_GENDER: + ret = blockB->gender; + break; + case MON_DATA_FORME: + ret = blockB->alternateForm; + break; + case MON_DATA_RESERVED_113: + ret = blockB->HGSS_shinyLeaves; + break; + case MON_DATA_RESERVED_114: + ret = blockB->Unused; + break; + case MON_DATA_NICKNAME: + if (boxmon->checksum_fail) + GetSpeciesName(SPECIES_MANAPHY_EGG, 0, dest); + else + { + u16 * dest16 = (u16 *)dest; + for (ret = 0; ret < POKEMON_NAME_LENGTH; ret++) + { + dest16[ret] = blockC->nickname[ret]; + } + dest16[ret] = EOS; + } + break; + case MON_DATA_NICKNAME_3: + ret = blockB->isNicknamed; + // fallthrough + case MON_DATA_NICKNAME_2: + if (boxmon->checksum_fail) + { + u16 * buffer = FUN_0200AA50(SPECIES_MANAPHY_EGG, 0); + FUN_02021A74(dest, buffer); + FUN_02021A20(buffer); + } + else + { + FUN_02021E28(dest, blockC->nickname); + } + break; + case MON_DATA_UNK_120: + ret = blockC->Unused; + break; + case MON_DATA_GAME_VERSION: + ret = blockC->originGame; + 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: + if (blockC->sinnohRibbons2 & (1ll << (attr - MON_DATA_SINNOH_RIBBON_122))) + ret = TRUE; + else + ret = FALSE; + break; + case MON_DATA_OT_NAME: + { + u16 * dest16 = (u16 *)dest; + for (ret = 0; ret < OT_NAME_LENGTH; ret++) + dest16[ret] = blockD->otTrainerName[ret]; + dest16[ret] = EOS; + } + break; + case MON_DATA_OT_NAME_2: + FUN_02021E28(dest, blockD->otTrainerName); + break; + case MON_DATA_EGG_MET_YEAR: + ret = blockD->dateEggReceived[0]; + break; + case MON_DATA_EGG_MET_MONTH: + ret = blockD->dateEggReceived[1]; + break; + case MON_DATA_EGG_MET_DAY: + ret = blockD->dateEggReceived[2]; + break; + case MON_DATA_MET_YEAR: + ret = blockD->dateMet[0]; + break; + case MON_DATA_MET_MONTH: + ret = blockD->dateMet[1]; + break; + case MON_DATA_MET_DAY: + ret = blockD->dateMet[2]; + break; + case MON_DATA_EGG_MET_LOCATION: + ret = blockD->DP_EggLocation; + break; + case MON_DATA_MET_LOCATION: + ret = blockD->DP_MetLocation; + break; + case MON_DATA_POKERUS: + ret = blockD->pokerus; + break; + case MON_DATA_POKEBALL: + ret = blockD->pokeball; + break; + case MON_DATA_MET_LEVEL: + ret = blockD->metLevel; + break; + case MON_DATA_MET_GENDER: + ret = blockD->metGender; + break; + case MON_DATA_ENCOUNTER_TYPE: + ret = blockD->encounterType; + break; + case MON_DATA_RESERVED_158: + ret = blockD->HGSS_Pokeball; + break; + case MON_DATA_IVS_WORD: + ret = (blockB->hpIV) | \ + (blockB->atkIV << 5) | \ + (blockB->defIV << 10) | \ + (blockB->spdIV << 15) | \ + (blockB->spatkIV << 20) | \ + (blockB->spdefIV << 25); + break; + case MON_DATA_UNK_175: + if ((blockA->species == SPECIES_NIDORAN_F || blockA->species == SPECIES_NIDORAN_M) && !blockB->isNicknamed) + ret = FALSE; + else + ret = TRUE; + break; + case MON_DATA_TYPE_1: + case MON_DATA_TYPE_2: + if (blockA->species == SPECIES_ARCEUS && blockA->ability == ABILITY_MULTITYPE) + ret = GetArceusTypeByPlate(FUN_0206E7B8(blockA->heldItem, 1, 0)); + else + { + ret = GetMonBaseStat_HandleFormeConversion(blockA->species, blockB->alternateForm, attr - MON_DATA_TYPE_1 + BASE_TYPE1); + } + break; + case MON_DATA_SPECIES_NAME: + GetSpeciesName(blockA->species, 0, dest); + break; + } + return ret; +} diff --git a/arm9/src/string_util.c b/arm9/src/string_util.c index e36f1a30..54ad61fc 100644 --- a/arm9/src/string_util.c +++ b/arm9/src/string_util.c @@ -1,8 +1,5 @@ #include "string_util.h"
-#define EOS 0xFFFF
-#define NON_DIGIT 0xE2
-
const u16 gDigitTable[] = {
0xA2,
0xA3,
diff --git a/include/constants/abilities.h b/include/constants/abilities.h new file mode 100644 index 00000000..f107e623 --- /dev/null +++ b/include/constants/abilities.h @@ -0,0 +1,129 @@ +#ifndef POKEDIAMOND_CONSTANTS_ABILITIES_H +#define POKEDIAMOND_CONSTANTS_ABILITIES_H + +#define ABILITY_NONE 0 +#define ABILITY_STENCH 1 +#define ABILITY_DRIZZLE 2 +#define ABILITY_SPEED_BOOST 3 +#define ABILITY_BATTLE_ARMOR 4 +#define ABILITY_STURDY 5 +#define ABILITY_DAMP 6 +#define ABILITY_LIMBER 7 +#define ABILITY_SAND_VEIL 8 +#define ABILITY_STATIC 9 +#define ABILITY_VOLT_ABSORB 10 +#define ABILITY_WATER_ABSORB 11 +#define ABILITY_OBLIVIOUS 12 +#define ABILITY_CLOUD_NINE 13 +#define ABILITY_COMPOUND_EYES 14 +#define ABILITY_INSOMNIA 15 +#define ABILITY_COLOR_CHANGE 16 +#define ABILITY_IMMUNITY 17 +#define ABILITY_FLASH_FIRE 18 +#define ABILITY_SHIELD_DUST 19 +#define ABILITY_OWN_TEMPO 20 +#define ABILITY_SUCTION_CUPS 21 +#define ABILITY_INTIMIDATE 22 +#define ABILITY_SHADOW_TAG 23 +#define ABILITY_ROUGH_SKIN 24 +#define ABILITY_WONDER_GUARD 25 +#define ABILITY_LEVITATE 26 +#define ABILITY_EFFECT_SPORE 27 +#define ABILITY_SYNCHRONIZE 28 +#define ABILITY_CLEAR_BODY 29 +#define ABILITY_NATURAL_CURE 30 +#define ABILITY_LIGHTNING_ROD 31 +#define ABILITY_SERENE_GRACE 32 +#define ABILITY_SWIFT_SWIM 33 +#define ABILITY_CHLOROPHYLL 34 +#define ABILITY_ILLUMINATE 35 +#define ABILITY_TRACE 36 +#define ABILITY_HUGE_POWER 37 +#define ABILITY_POISON_POINT 38 +#define ABILITY_INNER_FOCUS 39 +#define ABILITY_MAGMA_ARMOR 40 +#define ABILITY_WATER_VEIL 41 +#define ABILITY_MAGNET_PULL 42 +#define ABILITY_SOUNDPROOF 43 +#define ABILITY_RAIN_DISH 44 +#define ABILITY_SAND_STREAM 45 +#define ABILITY_PRESSURE 46 +#define ABILITY_THICK_FAT 47 +#define ABILITY_EARLY_BIRD 48 +#define ABILITY_FLAME_BODY 49 +#define ABILITY_RUN_AWAY 50 +#define ABILITY_KEEN_EYE 51 +#define ABILITY_HYPER_CUTTER 52 +#define ABILITY_PICKUP 53 +#define ABILITY_TRUANT 54 +#define ABILITY_HUSTLE 55 +#define ABILITY_CUTE_CHARM 56 +#define ABILITY_PLUS 57 +#define ABILITY_MINUS 58 +#define ABILITY_FORECAST 59 +#define ABILITY_STICKY_HOLD 60 +#define ABILITY_SHED_SKIN 61 +#define ABILITY_GUTS 62 +#define ABILITY_MARVEL_SCALE 63 +#define ABILITY_LIQUID_OOZE 64 +#define ABILITY_OVERGROW 65 +#define ABILITY_BLAZE 66 +#define ABILITY_TORRENT 67 +#define ABILITY_SWARM 68 +#define ABILITY_ROCK_HEAD 69 +#define ABILITY_DROUGHT 70 +#define ABILITY_ARENA_TRAP 71 +#define ABILITY_VITAL_SPIRIT 72 +#define ABILITY_WHITE_SMOKE 73 +#define ABILITY_PURE_POWER 74 +#define ABILITY_SHELL_ARMOR 75 +#define ABILITY_AIR_LOCK 76 +#define ABILITY_TANGLED_FEET 77 +#define ABILITY_MOTOR_DRIVE 78 +#define ABILITY_RIVALRY 79 +#define ABILITY_STEADFAST 80 +#define ABILITY_SNOW_CLOAK 81 +#define ABILITY_GLUTTONY 82 +#define ABILITY_ANGER_POINT 83 +#define ABILITY_UNBURDEN 84 +#define ABILITY_HEATPROOF 85 +#define ABILITY_SIMPLE 86 +#define ABILITY_DRY_SKIN 87 +#define ABILITY_DOWNLOAD 88 +#define ABILITY_IRON_FIST 89 +#define ABILITY_POISON_HEAL 90 +#define ABILITY_ADAPTABILITY 91 +#define ABILITY_SKILL_LINK 92 +#define ABILITY_HYDRATION 93 +#define ABILITY_SOLAR_POWER 94 +#define ABILITY_QUICK_FEET 95 +#define ABILITY_NORMALIZE 96 +#define ABILITY_SNIPER 97 +#define ABILITY_MAGIC_GUARD 98 +#define ABILITY_NO_GUARD 99 +#define ABILITY_STALL 100 +#define ABILITY_TECHNICIAN 101 +#define ABILITY_LEAF_GUARD 102 +#define ABILITY_KLUTZ 103 +#define ABILITY_MOLD_BREAKER 104 +#define ABILITY_SUPER_LUCK 105 +#define ABILITY_AFTERMATH 106 +#define ABILITY_ANTICIPATION 107 +#define ABILITY_FOREWARN 108 +#define ABILITY_UNAWARE 109 +#define ABILITY_TINTED_LENS 110 +#define ABILITY_FILTER 111 +#define ABILITY_SLOW_START 112 +#define ABILITY_SCRAPPY 113 +#define ABILITY_STORM_DRAIN 114 +#define ABILITY_ICE_BODY 115 +#define ABILITY_SOLID_ROCK 116 +#define ABILITY_SNOW_WARNING 117 +#define ABILITY_HONEY_GATHER 118 +#define ABILITY_FRISK 119 +#define ABILITY_RECKLESS 120 +#define ABILITY_MULTITYPE 121 +#define ABILITY_FLOWER_GIFT 122 +#define ABILITY_BAD_DREAMS 123 + +#endif //POKEDIAMOND_CONSTANTS_ABILITIES_H diff --git a/include/move_data.h b/include/move_data.h new file mode 100644 index 00000000..d4e3c128 --- /dev/null +++ b/include/move_data.h @@ -0,0 +1,6 @@ +#ifndef POKEDIAMOND_MOVE_DATA_H +#define POKEDIAMOND_MOVE_DATA_H + +u32 FUN_0206AB30(u16 move, u8 ppUp); + +#endif //POKEDIAMOND_MOVE_DATA_H diff --git a/include/pokemon.h b/include/pokemon.h index e2a32e83..7cc5ef5d 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -9,9 +9,9 @@ #include "seals.h" #define MON_DATA_PERSONALITY 0 -#define MON_DATA_IS_ENCRYPTED 1 -#define MON_DATA_CONTROL_4_1 2 -#define MON_DATA_CONTROL_4_2 3 +#define MON_DATA_PARTY_LOCK 1 +#define MON_DATA_BOX_LOCK 2 +#define MON_DATA_CHECKSUM_FAILED 3 #define MON_DATA_CHECKSUM 4 #define MON_DATA_SPECIES 5 #define MON_DATA_HELD_ITEM 6 @@ -34,7 +34,34 @@ #define MON_DATA_TOUGH 23 #define MON_DATA_SHEEN 24 #define MON_DATA_SINNOH_CHAMP_RIBBON 25 -// TODO: ribbon flags through 53 +#define MON_DATA_SINNOH_RIBBON_26 26 +#define MON_DATA_SINNOH_RIBBON_27 27 +#define MON_DATA_SINNOH_RIBBON_28 28 +#define MON_DATA_SINNOH_RIBBON_29 29 +#define MON_DATA_SINNOH_RIBBON_30 30 +#define MON_DATA_SINNOH_RIBBON_31 31 +#define MON_DATA_SINNOH_RIBBON_32 32 +#define MON_DATA_SINNOH_RIBBON_33 33 +#define MON_DATA_SINNOH_RIBBON_34 34 +#define MON_DATA_SINNOH_RIBBON_35 35 +#define MON_DATA_SINNOH_RIBBON_36 36 +#define MON_DATA_SINNOH_RIBBON_37 37 +#define MON_DATA_SINNOH_RIBBON_38 38 +#define MON_DATA_SINNOH_RIBBON_39 39 +#define MON_DATA_SINNOH_RIBBON_40 40 +#define MON_DATA_SINNOH_RIBBON_41 41 +#define MON_DATA_SINNOH_RIBBON_42 42 +#define MON_DATA_SINNOH_RIBBON_43 43 +#define MON_DATA_SINNOH_RIBBON_44 44 +#define MON_DATA_SINNOH_RIBBON_45 45 +#define MON_DATA_SINNOH_RIBBON_46 46 +#define MON_DATA_SINNOH_RIBBON_47 47 +#define MON_DATA_SINNOH_RIBBON_48 48 +#define MON_DATA_SINNOH_RIBBON_49 49 +#define MON_DATA_SINNOH_RIBBON_50 50 +#define MON_DATA_SINNOH_RIBBON_51 51 +#define MON_DATA_SINNOH_RIBBON_52 52 +#define MON_DATA_SINNOH_RIBBON_53 53 #define MON_DATA_MOVE1 54 #define MON_DATA_MOVE2 55 #define MON_DATA_MOVE3 56 @@ -60,7 +87,37 @@ #define MON_DATA_IS_EGG 76 #define MON_DATA_HAS_NICKNAME 77 #define MON_DATA_COOL_RIBBON 78 -// TODO: ribbon flags through 109 +#define MON_DATA_HOENN_RIBBON_79 79 +#define MON_DATA_HOENN_RIBBON_80 80 +#define MON_DATA_HOENN_RIBBON_81 81 +#define MON_DATA_HOENN_RIBBON_82 82 +#define MON_DATA_HOENN_RIBBON_83 83 +#define MON_DATA_HOENN_RIBBON_84 84 +#define MON_DATA_HOENN_RIBBON_85 85 +#define MON_DATA_HOENN_RIBBON_86 86 +#define MON_DATA_HOENN_RIBBON_87 87 +#define MON_DATA_HOENN_RIBBON_88 88 +#define MON_DATA_HOENN_RIBBON_89 89 +#define MON_DATA_HOENN_RIBBON_90 90 +#define MON_DATA_HOENN_RIBBON_91 91 +#define MON_DATA_HOENN_RIBBON_92 92 +#define MON_DATA_HOENN_RIBBON_93 93 +#define MON_DATA_HOENN_RIBBON_94 94 +#define MON_DATA_HOENN_RIBBON_95 95 +#define MON_DATA_HOENN_RIBBON_96 96 +#define MON_DATA_HOENN_RIBBON_97 97 +#define MON_DATA_HOENN_RIBBON_98 98 +#define MON_DATA_HOENN_RIBBON_99 99 +#define MON_DATA_HOENN_RIBBON_100 100 +#define MON_DATA_HOENN_RIBBON_101 101 +#define MON_DATA_HOENN_RIBBON_102 102 +#define MON_DATA_HOENN_RIBBON_103 103 +#define MON_DATA_HOENN_RIBBON_104 104 +#define MON_DATA_HOENN_RIBBON_105 105 +#define MON_DATA_HOENN_RIBBON_106 106 +#define MON_DATA_HOENN_RIBBON_107 107 +#define MON_DATA_HOENN_RIBBON_108 108 +#define MON_DATA_HOENN_RIBBON_109 109 #define MON_DATA_FATEFUL_ENCOUNTER 110 #define MON_DATA_GENDER 111 #define MON_DATA_FORME 112 @@ -73,7 +130,27 @@ #define MON_DATA_NICKNAME_3 119 // ??? #define MON_DATA_UNK_120 120 #define MON_DATA_GAME_VERSION 121 -// TODO: ribbon flags 122-142 +#define MON_DATA_SINNOH_RIBBON_122 122 +#define MON_DATA_SINNOH_RIBBON_123 123 +#define MON_DATA_SINNOH_RIBBON_124 124 +#define MON_DATA_SINNOH_RIBBON_125 125 +#define MON_DATA_SINNOH_RIBBON_126 126 +#define MON_DATA_SINNOH_RIBBON_127 127 +#define MON_DATA_SINNOH_RIBBON_128 128 +#define MON_DATA_SINNOH_RIBBON_129 129 +#define MON_DATA_SINNOH_RIBBON_130 130 +#define MON_DATA_SINNOH_RIBBON_131 131 +#define MON_DATA_SINNOH_RIBBON_132 132 +#define MON_DATA_SINNOH_RIBBON_133 133 +#define MON_DATA_SINNOH_RIBBON_134 134 +#define MON_DATA_SINNOH_RIBBON_135 135 +#define MON_DATA_SINNOH_RIBBON_136 136 +#define MON_DATA_SINNOH_RIBBON_137 137 +#define MON_DATA_SINNOH_RIBBON_138 138 +#define MON_DATA_SINNOH_RIBBON_139 139 +#define MON_DATA_SINNOH_RIBBON_140 140 +#define MON_DATA_SINNOH_RIBBON_141 141 +#define MON_DATA_SINNOH_RIBBON_142 142 #define MON_DATA_OT_NAME 143 #define MON_DATA_OT_NAME_2 144 // ??? #define MON_DATA_EGG_MET_YEAR 145 @@ -103,10 +180,10 @@ #define MON_DATA_SEAL_STRUCT 169 #define MON_DATA_SEAL_COORDS 170 #define MON_DATA_SPECIES_EXISTS 171 -#define MON_DATA_SANITY_CHECK_172 172 +#define MON_DATA_SANITY_IS_EGG 172 #define MON_DATA_SPECIES2 173 #define MON_DATA_IVS_WORD 174 -#define MON_DATA_IS_FEMALE 175 +#define MON_DATA_UNK_175 175 #define MON_DATA_TYPE_1 176 #define MON_DATA_TYPE_2 177 #define MON_DATA_SPECIES_NAME 178 @@ -115,6 +192,9 @@ #define MON_RATIO_FEMALE 254 #define MON_RATIO_UNKNOWN 255 +#define POKEMON_NAME_LENGTH 10 +#define OT_NAME_LENGTH 7 + enum MonGender { MON_MALE = 0, @@ -317,7 +397,7 @@ typedef struct { /* 0x10 */ u32 hpIV:5, atkIV:5, defIV:5, spdIV:5, spatkIV:5, spdefIV:5, isEgg:1, isNicknamed:1; // TODO: Finish HoennRibbonSet /* 0x14 */ u32 ribbonFlags; // cool, ... - /* 0x18 */ u8 fatefulEncounter:1, female:1, genderless:1, alternateForm:5; + /* 0x18 */ u8 fatefulEncounter:1, gender:2, alternateForm:5; /* 0x19 */ u8 HGSS_shinyLeaves; // TODO: Turn into bitfield /* 0x1A */ u16 Unused; /* 0x1C */ u16 Platinum_EggLocation; @@ -326,10 +406,10 @@ typedef struct { typedef struct { /* 0x00 */ u16 nickname[11]; - /* 0x1A */ u8 Unused; - /* 0x1B */ u8 originGame; + /* 0x16 */ u8 Unused; + /* 0x17 */ u8 originGame; // TODO: Finish SinnohRibbonSet2 - /* 0x1C */ u32 sinnohRibbons2; // cool, ... + /* 0x18 */ u64 sinnohRibbons2; // cool, ... } PokemonDataBlockC; typedef struct { @@ -340,7 +420,8 @@ typedef struct { /* 0x18 */ u16 DP_MetLocation; /* 0x1A */ u8 pokerus; /* 0x1B */ u8 pokeball; - /* 0x1C */ u8 flags; + /* 0x1C */ u8 metLevel:7; + u8 metGender:1; /* 0x1D */ u8 encounterType; /* 0x1E */ u16 HGSS_Pokeball; } PokemonDataBlockD; @@ -416,14 +497,14 @@ int CalcLevelBySpeciesAndExp(int species, int experience); u32 GetMonData(); u32 GetBoxMonData(); #else -u32 GetMonData(struct Pokemon * pokemon, u32 attr, void * ptr); -u32 GetBoxMonData(struct BoxPokemon * pokemon, u32 attr, void * ptr); +u32 GetMonData(struct Pokemon * pokemon, int attr, void * ptr); +u32 GetBoxMonData(struct BoxPokemon * pokemon, int attr, void * ptr); #endif -void SetMonDataInternal(struct Pokemon * pokemon, u32 attr, const void * ptr); -void SetMonData(struct Pokemon * pokemon, u32 attr, const void * ptr); -void SetBoxMonData(struct BoxPokemon * pokemon, u32 attr, const void * ptr); -void SetBoxMonDataEncrypted(struct BoxPokemon * pokemon, u32 attr, const void * ptr); -void AddMonData(struct Pokemon * pokemon, u32 attr, u32 amount); -void AddBoxMonData(struct Pokemon * pokemon, u32 attr, u32 amount); +void SetMonDataInternal(struct Pokemon * pokemon, int attr, const void * ptr); +void SetMonData(struct Pokemon * pokemon, int attr, const void * ptr); +void SetBoxMonData(struct BoxPokemon * pokemon, int attr, const void * ptr); +void SetBoxMonDataEncrypted(struct BoxPokemon * pokemon, int attr, const void * ptr); +void AddMonData(struct Pokemon * pokemon, int attr, u32 amount); +void AddBoxMonData(struct Pokemon * pokemon, int attr, u32 amount); #endif //POKEDIAMOND_POKEMON_H diff --git a/include/proto.h b/include/proto.h new file mode 100644 index 00000000..37655429 --- /dev/null +++ b/include/proto.h @@ -0,0 +1,13 @@ +#ifndef POKEDIAMOND_PROTO_H +#define POKEDIAMOND_PROTO_H + +// For homeless function declarations + +u16 * FUN_0200AA50(u16 species, u32 heap_id); +void FUN_02021A74(u16 * dest, u16 * src); +void FUN_02021A20(void * ptr); +void FUN_02021E28(u16 * dest, u16 * src); +u32 FUN_0206E7B8(u16 item, u32 a1, u32 a2); +u32 GetArceusTypeByPlate(u16 plate); + +#endif //POKEDIAMOND_PROTO_H diff --git a/include/string_util.h b/include/string_util.h index 53d4e5f4..e9079229 100644 --- a/include/string_util.h +++ b/include/string_util.h @@ -7,6 +7,9 @@ #include "global.h" +#define EOS 0xFFFF +#define NON_DIGIT 0xE2 + enum PrintingMode { NORMAL, PAD_SPACE, diff --git a/include/text.h b/include/text.h new file mode 100644 index 00000000..cec36a30 --- /dev/null +++ b/include/text.h @@ -0,0 +1,6 @@ +#ifndef POKEDIAMOND_TEXT_H +#define POKEDIAMOND_TEXT_H + +void GetSpeciesName(u16 species, u32 heap_id, u16 * dest); + +#endif //POKEDIAMOND_TEXT_H |