summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-06-12 20:54:34 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-06-12 20:54:34 -0400
commit0747fe684c46d010d8917c4257dd1f1a52241385 (patch)
treebb1f1ae0e2fecc944124b66f8a6af7809223c2d4
parent6e12ebdda862b77eb4d6afa6533e82373e5834ce (diff)
GetBoxMonDataInternal
-rw-r--r--arm9/asm/pokemon_s.s725
-rw-r--r--arm9/asm/unk_0206E5B4.s730
-rw-r--r--arm9/src/pokemon.c415
-rw-r--r--arm9/src/string_util.c3
-rw-r--r--include/constants/abilities.h129
-rw-r--r--include/move_data.h6
-rw-r--r--include/pokemon.h123
-rw-r--r--include/proto.h13
-rw-r--r--include/string_util.h3
-rw-r--r--include/text.h6
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