summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/contest_ai.s5292
-rw-r--r--asm/contest_link_80C2020.s12
-rw-r--r--asm/contest_link_80C857C.s8
-rw-r--r--common_syms/engine/save.txt4
-rw-r--r--data/battle_anim.s1051
-rw-r--r--data/battle_anim_80A7E7C.s24
-rw-r--r--data/contest_ai.s143
-rw-r--r--data/item_ball_scripts.inc32
-rw-r--r--data/maps/events/Route113.inc2
-rw-r--r--data/scripts/maps/DewfordTown_Gym.inc2
-rw-r--r--data/scripts/maps/DewfordTown_Hall.inc2
-rw-r--r--data/scripts/maps/FallarborTown_House1.inc2
-rw-r--r--data/scripts/maps/FortreeCity_Gym.inc2
-rw-r--r--data/scripts/maps/FortreeCity_House2.inc2
-rw-r--r--data/scripts/maps/GraniteCave_1F.inc2
-rw-r--r--data/scripts/maps/GraniteCave_StevensRoom.inc2
-rw-r--r--data/scripts/maps/LavaridgeTown_Gym_1F.inc2
-rw-r--r--data/scripts/maps/LilycoveCity_DepartmentStore_4F.inc16
-rw-r--r--data/scripts/maps/LilycoveCity_House2.inc2
-rw-r--r--data/scripts/maps/MauvilleCity.inc2
-rw-r--r--data/scripts/maps/MauvilleCity_GameCorner.inc30
-rw-r--r--data/scripts/maps/MauvilleCity_Gym.inc2
-rw-r--r--data/scripts/maps/MauvilleCity_House1.inc2
-rw-r--r--data/scripts/maps/MossdeepCity_Gym.inc2
-rw-r--r--data/scripts/maps/MossdeepCity_StevensHouse.inc4
-rw-r--r--data/scripts/maps/PacifidlogTown_House2.inc4
-rw-r--r--data/scripts/maps/PetalburgCity_Gym.inc2
-rw-r--r--data/scripts/maps/PetalburgCity_WallysHouse.inc2
-rw-r--r--data/scripts/maps/Route104.inc2
-rw-r--r--data/scripts/maps/Route110_TrickHouseEnd.inc2
-rw-r--r--data/scripts/maps/Route110_TrickHouseEntrance.inc2
-rw-r--r--data/scripts/maps/Route114.inc2
-rw-r--r--data/scripts/maps/Route114_FossilManiacsHouse.inc2
-rw-r--r--data/scripts/maps/Route119.inc2
-rw-r--r--data/scripts/maps/Route123.inc2
-rw-r--r--data/scripts/maps/RustboroCity_CuttersHouse.inc2
-rw-r--r--data/scripts/maps/RustboroCity_Gym.inc2
-rw-r--r--data/scripts/maps/RusturfTunnel.inc2
-rw-r--r--data/scripts/maps/SSTidalRooms.inc2
-rw-r--r--data/scripts/maps/SlateportCity.inc4
-rw-r--r--data/scripts/maps/SlateportCity_ContestHall.inc2
-rw-r--r--data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc2
-rw-r--r--data/scripts/maps/SootopolisCity_Gym_1F.inc2
-rw-r--r--data/scripts/maps/SootopolisCity_House1.inc2
-rw-r--r--data/scripts/maps/VerdanturfTown_ContestLobby.inc2
-rw-r--r--data/scripts/secret_power_tm.inc2
-rw-r--r--include/battle_ai.h8
-rw-r--r--include/constants/items.h116
-rw-r--r--include/contest.h103
-rwxr-xr-xinclude/contest_ai.h16
-rw-r--r--include/ewram.h4
-rw-r--r--include/graphics.h604
-rw-r--r--include/save.h83
-rw-r--r--ld_script.txt7
-rw-r--r--src/battle/battle_ai.c12
-rw-r--r--src/battle/battle_anim.c1269
-rw-r--r--src/battle/battle_anim_80A7E7C.c78
-rw-r--r--src/contest.c9
-rwxr-xr-xsrc/contest_ai.c1763
-rw-r--r--src/data/items_de.h116
-rw-r--r--src/data/items_en.h116
-rw-r--r--src/data/pokemon/tmhm_learnsets.h9824
-rw-r--r--src/engine/clear_save_data_menu.c2
-rw-r--r--src/engine/link.c2
-rw-r--r--src/engine/main_menu.c16
-rw-r--r--src/engine/mystery_event_menu.c2
-rw-r--r--src/engine/reset_rtc_screen.c2
-rw-r--r--src/engine/save.c683
-rw-r--r--src/engine/save_failed_screen.c2
-rw-r--r--src/field/battle_tower.c2
-rw-r--r--src/field/daycare.c2
-rw-r--r--src/field/item_use.c2
-rw-r--r--src/field/party_menu.c2
-rw-r--r--src/field/player_pc.c2
-rw-r--r--src/field/start_menu.c8
-rw-r--r--src/scene/hall_of_fame.c6
-rw-r--r--src/scene/intro.c4
-rw-r--r--sym_ewram.txt12
78 files changed, 13885 insertions, 7682 deletions
diff --git a/asm/contest_ai.s b/asm/contest_ai.s
deleted file mode 100644
index 709b289c2..000000000
--- a/asm/contest_ai.s
+++ /dev/null
@@ -1,5292 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "include/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_81288F4
-sub_81288F4: @ 81288F4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _0812893C @ =gSharedMem + 0x192E4
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x44
- bl memset
- movs r3, 0x64
- adds r2, r4, 0
- movs r1, 0x3
- adds r0, r2, 0
- adds r0, 0x8
-_08128910:
- strb r3, [r0]
- subs r0, 0x1
- subs r1, 0x1
- cmp r1, 0
- bge _08128910
- adds r3, r2, 0
- adds r3, 0x41
- movs r1, 0
- strb r5, [r3]
- adds r0, r2, 0
- adds r0, 0x40
- strb r1, [r0]
- ldr r1, _08128940 @ =gContestMons
- ldrb r0, [r3]
- lsls r0, 6
- adds r1, 0x18
- adds r0, r1
- ldr r0, [r0]
- str r0, [r2, 0x14]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812893C: .4byte gSharedMem + 0x192E4
-_08128940: .4byte gContestMons
- thumb_func_end sub_81288F4
-
- thumb_func_start sub_8128944
-sub_8128944: @ 8128944
- push {r4-r6,lr}
- ldr r1, _081289A8 @ =gSharedMem + 0x192E4
- ldr r0, [r1, 0x14]
- cmp r0, 0
- beq _08128974
- adds r4, r1, 0
- movs r5, 0
-_08128952:
- ldr r0, [r4, 0x14]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08128962
- strb r5, [r4]
- bl sub_81289AC
-_08128962:
- ldr r1, [r4, 0x14]
- lsrs r1, 1
- str r1, [r4, 0x14]
- ldrb r0, [r4, 0x10]
- adds r0, 0x1
- strb r0, [r4, 0x10]
- strb r5, [r4, 0x4]
- cmp r1, 0
- bne _08128952
-_08128974:
- movs r6, 0x3
- ldr r5, _081289A8 @ =gSharedMem + 0x192E4
-_08128978:
- bl Random
- adds r4, r0, 0
- ands r4, r6
- adds r3, r5, 0x5
- adds r0, r4, r3
- ldrb r2, [r0]
- movs r1, 0
- ldrb r0, [r5, 0x5]
- cmp r2, r0
- bcc _0812899C
-_0812898E:
- adds r1, 0x1
- cmp r1, 0x3
- bgt _0812899C
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r2, r0
- bcs _0812898E
-_0812899C:
- cmp r1, 0x4
- bne _08128978
- adds r0, r4, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_081289A8: .4byte gSharedMem + 0x192E4
- thumb_func_end sub_8128944
-
- thumb_func_start sub_81289AC
-sub_81289AC: @ 81289AC
- push {r4-r6,lr}
- ldr r1, _081289F4 @ =gSharedMem + 0x192E4
- ldrb r0, [r1]
- adds r2, r1, 0
- cmp r0, 0x2
- beq _08128A76
- adds r4, r1, 0
- ldr r5, _081289F8 @ =gAIScriptPtr
- ldr r6, _081289FC @ =gUnknown_0203858E
-_081289BE:
- ldrb r0, [r4]
- cmp r0, 0x1
- beq _08128A0E
- cmp r0, 0x1
- bgt _08128A6E
- cmp r0, 0
- bne _08128A6E
- ldr r1, _08128A00 @ =gContestAIs
- ldrb r0, [r4, 0x10]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- str r0, [r5]
- ldrb r1, [r4, 0x4]
- lsls r1, 1
- adds r0, r4, 0
- adds r0, 0x41
- ldrb r0, [r0]
- lsls r0, 6
- adds r1, r0
- adds r1, r6
- ldrh r1, [r1]
- adds r0, r1, 0
- cmp r0, 0
- bne _08128A04
- strh r0, [r4, 0x2]
- b _08128A06
- .align 2, 0
-_081289F4: .4byte gSharedMem + 0x192E4
-_081289F8: .4byte gAIScriptPtr
-_081289FC: .4byte gUnknown_0203858E
-_08128A00: .4byte gContestAIs
-_08128A04:
- strh r1, [r4, 0x2]
-_08128A06:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08128A6E
-_08128A0E:
- ldrh r1, [r1, 0x2]
- cmp r1, 0
- beq _08128A2C
- ldr r1, _08128A28 @ =sContestAICmdTable
- ldr r0, [r5]
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- b _08128A3C
- .align 2, 0
-_08128A28: .4byte sContestAICmdTable
-_08128A2C:
- adds r0, r4, 0x5
- ldrb r2, [r4, 0x4]
- adds r0, r2
- strb r1, [r0]
- ldrb r1, [r4, 0x9]
- movs r0, 0x1
- orrs r0, r1
- strb r0, [r4, 0x9]
-_08128A3C:
- ldr r2, _08128A5C @ =gSharedMem + 0x192E4
- ldrb r1, [r2, 0x9]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08128A6E
- ldrb r0, [r2, 0x4]
- adds r0, 0x1
- movs r1, 0
- strb r0, [r2, 0x4]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bhi _08128A60
- strb r1, [r2]
- b _08128A66
- .align 2, 0
-_08128A5C: .4byte gSharedMem + 0x192E4
-_08128A60:
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
-_08128A66:
- ldrb r1, [r4, 0x9]
- movs r0, 0xFE
- ands r0, r1
- strb r0, [r4, 0x9]
-_08128A6E:
- adds r1, r2, 0
- ldrb r0, [r1]
- cmp r0, 0x2
- bne _081289BE
-_08128A76:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81289AC
-
- thumb_func_start sub_8128A7C
-sub_8128A7C: @ 8128A7C
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- movs r1, 0
- ldr r3, _08128AA4 @ =gSharedMem + 0x192D0
- ldrb r0, [r3]
- cmp r0, r2
- beq _08128A9A
-_08128A8C:
- adds r1, 0x1
- cmp r1, 0x3
- bgt _08128A9A
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, r2
- bne _08128A8C
-_08128A9A:
- lsls r0, r1, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08128AA4: .4byte gSharedMem + 0x192D0
- thumb_func_end sub_8128A7C
-
- thumb_func_start ContestAICmd_unk_00
-ContestAICmd_unk_00: @ 8128AA8
- push {lr}
- ldr r2, _08128AD0 @ =gSharedMem + 0x192E4
- adds r1, r2, 0x5
- ldrb r0, [r2, 0x4]
- adds r1, r0
- ldr r3, _08128AD4 @ =gAIScriptPtr
- ldr r0, [r3]
- ldrb r0, [r0, 0x1]
- lsls r0, 24
- asrs r0, 24
- ldrb r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _08128AD8
- movs r1, 0xFF
- b _08128ADE
- .align 2, 0
-_08128AD0: .4byte gSharedMem + 0x192E4
-_08128AD4: .4byte gAIScriptPtr
-_08128AD8:
- cmp r0, 0
- bge _08128ADE
- movs r1, 0
-_08128ADE:
- adds r0, r2, 0x5
- ldrb r2, [r2, 0x4]
- adds r0, r2
- strb r1, [r0]
- ldr r0, [r3]
- adds r0, 0x2
- str r0, [r3]
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_00
-
- thumb_func_start ContestAICmd_get_turn
-ContestAICmd_get_turn: @ 8128AF0
- ldr r1, _08128B04 @ =gSharedMem + 0x192E4
- adds r0, r1, 0
- subs r0, 0xE0
- ldrb r0, [r0, 0x1]
- strh r0, [r1, 0x18]
- ldr r1, _08128B08 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_08128B04: .4byte gSharedMem + 0x192E4
-_08128B08: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_get_turn
-
- thumb_func_start ContestAICmd_unk_02
-ContestAICmd_unk_02: @ 8128B0C
- push {lr}
- bl ContestAICmd_get_turn
- ldr r0, _08128B3C @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08128B40 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bge _08128B44
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08128B48
- .align 2, 0
-_08128B3C: .4byte gSharedMem + 0x192E4
-_08128B40: .4byte gAIScriptPtr
-_08128B44:
- adds r0, r2, 0x5
- str r0, [r3]
-_08128B48:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_02
-
- thumb_func_start ContestAICmd_unk_03
-ContestAICmd_unk_03: @ 8128B4C
- push {lr}
- bl ContestAICmd_get_turn
- ldr r0, _08128B7C @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08128B80 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- ble _08128B84
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08128B88
- .align 2, 0
-_08128B7C: .4byte gSharedMem + 0x192E4
-_08128B80: .4byte gAIScriptPtr
-_08128B84:
- adds r0, r2, 0x5
- str r0, [r3]
-_08128B88:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_03
-
- thumb_func_start ContestAICmd_unk_04
-ContestAICmd_unk_04: @ 8128B8C
- push {lr}
- bl ContestAICmd_get_turn
- ldr r0, _08128BBC @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08128BC0 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bne _08128BC4
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08128BC8
- .align 2, 0
-_08128BBC: .4byte gSharedMem + 0x192E4
-_08128BC0: .4byte gAIScriptPtr
-_08128BC4:
- adds r0, r2, 0x5
- str r0, [r3]
-_08128BC8:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_04
-
- thumb_func_start ContestAICmd_unk_05
-ContestAICmd_unk_05: @ 8128BCC
- push {lr}
- bl ContestAICmd_get_turn
- ldr r0, _08128BFC @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08128C00 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- beq _08128C04
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08128C08
- .align 2, 0
-_08128BFC: .4byte gSharedMem + 0x192E4
-_08128C00: .4byte gAIScriptPtr
-_08128C04:
- adds r0, r2, 0x5
- str r0, [r3]
-_08128C08:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_05
-
- thumb_func_start ContestAICmd_get_excitement
-ContestAICmd_get_excitement: @ 8128C0C
- ldr r1, _08128C24 @ =gSharedMem + 0x192E4
- adds r0, r1, 0
- subs r0, 0xE0
- ldrb r0, [r0, 0x13]
- lsls r0, 24
- asrs r0, 24
- strh r0, [r1, 0x18]
- ldr r1, _08128C28 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_08128C24: .4byte gSharedMem + 0x192E4
-_08128C28: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_get_excitement
-
- thumb_func_start ContestAICmd_unk_07
-ContestAICmd_unk_07: @ 8128C2C
- push {lr}
- bl ContestAICmd_get_excitement
- ldr r0, _08128C5C @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08128C60 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bge _08128C64
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08128C68
- .align 2, 0
-_08128C5C: .4byte gSharedMem + 0x192E4
-_08128C60: .4byte gAIScriptPtr
-_08128C64:
- adds r0, r2, 0x5
- str r0, [r3]
-_08128C68:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_07
-
- thumb_func_start ContestAICmd_unk_08
-ContestAICmd_unk_08: @ 8128C6C
- push {lr}
- bl ContestAICmd_get_excitement
- ldr r0, _08128C9C @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08128CA0 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- ble _08128CA4
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08128CA8
- .align 2, 0
-_08128C9C: .4byte gSharedMem + 0x192E4
-_08128CA0: .4byte gAIScriptPtr
-_08128CA4:
- adds r0, r2, 0x5
- str r0, [r3]
-_08128CA8:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_08
-
- thumb_func_start ContestAICmd_unk_09
-ContestAICmd_unk_09: @ 8128CAC
- push {lr}
- bl ContestAICmd_get_excitement
- ldr r0, _08128CDC @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08128CE0 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bne _08128CE4
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08128CE8
- .align 2, 0
-_08128CDC: .4byte gSharedMem + 0x192E4
-_08128CE0: .4byte gAIScriptPtr
-_08128CE4:
- adds r0, r2, 0x5
- str r0, [r3]
-_08128CE8:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_09
-
- thumb_func_start ContestAICmd_unk_0A
-ContestAICmd_unk_0A: @ 8128CEC
- push {lr}
- bl ContestAICmd_get_excitement
- ldr r0, _08128D1C @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08128D20 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- beq _08128D24
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08128D28
- .align 2, 0
-_08128D1C: .4byte gSharedMem + 0x192E4
-_08128D20: .4byte gAIScriptPtr
-_08128D24:
- adds r0, r2, 0x5
- str r0, [r3]
-_08128D28:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_0A
-
- thumb_func_start ContestAICmd_get_user_order
-ContestAICmd_get_user_order: @ 8128D2C
- ldr r1, _08128D48 @ =gSharedMem + 0x192E4
- adds r2, r1, 0
- adds r2, 0x41
- adds r0, r1, 0
- subs r0, 0x14
- ldrb r2, [r2]
- adds r0, r2
- ldrb r0, [r0]
- strh r0, [r1, 0x18]
- ldr r1, _08128D4C @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_08128D48: .4byte gSharedMem + 0x192E4
-_08128D4C: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_get_user_order
-
- thumb_func_start ContestAICmd_unk_0C
-ContestAICmd_unk_0C: @ 8128D50
- push {lr}
- bl ContestAICmd_get_user_order
- ldr r0, _08128D80 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08128D84 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bge _08128D88
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08128D8C
- .align 2, 0
-_08128D80: .4byte gSharedMem + 0x192E4
-_08128D84: .4byte gAIScriptPtr
-_08128D88:
- adds r0, r2, 0x5
- str r0, [r3]
-_08128D8C:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_0C
-
- thumb_func_start ContestAICmd_unk_0D
-ContestAICmd_unk_0D: @ 8128D90
- push {lr}
- bl ContestAICmd_get_user_order
- ldr r0, _08128DC0 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08128DC4 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- ble _08128DC8
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08128DCC
- .align 2, 0
-_08128DC0: .4byte gSharedMem + 0x192E4
-_08128DC4: .4byte gAIScriptPtr
-_08128DC8:
- adds r0, r2, 0x5
- str r0, [r3]
-_08128DCC:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_0D
-
- thumb_func_start ContestAICmd_unk_0E
-ContestAICmd_unk_0E: @ 8128DD0
- push {lr}
- bl ContestAICmd_get_user_order
- ldr r0, _08128E00 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08128E04 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bne _08128E08
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08128E0C
- .align 2, 0
-_08128E00: .4byte gSharedMem + 0x192E4
-_08128E04: .4byte gAIScriptPtr
-_08128E08:
- adds r0, r2, 0x5
- str r0, [r3]
-_08128E0C:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_0E
-
- thumb_func_start ContestAICmd_unk_0F
-ContestAICmd_unk_0F: @ 8128E10
- push {lr}
- bl ContestAICmd_get_user_order
- ldr r0, _08128E40 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08128E44 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- beq _08128E48
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08128E4C
- .align 2, 0
-_08128E40: .4byte gSharedMem + 0x192E4
-_08128E44: .4byte gAIScriptPtr
-_08128E48:
- adds r0, r2, 0x5
- str r0, [r3]
-_08128E4C:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_0F
-
- thumb_func_start ContestAICmd_get_user_condition_maybe
-ContestAICmd_get_user_condition_maybe: @ 8128E50
- push {r4,lr}
- ldr r4, _08128E88 @ =gSharedMem + 0x192E4
- adds r0, r4, 0
- adds r0, 0x41
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r1, r4, 0
- subs r1, 0x84
- adds r0, r1
- ldrb r0, [r0, 0xD]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0xA
- bl __divsi3
- lsls r0, 24
- asrs r0, 24
- strh r0, [r4, 0x18]
- ldr r1, _08128E8C @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08128E88: .4byte gSharedMem + 0x192E4
-_08128E8C: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_get_user_condition_maybe
-
- thumb_func_start ContestAICmd_unk_11
-ContestAICmd_unk_11: @ 8128E90
- push {lr}
- bl ContestAICmd_get_user_condition_maybe
- ldr r0, _08128EC0 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08128EC4 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bge _08128EC8
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08128ECC
- .align 2, 0
-_08128EC0: .4byte gSharedMem + 0x192E4
-_08128EC4: .4byte gAIScriptPtr
-_08128EC8:
- adds r0, r2, 0x5
- str r0, [r3]
-_08128ECC:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_11
-
- thumb_func_start ContestAICmd_unk_12
-ContestAICmd_unk_12: @ 8128ED0
- push {lr}
- bl ContestAICmd_get_user_condition_maybe
- ldr r0, _08128F00 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08128F04 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- ble _08128F08
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08128F0C
- .align 2, 0
-_08128F00: .4byte gSharedMem + 0x192E4
-_08128F04: .4byte gAIScriptPtr
-_08128F08:
- adds r0, r2, 0x5
- str r0, [r3]
-_08128F0C:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_12
-
- thumb_func_start ContestAICmd_unk_13
-ContestAICmd_unk_13: @ 8128F10
- push {lr}
- bl ContestAICmd_get_user_condition_maybe
- ldr r0, _08128F40 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08128F44 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bne _08128F48
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08128F4C
- .align 2, 0
-_08128F40: .4byte gSharedMem + 0x192E4
-_08128F44: .4byte gAIScriptPtr
-_08128F48:
- adds r0, r2, 0x5
- str r0, [r3]
-_08128F4C:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_13
-
- thumb_func_start ContestAICmd_unk_14
-ContestAICmd_unk_14: @ 8128F50
- push {lr}
- bl ContestAICmd_get_user_condition_maybe
- ldr r0, _08128F80 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08128F84 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- beq _08128F88
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08128F8C
- .align 2, 0
-_08128F80: .4byte gSharedMem + 0x192E4
-_08128F84: .4byte gAIScriptPtr
-_08128F88:
- adds r0, r2, 0x5
- str r0, [r3]
-_08128F8C:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_14
-
- thumb_func_start ContestAICmd_unk_15
-ContestAICmd_unk_15: @ 8128F90
- ldr r2, _08128FB4 @ =gSharedMem + 0x192E4
- adds r0, r2, 0
- adds r0, 0x41
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r1, r2, 0
- subs r1, 0x84
- adds r0, r1
- ldrh r0, [r0, 0x4]
- strh r0, [r2, 0x18]
- ldr r1, _08128FB8 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_08128FB4: .4byte gSharedMem + 0x192E4
-_08128FB8: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_15
-
- thumb_func_start ContestAICmd_unk_16
-ContestAICmd_unk_16: @ 8128FBC
- push {r4,r5,lr}
- bl ContestAICmd_unk_15
- ldr r2, _08128FF4 @ =gSharedMem + 0x192E4
- ldr r4, _08128FF8 @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r1, [r3]
- ldrb r0, [r3, 0x1]
- lsls r0, 8
- orrs r1, r0
- movs r5, 0x18
- ldrsh r0, [r2, r5]
- lsls r1, 16
- asrs r1, 16
- cmp r0, r1
- bge _08128FFC
- ldrb r1, [r3, 0x2]
- ldrb r0, [r3, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r3, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r3, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _08129000
- .align 2, 0
-_08128FF4: .4byte gSharedMem + 0x192E4
-_08128FF8: .4byte gAIScriptPtr
-_08128FFC:
- adds r0, r3, 0x6
- str r0, [r4]
-_08129000:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_16
-
- thumb_func_start ContestAICmd_unk_17
-ContestAICmd_unk_17: @ 8129008
- push {r4,r5,lr}
- bl ContestAICmd_unk_15
- ldr r2, _08129040 @ =gSharedMem + 0x192E4
- ldr r4, _08129044 @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r1, [r3]
- ldrb r0, [r3, 0x1]
- lsls r0, 8
- orrs r1, r0
- movs r5, 0x18
- ldrsh r0, [r2, r5]
- lsls r1, 16
- asrs r1, 16
- cmp r0, r1
- ble _08129048
- ldrb r1, [r3, 0x2]
- ldrb r0, [r3, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r3, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r3, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _0812904C
- .align 2, 0
-_08129040: .4byte gSharedMem + 0x192E4
-_08129044: .4byte gAIScriptPtr
-_08129048:
- adds r0, r3, 0x6
- str r0, [r4]
-_0812904C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_17
-
- thumb_func_start ContestAICmd_unk_18
-ContestAICmd_unk_18: @ 8129054
- push {r4,r5,lr}
- bl ContestAICmd_unk_15
- ldr r2, _0812908C @ =gSharedMem + 0x192E4
- ldr r4, _08129090 @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r1, [r3]
- ldrb r0, [r3, 0x1]
- lsls r0, 8
- orrs r1, r0
- movs r5, 0x18
- ldrsh r0, [r2, r5]
- lsls r1, 16
- asrs r1, 16
- cmp r0, r1
- bne _08129094
- ldrb r1, [r3, 0x2]
- ldrb r0, [r3, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r3, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r3, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _08129098
- .align 2, 0
-_0812908C: .4byte gSharedMem + 0x192E4
-_08129090: .4byte gAIScriptPtr
-_08129094:
- adds r0, r3, 0x6
- str r0, [r4]
-_08129098:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_18
-
- thumb_func_start ContestAICmd_unk_19
-ContestAICmd_unk_19: @ 81290A0
- push {r4,r5,lr}
- bl ContestAICmd_unk_15
- ldr r2, _081290D8 @ =gSharedMem + 0x192E4
- ldr r4, _081290DC @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r1, [r3]
- ldrb r0, [r3, 0x1]
- lsls r0, 8
- orrs r1, r0
- movs r5, 0x18
- ldrsh r0, [r2, r5]
- lsls r1, 16
- asrs r1, 16
- cmp r0, r1
- beq _081290E0
- ldrb r1, [r3, 0x2]
- ldrb r0, [r3, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r3, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r3, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _081290E4
- .align 2, 0
-_081290D8: .4byte gSharedMem + 0x192E4
-_081290DC: .4byte gAIScriptPtr
-_081290E0:
- adds r0, r3, 0x6
- str r0, [r4]
-_081290E4:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_19
-
- thumb_func_start ContestAICmd_unk_1A
-ContestAICmd_unk_1A: @ 81290EC
- ldr r2, _08129108 @ =gSharedMem + 0x192E4
- ldr r1, _0812910C @ =gUnknown_02038670
- adds r0, r2, 0
- adds r0, 0x41
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2, 0x18]
- ldr r1, _08129110 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_08129108: .4byte gSharedMem + 0x192E4
-_0812910C: .4byte gUnknown_02038670
-_08129110: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_1A
-
- thumb_func_start ContestAICmd_unk_1B
-ContestAICmd_unk_1B: @ 8129114
- push {r4,r5,lr}
- bl ContestAICmd_unk_1A
- ldr r2, _0812914C @ =gSharedMem + 0x192E4
- ldr r4, _08129150 @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r1, [r3]
- ldrb r0, [r3, 0x1]
- lsls r0, 8
- orrs r1, r0
- movs r5, 0x18
- ldrsh r0, [r2, r5]
- lsls r1, 16
- asrs r1, 16
- cmp r0, r1
- bge _08129154
- ldrb r1, [r3, 0x2]
- ldrb r0, [r3, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r3, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r3, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _08129158
- .align 2, 0
-_0812914C: .4byte gSharedMem + 0x192E4
-_08129150: .4byte gAIScriptPtr
-_08129154:
- adds r0, r3, 0x6
- str r0, [r4]
-_08129158:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_1B
-
- thumb_func_start ContestAICmd_unk_1C
-ContestAICmd_unk_1C: @ 8129160
- push {r4,r5,lr}
- bl ContestAICmd_unk_1A
- ldr r2, _08129198 @ =gSharedMem + 0x192E4
- ldr r4, _0812919C @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r1, [r3]
- ldrb r0, [r3, 0x1]
- lsls r0, 8
- orrs r1, r0
- movs r5, 0x18
- ldrsh r0, [r2, r5]
- lsls r1, 16
- asrs r1, 16
- cmp r0, r1
- ble _081291A0
- ldrb r1, [r3, 0x2]
- ldrb r0, [r3, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r3, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r3, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _081291A4
- .align 2, 0
-_08129198: .4byte gSharedMem + 0x192E4
-_0812919C: .4byte gAIScriptPtr
-_081291A0:
- adds r0, r3, 0x6
- str r0, [r4]
-_081291A4:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_1C
-
- thumb_func_start ContestAICmd_unk_1D
-ContestAICmd_unk_1D: @ 81291AC
- push {r4,r5,lr}
- bl ContestAICmd_unk_1A
- ldr r2, _081291E4 @ =gSharedMem + 0x192E4
- ldr r4, _081291E8 @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r1, [r3]
- ldrb r0, [r3, 0x1]
- lsls r0, 8
- orrs r1, r0
- movs r5, 0x18
- ldrsh r0, [r2, r5]
- lsls r1, 16
- asrs r1, 16
- cmp r0, r1
- bne _081291EC
- ldrb r1, [r3, 0x2]
- ldrb r0, [r3, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r3, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r3, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _081291F0
- .align 2, 0
-_081291E4: .4byte gSharedMem + 0x192E4
-_081291E8: .4byte gAIScriptPtr
-_081291EC:
- adds r0, r3, 0x6
- str r0, [r4]
-_081291F0:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_1D
-
- thumb_func_start ContestAICmd_unk_1E
-ContestAICmd_unk_1E: @ 81291F8
- push {r4,r5,lr}
- bl ContestAICmd_unk_1A
- ldr r2, _08129230 @ =gSharedMem + 0x192E4
- ldr r4, _08129234 @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r1, [r3]
- ldrb r0, [r3, 0x1]
- lsls r0, 8
- orrs r1, r0
- movs r5, 0x18
- ldrsh r0, [r2, r5]
- lsls r1, 16
- asrs r1, 16
- cmp r0, r1
- beq _08129238
- ldrb r1, [r3, 0x2]
- ldrb r0, [r3, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r3, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r3, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _0812923C
- .align 2, 0
-_08129230: .4byte gSharedMem + 0x192E4
-_08129234: .4byte gAIScriptPtr
-_08129238:
- adds r0, r3, 0x6
- str r0, [r4]
-_0812923C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_1E
-
- thumb_func_start ContestAICmd_get_contest_type
-ContestAICmd_get_contest_type: @ 8129244
- ldr r1, _08129258 @ =gSharedMem + 0x192E4
- ldr r0, _0812925C @ =gSpecialVar_ContestCategory
- ldrh r0, [r0]
- strh r0, [r1, 0x18]
- ldr r1, _08129260 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_08129258: .4byte gSharedMem + 0x192E4
-_0812925C: .4byte gSpecialVar_ContestCategory
-_08129260: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_get_contest_type
-
- thumb_func_start ContestAICmd_unk_20
-ContestAICmd_unk_20: @ 8129264
- push {lr}
- bl ContestAICmd_get_contest_type
- ldr r0, _08129294 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08129298 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bne _0812929C
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _081292A0
- .align 2, 0
-_08129294: .4byte gSharedMem + 0x192E4
-_08129298: .4byte gAIScriptPtr
-_0812929C:
- adds r0, r2, 0x5
- str r0, [r3]
-_081292A0:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_20
-
- thumb_func_start ContestAICmd_unk_21
-ContestAICmd_unk_21: @ 81292A4
- push {lr}
- bl ContestAICmd_get_contest_type
- ldr r0, _081292D4 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _081292D8 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- beq _081292DC
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _081292E0
- .align 2, 0
-_081292D4: .4byte gSharedMem + 0x192E4
-_081292D8: .4byte gAIScriptPtr
-_081292DC:
- adds r0, r2, 0x5
- str r0, [r3]
-_081292E0:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_21
-
- thumb_func_start ContestAICmd_get_move_excitement
-ContestAICmd_get_move_excitement: @ 81292E4
- push {r4,lr}
- ldr r2, _08129318 @ =gContestMons
- ldr r4, _0812931C @ =gSharedMem + 0x192E4
- ldrb r1, [r4, 0x4]
- lsls r1, 1
- adds r0, r4, 0
- adds r0, 0x41
- ldrb r0, [r0]
- lsls r0, 6
- adds r1, r0
- adds r2, 0x1E
- adds r1, r2
- ldrh r0, [r1]
- bl Contest_GetMoveExcitement
- lsls r0, 24
- asrs r0, 24
- strh r0, [r4, 0x18]
- ldr r1, _08129320 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08129318: .4byte gContestMons
-_0812931C: .4byte gSharedMem + 0x192E4
-_08129320: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_get_move_excitement
-
- thumb_func_start ContestAICmd_unk_23
-ContestAICmd_unk_23: @ 8129324
- push {r4,lr}
- bl ContestAICmd_get_move_excitement
- ldr r0, _08129354 @ =gSharedMem + 0x192E4
- ldr r3, _08129358 @ =gAIScriptPtr
- ldr r2, [r3]
- movs r4, 0x18
- ldrsh r1, [r0, r4]
- movs r0, 0
- ldrsb r0, [r2, r0]
- cmp r1, r0
- bge _0812935C
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129360
- .align 2, 0
-_08129354: .4byte gSharedMem + 0x192E4
-_08129358: .4byte gAIScriptPtr
-_0812935C:
- adds r0, r2, 0x5
- str r0, [r3]
-_08129360:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_23
-
- thumb_func_start ContestAICmd_unk_24
-ContestAICmd_unk_24: @ 8129368
- push {r4,lr}
- bl ContestAICmd_get_move_excitement
- ldr r0, _08129398 @ =gSharedMem + 0x192E4
- ldr r3, _0812939C @ =gAIScriptPtr
- ldr r2, [r3]
- movs r4, 0x18
- ldrsh r1, [r0, r4]
- movs r0, 0
- ldrsb r0, [r2, r0]
- cmp r1, r0
- ble _081293A0
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _081293A4
- .align 2, 0
-_08129398: .4byte gSharedMem + 0x192E4
-_0812939C: .4byte gAIScriptPtr
-_081293A0:
- adds r0, r2, 0x5
- str r0, [r3]
-_081293A4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_24
-
- thumb_func_start ContestAICmd_unk_25
-ContestAICmd_unk_25: @ 81293AC
- push {r4,lr}
- bl ContestAICmd_get_move_excitement
- ldr r0, _081293DC @ =gSharedMem + 0x192E4
- ldr r3, _081293E0 @ =gAIScriptPtr
- ldr r2, [r3]
- movs r4, 0x18
- ldrsh r1, [r0, r4]
- movs r0, 0
- ldrsb r0, [r2, r0]
- cmp r1, r0
- bne _081293E4
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _081293E8
- .align 2, 0
-_081293DC: .4byte gSharedMem + 0x192E4
-_081293E0: .4byte gAIScriptPtr
-_081293E4:
- adds r0, r2, 0x5
- str r0, [r3]
-_081293E8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_25
-
- thumb_func_start ContestAICmd_unk_26
-ContestAICmd_unk_26: @ 81293F0
- push {r4,lr}
- bl ContestAICmd_get_move_excitement
- ldr r0, _08129420 @ =gSharedMem + 0x192E4
- ldr r3, _08129424 @ =gAIScriptPtr
- ldr r2, [r3]
- movs r4, 0x18
- ldrsh r1, [r0, r4]
- movs r0, 0
- ldrsb r0, [r2, r0]
- cmp r1, r0
- beq _08129428
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812942C
- .align 2, 0
-_08129420: .4byte gSharedMem + 0x192E4
-_08129424: .4byte gAIScriptPtr
-_08129428:
- adds r0, r2, 0x5
- str r0, [r3]
-_0812942C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_26
-
- thumb_func_start ContestAICmd_get_move_effect
-ContestAICmd_get_move_effect: @ 8129434
- ldr r2, _08129460 @ =gContestMons
- ldr r3, _08129464 @ =gSharedMem + 0x192E4
- ldrb r1, [r3, 0x4]
- lsls r1, 1
- adds r0, r3, 0
- adds r0, 0x41
- ldrb r0, [r0]
- lsls r0, 6
- adds r1, r0
- adds r2, 0x1E
- adds r1, r2
- ldrh r0, [r1]
- ldr r1, _08129468 @ =gContestMoves
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r3, 0x18]
- ldr r1, _0812946C @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_08129460: .4byte gContestMons
-_08129464: .4byte gSharedMem + 0x192E4
-_08129468: .4byte gContestMoves
-_0812946C: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_get_move_effect
-
- thumb_func_start ContestAICmd_unk_28
-ContestAICmd_unk_28: @ 8129470
- push {lr}
- bl ContestAICmd_get_move_effect
- ldr r0, _081294A0 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _081294A4 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bne _081294A8
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _081294AC
- .align 2, 0
-_081294A0: .4byte gSharedMem + 0x192E4
-_081294A4: .4byte gAIScriptPtr
-_081294A8:
- adds r0, r2, 0x5
- str r0, [r3]
-_081294AC:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_28
-
- thumb_func_start ContestAICmd_unk_29
-ContestAICmd_unk_29: @ 81294B0
- push {lr}
- bl ContestAICmd_get_move_effect
- ldr r0, _081294E0 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _081294E4 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- beq _081294E8
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _081294EC
- .align 2, 0
-_081294E0: .4byte gSharedMem + 0x192E4
-_081294E4: .4byte gAIScriptPtr
-_081294E8:
- adds r0, r2, 0x5
- str r0, [r3]
-_081294EC:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_29
-
- thumb_func_start ContestAICmd_get_move_effect_type
-ContestAICmd_get_move_effect_type: @ 81294F0
- ldr r2, _08129524 @ =gContestMons
- ldr r3, _08129528 @ =gSharedMem + 0x192E4
- ldrb r1, [r3, 0x4]
- lsls r1, 1
- adds r0, r3, 0
- adds r0, 0x41
- ldrb r0, [r0]
- lsls r0, 6
- adds r1, r0
- adds r2, 0x1E
- adds r1, r2
- ldrh r0, [r1]
- ldr r2, _0812952C @ =gContestEffects
- ldr r1, _08129530 @ =gContestMoves
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- strh r0, [r3, 0x18]
- ldr r1, _08129534 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_08129524: .4byte gContestMons
-_08129528: .4byte gSharedMem + 0x192E4
-_0812952C: .4byte gContestEffects
-_08129530: .4byte gContestMoves
-_08129534: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_get_move_effect_type
-
- thumb_func_start ContestAICmd_unk_2B
-ContestAICmd_unk_2B: @ 8129538
- push {lr}
- bl ContestAICmd_get_move_effect_type
- ldr r0, _08129568 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _0812956C @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bne _08129570
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129574
- .align 2, 0
-_08129568: .4byte gSharedMem + 0x192E4
-_0812956C: .4byte gAIScriptPtr
-_08129570:
- adds r0, r2, 0x5
- str r0, [r3]
-_08129574:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_2B
-
- thumb_func_start ContestAICmd_unk_2C
-ContestAICmd_unk_2C: @ 8129578
- push {lr}
- bl ContestAICmd_get_move_effect_type
- ldr r0, _081295A8 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _081295AC @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- beq _081295B0
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _081295B4
- .align 2, 0
-_081295A8: .4byte gSharedMem + 0x192E4
-_081295AC: .4byte gAIScriptPtr
-_081295B0:
- adds r0, r2, 0x5
- str r0, [r3]
-_081295B4:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_2C
-
- thumb_func_start ContestAICmd_check_move_has_highest_appeal
-ContestAICmd_check_move_has_highest_appeal: @ 81295B8
- push {r4-r7,lr}
- ldr r2, _08129610 @ =gContestMons
- ldr r3, _08129614 @ =gSharedMem + 0x192E4
- ldrb r0, [r3, 0x4]
- lsls r0, 1
- adds r1, r3, 0
- adds r1, 0x41
- ldrb r1, [r1]
- lsls r1, 6
- adds r0, r1
- adds r2, 0x1E
- adds r0, r2
- ldrh r0, [r0]
- ldr r4, _08129618 @ =gContestEffects
- ldr r5, _0812961C @ =gContestMoves
- lsls r0, 3
- adds r0, r5
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r4
- ldrb r7, [r0, 0x1]
- movs r6, 0
- ldr r0, _08129620 @ =gAIScriptPtr
- mov r12, r0
- adds r1, r2
-_081295EA:
- ldrh r0, [r1]
- cmp r0, 0
- beq _08129600
- lsls r0, 3
- adds r0, r5
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x1]
- cmp r7, r0
- bcc _08129608
-_08129600:
- adds r1, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _081295EA
-_08129608:
- cmp r6, 0x4
- bne _08129624
- movs r0, 0x1
- b _08129626
- .align 2, 0
-_08129610: .4byte gContestMons
-_08129614: .4byte gSharedMem + 0x192E4
-_08129618: .4byte gContestEffects
-_0812961C: .4byte gContestMoves
-_08129620: .4byte gAIScriptPtr
-_08129624:
- movs r0, 0
-_08129626:
- strh r0, [r3, 0x18]
- mov r1, r12
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_check_move_has_highest_appeal
-
- thumb_func_start ContestAICmd_unk_2E
-ContestAICmd_unk_2E: @ 8129638
- push {lr}
- bl ContestAICmd_check_move_has_highest_appeal
- ldr r0, _08129664 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _0812966C
- ldr r3, _08129668 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129674
- .align 2, 0
-_08129664: .4byte gSharedMem + 0x192E4
-_08129668: .4byte gAIScriptPtr
-_0812966C:
- ldr r1, _08129678 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_08129674:
- pop {r0}
- bx r0
- .align 2, 0
-_08129678: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_2E
-
- thumb_func_start ContestAICmd_unk_2F
-ContestAICmd_unk_2F: @ 812967C
- push {r4-r7,lr}
- ldr r2, _081296D4 @ =gContestMons
- ldr r3, _081296D8 @ =gSharedMem + 0x192E4
- ldrb r0, [r3, 0x4]
- lsls r0, 1
- adds r1, r3, 0
- adds r1, 0x41
- ldrb r1, [r1]
- lsls r1, 6
- adds r0, r1
- adds r2, 0x1E
- adds r0, r2
- ldrh r0, [r0]
- ldr r4, _081296DC @ =gContestEffects
- ldr r5, _081296E0 @ =gContestMoves
- lsls r0, 3
- adds r0, r5
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r4
- ldrb r7, [r0, 0x2]
- movs r6, 0
- ldr r0, _081296E4 @ =gAIScriptPtr
- mov r12, r0
- adds r1, r2
-_081296AE:
- ldrh r0, [r1]
- cmp r0, 0
- beq _081296C4
- lsls r0, 3
- adds r0, r5
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x2]
- cmp r7, r0
- bcc _081296CC
-_081296C4:
- adds r1, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _081296AE
-_081296CC:
- cmp r6, 0x4
- bne _081296E8
- movs r0, 0x1
- b _081296EA
- .align 2, 0
-_081296D4: .4byte gContestMons
-_081296D8: .4byte gSharedMem + 0x192E4
-_081296DC: .4byte gContestEffects
-_081296E0: .4byte gContestMoves
-_081296E4: .4byte gAIScriptPtr
-_081296E8:
- movs r0, 0
-_081296EA:
- strh r0, [r3, 0x18]
- mov r1, r12
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_2F
-
- thumb_func_start ContestAICmd_unk_30
-ContestAICmd_unk_30: @ 81296FC
- push {lr}
- bl ContestAICmd_unk_2F
- ldr r0, _08129728 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _08129730
- ldr r3, _0812972C @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129738
- .align 2, 0
-_08129728: .4byte gSharedMem + 0x192E4
-_0812972C: .4byte gAIScriptPtr
-_08129730:
- ldr r1, _0812973C @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08129738:
- pop {r0}
- bx r0
- .align 2, 0
-_0812973C: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_30
-
- thumb_func_start ContestAICmd_unk_31
-ContestAICmd_unk_31: @ 8129740
- push {r4,lr}
- ldr r2, _08129784 @ =gContestMons
- ldr r4, _08129788 @ =gSharedMem + 0x192E4
- ldrb r1, [r4, 0x4]
- lsls r1, 1
- adds r0, r4, 0
- adds r0, 0x41
- ldrb r0, [r0]
- lsls r0, 6
- adds r1, r0
- adds r2, 0x1E
- adds r1, r2
- ldrh r0, [r1]
- ldr r2, _0812978C @ =gContestEffects
- ldr r1, _08129790 @ =gContestMoves
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x18]
- ldr r1, _08129794 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08129784: .4byte gContestMons
-_08129788: .4byte gSharedMem + 0x192E4
-_0812978C: .4byte gContestEffects
-_08129790: .4byte gContestMoves
-_08129794: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_31
-
- thumb_func_start ContestAICmd_unk_32
-ContestAICmd_unk_32: @ 8129798
- push {lr}
- bl ContestAICmd_unk_31
- ldr r0, _081297C8 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _081297CC @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bge _081297D0
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _081297D4
- .align 2, 0
-_081297C8: .4byte gSharedMem + 0x192E4
-_081297CC: .4byte gAIScriptPtr
-_081297D0:
- adds r0, r2, 0x5
- str r0, [r3]
-_081297D4:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_32
-
- thumb_func_start ContestAICmd_unk_33
-ContestAICmd_unk_33: @ 81297D8
- push {lr}
- bl ContestAICmd_unk_31
- ldr r0, _08129808 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _0812980C @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- ble _08129810
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129814
- .align 2, 0
-_08129808: .4byte gSharedMem + 0x192E4
-_0812980C: .4byte gAIScriptPtr
-_08129810:
- adds r0, r2, 0x5
- str r0, [r3]
-_08129814:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_33
-
- thumb_func_start ContestAICmd_unk_34
-ContestAICmd_unk_34: @ 8129818
- push {lr}
- bl ContestAICmd_unk_31
- ldr r0, _08129848 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _0812984C @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bne _08129850
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129854
- .align 2, 0
-_08129848: .4byte gSharedMem + 0x192E4
-_0812984C: .4byte gAIScriptPtr
-_08129850:
- adds r0, r2, 0x5
- str r0, [r3]
-_08129854:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_34
-
- thumb_func_start ContestAICmd_unk_35
-ContestAICmd_unk_35: @ 8129858
- push {lr}
- bl ContestAICmd_unk_31
- ldr r0, _08129888 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _0812988C @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- beq _08129890
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129894
- .align 2, 0
-_08129888: .4byte gSharedMem + 0x192E4
-_0812988C: .4byte gAIScriptPtr
-_08129890:
- adds r0, r2, 0x5
- str r0, [r3]
-_08129894:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_35
-
- thumb_func_start ContestAICmd_unk_36
-ContestAICmd_unk_36: @ 8129898
- push {r4,lr}
- ldr r2, _081298DC @ =gContestMons
- ldr r4, _081298E0 @ =gSharedMem + 0x192E4
- ldrb r1, [r4, 0x4]
- lsls r1, 1
- adds r0, r4, 0
- adds r0, 0x41
- ldrb r0, [r0]
- lsls r0, 6
- adds r1, r0
- adds r2, 0x1E
- adds r1, r2
- ldrh r0, [r1]
- ldr r2, _081298E4 @ =gContestEffects
- ldr r1, _081298E8 @ =gContestMoves
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x18]
- ldr r1, _081298EC @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081298DC: .4byte gContestMons
-_081298E0: .4byte gSharedMem + 0x192E4
-_081298E4: .4byte gContestEffects
-_081298E8: .4byte gContestMoves
-_081298EC: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_36
-
- thumb_func_start ContestAICmd_unk_37
-ContestAICmd_unk_37: @ 81298F0
- push {lr}
- bl ContestAICmd_unk_36
- ldr r0, _08129920 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08129924 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bge _08129928
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812992C
- .align 2, 0
-_08129920: .4byte gSharedMem + 0x192E4
-_08129924: .4byte gAIScriptPtr
-_08129928:
- adds r0, r2, 0x5
- str r0, [r3]
-_0812992C:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_37
-
- thumb_func_start ContestAICmd_unk_38
-ContestAICmd_unk_38: @ 8129930
- push {lr}
- bl ContestAICmd_unk_36
- ldr r0, _08129960 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08129964 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- ble _08129968
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812996C
- .align 2, 0
-_08129960: .4byte gSharedMem + 0x192E4
-_08129964: .4byte gAIScriptPtr
-_08129968:
- adds r0, r2, 0x5
- str r0, [r3]
-_0812996C:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_38
-
- thumb_func_start ContestAICmd_unk_39
-ContestAICmd_unk_39: @ 8129970
- push {lr}
- bl ContestAICmd_unk_36
- ldr r0, _081299A0 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _081299A4 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bne _081299A8
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _081299AC
- .align 2, 0
-_081299A0: .4byte gSharedMem + 0x192E4
-_081299A4: .4byte gAIScriptPtr
-_081299A8:
- adds r0, r2, 0x5
- str r0, [r3]
-_081299AC:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_39
-
- thumb_func_start ContestAICmd_unk_3A
-ContestAICmd_unk_3A: @ 81299B0
- push {lr}
- bl ContestAICmd_unk_36
- ldr r0, _081299E0 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _081299E4 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- beq _081299E8
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _081299EC
- .align 2, 0
-_081299E0: .4byte gSharedMem + 0x192E4
-_081299E4: .4byte gAIScriptPtr
-_081299E8:
- adds r0, r2, 0x5
- str r0, [r3]
-_081299EC:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_3A
-
- thumb_func_start ContestAICmd_get_move_used_count
-ContestAICmd_get_move_used_count: @ 81299F0
- push {r4,lr}
- ldr r3, _08129A20 @ =gContestMons
- ldr r4, _08129A24 @ =gSharedMem + 0x192E4
- ldrb r0, [r4, 0x4]
- lsls r0, 1
- adds r1, r4, 0
- adds r1, 0x41
- ldrb r2, [r1]
- lsls r1, r2, 6
- adds r0, r1
- adds r3, 0x1E
- adds r0, r3
- ldrh r3, [r0]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r1, r4, 0
- subs r1, 0x84
- adds r0, r1
- ldrh r1, [r0, 0x8]
- cmp r3, r1
- beq _08129A28
- movs r0, 0
- b _08129A30
- .align 2, 0
-_08129A20: .4byte gContestMons
-_08129A24: .4byte gSharedMem + 0x192E4
-_08129A28:
- ldrb r0, [r0, 0xB]
- lsls r0, 25
- lsrs r0, 29
- adds r0, 0x1
-_08129A30:
- strh r0, [r4, 0x18]
- ldr r1, _08129A40 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08129A40: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_get_move_used_count
-
- thumb_func_start ContestAICmd_unk_3C
-ContestAICmd_unk_3C: @ 8129A44
- push {lr}
- bl ContestAICmd_get_move_used_count
- ldr r0, _08129A74 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08129A78 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bge _08129A7C
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129A80
- .align 2, 0
-_08129A74: .4byte gSharedMem + 0x192E4
-_08129A78: .4byte gAIScriptPtr
-_08129A7C:
- adds r0, r2, 0x5
- str r0, [r3]
-_08129A80:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_3C
-
- thumb_func_start ContestAICmd_unk_3D
-ContestAICmd_unk_3D: @ 8129A84
- push {lr}
- bl ContestAICmd_get_move_used_count
- ldr r0, _08129AB4 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08129AB8 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- ble _08129ABC
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129AC0
- .align 2, 0
-_08129AB4: .4byte gSharedMem + 0x192E4
-_08129AB8: .4byte gAIScriptPtr
-_08129ABC:
- adds r0, r2, 0x5
- str r0, [r3]
-_08129AC0:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_3D
-
- thumb_func_start ContestAICmd_unk_3E
-ContestAICmd_unk_3E: @ 8129AC4
- push {lr}
- bl ContestAICmd_get_move_used_count
- ldr r0, _08129AF4 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08129AF8 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bne _08129AFC
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129B00
- .align 2, 0
-_08129AF4: .4byte gSharedMem + 0x192E4
-_08129AF8: .4byte gAIScriptPtr
-_08129AFC:
- adds r0, r2, 0x5
- str r0, [r3]
-_08129B00:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_3E
-
- thumb_func_start ContestAICmd_unk_3F
-ContestAICmd_unk_3F: @ 8129B04
- push {lr}
- bl ContestAICmd_get_move_used_count
- ldr r0, _08129B34 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08129B38 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- beq _08129B3C
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129B40
- .align 2, 0
-_08129B34: .4byte gSharedMem + 0x192E4
-_08129B38: .4byte gAIScriptPtr
-_08129B3C:
- adds r0, r2, 0x5
- str r0, [r3]
-_08129B40:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_3F
-
- thumb_func_start ContestAICmd_check_combo_starter
-ContestAICmd_check_combo_starter: @ 8129B44
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r5, 0
- ldr r3, _08129BAC @ =gContestMons
- ldr r2, _08129BB0 @ =gSharedMem + 0x192E4
- ldrb r1, [r2, 0x4]
- lsls r1, 1
- adds r2, 0x41
- ldrb r0, [r2]
- lsls r0, 6
- adds r1, r0
- adds r3, 0x1E
- adds r1, r3
- ldrh r6, [r1]
- movs r4, 0
- mov r8, r2
- adds r7, r3, 0
-_08129B68:
- lsls r0, r4, 1
- mov r2, r8
- ldrb r1, [r2]
- lsls r1, 6
- adds r0, r1
- adds r1, r0, r7
- ldrh r0, [r1]
- cmp r0, 0
- beq _08129B8A
- adds r1, r0, 0
- adds r0, r6, 0
- bl AreMovesContestCombo
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _08129B94
-_08129B8A:
- adds r4, 0x1
- cmp r4, 0x3
- ble _08129B68
- cmp r5, 0
- beq _08129B96
-_08129B94:
- movs r5, 0x1
-_08129B96:
- ldr r0, _08129BB0 @ =gSharedMem + 0x192E4
- strh r5, [r0, 0x18]
- ldr r1, _08129BB4 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08129BAC: .4byte gContestMons
-_08129BB0: .4byte gSharedMem + 0x192E4
-_08129BB4: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_check_combo_starter
-
- thumb_func_start ContestAICmd_unk_41
-ContestAICmd_unk_41: @ 8129BB8
- push {lr}
- bl ContestAICmd_check_combo_starter
- ldr r0, _08129BE4 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _08129BEC
- ldr r3, _08129BE8 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129BF4
- .align 2, 0
-_08129BE4: .4byte gSharedMem + 0x192E4
-_08129BE8: .4byte gAIScriptPtr
-_08129BEC:
- ldr r1, _08129BF8 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_08129BF4:
- pop {r0}
- bx r0
- .align 2, 0
-_08129BF8: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_41
-
- thumb_func_start ContestAICmd_unk_42
-ContestAICmd_unk_42: @ 8129BFC
- push {lr}
- bl ContestAICmd_check_combo_starter
- ldr r0, _08129C28 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08129C30
- ldr r3, _08129C2C @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129C38
- .align 2, 0
-_08129C28: .4byte gSharedMem + 0x192E4
-_08129C2C: .4byte gAIScriptPtr
-_08129C30:
- ldr r1, _08129C3C @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_08129C38:
- pop {r0}
- bx r0
- .align 2, 0
-_08129C3C: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_42
-
- thumb_func_start ContestAICmd_check_combo_finisher
-ContestAICmd_check_combo_finisher: @ 8129C40
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r5, 0
- ldr r3, _08129CA8 @ =gContestMons
- ldr r2, _08129CAC @ =gSharedMem + 0x192E4
- ldrb r1, [r2, 0x4]
- lsls r1, 1
- adds r2, 0x41
- ldrb r0, [r2]
- lsls r0, 6
- adds r1, r0
- adds r3, 0x1E
- adds r1, r3
- ldrh r6, [r1]
- movs r4, 0
- mov r8, r2
- adds r7, r3, 0
-_08129C64:
- lsls r0, r4, 1
- mov r2, r8
- ldrb r1, [r2]
- lsls r1, 6
- adds r0, r1
- adds r1, r0, r7
- ldrh r0, [r1]
- cmp r0, 0
- beq _08129C84
- adds r1, r6, 0
- bl AreMovesContestCombo
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _08129C8E
-_08129C84:
- adds r4, 0x1
- cmp r4, 0x3
- ble _08129C64
- cmp r5, 0
- beq _08129C90
-_08129C8E:
- movs r5, 0x1
-_08129C90:
- ldr r0, _08129CAC @ =gSharedMem + 0x192E4
- strh r5, [r0, 0x18]
- ldr r1, _08129CB0 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08129CA8: .4byte gContestMons
-_08129CAC: .4byte gSharedMem + 0x192E4
-_08129CB0: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_check_combo_finisher
-
- thumb_func_start ContestAICmd_unk_44
-ContestAICmd_unk_44: @ 8129CB4
- push {lr}
- bl ContestAICmd_check_combo_finisher
- ldr r0, _08129CE0 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _08129CE8
- ldr r3, _08129CE4 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129CF0
- .align 2, 0
-_08129CE0: .4byte gSharedMem + 0x192E4
-_08129CE4: .4byte gAIScriptPtr
-_08129CE8:
- ldr r1, _08129CF4 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_08129CF0:
- pop {r0}
- bx r0
- .align 2, 0
-_08129CF4: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_44
-
- thumb_func_start ContestAICmd_unk_45
-ContestAICmd_unk_45: @ 8129CF8
- push {lr}
- bl ContestAICmd_check_combo_finisher
- ldr r0, _08129D24 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08129D2C
- ldr r3, _08129D28 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129D34
- .align 2, 0
-_08129D24: .4byte gSharedMem + 0x192E4
-_08129D28: .4byte gAIScriptPtr
-_08129D2C:
- ldr r1, _08129D38 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_08129D34:
- pop {r0}
- bx r0
- .align 2, 0
-_08129D38: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_45
-
- thumb_func_start ContestAICmd_check_would_finish_combo
-ContestAICmd_check_would_finish_combo: @ 8129D3C
- push {r4,r5,lr}
- movs r5, 0
- ldr r3, _08129D8C @ =gContestMons
- ldr r4, _08129D90 @ =gSharedMem + 0x192E4
- ldrb r0, [r4, 0x4]
- lsls r0, 1
- adds r1, r4, 0
- adds r1, 0x41
- ldrb r2, [r1]
- lsls r1, r2, 6
- adds r0, r1
- adds r3, 0x1E
- adds r0, r3
- ldrh r3, [r0]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r1, r4, 0
- subs r1, 0x84
- adds r1, r0, r1
- ldrh r0, [r1, 0x8]
- cmp r0, 0
- beq _08129D74
- adds r1, r3, 0
- bl AreMovesContestCombo
- lsls r0, 24
- lsrs r5, r0, 24
-_08129D74:
- cmp r5, 0
- beq _08129D7A
- movs r5, 0x1
-_08129D7A:
- strh r5, [r4, 0x18]
- ldr r1, _08129D94 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08129D8C: .4byte gContestMons
-_08129D90: .4byte gSharedMem + 0x192E4
-_08129D94: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_check_would_finish_combo
-
- thumb_func_start ContestAICmd_unk_47
-ContestAICmd_unk_47: @ 8129D98
- push {lr}
- bl ContestAICmd_check_would_finish_combo
- ldr r0, _08129DC4 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _08129DCC
- ldr r3, _08129DC8 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129DD4
- .align 2, 0
-_08129DC4: .4byte gSharedMem + 0x192E4
-_08129DC8: .4byte gAIScriptPtr
-_08129DCC:
- ldr r1, _08129DD8 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_08129DD4:
- pop {r0}
- bx r0
- .align 2, 0
-_08129DD8: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_47
-
- thumb_func_start ContestAICmd_unk_48
-ContestAICmd_unk_48: @ 8129DDC
- push {lr}
- bl ContestAICmd_check_would_finish_combo
- ldr r0, _08129E08 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08129E10
- ldr r3, _08129E0C @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129E18
- .align 2, 0
-_08129E08: .4byte gSharedMem + 0x192E4
-_08129E0C: .4byte gAIScriptPtr
-_08129E10:
- ldr r1, _08129E1C @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_08129E18:
- pop {r0}
- bx r0
- .align 2, 0
-_08129E1C: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_48
-
- thumb_func_start ContestAICmd_get_condition
-ContestAICmd_get_condition: @ 8129E20
- push {r4,r5,lr}
- ldr r4, _08129E5C @ =gAIScriptPtr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8128A7C
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _08129E60 @ =gSharedMem + 0x192E4
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r0, r5, 0
- subs r0, 0x84
- adds r1, r0
- movs r0, 0xD
- ldrsb r0, [r1, r0]
- movs r1, 0xA
- bl __divsi3
- lsls r0, 24
- asrs r0, 24
- strh r0, [r5, 0x18]
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08129E5C: .4byte gAIScriptPtr
-_08129E60: .4byte gSharedMem + 0x192E4
- thumb_func_end ContestAICmd_get_condition
-
- thumb_func_start ContestAICmd_unk_4A
-ContestAICmd_unk_4A: @ 8129E64
- push {lr}
- bl ContestAICmd_get_condition
- ldr r0, _08129E94 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08129E98 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bge _08129E9C
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129EA0
- .align 2, 0
-_08129E94: .4byte gSharedMem + 0x192E4
-_08129E98: .4byte gAIScriptPtr
-_08129E9C:
- adds r0, r2, 0x5
- str r0, [r3]
-_08129EA0:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_4A
-
- thumb_func_start ContestAICmd_unk_4B
-ContestAICmd_unk_4B: @ 8129EA4
- push {lr}
- bl ContestAICmd_get_condition
- ldr r0, _08129ED4 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08129ED8 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- ble _08129EDC
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129EE0
- .align 2, 0
-_08129ED4: .4byte gSharedMem + 0x192E4
-_08129ED8: .4byte gAIScriptPtr
-_08129EDC:
- adds r0, r2, 0x5
- str r0, [r3]
-_08129EE0:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_4B
-
- thumb_func_start ContestAICmd_unk_4C
-ContestAICmd_unk_4C: @ 8129EE4
- push {lr}
- bl ContestAICmd_get_condition
- ldr r0, _08129F14 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08129F18 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bne _08129F1C
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129F20
- .align 2, 0
-_08129F14: .4byte gSharedMem + 0x192E4
-_08129F18: .4byte gAIScriptPtr
-_08129F1C:
- adds r0, r2, 0x5
- str r0, [r3]
-_08129F20:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_4C
-
- thumb_func_start ContestAICmd_unk_4D
-ContestAICmd_unk_4D: @ 8129F24
- push {lr}
- bl ContestAICmd_get_condition
- ldr r0, _08129F54 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08129F58 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- beq _08129F5C
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129F60
- .align 2, 0
-_08129F54: .4byte gSharedMem + 0x192E4
-_08129F58: .4byte gAIScriptPtr
-_08129F5C:
- adds r0, r2, 0x5
- str r0, [r3]
-_08129F60:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_4D
-
- thumb_func_start ContestAICmd_get_used_combo_starter
-ContestAICmd_get_used_combo_starter: @ 8129F64
- push {r4-r6,lr}
- movs r6, 0
- ldr r5, _08129FAC @ =gAIScriptPtr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8128A7C
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_80B214C
- lsls r0, 24
- cmp r0, 0
- beq _08129F9C
- ldr r2, _08129FB0 @ =gContestMoves
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- ldr r1, _08129FB4 @ =gSharedMem + 0x19260
- adds r0, r1
- ldrh r0, [r0, 0x8]
- lsls r0, 3
- adds r0, r2
- ldrb r1, [r0, 0x2]
- negs r0, r1
- orrs r0, r1
- lsrs r6, r0, 31
-_08129F9C:
- ldr r0, _08129FB8 @ =gSharedMem + 0x192E4
- strh r6, [r0, 0x18]
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08129FAC: .4byte gAIScriptPtr
-_08129FB0: .4byte gContestMoves
-_08129FB4: .4byte gSharedMem + 0x19260
-_08129FB8: .4byte gSharedMem + 0x192E4
- thumb_func_end ContestAICmd_get_used_combo_starter
-
- thumb_func_start ContestAICmd_unk_4F
-ContestAICmd_unk_4F: @ 8129FBC
- push {lr}
- bl ContestAICmd_get_used_combo_starter
- ldr r0, _08129FEC @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _08129FF0 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bge _08129FF4
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08129FF8
- .align 2, 0
-_08129FEC: .4byte gSharedMem + 0x192E4
-_08129FF0: .4byte gAIScriptPtr
-_08129FF4:
- adds r0, r2, 0x5
- str r0, [r3]
-_08129FF8:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_4F
-
- thumb_func_start ContestAICmd_unk_50
-ContestAICmd_unk_50: @ 8129FFC
- push {lr}
- bl ContestAICmd_get_used_combo_starter
- ldr r0, _0812A02C @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _0812A030 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- ble _0812A034
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A038
- .align 2, 0
-_0812A02C: .4byte gSharedMem + 0x192E4
-_0812A030: .4byte gAIScriptPtr
-_0812A034:
- adds r0, r2, 0x5
- str r0, [r3]
-_0812A038:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_50
-
- thumb_func_start ContestAICmd_unk_51
-ContestAICmd_unk_51: @ 812A03C
- push {lr}
- bl ContestAICmd_get_used_combo_starter
- ldr r0, _0812A06C @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _0812A070 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bne _0812A074
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A078
- .align 2, 0
-_0812A06C: .4byte gSharedMem + 0x192E4
-_0812A070: .4byte gAIScriptPtr
-_0812A074:
- adds r0, r2, 0x5
- str r0, [r3]
-_0812A078:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_51
-
- thumb_func_start ContestAICmd_unk_52
-ContestAICmd_unk_52: @ 812A07C
- push {lr}
- bl ContestAICmd_get_used_combo_starter
- ldr r0, _0812A0AC @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _0812A0B0 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- beq _0812A0B4
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A0B8
- .align 2, 0
-_0812A0AC: .4byte gSharedMem + 0x192E4
-_0812A0B0: .4byte gAIScriptPtr
-_0812A0B4:
- adds r0, r2, 0x5
- str r0, [r3]
-_0812A0B8:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_52
-
- thumb_func_start ContestAICmd_check_can_participate
-ContestAICmd_check_can_participate: @ 812A0BC
- push {lr}
- ldr r0, _0812A0DC @ =gAIScriptPtr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8128A7C
- lsls r0, 24
- lsrs r0, 24
- bl Contest_IsMonsTurnDisabled
- lsls r0, 24
- cmp r0, 0
- beq _0812A0E4
- ldr r1, _0812A0E0 @ =gSharedMem + 0x192E4
- movs r0, 0
- b _0812A0E8
- .align 2, 0
-_0812A0DC: .4byte gAIScriptPtr
-_0812A0E0: .4byte gSharedMem + 0x192E4
-_0812A0E4:
- ldr r1, _0812A0F8 @ =gSharedMem + 0x192E4
- movs r0, 0x1
-_0812A0E8:
- strh r0, [r1, 0x18]
- ldr r1, _0812A0FC @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0812A0F8: .4byte gSharedMem + 0x192E4
-_0812A0FC: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_check_can_participate
-
- thumb_func_start ContestAICmd_unk_54
-ContestAICmd_unk_54: @ 812A100
- push {lr}
- bl ContestAICmd_check_can_participate
- ldr r0, _0812A12C @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _0812A134
- ldr r3, _0812A130 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A13C
- .align 2, 0
-_0812A12C: .4byte gSharedMem + 0x192E4
-_0812A130: .4byte gAIScriptPtr
-_0812A134:
- ldr r1, _0812A140 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_0812A13C:
- pop {r0}
- bx r0
- .align 2, 0
-_0812A140: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_54
-
- thumb_func_start ContestAICmd_unk_55
-ContestAICmd_unk_55: @ 812A144
- push {lr}
- bl ContestAICmd_check_can_participate
- ldr r0, _0812A170 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0812A178
- ldr r3, _0812A174 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A180
- .align 2, 0
-_0812A170: .4byte gSharedMem + 0x192E4
-_0812A174: .4byte gAIScriptPtr
-_0812A178:
- ldr r1, _0812A184 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_0812A180:
- pop {r0}
- bx r0
- .align 2, 0
-_0812A184: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_55
-
- thumb_func_start ContestAICmd_get_val_812A188
-ContestAICmd_get_val_812A188: @ 812A188
- push {r4,lr}
- ldr r4, _0812A1BC @ =gAIScriptPtr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8128A7C
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0812A1C0 @ =gSharedMem + 0x192E4
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r0, r2, 0
- subs r0, 0x84
- adds r1, r0
- ldrb r0, [r1, 0x15]
- lsls r0, 28
- lsrs r0, 31
- strh r0, [r2, 0x18]
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812A1BC: .4byte gAIScriptPtr
-_0812A1C0: .4byte gSharedMem + 0x192E4
- thumb_func_end ContestAICmd_get_val_812A188
-
- thumb_func_start ContestAICmd_unk_57
-ContestAICmd_unk_57: @ 812A1C4
- push {lr}
- bl ContestAICmd_get_val_812A188
- ldr r0, _0812A1F0 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _0812A1F8
- ldr r3, _0812A1F4 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A200
- .align 2, 0
-_0812A1F0: .4byte gSharedMem + 0x192E4
-_0812A1F4: .4byte gAIScriptPtr
-_0812A1F8:
- ldr r1, _0812A204 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_0812A200:
- pop {r0}
- bx r0
- .align 2, 0
-_0812A204: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_57
-
- thumb_func_start ContestAICmd_unk_58
-ContestAICmd_unk_58: @ 812A208
- push {lr}
- bl ContestAICmd_get_val_812A188
- ldr r0, _0812A234 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0812A23C
- ldr r3, _0812A238 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A244
- .align 2, 0
-_0812A234: .4byte gSharedMem + 0x192E4
-_0812A238: .4byte gAIScriptPtr
-_0812A23C:
- ldr r1, _0812A248 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_0812A244:
- pop {r0}
- bx r0
- .align 2, 0
-_0812A248: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_58
-
- thumb_func_start ContestAICmd_unk_59
-ContestAICmd_unk_59: @ 812A24C
- push {r4,r5,lr}
- ldr r5, _0812A28C @ =gAIScriptPtr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8128A7C
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _0812A290 @ =gSharedMem + 0x192E4
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r4, r3, 0
- subs r4, 0x84
- adds r1, r4
- adds r0, r3, 0
- adds r0, 0x41
- ldrb r2, [r0]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r1, 0x4]
- ldrh r0, [r0, 0x4]
- subs r1, r0
- strh r1, [r3, 0x18]
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812A28C: .4byte gAIScriptPtr
-_0812A290: .4byte gSharedMem + 0x192E4
- thumb_func_end ContestAICmd_unk_59
-
- thumb_func_start ContestAICmd_unk_5A
-ContestAICmd_unk_5A: @ 812A294
- push {lr}
- bl ContestAICmd_unk_59
- ldr r0, _0812A2C0 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bge _0812A2C8
- ldr r3, _0812A2C4 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A2D0
- .align 2, 0
-_0812A2C0: .4byte gSharedMem + 0x192E4
-_0812A2C4: .4byte gAIScriptPtr
-_0812A2C8:
- ldr r1, _0812A2D4 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_0812A2D0:
- pop {r0}
- bx r0
- .align 2, 0
-_0812A2D4: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_5A
-
- thumb_func_start ContestAICmd_unk_5B
-ContestAICmd_unk_5B: @ 812A2D8
- push {lr}
- bl ContestAICmd_unk_59
- ldr r0, _0812A304 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- ble _0812A30C
- ldr r3, _0812A308 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A314
- .align 2, 0
-_0812A304: .4byte gSharedMem + 0x192E4
-_0812A308: .4byte gAIScriptPtr
-_0812A30C:
- ldr r1, _0812A318 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_0812A314:
- pop {r0}
- bx r0
- .align 2, 0
-_0812A318: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_5B
-
- thumb_func_start ContestAICmd_unk_5C
-ContestAICmd_unk_5C: @ 812A31C
- push {lr}
- bl ContestAICmd_unk_59
- ldr r0, _0812A348 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0812A350
- ldr r3, _0812A34C @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A358
- .align 2, 0
-_0812A348: .4byte gSharedMem + 0x192E4
-_0812A34C: .4byte gAIScriptPtr
-_0812A350:
- ldr r1, _0812A35C @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_0812A358:
- pop {r0}
- bx r0
- .align 2, 0
-_0812A35C: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_5C
-
- thumb_func_start ContestAICmd_unk_5D
-ContestAICmd_unk_5D: @ 812A360
- push {lr}
- bl ContestAICmd_unk_59
- ldr r0, _0812A38C @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _0812A394
- ldr r3, _0812A390 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A39C
- .align 2, 0
-_0812A38C: .4byte gSharedMem + 0x192E4
-_0812A390: .4byte gAIScriptPtr
-_0812A394:
- ldr r1, _0812A3A0 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_0812A39C:
- pop {r0}
- bx r0
- .align 2, 0
-_0812A3A0: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_5D
-
- thumb_func_start ContestAICmd_unk_5E
-ContestAICmd_unk_5E: @ 812A3A4
- push {r4,lr}
- ldr r4, _0812A3D8 @ =gAIScriptPtr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8128A7C
- lsls r0, 24
- ldr r3, _0812A3DC @ =gSharedMem + 0x192E4
- ldr r2, _0812A3E0 @ =gUnknown_02038670
- lsrs r0, 23
- adds r0, r2
- adds r1, r3, 0
- adds r1, 0x41
- ldrb r1, [r1]
- lsls r1, 1
- adds r1, r2
- ldrh r0, [r0]
- ldrh r1, [r1]
- subs r0, r1
- strh r0, [r3, 0x18]
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812A3D8: .4byte gAIScriptPtr
-_0812A3DC: .4byte gSharedMem + 0x192E4
-_0812A3E0: .4byte gUnknown_02038670
- thumb_func_end ContestAICmd_unk_5E
-
- thumb_func_start ContestAICmd_unk_5F
-ContestAICmd_unk_5F: @ 812A3E4
- push {lr}
- bl ContestAICmd_unk_5E
- ldr r0, _0812A410 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bge _0812A418
- ldr r3, _0812A414 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A420
- .align 2, 0
-_0812A410: .4byte gSharedMem + 0x192E4
-_0812A414: .4byte gAIScriptPtr
-_0812A418:
- ldr r1, _0812A424 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_0812A420:
- pop {r0}
- bx r0
- .align 2, 0
-_0812A424: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_5F
-
- thumb_func_start ContestAICmd_unk_60
-ContestAICmd_unk_60: @ 812A428
- push {lr}
- bl ContestAICmd_unk_5E
- ldr r0, _0812A454 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- ble _0812A45C
- ldr r3, _0812A458 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A464
- .align 2, 0
-_0812A454: .4byte gSharedMem + 0x192E4
-_0812A458: .4byte gAIScriptPtr
-_0812A45C:
- ldr r1, _0812A468 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_0812A464:
- pop {r0}
- bx r0
- .align 2, 0
-_0812A468: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_60
-
- thumb_func_start ContestAICmd_unk_61
-ContestAICmd_unk_61: @ 812A46C
- push {lr}
- bl ContestAICmd_unk_5E
- ldr r0, _0812A498 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0812A4A0
- ldr r3, _0812A49C @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A4A8
- .align 2, 0
-_0812A498: .4byte gSharedMem + 0x192E4
-_0812A49C: .4byte gAIScriptPtr
-_0812A4A0:
- ldr r1, _0812A4AC @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_0812A4A8:
- pop {r0}
- bx r0
- .align 2, 0
-_0812A4AC: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_61
-
- thumb_func_start ContestAICmd_unk_62
-ContestAICmd_unk_62: @ 812A4B0
- push {lr}
- bl ContestAICmd_unk_5E
- ldr r0, _0812A4DC @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _0812A4E4
- ldr r3, _0812A4E0 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A4EC
- .align 2, 0
-_0812A4DC: .4byte gSharedMem + 0x192E4
-_0812A4E0: .4byte gAIScriptPtr
-_0812A4E4:
- ldr r1, _0812A4F0 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_0812A4EC:
- pop {r0}
- bx r0
- .align 2, 0
-_0812A4F0: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_62
-
- thumb_func_start ContestAICmd_unk_63
-ContestAICmd_unk_63: @ 812A4F4
- push {r4,lr}
- ldr r4, _0812A52C @ =gAIScriptPtr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8128A7C
- lsls r0, 24
- ldr r3, [r4]
- ldrb r1, [r3, 0x2]
- ldr r2, _0812A530 @ =gSharedMem + 0x19204
- lsrs r0, 23
- lsls r1, 3
- adds r0, r1
- adds r1, r2, 0
- adds r1, 0x1C
- adds r0, r1
- ldrh r0, [r0]
- adds r2, 0xE0
- ldr r1, _0812A534 @ =gContestMoves
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r2, 0x18]
- adds r3, 0x3
- str r3, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812A52C: .4byte gAIScriptPtr
-_0812A530: .4byte gSharedMem + 0x19204
-_0812A534: .4byte gContestMoves
- thumb_func_end ContestAICmd_unk_63
-
- thumb_func_start ContestAICmd_unk_64
-ContestAICmd_unk_64: @ 812A538
- push {lr}
- bl ContestAICmd_unk_63
- ldr r0, _0812A568 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _0812A56C @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bge _0812A570
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A574
- .align 2, 0
-_0812A568: .4byte gSharedMem + 0x192E4
-_0812A56C: .4byte gAIScriptPtr
-_0812A570:
- adds r0, r2, 0x5
- str r0, [r3]
-_0812A574:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_64
-
- thumb_func_start ContestAICmd_unk_65
-ContestAICmd_unk_65: @ 812A578
- push {lr}
- bl ContestAICmd_unk_63
- ldr r0, _0812A5A8 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _0812A5AC @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- ble _0812A5B0
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A5B4
- .align 2, 0
-_0812A5A8: .4byte gSharedMem + 0x192E4
-_0812A5AC: .4byte gAIScriptPtr
-_0812A5B0:
- adds r0, r2, 0x5
- str r0, [r3]
-_0812A5B4:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_65
-
- thumb_func_start ContestAICmd_unk_66
-ContestAICmd_unk_66: @ 812A5B8
- push {lr}
- bl ContestAICmd_unk_63
- ldr r0, _0812A5E8 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _0812A5EC @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bne _0812A5F0
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A5F4
- .align 2, 0
-_0812A5E8: .4byte gSharedMem + 0x192E4
-_0812A5EC: .4byte gAIScriptPtr
-_0812A5F0:
- adds r0, r2, 0x5
- str r0, [r3]
-_0812A5F4:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_66
-
- thumb_func_start ContestAICmd_unk_67
-ContestAICmd_unk_67: @ 812A5F8
- push {lr}
- bl ContestAICmd_unk_63
- ldr r0, _0812A628 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _0812A62C @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- beq _0812A630
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A634
- .align 2, 0
-_0812A628: .4byte gSharedMem + 0x192E4
-_0812A62C: .4byte gAIScriptPtr
-_0812A630:
- adds r0, r2, 0x5
- str r0, [r3]
-_0812A634:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_67
-
- thumb_func_start ContestAICmd_unk_68
-ContestAICmd_unk_68: @ 812A638
- push {r4,lr}
- ldr r4, _0812A66C @ =gAIScriptPtr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8128A7C
- lsls r0, 24
- lsrs r0, 24
- ldr r3, [r4]
- ldrb r1, [r3, 0x2]
- ldr r2, _0812A670 @ =gSharedMem + 0x19204
- lsls r1, 2
- adds r0, r1
- adds r1, r2, 0
- adds r1, 0x44
- adds r0, r1
- adds r2, 0xE0
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- strh r0, [r2, 0x18]
- adds r3, 0x3
- str r3, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812A66C: .4byte gAIScriptPtr
-_0812A670: .4byte gSharedMem + 0x19204
- thumb_func_end ContestAICmd_unk_68
-
- thumb_func_start ContestAICmd_unk_69
-ContestAICmd_unk_69: @ 812A674
- push {lr}
- bl ContestAICmd_unk_68
- ldr r0, _0812A6A4 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _0812A6A8 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bge _0812A6AC
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A6B0
- .align 2, 0
-_0812A6A4: .4byte gSharedMem + 0x192E4
-_0812A6A8: .4byte gAIScriptPtr
-_0812A6AC:
- adds r0, r2, 0x5
- str r0, [r3]
-_0812A6B0:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_69
-
- thumb_func_start ContestAICmd_unk_6A
-ContestAICmd_unk_6A: @ 812A6B4
- push {lr}
- bl ContestAICmd_unk_68
- ldr r0, _0812A6E4 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _0812A6E8 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- ble _0812A6EC
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A6F0
- .align 2, 0
-_0812A6E4: .4byte gSharedMem + 0x192E4
-_0812A6E8: .4byte gAIScriptPtr
-_0812A6EC:
- adds r0, r2, 0x5
- str r0, [r3]
-_0812A6F0:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_6A
-
- thumb_func_start ContestAICmd_unk_6B
-ContestAICmd_unk_6B: @ 812A6F4
- push {lr}
- bl ContestAICmd_unk_68
- ldr r0, _0812A724 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _0812A728 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bne _0812A72C
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A730
- .align 2, 0
-_0812A724: .4byte gSharedMem + 0x192E4
-_0812A728: .4byte gAIScriptPtr
-_0812A72C:
- adds r0, r2, 0x5
- str r0, [r3]
-_0812A730:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_6B
-
- thumb_func_start ContestAICmd_unk_6C
-ContestAICmd_unk_6C: @ 812A734
- push {lr}
- bl ContestAICmd_unk_68
- ldr r0, _0812A764 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _0812A768 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- beq _0812A76C
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A770
- .align 2, 0
-_0812A764: .4byte gSharedMem + 0x192E4
-_0812A768: .4byte gAIScriptPtr
-_0812A76C:
- adds r0, r2, 0x5
- str r0, [r3]
-_0812A770:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_6C
-
- thumb_func_start ContestAICmd_unk_6D
-ContestAICmd_unk_6D: @ 812A774
- push {r4,r5,lr}
- ldr r5, _0812A7B4 @ =gAIScriptPtr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8128A7C
- lsls r0, 24
- ldr r3, [r5]
- ldrb r1, [r3, 0x2]
- ldr r2, _0812A7B8 @ =gSharedMem + 0x19204
- lsrs r0, 23
- lsls r1, 3
- adds r0, r1
- adds r1, r2, 0
- adds r1, 0x1C
- adds r0, r1
- ldrh r0, [r0]
- adds r2, 0xE0
- ldr r4, _0812A7BC @ =gContestEffects
- ldr r1, _0812A7C0 @ =gContestMoves
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0]
- strh r0, [r2, 0x18]
- adds r3, 0x3
- str r3, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812A7B4: .4byte gAIScriptPtr
-_0812A7B8: .4byte gSharedMem + 0x19204
-_0812A7BC: .4byte gContestEffects
-_0812A7C0: .4byte gContestMoves
- thumb_func_end ContestAICmd_unk_6D
-
- thumb_func_start ContestAICmd_unk_6E
-ContestAICmd_unk_6E: @ 812A7C4
- push {lr}
- bl ContestAICmd_unk_6D
- ldr r0, _0812A7F4 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _0812A7F8 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- bne _0812A7FC
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A800
- .align 2, 0
-_0812A7F4: .4byte gSharedMem + 0x192E4
-_0812A7F8: .4byte gAIScriptPtr
-_0812A7FC:
- adds r0, r2, 0x5
- str r0, [r3]
-_0812A800:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_6E
-
- thumb_func_start ContestAICmd_unk_6F
-ContestAICmd_unk_6F: @ 812A804
- push {lr}
- bl ContestAICmd_unk_6D
- ldr r0, _0812A834 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- ldr r3, _0812A838 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- cmp r0, r1
- beq _0812A83C
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812A840
- .align 2, 0
-_0812A834: .4byte gSharedMem + 0x192E4
-_0812A838: .4byte gAIScriptPtr
-_0812A83C:
- adds r0, r2, 0x5
- str r0, [r3]
-_0812A840:
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_6F
-
- thumb_func_start ContestAICmd_unk_70
-ContestAICmd_unk_70: @ 812A844
- push {r4,lr}
- ldr r3, _0812A864 @ =gSharedMem + 0x192E4
- ldr r4, _0812A868 @ =gAIScriptPtr
- ldr r2, [r4]
- ldrb r0, [r2, 0x1]
- lsls r0, 1
- adds r1, r3, 0
- adds r1, 0x1A
- adds r0, r1
- ldrh r1, [r3, 0x18]
- strh r1, [r0]
- adds r2, 0x2
- str r2, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812A864: .4byte gSharedMem + 0x192E4
-_0812A868: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_70
-
- thumb_func_start ContestAICmd_unk_71
-ContestAICmd_unk_71: @ 812A86C
- push {r4,lr}
- ldr r0, _0812A890 @ =gSharedMem + 0x192E4
- ldr r4, _0812A894 @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r2, [r3, 0x1]
- lsls r2, 1
- adds r0, 0x1A
- adds r2, r0
- ldrb r1, [r3, 0x2]
- ldrb r0, [r3, 0x3]
- lsls r0, 8
- orrs r1, r0
- strh r1, [r2]
- adds r3, 0x4
- str r3, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812A890: .4byte gSharedMem + 0x192E4
-_0812A894: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_71
-
- thumb_func_start ContestAICmd_unk_72
-ContestAICmd_unk_72: @ 812A898
- push {r4,lr}
- ldr r0, _0812A8C4 @ =gSharedMem + 0x192E4
- ldr r4, _0812A8C8 @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r2, [r3, 0x1]
- lsls r2, 1
- adds r0, 0x1A
- adds r2, r0
- movs r1, 0x2
- ldrsb r1, [r3, r1]
- ldrb r0, [r3, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrh r0, [r2]
- adds r1, r0
- strh r1, [r2]
- adds r3, 0x4
- str r3, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812A8C4: .4byte gSharedMem + 0x192E4
-_0812A8C8: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_72
-
- thumb_func_start ContestAICmd_unk_73
-ContestAICmd_unk_73: @ 812A8CC
- push {r4,lr}
- ldr r2, _0812A8F4 @ =gSharedMem + 0x192E4
- ldr r4, _0812A8F8 @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r1, [r3, 0x1]
- lsls r1, 1
- adds r2, 0x1A
- adds r1, r2
- ldrb r0, [r3, 0x2]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
- adds r3, 0x3
- str r3, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812A8F4: .4byte gSharedMem + 0x192E4
-_0812A8F8: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_73
-
- thumb_func_start ContestAICmd_unk_74
-ContestAICmd_unk_74: @ 812A8FC
- push {r4,lr}
- ldr r2, _0812A924 @ =gSharedMem + 0x192E4
- ldr r4, _0812A928 @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r1, [r3, 0x1]
- lsls r1, 1
- adds r2, 0x1A
- adds r1, r2
- ldrb r0, [r3, 0x2]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
- adds r3, 0x3
- str r3, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812A924: .4byte gSharedMem + 0x192E4
-_0812A928: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_74
-
- thumb_func_start ContestAICmd_unk_75
-ContestAICmd_unk_75: @ 812A92C
- push {r4,lr}
- ldr r1, _0812A964 @ =gSharedMem + 0x192E4
- ldr r4, _0812A968 @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r0, [r3, 0x1]
- lsls r0, 1
- adds r1, 0x1A
- adds r0, r1
- movs r1, 0
- ldrsh r2, [r0, r1]
- ldrb r1, [r3, 0x2]
- ldrb r0, [r3, 0x3]
- lsls r0, 8
- orrs r1, r0
- cmp r2, r1
- bge _0812A96C
- ldrb r1, [r3, 0x4]
- ldrb r0, [r3, 0x5]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r3, 0x6]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r3, 0x7]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _0812A972
- .align 2, 0
-_0812A964: .4byte gSharedMem + 0x192E4
-_0812A968: .4byte gAIScriptPtr
-_0812A96C:
- adds r0, r3, 0
- adds r0, 0x8
- str r0, [r4]
-_0812A972:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_75
-
- thumb_func_start ContestAICmd_unk_76
-ContestAICmd_unk_76: @ 812A978
- push {r4,lr}
- ldr r1, _0812A9B0 @ =gSharedMem + 0x192E4
- ldr r4, _0812A9B4 @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r0, [r3, 0x1]
- lsls r0, 1
- adds r1, 0x1A
- adds r0, r1
- movs r1, 0
- ldrsh r2, [r0, r1]
- ldrb r1, [r3, 0x2]
- ldrb r0, [r3, 0x3]
- lsls r0, 8
- orrs r1, r0
- cmp r2, r1
- ble _0812A9B8
- ldrb r1, [r3, 0x4]
- ldrb r0, [r3, 0x5]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r3, 0x6]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r3, 0x7]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _0812A9BE
- .align 2, 0
-_0812A9B0: .4byte gSharedMem + 0x192E4
-_0812A9B4: .4byte gAIScriptPtr
-_0812A9B8:
- adds r0, r3, 0
- adds r0, 0x8
- str r0, [r4]
-_0812A9BE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_76
-
- thumb_func_start ContestAICmd_unk_77
-ContestAICmd_unk_77: @ 812A9C4
- push {r4,lr}
- ldr r1, _0812A9FC @ =gSharedMem + 0x192E4
- ldr r4, _0812AA00 @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r0, [r3, 0x1]
- lsls r0, 1
- adds r1, 0x1A
- adds r0, r1
- movs r1, 0
- ldrsh r2, [r0, r1]
- ldrb r1, [r3, 0x2]
- ldrb r0, [r3, 0x3]
- lsls r0, 8
- orrs r1, r0
- cmp r2, r1
- bne _0812AA04
- ldrb r1, [r3, 0x4]
- ldrb r0, [r3, 0x5]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r3, 0x6]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r3, 0x7]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _0812AA0A
- .align 2, 0
-_0812A9FC: .4byte gSharedMem + 0x192E4
-_0812AA00: .4byte gAIScriptPtr
-_0812AA04:
- adds r0, r3, 0
- adds r0, 0x8
- str r0, [r4]
-_0812AA0A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_77
-
- thumb_func_start ContestAICmd_unk_78
-ContestAICmd_unk_78: @ 812AA10
- push {r4,lr}
- ldr r1, _0812AA48 @ =gSharedMem + 0x192E4
- ldr r4, _0812AA4C @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r0, [r3, 0x1]
- lsls r0, 1
- adds r1, 0x1A
- adds r0, r1
- movs r1, 0
- ldrsh r2, [r0, r1]
- ldrb r1, [r3, 0x2]
- ldrb r0, [r3, 0x3]
- lsls r0, 8
- orrs r1, r0
- cmp r2, r1
- beq _0812AA50
- ldrb r1, [r3, 0x4]
- ldrb r0, [r3, 0x5]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r3, 0x6]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r3, 0x7]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _0812AA56
- .align 2, 0
-_0812AA48: .4byte gSharedMem + 0x192E4
-_0812AA4C: .4byte gAIScriptPtr
-_0812AA50:
- adds r0, r3, 0
- adds r0, 0x8
- str r0, [r4]
-_0812AA56:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_78
-
- thumb_func_start ContestAICmd_unk_79
-ContestAICmd_unk_79: @ 812AA5C
- push {r4,lr}
- ldr r2, _0812AA98 @ =gSharedMem + 0x192E4
- ldr r4, _0812AA9C @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r1, [r3, 0x1]
- lsls r1, 1
- adds r2, 0x1A
- adds r1, r2
- ldrb r0, [r3, 0x2]
- lsls r0, 1
- adds r0, r2
- movs r2, 0
- ldrsh r1, [r1, r2]
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r1, r0
- bge _0812AAA0
- ldrb r1, [r3, 0x3]
- ldrb r0, [r3, 0x4]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r3, 0x5]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r3, 0x6]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _0812AAA4
- .align 2, 0
-_0812AA98: .4byte gSharedMem + 0x192E4
-_0812AA9C: .4byte gAIScriptPtr
-_0812AAA0:
- adds r0, r3, 0x7
- str r0, [r4]
-_0812AAA4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_79
-
- thumb_func_start ContestAICmd_unk_7A
-ContestAICmd_unk_7A: @ 812AAAC
- push {r4,lr}
- ldr r2, _0812AAE8 @ =gSharedMem + 0x192E4
- ldr r4, _0812AAEC @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r1, [r3, 0x1]
- lsls r1, 1
- adds r2, 0x1A
- adds r1, r2
- ldrb r0, [r3, 0x2]
- lsls r0, 1
- adds r0, r2
- movs r2, 0
- ldrsh r1, [r1, r2]
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r1, r0
- ble _0812AAF0
- ldrb r1, [r3, 0x3]
- ldrb r0, [r3, 0x4]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r3, 0x5]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r3, 0x6]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _0812AAF4
- .align 2, 0
-_0812AAE8: .4byte gSharedMem + 0x192E4
-_0812AAEC: .4byte gAIScriptPtr
-_0812AAF0:
- adds r0, r3, 0x7
- str r0, [r4]
-_0812AAF4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_7A
-
- thumb_func_start ContestAICmd_unk_7B
-ContestAICmd_unk_7B: @ 812AAFC
- push {r4,lr}
- ldr r2, _0812AB38 @ =gSharedMem + 0x192E4
- ldr r4, _0812AB3C @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r1, [r3, 0x1]
- lsls r1, 1
- adds r2, 0x1A
- adds r1, r2
- ldrb r0, [r3, 0x2]
- lsls r0, 1
- adds r0, r2
- movs r2, 0
- ldrsh r1, [r1, r2]
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r1, r0
- bne _0812AB40
- ldrb r1, [r3, 0x3]
- ldrb r0, [r3, 0x4]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r3, 0x5]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r3, 0x6]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _0812AB44
- .align 2, 0
-_0812AB38: .4byte gSharedMem + 0x192E4
-_0812AB3C: .4byte gAIScriptPtr
-_0812AB40:
- adds r0, r3, 0x7
- str r0, [r4]
-_0812AB44:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_7B
-
- thumb_func_start ContestAICmd_unk_7C
-ContestAICmd_unk_7C: @ 812AB4C
- push {r4,lr}
- ldr r2, _0812AB88 @ =gSharedMem + 0x192E4
- ldr r4, _0812AB8C @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r1, [r3, 0x1]
- lsls r1, 1
- adds r2, 0x1A
- adds r1, r2
- ldrb r0, [r3, 0x2]
- lsls r0, 1
- adds r0, r2
- movs r2, 0
- ldrsh r1, [r1, r2]
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r1, r0
- beq _0812AB90
- ldrb r1, [r3, 0x3]
- ldrb r0, [r3, 0x4]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r3, 0x5]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r3, 0x6]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _0812AB94
- .align 2, 0
-_0812AB88: .4byte gSharedMem + 0x192E4
-_0812AB8C: .4byte gAIScriptPtr
-_0812AB90:
- adds r0, r3, 0x7
- str r0, [r4]
-_0812AB94:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_7C
-
- thumb_func_start ContestAICmd_unk_7D
-ContestAICmd_unk_7D: @ 812AB9C
- push {r4,lr}
- bl Random
- movs r2, 0xFF
- ands r2, r0
- ldr r1, _0812ABD4 @ =gSharedMem + 0x192E4
- ldr r4, _0812ABD8 @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r0, [r3, 0x1]
- lsls r0, 1
- adds r1, 0x1A
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r2, r0
- bge _0812ABDC
- ldrb r1, [r3, 0x2]
- ldrb r0, [r3, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r3, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r3, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _0812ABE0
- .align 2, 0
-_0812ABD4: .4byte gSharedMem + 0x192E4
-_0812ABD8: .4byte gAIScriptPtr
-_0812ABDC:
- adds r0, r3, 0x6
- str r0, [r4]
-_0812ABE0:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_7D
-
- thumb_func_start ContestAICmd_unk_7E
-ContestAICmd_unk_7E: @ 812ABE8
- push {r4,lr}
- bl Random
- movs r2, 0xFF
- ands r2, r0
- ldr r1, _0812AC20 @ =gSharedMem + 0x192E4
- ldr r4, _0812AC24 @ =gAIScriptPtr
- ldr r3, [r4]
- ldrb r0, [r3, 0x1]
- lsls r0, 1
- adds r1, 0x1A
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r2, r0
- ble _0812AC28
- ldrb r1, [r3, 0x2]
- ldrb r0, [r3, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r3, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r3, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _0812AC2C
- .align 2, 0
-_0812AC20: .4byte gSharedMem + 0x192E4
-_0812AC24: .4byte gAIScriptPtr
-_0812AC28:
- adds r0, r3, 0x6
- str r0, [r4]
-_0812AC2C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_7E
-
- thumb_func_start ContestAICmd_unk_7F
-ContestAICmd_unk_7F: @ 812AC34
- ldr r3, _0812AC50 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- bx lr
- .align 2, 0
-_0812AC50: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_7F
-
- thumb_func_start ContestAICmd_unk_80
-ContestAICmd_unk_80: @ 812AC54
- push {r4,lr}
- ldr r4, _0812AC80 @ =gAIScriptPtr
- ldr r0, [r4]
- adds r0, 0x5
- bl sub_812ACA4
- ldr r2, [r4]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812AC80: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_80
-
- thumb_func_start ContestAICmd_unk_81
-ContestAICmd_unk_81: @ 812AC84
- push {lr}
- bl sub_812ACC8
- lsls r0, 24
- cmp r0, 0
- bne _0812AC9A
- ldr r2, _0812ACA0 @ =gSharedMem + 0x192E4
- ldrb r1, [r2, 0x9]
- movs r0, 0x1
- orrs r0, r1
- strb r0, [r2, 0x9]
-_0812AC9A:
- pop {r0}
- bx r0
- .align 2, 0
-_0812ACA0: .4byte gSharedMem + 0x192E4
- thumb_func_end ContestAICmd_unk_81
-
- thumb_func_start sub_812ACA4
-sub_812ACA4: @ 812ACA4
- push {r4,lr}
- ldr r3, _0812ACC4 @ =gSharedMem + 0x192E4
- adds r4, r3, 0
- adds r4, 0x40
- ldrb r1, [r4]
- adds r2, r1, 0x1
- strb r2, [r4]
- lsls r1, 24
- lsrs r1, 22
- adds r3, 0x20
- adds r1, r3
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812ACC4: .4byte gSharedMem + 0x192E4
- thumb_func_end sub_812ACA4
-
- thumb_func_start sub_812ACC8
-sub_812ACC8: @ 812ACC8
- push {lr}
- ldr r1, _0812ACDC @ =gSharedMem + 0x192E4
- adds r3, r1, 0
- adds r3, 0x40
- ldrb r0, [r3]
- cmp r0, 0
- bne _0812ACE0
- movs r0, 0
- b _0812ACF4
- .align 2, 0
-_0812ACDC: .4byte gSharedMem + 0x192E4
-_0812ACE0:
- subs r0, 0x1
- strb r0, [r3]
- ldr r2, _0812ACF8 @ =gAIScriptPtr
- ldrb r0, [r3]
- lsls r0, 2
- adds r1, 0x20
- adds r0, r1
- ldr r0, [r0]
- str r0, [r2]
- movs r0, 0x1
-_0812ACF4:
- pop {r1}
- bx r1
- .align 2, 0
-_0812ACF8: .4byte gAIScriptPtr
- thumb_func_end sub_812ACC8
-
- thumb_func_start ContestAICmd_check_for_exciting_move
-ContestAICmd_check_for_exciting_move: @ 812ACFC
- push {r4-r7,lr}
- movs r5, 0
- movs r4, 0
- ldr r7, _0812AD28 @ =gSharedMem + 0x19325
- ldr r6, _0812AD2C @ =gUnknown_0203858E
-_0812AD06:
- lsls r0, r4, 1
- ldrb r1, [r7]
- lsls r1, 6
- adds r0, r1
- adds r1, r0, r6
- ldrh r0, [r1]
- cmp r0, 0
- beq _0812AD30
- bl Contest_GetMoveExcitement
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- bne _0812AD30
- movs r5, 0x1
- b _0812AD36
- .align 2, 0
-_0812AD28: .4byte gSharedMem + 0x19325
-_0812AD2C: .4byte gUnknown_0203858E
-_0812AD30:
- adds r4, 0x1
- cmp r4, 0x3
- ble _0812AD06
-_0812AD36:
- ldr r0, _0812AD48 @ =gSharedMem + 0x192E4
- strh r5, [r0, 0x18]
- ldr r1, _0812AD4C @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812AD48: .4byte gSharedMem + 0x192E4
-_0812AD4C: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_check_for_exciting_move
-
- thumb_func_start ContestAICmd_unk_83
-ContestAICmd_unk_83: @ 812AD50
- push {lr}
- bl ContestAICmd_check_for_exciting_move
- ldr r0, _0812AD7C @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _0812AD84
- ldr r3, _0812AD80 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812AD8C
- .align 2, 0
-_0812AD7C: .4byte gSharedMem + 0x192E4
-_0812AD80: .4byte gAIScriptPtr
-_0812AD84:
- ldr r1, _0812AD90 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_0812AD8C:
- pop {r0}
- bx r0
- .align 2, 0
-_0812AD90: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_83
-
- thumb_func_start ContestAICmd_unk_84
-ContestAICmd_unk_84: @ 812AD94
- push {lr}
- bl ContestAICmd_check_for_exciting_move
- ldr r0, _0812ADC0 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0812ADC8
- ldr r3, _0812ADC4 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812ADD0
- .align 2, 0
-_0812ADC0: .4byte gSharedMem + 0x192E4
-_0812ADC4: .4byte gAIScriptPtr
-_0812ADC8:
- ldr r1, _0812ADD4 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_0812ADD0:
- pop {r0}
- bx r0
- .align 2, 0
-_0812ADD4: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_84
-
- thumb_func_start ContestAICmd_unk_85
-ContestAICmd_unk_85: @ 812ADD8
- push {r4-r7,lr}
- movs r6, 0
- ldr r2, _0812AE08 @ =gAIScriptPtr
- ldr r0, [r2]
- ldrb r4, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r4, r0
- movs r3, 0
- ldr r0, _0812AE0C @ =gContestMons
- mov r12, r0
- ldr r5, _0812AE10 @ =gSharedMem + 0x192E4
- adds r0, r5, 0
- adds r0, 0x41
- ldrb r0, [r0]
- lsls r0, 6
- mov r1, r12
- adds r1, 0x1E
- adds r0, r1
- ldrh r0, [r0]
- adds r7, r2, 0
- mov r2, r12
- mov r12, r5
- b _0812AE2E
- .align 2, 0
-_0812AE08: .4byte gAIScriptPtr
-_0812AE0C: .4byte gContestMons
-_0812AE10: .4byte gSharedMem + 0x192E4
-_0812AE14:
- adds r3, 0x1
- cmp r3, 0x3
- bgt _0812AE34
- lsls r1, r3, 1
- mov r0, r12
- adds r0, 0x41
- ldrb r0, [r0]
- lsls r0, 6
- adds r1, r0
- adds r0, r2, 0
- adds r0, 0x1E
- adds r1, r0
- ldrh r0, [r1]
-_0812AE2E:
- cmp r0, r4
- bne _0812AE14
- movs r6, 0x1
-_0812AE34:
- mov r0, r12
- strh r6, [r0, 0x18]
- ldr r0, [r7]
- adds r0, 0x3
- str r0, [r7]
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end ContestAICmd_unk_85
-
- thumb_func_start ContestAICmd_unk_86
-ContestAICmd_unk_86: @ 812AE44
- push {lr}
- bl ContestAICmd_unk_85
- ldr r0, _0812AE70 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _0812AE78
- ldr r3, _0812AE74 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812AE80
- .align 2, 0
-_0812AE70: .4byte gSharedMem + 0x192E4
-_0812AE74: .4byte gAIScriptPtr
-_0812AE78:
- ldr r1, _0812AE84 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_0812AE80:
- pop {r0}
- bx r0
- .align 2, 0
-_0812AE84: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_86
-
- thumb_func_start ContestAICmd_unk_87
-ContestAICmd_unk_87: @ 812AE88
- push {lr}
- bl ContestAICmd_unk_85
- ldr r0, _0812AEB4 @ =gSharedMem + 0x192E4
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0812AEBC
- ldr r3, _0812AEB8 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0812AEC4
- .align 2, 0
-_0812AEB4: .4byte gSharedMem + 0x192E4
-_0812AEB8: .4byte gAIScriptPtr
-_0812AEBC:
- ldr r1, _0812AEC8 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0x4
- str r0, [r1]
-_0812AEC4:
- pop {r0}
- bx r0
- .align 2, 0
-_0812AEC8: .4byte gAIScriptPtr
- thumb_func_end ContestAICmd_unk_87
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s
index af239f3f7..8a0f096f0 100644
--- a/asm/contest_link_80C2020.s
+++ b/asm/contest_link_80C2020.s
@@ -1202,7 +1202,7 @@ _080C29FC: .4byte gStringVar1
_080C2A00: .4byte gLinkPlayers + 0x8
_080C2A04:
lsls r4, 6
- ldr r1, _080C2A54 @ =gUnknown_0203857D
+ ldr r1, _080C2A54 @ =gContestMons + 0xD
adds r1, r4, r1
adds r0, r3, 0
bl StringCopy
@@ -1238,7 +1238,7 @@ _080C2A4A:
strh r0, [r1, 0x8]
b _080C2A80
.align 2, 0
-_080C2A54: .4byte gUnknown_0203857D
+_080C2A54: .4byte gContestMons + 0xD
_080C2A58: .4byte gStringVar2
_080C2A5C: .4byte gContestMons + 0x2
_080C2A60: .4byte gContestText_PokeWon
@@ -5201,7 +5201,7 @@ _080C4720:
ldr r1, _080C4738 @ =gSpecialVar_0x8006
ldrh r1, [r1]
lsls r1, 6
- ldr r2, _080C473C @ =gUnknown_0203857D
+ ldr r2, _080C473C @ =gContestMons + 0xD
adds r1, r2
bl sub_80C4674
_080C4730:
@@ -5210,7 +5210,7 @@ _080C4730:
.align 2, 0
_080C4734: .4byte gStringVar1
_080C4738: .4byte gSpecialVar_0x8006
-_080C473C: .4byte gUnknown_0203857D
+_080C473C: .4byte gContestMons + 0xD
thumb_func_end sub_80C46EC
thumb_func_start sub_80C4740
@@ -5352,7 +5352,7 @@ _080C4838: .4byte gStringVar3
_080C483C: .4byte gLinkPlayers + 0x8
_080C4840:
lsls r1, r2, 6
- ldr r0, _080C4854 @ =gUnknown_0203857D
+ ldr r0, _080C4854 @ =gContestMons + 0xD
adds r1, r0
adds r0, r4, 0
bl sub_80C4674
@@ -5361,7 +5361,7 @@ _080C484C:
pop {r0}
bx r0
.align 2, 0
-_080C4854: .4byte gUnknown_0203857D
+_080C4854: .4byte gContestMons + 0xD
thumb_func_end sub_80C47F0
thumb_func_start sub_80C4858
diff --git a/asm/contest_link_80C857C.s b/asm/contest_link_80C857C.s
index b29e03583..6afcaec6d 100644
--- a/asm/contest_link_80C857C.s
+++ b/asm/contest_link_80C857C.s
@@ -402,7 +402,7 @@ _080C8838:
mov r1, r8
strb r1, [r4, 0xA]
_080C883E:
- ldr r0, _080C886C @ =gUnknown_0203857D
+ ldr r0, _080C886C @ =gContestMons + 0xD
adds r4, r5, r0
ldrh r0, [r6, 0x1A]
cmp r0, 0x1
@@ -425,7 +425,7 @@ _080C883E:
strb r0, [r4]
b _080C8878
.align 2, 0
-_080C886C: .4byte gUnknown_0203857D
+_080C886C: .4byte gContestMons + 0xD
_080C8870:
ldrb r0, [r4, 0x7]
strb r0, [r4, 0x5]
@@ -610,7 +610,7 @@ _080C886C:
mov r2, r9
strb r2, [r4, 0xA]
_080C8872:
- ldr r0, _080C88A0 @ =gUnknown_0203857D
+ ldr r0, _080C88A0 @ =gContestMons + 0xD
adds r4, r6, r0
ldrh r0, [r7, 0x1A]
cmp r0, 0x1
@@ -633,7 +633,7 @@ _080C8872:
strb r0, [r4]
b _080C88AC
.align 2, 0
-_080C88A0: .4byte gUnknown_0203857D
+_080C88A0: .4byte gContestMons + 0xD
_080C88A4:
ldrb r0, [r4, 0x7]
strb r0, [r4, 0x5]
diff --git a/common_syms/engine/save.txt b/common_syms/engine/save.txt
index d09a52bcf..4824255bf 100644
--- a/common_syms/engine/save.txt
+++ b/common_syms/engine/save.txt
@@ -1,5 +1,5 @@
-gLastWrittenSector
-gLastSaveCounter
+gFirstSaveSector
+gPrevSaveCounter
gLastKnownGoodSector
gDamagedSaveSectors
gSaveCounter
diff --git a/data/battle_anim.s b/data/battle_anim.s
deleted file mode 100644
index 270ba818a..000000000
--- a/data/battle_anim.s
+++ /dev/null
@@ -1,1051 +0,0 @@
- .include "include/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gOamData_837DF24:: @ 837DF24
- .2byte 0x0000
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gOamData_837DF2C:: @ 837DF2C
- .2byte 0x0000
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gOamData_837DF34:: @ 837DF34
- .2byte 0x0000
- .2byte 0x8000
- .2byte 0x0800
-
- .align 2
-gOamData_837DF3C:: @ 837DF3C
- .2byte 0x0000
- .2byte 0xC000
- .2byte 0x0800
-
- .align 2
-gOamData_837DF44:: @ 837DF44
- .2byte 0x4000
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gOamData_837DF4C:: @ 837DF4C
- .2byte 0x4000
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gOamData_837DF54:: @ 837DF54
- .2byte 0x4000
- .2byte 0x8000
- .2byte 0x0800
-
- .align 2
-gOamData_837DF5C:: @ 837DF5C
- .2byte 0x4000
- .2byte 0xC000
- .2byte 0x0800
-
- .align 2
-gOamData_837DF64:: @ 837DF64
- .2byte 0x8000
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gOamData_837DF6C:: @ 837DF6C
- .2byte 0x8000
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gOamData_837DF74:: @ 837DF74
- .2byte 0x8000
- .2byte 0x8000
- .2byte 0x0800
-
- .align 2
-gOamData_837DF7C:: @ 837DF7C
- .2byte 0x8000
- .2byte 0xC000
- .2byte 0x0800
-
- .align 2
-gOamData_837DF84:: @ 837DF84
- .2byte 0x0100
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gOamData_837DF8C:: @ 837DF8C
- .2byte 0x0100
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gOamData_837DF94:: @ 837DF94
- .2byte 0x0100
- .2byte 0x8000
- .2byte 0x0800
-
- .align 2
-gOamData_837DF9C:: @ 837DF9C
- .2byte 0x0100
- .2byte 0xC000
- .2byte 0x0800
-
- .align 2
-gOamData_837DFA4:: @ 837DFA4
- .2byte 0x4100
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gOamData_837DFAC:: @ 837DFAC
- .2byte 0x4100
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gOamData_837DFB4:: @ 837DFB4
- .2byte 0x4100
- .2byte 0x8000
- .2byte 0x0800
-
- .align 2
-gOamData_837DFBC:: @ 837DFBC
- .2byte 0x4100
- .2byte 0xC000
- .2byte 0x0800
-
- .align 2
-gOamData_837DFC4:: @ 837DFC4
- .2byte 0x8100
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gOamData_837DFCC:: @ 837DFCC
- .2byte 0x8100
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gOamData_837DFD4:: @ 837DFD4
- .2byte 0x8100
- .2byte 0x8000
- .2byte 0x0800
-
- .align 2
-gOamData_837DFDC:: @ 837DFDC
- .2byte 0x8100
- .2byte 0xC000
- .2byte 0x0800
-
- .align 2
-gOamData_837DFE4:: @ 837DFE4
- .2byte 0x0300
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gOamData_837DFEC:: @ 837DFEC
- .2byte 0x0300
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gOamData_837DFF4:: @ 837DFF4
- .2byte 0x0300
- .2byte 0x8000
- .2byte 0x0800
-
- .align 2
-gOamData_837DFFC:: @ 837DFFC
- .2byte 0x0300
- .2byte 0xC000
- .2byte 0x0800
-
- .align 2
-gOamData_837D004:: @ 837D004
- .2byte 0x4300
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gOamData_837D00C:: @ 837D00C
- .2byte 0x4300
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gOamData_837E014:: @ 837E014
- .2byte 0x4300
- .2byte 0x8000
- .2byte 0x0800
-
- .align 2
-gOamData_837E01C:: @ 837E01C
- .2byte 0x4300
- .2byte 0xC000
- .2byte 0x0800
-
- .align 2
-gOamData_837E024:: @ 837E024
- .2byte 0x8300
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gOamData_837E02C:: @ 837E02C
- .2byte 0x8300
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gOamData_837E034:: @ 837E034
- .2byte 0x8300
- .2byte 0x8000
- .2byte 0x0800
-
- .align 2
-gOamData_837E03C:: @ 837E03C
- .2byte 0x8300
- .2byte 0xC000
- .2byte 0x0800
-
- .align 2
-gOamData_837E044:: @ 837E044
- .2byte 0x0400
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gOamData_837E04C:: @ 837E04C
- .2byte 0x0400
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gOamData_837E054:: @ 837E054
- .2byte 0x0400
- .2byte 0x8000
- .2byte 0x0800
-
- .align 2
-gOamData_837E05C:: @ 837E05C
- .2byte 0x0400
- .2byte 0xC000
- .2byte 0x0800
-
- .align 2
-gOamData_837E064:: @ 837E064
- .2byte 0x4400
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gOamData_837E06C:: @ 837E06C
- .2byte 0x4400
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gOamData_837E074:: @ 837E074
- .2byte 0x4400
- .2byte 0x8000
- .2byte 0x0800
-
- .align 2
-gOamData_837E07C:: @ 837E07C
- .2byte 0x4400
- .2byte 0xC000
- .2byte 0x0800
-
- .align 2
-gOamData_837E084:: @ 837E084
- .2byte 0x8400
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gOamData_837E08C:: @ 837E08C
- .2byte 0x8400
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gOamData_837E094:: @ 837E094
- .2byte 0x8400
- .2byte 0x8000
- .2byte 0x0800
-
- .align 2
-gOamData_837E09C:: @ 837E09C
- .2byte 0x8400
- .2byte 0xC000
- .2byte 0x0800
-
- .align 2
-gOamData_837E0A4:: @ 837E0A4
- .2byte 0x0500
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gOamData_837E0AC:: @ 837E0AC
- .2byte 0x0500
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gOamData_837E0B4:: @ 837E0B4
- .2byte 0x0500
- .2byte 0x8000
- .2byte 0x0800
-
- .align 2
-gOamData_837E0BC:: @ 837E0BC
- .2byte 0x0500
- .2byte 0xC000
- .2byte 0x0800
-
- .align 2
-gOamData_837E0C4:: @ 837E0C4
- .2byte 0x4500
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gOamData_837E0CC:: @ 837E0CC
- .2byte 0x4500
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gOamData_837E0D4:: @ 837E0D4
- .2byte 0x4500
- .2byte 0x8000
- .2byte 0x0800
-
- .align 2
-gOamData_837E0DC:: @ 837E0DC
- .2byte 0x4500
- .2byte 0xC000
- .2byte 0x0800
-
- .align 2
-gOamData_837E0E4:: @ 837E0E4
- .2byte 0x8500
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gOamData_837E0EC:: @ 837E0EC
- .2byte 0x8500
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gOamData_837E0F4:: @ 837E0F4
- .2byte 0x8500
- .2byte 0x8000
- .2byte 0x0800
-
- .align 2
-gOamData_837E0FC:: @ 837E0FC
- .2byte 0x8500
- .2byte 0xC000
- .2byte 0x0800
-
- .align 2
-gOamData_837E104:: @ 837E104
- .2byte 0x0700
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gOamData_837E10C:: @ 837E10C
- .2byte 0x0700
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gOamData_837E114:: @ 837E114
- .2byte 0x0700
- .2byte 0x8000
- .2byte 0x0800
-
- .align 2
-gOamData_837E11C:: @ 837E11C
- .2byte 0x0700
- .2byte 0xC000
- .2byte 0x0800
-
- .align 2
-gOamData_837E124:: @ 837E124
- .2byte 0x4700
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gOamData_837E12C:: @ 837E12C
- .2byte 0x4700
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gOamData_837E134:: @ 837E134
- .2byte 0x4700
- .2byte 0x8000
- .2byte 0x0800
-
- .align 2
-gOamData_837E13C:: @ 837E13C
- .2byte 0x4700
- .2byte 0xC000
- .2byte 0x0800
-
- .align 2
-gOamData_837E144:: @ 837E144
- .2byte 0x8700
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gOamData_837E14C:: @ 837E14C
- .2byte 0x8700
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gOamData_837E154:: @ 837E154
- .2byte 0x8700
- .2byte 0x8000
- .2byte 0x0800
-
- .align 2
-gOamData_837E15C:: @ 837E15C
- .2byte 0x8700
- .2byte 0xC000
- .2byte 0x0800
-
- .align 2
-gBattleAnimPicTable:: @ 837E164
- obj_tiles gBattleAnimSpriteSheet_000, 0x200, 10000
- obj_tiles gBattleAnimSpriteSheet_001, 0x300, 10001
- obj_tiles gBattleAnimSpriteSheet_002, 0x200, 10002
- obj_tiles gBattleAnimSpriteSheet_003, 0x100, 10003
- obj_tiles gBattleAnimSpriteSheet_004, 0x200, 10004
- obj_tiles gBattleAnimSpriteSheet_005, 0x400, 10005
- obj_tiles gBattleAnimSpriteSheet_006, 0x180, 10006
- obj_tiles gBattleAnimSpriteSheet_007, 0x800, 10007
- obj_tiles gBattleAnimSpriteSheet_008, 0x20, 10008
- obj_tiles gBattleAnimSpriteSheet_009, 0x400, 10009
- obj_tiles gBattleAnimSpriteSheet_010, 0x1200, 10010
- obj_tiles gBattleAnimSpriteSheet_011, 0x180, 10011
- obj_tiles gBattleAnimSpriteSheet_012, 0x80, 10012
- obj_tiles gBattleAnimSpriteSheet_013, 0x80, 10013
- obj_tiles gBattleAnimSpriteSheet_014, 0x280, 10014
- obj_tiles gBattleAnimSpriteSheet_015, 0x80, 10015
- obj_tiles gBattleAnimSpriteSheet_016, 0x100, 10016
- obj_tiles gBattleAnimSpriteSheet_017, 0x20, 10017
- obj_tiles gBattleAnimSpriteSheet_018, 0x80, 10018
- obj_tiles gBattleAnimSpriteSheet_019, 0x400, 10019
- obj_tiles gBattleAnimSpriteSheet_020, 0x200, 10020
- obj_tiles gBattleAnimSpriteSheet_021, 0xA00, 10021
- obj_tiles gBattleAnimSpriteSheet_021, 0xA00, 10022
- obj_tiles gBattleAnimSpriteSheet_023, 0x380, 10023
- obj_tiles gBattleAnimSpriteSheet_024, 0x300, 10024
- obj_tiles gBattleAnimSpriteSheet_025, 0xA00, 10025
- obj_tiles gBattleAnimSpriteSheet_026, 0xA00, 10026
- obj_tiles gBattleAnimSpriteSheet_027, 0xA00, 10027
- obj_tiles gBattleAnimSpriteSheet_028, 0xA00, 10028
- obj_tiles gBattleAnimSpriteSheet_029, 0xA00, 10029
- obj_tiles gBattleAnimSpriteSheet_030, 0xA00, 10030
- obj_tiles gBattleAnimSpriteSheet_031, 0xE00, 10031
- obj_tiles gBattleAnimSpriteSheet_032, 0x380, 10032
- obj_tiles gBattleAnimSpriteSheet_033, 0x1000, 10033
- obj_tiles gBattleAnimSpriteSheet_034, 0x800, 10034
- obj_tiles gBattleAnimSpriteSheet_035, 0xA00, 10035
- obj_tiles gBattleAnimSpriteSheet_036, 0x800, 10036
- obj_tiles gBattleAnimSpriteSheet_037, 0xA00, 10037
- obj_tiles gBattleAnimSpriteSheet_038, 0xA00, 10038
- obj_tiles gBattleAnimSpriteSheet_039, 0xA00, 10039
- obj_tiles gBattleAnimSpriteSheet_040, 0xA00, 10040
- obj_tiles gBattleAnimSpriteSheet_041, 0xA00, 10041
- obj_tiles gBattleAnimSpriteSheet_042, 0xA00, 10042
- obj_tiles gBattleAnimSpriteSheet_043, 0xA00, 10043
- obj_tiles gBattleAnimSpriteSheet_044, 0xA00, 10044
- obj_tiles gBattleAnimSpriteSheet_045, 0xA00, 10045
- obj_tiles gBattleAnimSpriteSheet_046, 0x1000, 10046
- obj_tiles gBattleAnimSpriteSheet_046, 0x1000, 10047
- obj_tiles gBattleAnimSpriteSheet_048, 0x1000, 10048
- obj_tiles gBattleAnimSpriteSheet_048, 0x1000, 10049
- obj_tiles gBattleAnimSpriteSheet_050, 0x200, 10050
- obj_tiles gBattleAnimSpriteSheet_051, 0x200, 10051
- obj_tiles gBattleAnimSpriteSheet_052, 0x200, 10052
- obj_tiles gBattleAnimSpriteSheet_053, 0x800, 10053
- obj_tiles gBattleAnimSpriteSheet_054, 0x80, 10054
- obj_tiles gBattleAnimSpriteSheet_055, 0x200, 10055
- obj_tiles gBattleAnimSpriteSheet_056, 0x1000, 10056
- obj_tiles gBattleAnimSpriteSheet_057, 0x180, 10057
- obj_tiles gBattleAnimSpriteSheet_058, 0xC00, 10058
- obj_tiles gBattleAnimSpriteSheet_059, 0x100, 10059
- obj_tiles gBattleAnimSpriteSheet_060, 0x40, 10060
- obj_tiles gBattleAnimSpriteSheet_061, 0x180, 10061
- obj_tiles gBattleAnimSpriteSheet_062, 0x800, 10062
- obj_tiles gBattleAnimSpriteSheet_063, 0x480, 10063
- obj_tiles gBattleAnimSpriteSheet_064, 0x200, 10064
- obj_tiles gBattleAnimSpriteSheet_065, 0x200, 10065
- obj_tiles gBattleAnimSpriteSheet_066, 0x100, 10066
- obj_tiles gBattleAnimSpriteSheet_065, 0x200, 10067
- obj_tiles gBattleAnimSpriteSheet_065, 0x200, 10068
- obj_tiles gBattleAnimSpriteSheet_065, 0x200, 10069
- obj_tiles gBattleAnimSpriteSheet_070, 0x200, 10070
- obj_tiles gBattleAnimSpriteSheet_071, 0xA00, 10071
- obj_tiles gBattleAnimSpriteSheet_072, 0x300, 10072
- obj_tiles gBattleAnimSpriteSheet_073, 0x180, 10073
- obj_tiles gBattleAnimSpriteSheet_074, 0xA0, 10074
- obj_tiles gBattleAnimSpriteSheet_075, 0x700, 10075
- obj_tiles gBattleAnimSpriteSheet_076, 0x400, 10076
- obj_tiles gBattleAnimSpriteSheet_077, 0x200, 10077
- obj_tiles gBattleAnimSpriteSheet_078, 0x300, 10078
- obj_tiles gBattleAnimSpriteSheet_079, 0xC00, 10079
- obj_tiles gBattleAnimSpriteSheet_080, 0xA00, 10080
- obj_tiles gBattleAnimSpriteSheet_081, 0x80, 10081
- obj_tiles gBattleAnimSpriteSheet_082, 0x40, 10082
- obj_tiles gBattleAnimSpriteSheet_083, 0xE00, 10083
- obj_tiles gBattleAnimSpriteSheet_084, 0xE00, 10084
- obj_tiles gBattleAnimSpriteSheet_085, 0x280, 10085
- obj_tiles gBattleAnimSpriteSheet_086, 0x200, 10086
- obj_tiles gBattleAnimSpriteSheet_087, 0x80, 10087
- obj_tiles gBattleAnimSpriteSheet_088, 0xC0, 10088
- obj_tiles gBattleAnimSpriteSheet_089, 0xA00, 10089
- obj_tiles gBattleAnimSpriteSheet_090, 0x200, 10090
- obj_tiles gBattleAnimSpriteSheet_091, 0x180, 10091
- obj_tiles gBattleAnimSpriteSheet_092, 0x80, 10092
- obj_tiles gBattleAnimSpriteSheet_093, 0x1000, 10093
- obj_tiles gBattleAnimSpriteSheet_094, 0xA00, 10094
- obj_tiles gBattleAnimSpriteSheet_095, 0x180, 10095
- obj_tiles gBattleAnimSpriteSheet_096, 0x380, 10096
- obj_tiles gBattleAnimSpriteSheet_097, 0xC00, 10097
- obj_tiles gBattleAnimSpriteSheet_098, 0x200, 10098
- obj_tiles gBattleAnimSpriteSheet_099, 0x200, 10099
- obj_tiles gBattleAnimSpriteSheet_100, 0x200, 10100
- obj_tiles gBattleAnimSpriteSheet_101, 0x200, 10101
- obj_tiles gBattleAnimSpriteSheet_102, 0x400, 10102
- obj_tiles gBattleAnimSpriteSheet_103, 0x80, 10103
- obj_tiles gBattleAnimSpriteSheet_104, 0x400, 10104
- obj_tiles gBattleAnimSpriteSheet_105, 0xC00, 10105
- obj_tiles gBattleAnimSpriteSheet_106, 0x200, 10106
- obj_tiles gBattleAnimSpriteSheet_107, 0x1000, 10107
- obj_tiles gBattleAnimSpriteSheet_108, 0xA00, 10108
- obj_tiles gBattleAnimSpriteSheet_109, 0x20, 10109
- obj_tiles gBattleAnimSpriteSheet_110, 0xE00, 10110
- obj_tiles gBattleAnimSpriteSheet_111, 0x80, 10111
- obj_tiles gBattleAnimSpriteSheet_112, 0xA00, 10112
- obj_tiles gBattleAnimSpriteSheet_113, 0x400, 10113
- obj_tiles gBattleAnimSpriteSheet_114, 0x200, 10114
- obj_tiles gBattleAnimSpriteSheet_115, 0x700, 10115
- obj_tiles gBattleAnimSpriteSheet_116, 0x800, 10116
- obj_tiles gBattleAnimSpriteSheet_117, 0xA00, 10117
- obj_tiles gBattleAnimSpriteSheet_118, 0x600, 10118
- obj_tiles gBattleAnimSpriteSheet_119, 0x800, 10119
- obj_tiles gBattleAnimSpriteSheet_120, 0x200, 10120
- obj_tiles gBattleAnimSpriteSheet_121, 0x40, 10121
- obj_tiles gBattleAnimSpriteSheet_122, 0x180, 10122
- obj_tiles gBattleAnimSpriteSheet_123, 0x600, 10123
- obj_tiles gBattleAnimSpriteSheet_124, 0x600, 10124
- obj_tiles gBattleAnimSpriteSheet_125, 0x200, 10125
- obj_tiles gBattleAnimSpriteSheet_126, 0x80, 10126
- obj_tiles gBattleAnimSpriteSheet_127, 0x200, 10127
- obj_tiles gBattleAnimSpriteSheet_128, 0x800, 10128
- obj_tiles gBattleAnimSpriteSheet_129, 0x80, 10129
- obj_tiles gBattleAnimSpriteSheet_130, 0xA00, 10130
- obj_tiles gBattleAnimSpriteSheet_131, 0x280, 10131
- obj_tiles gBattleAnimSpriteSheet_132, 0x280, 10132
- obj_tiles gBattleAnimSpriteSheet_133, 0x100, 10133
- obj_tiles gBattleAnimSpriteSheet_134, 0x200, 10134
- obj_tiles gBattleAnimSpriteSheet_135, 0x200, 10135
- obj_tiles gBattleAnimSpriteSheet_136, 0x20, 10136
- obj_tiles gBattleAnimSpriteSheet_137, 0xA00, 10137
- obj_tiles gBattleAnimSpriteSheet_138, 0x800, 10138
- obj_tiles gBattleAnimSpriteSheet_139, 0x800, 10139
- obj_tiles gBattleAnimSpriteSheet_140, 0xC0, 10140
- obj_tiles gBattleAnimSpriteSheet_141, 0x1C0, 10141
- obj_tiles gBattleAnimSpriteSheet_142, 0x100, 10142
- obj_tiles gBattleAnimSpriteSheet_143, 0x800, 10143
- obj_tiles gBattleAnimSpriteSheet_144, 0x200, 10144
- obj_tiles gBattleAnimSpriteSheet_145, 0x800, 10145
- obj_tiles gBattleAnimSpriteSheet_146, 0x180, 10146
- obj_tiles gBattleAnimSpriteSheet_147, 0x180, 10147
- obj_tiles gBattleAnimSpriteSheet_148, 0x200, 10148
- obj_tiles gBattleAnimSpriteSheet_149, 0x200, 10149
- obj_tiles gBattleAnimSpriteSheet_150, 0x180, 10150
- obj_tiles gBattleAnimSpriteSheet_151, 0x400, 10151
- obj_tiles gBattleAnimSpriteSheet_152, 0x80, 10152
- obj_tiles gBattleAnimSpriteSheet_153, 0x100, 10153
- obj_tiles gBattleAnimSpriteSheet_154, 0x100, 10154
- obj_tiles gBattleAnimSpriteSheet_155, 0x140, 10155
- obj_tiles gBattleAnimSpriteSheet_156, 0x800, 10156
- obj_tiles gBattleAnimSpriteSheet_157, 0x200, 10157
- obj_tiles gBattleAnimSpriteSheet_158, 0x100, 10158
- obj_tiles gBattleAnimSpriteSheet_159, 0xA0, 10159
- obj_tiles gBattleAnimSpriteSheet_160, 0x100, 10160
- obj_tiles gBattleAnimSpriteSheet_161, 0x80, 10161
- obj_tiles gBattleAnimSpriteSheet_162, 0x300, 10162
- obj_tiles gBattleAnimSpriteSheet_163, 0x100, 10163
- obj_tiles gBattleAnimSpriteSheet_163, 0x100, 10164
- obj_tiles gBattleAnimSpriteSheet_163, 0x100, 10165
- obj_tiles gBattleAnimSpriteSheet_166, 0x800, 10166
- obj_tiles gBattleAnimSpriteSheet_166, 0x800, 10167
- obj_tiles gBattleAnimSpriteSheet_166, 0x800, 10168
- obj_tiles gBattleAnimSpriteSheet_166, 0x800, 10169
- obj_tiles gBattleAnimSpriteSheet_166, 0x800, 10170
- obj_tiles gBattleAnimSpriteSheet_171, 0x80, 10171
- obj_tiles gBattleAnimSpriteSheet_144, 0x200, 10172
- obj_tiles gBattleAnimSpriteSheet_173, 0x200, 10173
- obj_tiles gBattleAnimSpriteSheet_174, 0x200, 10174
- obj_tiles gBattleAnimSpriteSheet_175, 0x80, 10175
- obj_tiles gBattleAnimSpriteSheet_176, 0x200, 10176
- obj_tiles gBattleAnimSpriteSheet_177, 0x500, 10177
- obj_tiles gBattleAnimSpriteSheet_178, 0x800, 10178
- obj_tiles gBattleAnimSpriteSheet_179, 0x400, 10179
- obj_tiles gBattleAnimSpriteSheet_180, 0x20, 10180
- obj_tiles gBattleAnimSpriteSheet_181, 0x800, 10181
- obj_tiles gBattleAnimSpriteSheet_182, 0x100, 10182
- obj_tiles gBattleAnimSpriteSheet_183, 0x800, 10183
- obj_tiles gBattleAnimSpriteSheet_184, 0x400, 10184
- obj_tiles gBattleAnimSpriteSheet_185, 0xA00, 10185
- obj_tiles gBattleAnimSpriteSheet_186, 0x1000, 10186
- obj_tiles gBattleAnimSpriteSheet_187, 0x800, 10187
- obj_tiles gBattleAnimSpriteSheet_188, 0x400, 10188
- obj_tiles gBattleAnimSpriteSheet_189, 0x200, 10189
- obj_tiles gBattleAnimSpriteSheet_190, 0x800, 10190
- obj_tiles gBattleAnimSpriteSheet_191, 0x800, 10191
- obj_tiles gBattleAnimSpriteSheet_192, 0x800, 10192
- obj_tiles gBattleAnimSpriteSheet_193, 0x200, 10193
- obj_tiles gBattleAnimSpriteSheet_194, 0x800, 10194
- obj_tiles gBattleAnimSpriteSheet_195, 0x200, 10195
- obj_tiles gBattleAnimSpriteSheet_196, 0x800, 10196
- obj_tiles gBattleAnimSpriteSheet_197, 0x200, 10197
- obj_tiles gBattleAnimSpriteSheet_198, 0x800, 10198
- obj_tiles gBattleAnimSpriteSheet_199, 0x400, 10199
- obj_tiles gBattleAnimSpriteSheet_200, 0x200, 10200
- obj_tiles gBattleAnimSpriteSheet_201, 0xA80, 10201
- obj_tiles gBattleAnimSpriteSheet_202, 0x600, 10202
- obj_tiles gBattleAnimSpriteSheet_203, 0x800, 10203
- obj_tiles gBattleAnimSpriteSheet_204, 0x200, 10204
- obj_tiles gBattleAnimSpriteSheet_205, 0x600, 10205
- obj_tiles gBattleAnimSpriteSheet_206, 0x800, 10206
- obj_tiles gBattleAnimSpriteSheet_207, 0x180, 10207
- obj_tiles gBattleAnimSpriteSheet_208, 0x800, 10208
- obj_tiles gBattleAnimSpriteSheet_209, 0x800, 10209
- obj_tiles gBattleAnimSpriteSheet_210, 0x80, 10210
- obj_tiles gBattleAnimSpriteSheet_211, 0x80, 10211
- obj_tiles gBattleAnimSpriteSheet_212, 0x800, 10212
- obj_tiles gBattleAnimSpriteSheet_213, 0x800, 10213
- obj_tiles gBattleAnimSpriteSheet_214, 0x600, 10214
- obj_tiles gBattleAnimSpriteSheet_215, 0x600, 10215
- obj_tiles gBattleAnimSpriteSheet_210, 0x80, 10216
- obj_tiles gBattleAnimSpriteSheet_217, 0x80, 10217
- obj_tiles gBattleAnimSpriteSheet_218, 0x180, 10218
- obj_tiles gBattleAnimSpriteSheet_210, 0x80, 10219
- obj_tiles gBattleAnimSpriteSheet_220, 0x200, 10220
- obj_tiles gBattleAnimSpriteSheet_221, 0x400, 10221
- obj_tiles gBattleAnimSpriteSheet_222, 0xA00, 10222
- obj_tiles gBattleAnimSpriteSheet_223, 0x800, 10223
- obj_tiles gBattleAnimSpriteSheet_224, 0x200, 10224
- obj_tiles gBattleAnimSpriteSheet_225, 0x400, 10225
- obj_tiles gBattleAnimSpriteSheet_226, 0x80, 10226
- obj_tiles gBattleAnimSpriteSheet_227, 0x800, 10227
- obj_tiles gBattleAnimSpriteSheet_228, 0x200, 10228
- obj_tiles gBattleAnimSpriteSheet_229, 0x300, 10229
- obj_tiles gBattleAnimSpriteSheet_230, 0x800, 10230
- obj_tiles gBattleAnimSpriteSheet_231, 0x380, 10231
- obj_tiles gBattleAnimSpriteSheet_232, 0x800, 10232
- obj_tiles gBattleAnimSpriteSheet_233, 0xC0, 10233
- obj_tiles gBattleAnimSpriteSheet_234, 0x800, 10234
- obj_tiles gBattleAnimSpriteSheet_235, 0x60, 10235
- obj_tiles gBattleAnimSpriteSheet_235, 0x60, 10236
- obj_tiles gBattleAnimSpriteSheet_235, 0x60, 10237
- obj_tiles gBattleAnimSpriteSheet_238, 0x80, 10238
- obj_tiles gBattleAnimSpriteSheet_239, 0x180, 10239
- obj_tiles gBattleAnimSpriteSheet_240, 0x180, 10240
- obj_tiles gBattleAnimSpriteSheet_241, 0x200, 10241
- obj_tiles gBattleAnimSpriteSheet_242, 0x200, 10242
- obj_tiles gBattleAnimSpriteSheet_243, 0x20, 10243
- obj_tiles gBattleAnimSpriteSheet_244, 0x400, 10244
- obj_tiles gBattleAnimSpriteSheet_245, 0x600, 10245
- obj_tiles gBattleAnimSpriteSheet_246, 0x1000, 10246
- obj_tiles gBattleAnimSpriteSheet_247, 0x400, 10247
- obj_tiles gBattleAnimSpriteSheet_248, 0x20, 10248
- obj_tiles gBattleAnimSpriteSheet_249, 0x80, 10249
- obj_tiles gBattleAnimSpriteSheet_250, 0x800, 10250
- obj_tiles gBattleAnimSpriteSheet_251, 0x80, 10251
- obj_tiles gBattleAnimSpriteSheet_252, 0x200, 10252
- obj_tiles gBattleAnimSpriteSheet_253, 0x400, 10253
- obj_tiles gBattleAnimSpriteSheet_254, 0x200, 10254
- obj_tiles gBattleAnimSpriteSheet_255, 0x200, 10255
- obj_tiles gBattleAnimSpriteSheet_256, 0x800, 10256
- obj_tiles gBattleAnimSpriteSheet_257, 0x280, 10257
- obj_tiles gBattleAnimSpriteSheet_258, 0x200, 10258
- obj_tiles gBattleAnimSpriteSheet_149, 0x200, 10259
- obj_tiles gBattleAnimSpriteSheet_260, 0x400, 10260
- obj_tiles gBattleAnimSpriteSheet_261, 0x200, 10261
- obj_tiles gBattleAnimSpriteSheet_262, 0x200, 10262
- obj_tiles gBattleAnimSpriteSheet_263, 0x80, 10263
- obj_tiles gBattleAnimSpriteSheet_264, 0x20, 10264
- obj_tiles gBattleAnimSpriteSheet_264, 0x20, 10265
- obj_tiles gBattleAnimSpriteSheet_266, 0x80, 10266
- obj_tiles gBattleAnimSpriteSheet_212, 0x800, 10267
- obj_tiles gBattleAnimSpriteSheet_264, 0x20, 10268
- obj_tiles gBattleAnimSpriteSheet_269, 0x80, 10269
- obj_tiles gBattleAnimSpriteSheet_270, 0x400, 10270
- obj_tiles gBattleAnimSpriteSheet_271, 0x80, 10271
- obj_tiles gBattleAnimSpriteSheet_272, 0x800, 10272
- obj_tiles gBattleAnimSpriteSheet_273, 0x20, 10273
- obj_tiles gBattleAnimSpriteSheet_274, 0x800, 10274
- obj_tiles gBattleAnimSpriteSheet_275, 0x800, 10275
- obj_tiles gBattleAnimSpriteSheet_276, 0x800, 10276
- obj_tiles gBattleAnimSpriteSheet_277, 0x1000, 10277
- obj_tiles gBattleAnimSpriteSheet_278, 0x800, 10278
- obj_tiles gBattleAnimSpriteSheet_279, 0xA0, 10279
- obj_tiles gBattleAnimSpriteSheet_280, 0x800, 10280
- obj_tiles gBattleAnimSpriteSheet_281, 0x200, 10281
- obj_tiles gBattleAnimSpriteSheet_282, 0x600, 10282
- obj_tiles gBattleAnimSpriteSheet_283, 0x200, 10283
- obj_tiles gBattleAnimSpriteSheet_284, 0x800, 10284
- obj_tiles gBattleAnimSpriteSheet_285, 0x200, 10285
- obj_tiles gBattleAnimSpriteSheet_183, 0x800, 10286
- obj_tiles gBattleAnimSpriteSheet_056, 0x1000, 10287
- obj_tiles gBattleAnimSpriteSheet_163, 0x100, 10288
-
- .align 2
-gBattleAnimPaletteTable:: @ 837EA6C
- obj_pal gBattleAnimSpritePalette_000, 10000
- obj_pal gBattleAnimSpritePalette_001, 10001
- obj_pal gBattleAnimSpritePalette_002, 10002
- obj_pal gBattleAnimSpritePalette_003, 10003
- obj_pal gBattleAnimSpritePalette_004, 10004
- obj_pal gBattleAnimSpritePalette_005, 10005
- obj_pal gBattleAnimSpritePalette_006, 10006
- obj_pal gBattleAnimSpritePalette_007, 10007
- obj_pal gBattleAnimSpritePalette_008, 10008
- obj_pal gBattleAnimSpritePalette_009, 10009
- obj_pal gBattleAnimSpritePalette_010, 10010
- obj_pal gBattleAnimSpritePalette_011, 10011
- obj_pal gBattleAnimSpritePalette_012, 10012
- obj_pal gBattleAnimSpritePalette_013, 10013
- obj_pal gBattleAnimSpritePalette_014, 10014
- obj_pal gBattleAnimSpritePalette_015, 10015
- obj_pal gBattleAnimSpritePalette_016, 10016
- obj_pal gBattleAnimSpritePalette_016, 10017
- obj_pal gBattleAnimSpritePalette_018, 10018
- obj_pal gBattleAnimSpritePalette_019, 10019
- obj_pal gBattleAnimSpritePalette_020, 10020
- obj_pal gBattleAnimSpritePalette_021, 10021
- obj_pal gBattleAnimSpritePalette_022, 10022
- obj_pal gBattleAnimSpritePalette_023, 10023
- obj_pal gBattleAnimSpritePalette_024, 10024
- obj_pal gBattleAnimSpritePalette_025, 10025
- obj_pal gBattleAnimSpritePalette_026, 10026
- obj_pal gBattleAnimSpritePalette_027, 10027
- obj_pal gBattleAnimSpritePalette_028, 10028
- obj_pal gBattleAnimSpritePalette_029, 10029
- obj_pal gBattleAnimSpritePalette_030, 10030
- obj_pal gBattleAnimSpritePalette_031, 10031
- obj_pal gBattleAnimSpritePalette_032, 10032
- obj_pal gBattleAnimSpritePalette_033, 10033
- obj_pal gBattleAnimSpritePalette_033, 10034
- obj_pal gBattleAnimSpritePalette_033, 10035
- obj_pal gBattleAnimSpritePalette_036, 10036
- obj_pal gBattleAnimSpritePalette_036, 10037
- obj_pal gBattleAnimSpritePalette_038, 10038
- obj_pal gBattleAnimSpritePalette_039, 10039
- obj_pal gBattleAnimSpritePalette_038, 10040
- obj_pal gBattleAnimSpritePalette_038, 10041
- obj_pal gBattleAnimSpritePalette_042, 10042
- obj_pal gBattleAnimSpritePalette_043, 10043
- obj_pal gBattleAnimSpritePalette_044, 10044
- obj_pal gBattleAnimSpritePalette_045, 10045
- obj_pal gBattleAnimSpritePalette_046, 10046
- obj_pal gBattleAnimSpritePalette_047, 10046
- obj_pal gBattleAnimSpritePalette_048, 10048
- obj_pal gBattleAnimSpritePalette_049, 10049
- obj_pal gBattleAnimSpritePalette_050, 10050
- obj_pal gBattleAnimSpritePalette_050, 10051
- obj_pal gBattleAnimSpritePalette_050, 10052
- obj_pal gBattleAnimSpritePalette_026, 10053
- obj_pal gBattleAnimSpritePalette_054, 10054
- obj_pal gBattleAnimSpritePalette_050, 10055
- obj_pal gBattleAnimSpritePalette_056, 10056
- obj_pal gBattleAnimSpritePalette_057, 10057
- obj_pal gBattleAnimSpritePalette_058, 10058
- obj_pal gBattleAnimSpritePalette_059, 10059
- obj_pal gBattleAnimSpritePalette_060, 10060
- obj_pal gBattleAnimSpritePalette_061, 10061
- obj_pal gBattleAnimSpritePalette_062, 10062
- obj_pal gBattleAnimSpritePalette_063, 10063
- obj_pal gBattleAnimSpritePalette_064, 10064
- obj_pal gBattleAnimSpritePalette_065, 10065
- obj_pal gBattleAnimSpritePalette_066, 10066
- obj_pal gBattleAnimSpritePalette_067, 10067
- obj_pal gBattleAnimSpritePalette_068, 10068
- obj_pal gBattleAnimSpritePalette_065, 10069
- obj_pal gBattleAnimSpritePalette_070, 10070
- obj_pal gBattleAnimSpritePalette_070, 10071
- obj_pal gBattleAnimSpritePalette_072, 10072
- obj_pal gBattleAnimSpritePalette_073, 10073
- obj_pal gBattleAnimSpritePalette_074, 10074
- obj_pal gBattleAnimSpritePalette_075, 10075
- obj_pal gBattleAnimSpritePalette_076, 10076
- obj_pal gBattleAnimSpritePalette_076, 10077
- obj_pal gBattleAnimSpritePalette_078, 10078
- obj_pal gBattleAnimSpritePalette_078, 10079
- obj_pal gBattleAnimSpritePalette_080, 10080
- obj_pal gBattleAnimSpritePalette_081, 10081
- obj_pal gBattleAnimSpritePalette_082, 10082
- obj_pal gBattleAnimSpritePalette_083, 10083
- obj_pal gBattleAnimSpritePalette_084, 10084
- obj_pal gBattleAnimSpritePalette_085, 10085
- obj_pal gBattleAnimSpritePalette_086, 10086
- obj_pal gBattleAnimSpritePalette_087, 10087
- obj_pal gBattleAnimSpritePalette_088, 10088
- obj_pal gBattleAnimSpritePalette_089, 10089
- obj_pal gBattleAnimSpritePalette_090, 10090
- obj_pal gBattleAnimSpritePalette_091, 10091
- obj_pal gBattleAnimSpritePalette_092, 10092
- obj_pal gBattleAnimSpritePalette_093, 10093
- obj_pal gBattleAnimSpritePalette_094, 10094
- obj_pal gBattleAnimSpritePalette_095, 10095
- obj_pal gBattleAnimSpritePalette_096, 10096
- obj_pal gBattleAnimSpritePalette_097, 10097
- obj_pal gBattleAnimSpritePalette_094, 10098
- obj_pal gBattleAnimSpritePalette_099, 10099
- obj_pal gBattleAnimSpritePalette_100, 10100
- obj_pal gBattleAnimSpritePalette_101, 10101
- obj_pal gBattleAnimSpritePalette_101, 10102
- obj_pal gBattleAnimSpritePalette_103, 10103
- obj_pal gBattleAnimSpritePalette_104, 10104
- obj_pal gBattleAnimSpritePalette_105, 10105
- obj_pal gBattleAnimSpritePalette_105, 10106
- obj_pal gBattleAnimSpritePalette_107, 10107
- obj_pal gBattleAnimSpritePalette_107, 10108
- obj_pal gBattleAnimSpritePalette_109, 10109
- obj_pal gBattleAnimSpritePalette_109, 10110
- obj_pal gBattleAnimSpritePalette_111, 10111
- obj_pal gBattleAnimSpritePalette_112, 10112
- obj_pal gBattleAnimSpritePalette_113, 10113
- obj_pal gBattleAnimSpritePalette_114, 10114
- obj_pal gBattleAnimSpritePalette_115, 10115
- obj_pal gBattleAnimSpritePalette_116, 10116
- obj_pal gBattleAnimSpritePalette_117, 10117
- obj_pal gBattleAnimSpritePalette_118, 10118
- obj_pal gBattleAnimSpritePalette_119, 10119
- obj_pal gBattleAnimSpritePalette_120, 10120
- obj_pal gBattleAnimSpritePalette_121, 10121
- obj_pal gBattleAnimSpritePalette_122, 10122
- obj_pal gBattleAnimSpritePalette_122, 10123
- obj_pal gBattleAnimSpritePalette_124, 10124
- obj_pal gBattleAnimSpritePalette_125, 10125
- obj_pal gBattleAnimSpritePalette_126, 10126
- obj_pal gBattleAnimSpritePalette_127, 10127
- obj_pal gBattleAnimSpritePalette_128, 10128
- obj_pal gBattleAnimSpritePalette_128, 10129
- obj_pal gBattleAnimSpritePalette_130, 10130
- obj_pal gBattleAnimSpritePalette_130, 10131
- obj_pal gBattleAnimSpritePalette_132, 10132
- obj_pal gBattleAnimSpritePalette_133, 10133
- obj_pal gBattleAnimSpritePalette_133, 10134
- obj_pal gBattleAnimSpritePalette_135, 10135
- obj_pal gBattleAnimSpritePalette_136, 10136
- obj_pal gBattleAnimSpritePalette_135, 10137
- obj_pal gBattleAnimSpritePalette_135, 10138
- obj_pal gBattleAnimSpritePalette_139, 10139
- obj_pal gBattleAnimSpritePalette_140, 10140
- obj_pal gBattleAnimSpritePalette_141, 10141
- obj_pal gBattleAnimSpritePalette_141, 10142
- obj_pal gBattleAnimSpritePalette_143, 10143
- obj_pal gBattleAnimSpritePalette_144, 10144
- obj_pal gBattleAnimSpritePalette_139, 10145
- obj_pal gBattleAnimSpritePalette_115, 10146
- obj_pal gBattleAnimSpritePalette_147, 10147
- obj_pal gBattleAnimSpritePalette_148, 10148
- obj_pal gBattleAnimSpritePalette_148, 10149
- obj_pal gBattleAnimSpritePalette_150, 10150
- obj_pal gBattleAnimSpritePalette_150, 10151
- obj_pal gBattleAnimSpritePalette_152, 10152
- obj_pal gBattleAnimSpritePalette_153, 10153
- obj_pal gBattleAnimSpritePalette_154, 10154
- obj_pal gBattleAnimSpritePalette_155, 10155
- obj_pal gBattleAnimSpritePalette_156, 10156
- obj_pal gBattleAnimSpritePalette_157, 10157
- obj_pal gBattleAnimSpritePalette_158, 10158
- obj_pal gBattleAnimSpritePalette_159, 10159
- obj_pal gBattleAnimSpritePalette_160, 10160
- obj_pal gBattleAnimSpritePalette_161, 10161
- obj_pal gBattleAnimSpritePalette_162, 10162
- obj_pal gBattleAnimSpritePalette_163, 10163
- obj_pal gBattleAnimSpritePalette_164, 10164
- obj_pal gBattleAnimSpritePalette_165, 10165
- obj_pal gBattleAnimSpritePalette_166, 10166
- obj_pal gBattleAnimSpritePalette_167, 10167
- obj_pal gBattleAnimSpritePalette_168, 10168
- obj_pal gBattleAnimSpritePalette_169, 10169
- obj_pal gBattleAnimSpritePalette_170, 10170
- obj_pal gBattleAnimSpritePalette_171, 10171
- obj_pal gBattleAnimSpritePalette_172, 10172
- obj_pal gBattleAnimSpritePalette_001, 10173
- obj_pal gBattleAnimSpritePalette_174, 10174
- obj_pal gBattleAnimSpritePalette_175, 10175
- obj_pal gBattleAnimSpritePalette_176, 10176
- obj_pal gBattleAnimSpritePalette_177, 10177
- obj_pal gBattleAnimSpritePalette_178, 10178
- obj_pal gBattleAnimSpritePalette_179, 10179
- obj_pal gBattleAnimSpritePalette_179, 10180
- obj_pal gBattleAnimSpritePalette_179, 10181
- obj_pal gBattleAnimSpritePalette_182, 10182
- obj_pal gBattleAnimSpritePalette_183, 10183
- obj_pal gBattleAnimSpritePalette_184, 10184
- obj_pal gBattleAnimSpritePalette_185, 10185
- obj_pal gBattleAnimSpritePalette_186, 10186
- obj_pal gBattleAnimSpritePalette_187, 10187
- obj_pal gBattleAnimSpritePalette_188, 10188
- obj_pal gBattleAnimSpritePalette_189, 10189
- obj_pal gBattleAnimSpritePalette_190, 10190
- obj_pal gBattleAnimSpritePalette_191, 10191
- obj_pal gBattleAnimSpritePalette_192, 10192
- obj_pal gBattleAnimSpritePalette_193, 10193
- obj_pal gBattleAnimSpritePalette_194, 10194
- obj_pal gBattleAnimSpritePalette_195, 10195
- obj_pal gBattleAnimSpritePalette_196, 10196
- obj_pal gBattleAnimSpritePalette_197, 10197
- obj_pal gBattleAnimSpritePalette_198, 10198
- obj_pal gBattleAnimSpritePalette_199, 10199
- obj_pal gBattleAnimSpritePalette_200, 10200
- obj_pal gBattleAnimSpritePalette_201, 10201
- obj_pal gBattleAnimSpritePalette_202, 10202
- obj_pal gBattleAnimSpritePalette_203, 10203
- obj_pal gBattleAnimSpritePalette_204, 10204
- obj_pal gBattleAnimSpritePalette_205, 10205
- obj_pal gBattleAnimSpritePalette_206, 10206
- obj_pal gBattleAnimSpritePalette_207, 10207
- obj_pal gBattleAnimSpritePalette_167, 10208
- obj_pal gBattleAnimSpritePalette_209, 10209
- obj_pal gBattleAnimSpritePalette_210, 10210
- obj_pal gBattleAnimSpritePalette_211, 10211
- obj_pal gBattleAnimSpritePalette_211, 10212
- obj_pal gBattleAnimSpritePalette_211, 10213
- obj_pal gBattleAnimSpritePalette_064, 10214
- obj_pal gBattleAnimSpritePalette_215, 10215
- obj_pal gBattleAnimSpritePalette_216, 10216
- obj_pal gBattleAnimSpritePalette_217, 10217
- obj_pal gBattleAnimSpritePalette_218, 10218
- obj_pal gBattleAnimSpritePalette_219, 10219
- obj_pal gBattleAnimSpritePalette_220, 10220
- obj_pal gBattleAnimSpritePalette_221, 10221
- obj_pal gBattleAnimSpritePalette_222, 10222
- obj_pal gBattleAnimSpritePalette_223, 10223
- obj_pal gBattleAnimSpritePalette_224, 10224
- obj_pal gBattleAnimSpritePalette_225, 10225
- obj_pal gBattleAnimSpritePalette_226, 10226
- obj_pal gBattleAnimSpritePalette_226, 10227
- obj_pal gBattleAnimSpritePalette_228, 10228
- obj_pal gBattleAnimSpritePalette_229, 10229
- obj_pal gBattleAnimSpritePalette_230, 10230
- obj_pal gBattleAnimSpritePalette_231, 10231
- obj_pal gBattleAnimSpritePalette_231, 10232
- obj_pal gBattleAnimSpritePalette_233, 10233
- obj_pal gBattleAnimSpritePalette_234, 10234
- obj_pal gBattleAnimSpritePalette_235, 10235
- obj_pal gBattleAnimSpritePalette_236, 10236
- obj_pal gBattleAnimSpritePalette_237, 10237
- obj_pal gBattleAnimSpritePalette_238, 10238
- obj_pal gBattleAnimSpritePalette_239, 10239
- obj_pal gBattleAnimSpritePalette_240, 10240
- obj_pal gBattleAnimSpritePalette_241, 10241
- obj_pal gBattleAnimSpritePalette_242, 10242
- obj_pal gBattleAnimSpritePalette_243, 10243
- obj_pal gBattleAnimSpritePalette_244, 10244
- obj_pal gBattleAnimSpritePalette_245, 10245
- obj_pal gBattleAnimSpritePalette_245, 10246
- obj_pal gBattleAnimSpritePalette_064, 10247
- obj_pal gBattleAnimSpritePalette_248, 10248
- obj_pal gBattleAnimSpritePalette_249, 10249
- obj_pal gBattleAnimSpritePalette_249, 10250
- obj_pal gBattleAnimSpritePalette_251, 10251
- obj_pal gBattleAnimSpritePalette_252, 10252
- obj_pal gBattleAnimSpritePalette_253, 10253
- obj_pal gBattleAnimSpritePalette_254, 10254
- obj_pal gBattleAnimSpritePalette_255, 10255
- obj_pal gBattleAnimSpritePalette_256, 10256
- obj_pal gBattleAnimSpritePalette_257, 10257
- obj_pal gBattleAnimSpritePalette_258, 10258
- obj_pal gBattleAnimSpritePalette_259, 10259
- obj_pal gBattleAnimSpritePalette_260, 10260
- obj_pal gBattleAnimSpritePalette_261, 10261
- obj_pal gBattleAnimSpritePalette_262, 10262
- obj_pal gBattleAnimSpritePalette_263, 10263
- obj_pal gBattleAnimSpritePalette_264, 10264
- obj_pal gBattleAnimSpritePalette_265, 10265
- obj_pal gBattleAnimSpritePalette_266, 10266
- obj_pal gBattleAnimSpritePalette_267, 10267
- obj_pal gBattleAnimSpritePalette_268, 10268
- obj_pal gBattleAnimSpritePalette_269, 10269
- obj_pal gBattleAnimSpritePalette_270, 10270
- obj_pal gBattleAnimSpritePalette_271, 10271
- obj_pal gBattleAnimSpritePalette_272, 10272
- obj_pal gBattleAnimSpritePalette_272, 10273
- obj_pal gBattleAnimSpritePalette_274, 10274
- obj_pal gBattleAnimSpritePalette_274, 10275
- obj_pal gBattleAnimSpritePalette_274, 10276
- obj_pal gBattleAnimSpritePalette_277, 10277
- obj_pal gBattleAnimSpritePalette_278, 10278
- obj_pal gBattleAnimSpritePalette_279, 10279
- obj_pal gBattleAnimSpritePalette_280, 10280
- obj_pal gBattleAnimSpritePalette_281, 10281
- obj_pal gBattleAnimSpritePalette_282, 10282
- obj_pal gBattleAnimSpritePalette_283, 10283
- obj_pal gBattleAnimSpritePalette_284, 10284
- obj_pal gBattleAnimSpritePalette_285, 10285
- obj_pal gBattleAnimSpritePalette_286, 10286
- obj_pal gBattleAnimSpritePalette_287, 10287
- obj_pal gBattleAnimSpritePalette_288, 10288
-
- .align 2
-gBattleAnimBackgroundTable:: @ 837F374
- .4byte gBattleAnimBackgroundImage_00, gBattleAnimBackgroundPalette_00, gBattleAnimBackgroundTilemap_00
- .4byte gBattleAnimBackgroundImage_00, gBattleAnimBackgroundPalette_00, gBattleAnimBackgroundTilemap_00
- .4byte gBattleAnimBackgroundImage_02, gBattleAnimBackgroundPalette_02, gBattleAnimBackgroundTilemap_02
- .4byte gBattleAnimBackgroundImage_03, gBattleAnimBackgroundPalette_03, gBattleAnimBackgroundTilemap_03
- .4byte gBattleAnimBackgroundImage_04, gBattleAnimBackgroundPalette_04, gBattleAnimBackgroundTilemap_04
- .4byte gBattleAnimBackgroundImage_04, gBattleAnimBackgroundPalette_04, gBattleAnimBackgroundTilemap_05
- .4byte gBattleAnimBackgroundImage_04, gBattleAnimBackgroundPalette_04, gBattleAnimBackgroundTilemap_06
- .4byte gBattleAnimBackgroundImage_07, gBattleAnimBackgroundPalette_07, gBattleAnimBackgroundTilemap_07
- .4byte gBattleAnimBackgroundImage_07, gBattleAnimBackgroundPalette_07, gBattleAnimBackgroundTilemap_08
- .4byte gBattleAnimBackgroundImage_09, gBattleAnimBackgroundPalette_09, gBattleAnimBackgroundTilemap_09
- .4byte gBattleAnimBackgroundImage_09, gBattleAnimBackgroundPalette_09, gBattleAnimBackgroundTilemap_10
- .4byte gBattleAnimBackgroundImage_11, gBattleAnimBackgroundPalette_11, gBattleAnimBackgroundTilemap_11
- .4byte gBattleAnimBackgroundImage_12, gBattleAnimBackgroundPalette_12, gBattleAnimBackgroundTilemap_12
- .4byte gBattleAnimBackgroundImage_12, gBattleAnimBackgroundPalette_12, gBattleAnimBackgroundTilemap_13
- .4byte gBattleAnimBackgroundImage_12, gBattleAnimBackgroundPalette_12, gBattleAnimBackgroundTilemap_14
- .4byte gBattleAnimBackgroundImage_15, gBattleAnimBackgroundPalette_15, gBattleAnimBackgroundTilemap_15
- .4byte gBattleAnimBackgroundImage_16, gBattleAnimBackgroundPalette_16, gBattleAnimBackgroundTilemap_16
- .4byte gBattleAnimBackgroundImage_17, gBattleAnimBackgroundPalette_17, gBattleAnimBackgroundTilemap_17
- .4byte gBattleAnimBackgroundImage_07, gBattleAnimBackgroundPalette_18, gBattleAnimBackgroundTilemap_07
- .4byte gBattleAnimBackgroundImage_07, gBattleAnimBackgroundPalette_18, gBattleAnimBackgroundTilemap_08
- .4byte gBattleAnimBackgroundImage_20, gBattleAnimBackgroundPalette_20, gBattleAnimBackgroundTilemap_20
- .4byte gBattleAnimBackgroundImage_21, gBattleAnimBackgroundPalette_21, gBattleAnimBackgroundTilemap_21
- .4byte gBattleAnimBackgroundImage_09, gBattleAnimBackgroundPalette_22, gBattleAnimBackgroundTilemap_09
- .4byte gBattleAnimBackgroundImage_09, gBattleAnimBackgroundPalette_22, gBattleAnimBackgroundTilemap_10
- .4byte gBattleAnimBackgroundImage_04, gBattleAnimBackgroundPalette_24, gBattleAnimBackgroundTilemap_04
- .4byte gBattleAnimBackgroundImage_04, gBattleAnimBackgroundPalette_24, gBattleAnimBackgroundTilemap_05
- .4byte gBattleAnimBackgroundImage_04, gBattleAnimBackgroundPalette_24, gBattleAnimBackgroundTilemap_06
-
diff --git a/data/battle_anim_80A7E7C.s b/data/battle_anim_80A7E7C.s
deleted file mode 100644
index 395b2e0ab..000000000
--- a/data/battle_anim_80A7E7C.s
+++ /dev/null
@@ -1,24 +0,0 @@
- .include "include/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gBattleAnimSpriteTemplate_83C1FB0:: @ 83C1FB0
- spr_template 0, 0, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A8530
-
- .align 2
-gBattleAnimSpriteTemplate_83C1FC8:: @ 83C1FC8
- spr_template 0, 0, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A85C8
-
- .align 2
-gBattleAnimSpriteTemplate_83C1FE0:: @ 83C1FE0
- spr_template 0, 0, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A8638
-
- .align 2
-gBattleAnimSpriteTemplate_83C1FF8:: @ 83C1FF8
- spr_template 0, 0, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A8764
-
- .align 2
-gBattleAnimSpriteTemplate_83C2010:: @ 83C2010
- spr_template 0, 0, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A8818
diff --git a/data/contest_ai.s b/data/contest_ai.s
deleted file mode 100644
index af13f50f8..000000000
--- a/data/contest_ai.s
+++ /dev/null
@@ -1,143 +0,0 @@
- .include "include/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-sContestAICmdTable:: @ 8401E60
- .4byte ContestAICmd_unk_00
- .4byte ContestAICmd_get_turn
- .4byte ContestAICmd_unk_02
- .4byte ContestAICmd_unk_03
- .4byte ContestAICmd_unk_04
- .4byte ContestAICmd_unk_05
- .4byte ContestAICmd_get_excitement
- .4byte ContestAICmd_unk_07
- .4byte ContestAICmd_unk_08
- .4byte ContestAICmd_unk_09
- .4byte ContestAICmd_unk_0A
- .4byte ContestAICmd_get_user_order
- .4byte ContestAICmd_unk_0C
- .4byte ContestAICmd_unk_0D
- .4byte ContestAICmd_unk_0E
- .4byte ContestAICmd_unk_0F
- .4byte ContestAICmd_get_user_condition_maybe
- .4byte ContestAICmd_unk_11
- .4byte ContestAICmd_unk_12
- .4byte ContestAICmd_unk_13
- .4byte ContestAICmd_unk_14
- .4byte ContestAICmd_unk_15
- .4byte ContestAICmd_unk_16
- .4byte ContestAICmd_unk_17
- .4byte ContestAICmd_unk_18
- .4byte ContestAICmd_unk_19
- .4byte ContestAICmd_unk_1A
- .4byte ContestAICmd_unk_1B
- .4byte ContestAICmd_unk_1C
- .4byte ContestAICmd_unk_1D
- .4byte ContestAICmd_unk_1E
- .4byte ContestAICmd_get_contest_type
- .4byte ContestAICmd_unk_20
- .4byte ContestAICmd_unk_21
- .4byte ContestAICmd_get_move_excitement
- .4byte ContestAICmd_unk_23
- .4byte ContestAICmd_unk_24
- .4byte ContestAICmd_unk_25
- .4byte ContestAICmd_unk_26
- .4byte ContestAICmd_get_move_effect
- .4byte ContestAICmd_unk_28
- .4byte ContestAICmd_unk_29
- .4byte ContestAICmd_get_move_effect_type
- .4byte ContestAICmd_unk_2B
- .4byte ContestAICmd_unk_2C
- .4byte ContestAICmd_check_move_has_highest_appeal
- .4byte ContestAICmd_unk_2E
- .4byte ContestAICmd_unk_2F
- .4byte ContestAICmd_unk_30
- .4byte ContestAICmd_unk_31
- .4byte ContestAICmd_unk_32
- .4byte ContestAICmd_unk_33
- .4byte ContestAICmd_unk_34
- .4byte ContestAICmd_unk_35
- .4byte ContestAICmd_unk_36
- .4byte ContestAICmd_unk_37
- .4byte ContestAICmd_unk_38
- .4byte ContestAICmd_unk_39
- .4byte ContestAICmd_unk_3A
- .4byte ContestAICmd_get_move_used_count
- .4byte ContestAICmd_unk_3C
- .4byte ContestAICmd_unk_3D
- .4byte ContestAICmd_unk_3E
- .4byte ContestAICmd_unk_3F
- .4byte ContestAICmd_check_combo_starter
- .4byte ContestAICmd_unk_41
- .4byte ContestAICmd_unk_42
- .4byte ContestAICmd_check_combo_finisher
- .4byte ContestAICmd_unk_44
- .4byte ContestAICmd_unk_45
- .4byte ContestAICmd_check_would_finish_combo
- .4byte ContestAICmd_unk_47
- .4byte ContestAICmd_unk_48
- .4byte ContestAICmd_get_condition
- .4byte ContestAICmd_unk_4A
- .4byte ContestAICmd_unk_4B
- .4byte ContestAICmd_unk_4C
- .4byte ContestAICmd_unk_4D
- .4byte ContestAICmd_get_used_combo_starter
- .4byte ContestAICmd_unk_4F
- .4byte ContestAICmd_unk_50
- .4byte ContestAICmd_unk_51
- .4byte ContestAICmd_unk_52
- .4byte ContestAICmd_check_can_participate
- .4byte ContestAICmd_unk_54
- .4byte ContestAICmd_unk_55
- .4byte ContestAICmd_get_val_812A188
- .4byte ContestAICmd_unk_57
- .4byte ContestAICmd_unk_58
- .4byte ContestAICmd_unk_59
- .4byte ContestAICmd_unk_5A
- .4byte ContestAICmd_unk_5B
- .4byte ContestAICmd_unk_5C
- .4byte ContestAICmd_unk_5D
- .4byte ContestAICmd_unk_5E
- .4byte ContestAICmd_unk_5F
- .4byte ContestAICmd_unk_60
- .4byte ContestAICmd_unk_61
- .4byte ContestAICmd_unk_62
- .4byte ContestAICmd_unk_63
- .4byte ContestAICmd_unk_64
- .4byte ContestAICmd_unk_65
- .4byte ContestAICmd_unk_66
- .4byte ContestAICmd_unk_67
- .4byte ContestAICmd_unk_68
- .4byte ContestAICmd_unk_69
- .4byte ContestAICmd_unk_6A
- .4byte ContestAICmd_unk_6B
- .4byte ContestAICmd_unk_6C
- .4byte ContestAICmd_unk_6D
- .4byte ContestAICmd_unk_6E
- .4byte ContestAICmd_unk_6F
- .4byte ContestAICmd_unk_70
- .4byte ContestAICmd_unk_71
- .4byte ContestAICmd_unk_72
- .4byte ContestAICmd_unk_73
- .4byte ContestAICmd_unk_74
- .4byte ContestAICmd_unk_75
- .4byte ContestAICmd_unk_76
- .4byte ContestAICmd_unk_77
- .4byte ContestAICmd_unk_78
- .4byte ContestAICmd_unk_79
- .4byte ContestAICmd_unk_7A
- .4byte ContestAICmd_unk_7B
- .4byte ContestAICmd_unk_7C
- .4byte ContestAICmd_unk_7D
- .4byte ContestAICmd_unk_7E
- .4byte ContestAICmd_unk_7F
- .4byte ContestAICmd_unk_80
- .4byte ContestAICmd_unk_81
- .4byte ContestAICmd_check_for_exciting_move
- .4byte ContestAICmd_unk_83
- .4byte ContestAICmd_unk_84
- .4byte ContestAICmd_unk_85
- .4byte ContestAICmd_unk_86
- .4byte ContestAICmd_unk_87
diff --git a/data/item_ball_scripts.inc b/data/item_ball_scripts.inc
index aae704ab2..02acdeca4 100644
--- a/data/item_ball_scripts.inc
+++ b/data/item_ball_scripts.inc
@@ -43,7 +43,7 @@ Route110_EventScript_1B14BB:: @ 81B14BB
end
Route111_EventScript_1B14C8:: @ 81B14C8
- giveitem_std ITEM_TM37, 1, 1
+ giveitem_std ITEM_TM37_SANDSTORM, 1, 1
end
Route111_EventScript_1B14D5:: @ 81B14D5
@@ -79,7 +79,7 @@ Route115_EventScript_1B1530:: @ 81B1530
end
Route115_EventScript_1B153D:: @ 81B153D
- giveitem_std ITEM_TM01, 1, 1
+ giveitem_std ITEM_TM01_FOCUS_PUNCH, 1, 1
end
Route115_EventScript_1B154A:: @ 81B154A
@@ -291,11 +291,11 @@ FieryPath_EventScript_1B17E1:: @ 81B17E1
end
FieryPath_EventScript_1B17EE:: @ 81B17EE
- giveitem_std ITEM_TM06, 1, 1
+ giveitem_std ITEM_TM06_TOXIC, 1, 1
end
MeteorFalls_1F_1R_EventScript_1B17FB:: @ 81B17FB
- giveitem_std ITEM_TM23, 1, 1
+ giveitem_std ITEM_TM23_IRON_TAIL, 1, 1
end
MeteorFalls_1F_1R_EventScript_1B1808:: @ 81B1808
@@ -311,7 +311,7 @@ MeteorFalls_1F_1R_EventScript_1B1822:: @ 81B1822
end
MeteorFalls_B1F_2R_EventScript_1B182F:: @ 81B182F
- giveitem_std ITEM_TM02, 1, 1
+ giveitem_std ITEM_TM02_DRAGON_CLAW, 1, 1
end
NewMauville_Inside_EventScript_1B183C:: @ 81B183C
@@ -347,7 +347,7 @@ AbandonedShip_Rooms2_B1F_EventScript_1B1897:: @ 81B1897
end
AbandonedShip_Room_B1F_EventScript_1B18A4:: @ 81B18A4
- giveitem_std ITEM_TM13, 1, 1
+ giveitem_std ITEM_TM13_ICE_BEAM, 1, 1
end
AbandonedShip_Rooms2_1F_EventScript_1B18B1:: @ 81B18B1
@@ -371,15 +371,15 @@ AbandonedShip_HiddenFloorRooms_EventScript_1B18E5:: @ 81B18E5
end
AbandonedShip_HiddenFloorRooms_EventScript_1B18F2:: @ 81B18F2
- giveitem_std ITEM_TM18, 1, 1
+ giveitem_std ITEM_TM18_RAIN_DANCE, 1, 1
end
ScorchedSlab_EventScript_1B18FF:: @ 81B18FF
- giveitem_std ITEM_TM11, 1, 1
+ giveitem_std ITEM_TM11_SUNNY_DAY, 1, 1
end
SafariZone_Northwest_EventScript_1B190C:: @ 81B190C
- giveitem_std ITEM_TM22, 1, 1
+ giveitem_std ITEM_TM22_SOLARBEAM, 1, 1
end
SafariZone_Northeast_EventScript_1B1919:: @ 81B1919
@@ -407,7 +407,7 @@ MtPyre_5F_EventScript_1B195A:: @ 81B195A
end
MtPyre_6F_EventScript_1B1967:: @ 81B1967
- giveitem_std ITEM_TM30, 1, 1
+ giveitem_std ITEM_TM30_SHADOW_BALL, 1, 1
end
MtPyre_Exterior_EventScript_1B1974:: @ 81B1974
@@ -415,7 +415,7 @@ MtPyre_Exterior_EventScript_1B1974:: @ 81B1974
end
MtPyre_Exterior_EventScript_1B1981:: @ 81B1981
- giveitem_std ITEM_TM48, 1, 1
+ giveitem_std ITEM_TM48_SKILL_SWAP, 1, 1
end
AquaHideout_B1F_EventScript_1B198E:: @ 81B198E
@@ -463,7 +463,7 @@ ShoalCave_LowTideStairsRoom_EventScript_1B1A10:: @ 81B1A10
end
ShoalCave_LowTideIceRoom_EventScript_1B1A1D:: @ 81B1A1D
- giveitem_std ITEM_TM07, 1, 1
+ giveitem_std ITEM_TM07_HAIL, 1, 1
end
ShoalCave_LowTideIceRoom_EventScript_1B1A2A:: @ 81B1A2A
@@ -471,11 +471,11 @@ ShoalCave_LowTideIceRoom_EventScript_1B1A2A:: @ 81B1A2A
end
SeafloorCavern_Room9_EventScript_1B1A37:: @ 81B1A37
- giveitem_std ITEM_TM26, 1, 1
+ giveitem_std ITEM_TM26_EARTHQUAKE, 1, 1
end
CaveOfOrigin_B3F_EventScript_1B1A44:: @ 81B1A44
- giveitem_std ITEM_HM07, 1, 1
+ giveitem_std ITEM_HM07_WATERFALL, 1, 1
end
Route110_TrickHousePuzzle1_EventScript_1B1A51:: @ 81B1A51
@@ -523,7 +523,7 @@ VictoryRoad_1F_EventScript_1B1AD3:: @ 81B1AD3
end
VictoryRoad_B1F_EventScript_1B1AE0:: @ 81B1AE0
- giveitem_std ITEM_TM29, 1, 1
+ giveitem_std ITEM_TM29_PSYCHIC, 1, 1
end
VictoryRoad_B1F_EventScript_1B1AED:: @ 81B1AED
@@ -535,5 +535,5 @@ VictoryRoad_B2F_EventScript_1B1AFA:: @ 81B1AFA
end
@ 81B1B07
- giveitem_std ITEM_HM08, 1, 1
+ giveitem_std ITEM_HM08_DIVE, 1, 1
end
diff --git a/data/maps/events/Route113.inc b/data/maps/events/Route113.inc
index dccaf6e82..1b895d571 100644
--- a/data/maps/events/Route113.inc
+++ b/data/maps/events/Route113.inc
@@ -42,7 +42,7 @@ Route113_MapBGEvents:: @ 8382BE0
bg_event 31, 5, 0, 0, 0, Route113_EventScript_150629
bg_secret_base_event 49, 8, 0, SECRET_BASE_RED_CAVE1_3
bg_hidden_item_event 72, 4, 3, ITEM_ETHER, FLAG_HIDDEN_ITEM_3
- bg_hidden_item_event 22, 5, 3, ITEM_TM32, FLAG_HIDDEN_ITEM_1E
+ bg_hidden_item_event 22, 5, 3, ITEM_TM32_DOUBLE_TEAM, FLAG_HIDDEN_ITEM_1E
Route113_MapEvents:: @ 8382C34
map_events Route113_MapObjects, Route113_MapWarps, Route113_MapCoordEvents, Route113_MapBGEvents
diff --git a/data/scripts/maps/DewfordTown_Gym.inc b/data/scripts/maps/DewfordTown_Gym.inc
index 7cdf3dd6a..596f2c77f 100644
--- a/data/scripts/maps/DewfordTown_Gym.inc
+++ b/data/scripts/maps/DewfordTown_Gym.inc
@@ -118,7 +118,7 @@ DewfordTown_Gym_EventScript_153177:: @ 8153177
end
DewfordTown_Gym_EventScript_1531B5:: @ 81531B5
- giveitem_std ITEM_TM08
+ giveitem_std ITEM_TM08_BULK_UP
compare RESULT, 0
goto_if_eq DewfordTown_Gym_EventScript_1A029B
msgbox DewfordTown_Gym_Text_1753BF, 4
diff --git a/data/scripts/maps/DewfordTown_Hall.inc b/data/scripts/maps/DewfordTown_Hall.inc
index 84334068e..45d389b28 100644
--- a/data/scripts/maps/DewfordTown_Hall.inc
+++ b/data/scripts/maps/DewfordTown_Hall.inc
@@ -254,7 +254,7 @@ DewfordTown_Hall_EventScript_15359D:: @ 815359D
call DewfordTown_Hall_EventScript_1A0102
goto_if_set FLAG_RECEIVED_TM36, DewfordTown_Hall_EventScript_1535D1
msgbox DewfordTown_Hall_Text_175E13, 4
- giveitem_std ITEM_TM36
+ giveitem_std ITEM_TM36_SLUDGE_BOMB
compare RESULT, 0
goto_if_eq DewfordTown_Hall_EventScript_1A029B
setflag FLAG_RECEIVED_TM36
diff --git a/data/scripts/maps/FallarborTown_House1.inc b/data/scripts/maps/FallarborTown_House1.inc
index f62a2da37..f16b6e828 100644
--- a/data/scripts/maps/FallarborTown_House1.inc
+++ b/data/scripts/maps/FallarborTown_House1.inc
@@ -22,7 +22,7 @@ FallarborTown_House1_EventScript_153BDA:: @ 8153BDA
compare RESULT, NO
goto_if_eq FallarborTown_House1_EventScript_153C47
msgbox FallarborTown_House1_Text_1778C4, 4
- giveitem_std ITEM_TM27
+ giveitem_std ITEM_TM27_RETURN
compare RESULT, 0
goto_if_eq FallarborTown_House1_EventScript_1A029B
setvar VAR_SPECIAL_4, 280
diff --git a/data/scripts/maps/FortreeCity_Gym.inc b/data/scripts/maps/FortreeCity_Gym.inc
index 94df378f8..c0de6bfee 100644
--- a/data/scripts/maps/FortreeCity_Gym.inc
+++ b/data/scripts/maps/FortreeCity_Gym.inc
@@ -35,7 +35,7 @@ FortreeCity_Gym_EventScript_157F15:: @ 8157F15
end
FortreeCity_Gym_EventScript_157F3E:: @ 8157F3E
- giveitem_std ITEM_TM40
+ giveitem_std ITEM_TM40_AERIAL_ACE
compare RESULT, 0
goto_if_eq FortreeCity_Gym_EventScript_1A029B
msgbox FortreeCity_Gym_Text_185F4A, 4
diff --git a/data/scripts/maps/FortreeCity_House2.inc b/data/scripts/maps/FortreeCity_House2.inc
index 107c3708c..365646d81 100644
--- a/data/scripts/maps/FortreeCity_House2.inc
+++ b/data/scripts/maps/FortreeCity_House2.inc
@@ -19,7 +19,7 @@ FortreeCity_House2_EventScript_1580B4:: @ 81580B4
switch RESULT
case 0, FortreeCity_House2_EventScript_158161
msgbox FortreeCity_House2_Text_1864C6, 4
- giveitem_std ITEM_TM10
+ giveitem_std ITEM_TM10_HIDDEN_POWER
compare RESULT, 0
goto_if_eq FortreeCity_House2_EventScript_1A029B
setflag FLAG_RECEIVED_TM10
diff --git a/data/scripts/maps/GraniteCave_1F.inc b/data/scripts/maps/GraniteCave_1F.inc
index 7419b5866..b9d89f93c 100644
--- a/data/scripts/maps/GraniteCave_1F.inc
+++ b/data/scripts/maps/GraniteCave_1F.inc
@@ -6,7 +6,7 @@ GraniteCave_1F_EventScript_15CBA7:: @ 815CBA7
faceplayer
goto_if_set FLAG_RECEIVED_HM05, GraniteCave_1F_EventScript_15CBD3
msgbox GraniteCave_1F_Text_194917, 4
- giveitem_std ITEM_HM05
+ giveitem_std ITEM_HM05_FLASH
setflag FLAG_RECEIVED_HM05
msgbox GraniteCave_1F_Text_194A3E, 4
release
diff --git a/data/scripts/maps/GraniteCave_StevensRoom.inc b/data/scripts/maps/GraniteCave_StevensRoom.inc
index 9c69e649e..d33813680 100644
--- a/data/scripts/maps/GraniteCave_StevensRoom.inc
+++ b/data/scripts/maps/GraniteCave_StevensRoom.inc
@@ -9,7 +9,7 @@ GraniteCave_StevensRoom_EventScript_15CBFA:: @ 815CBFA
call GraniteCave_StevensRoom_EventScript_1A067F
setflag FLAG_DELIVERED_STEVEN_LETTER
msgbox GraniteCave_StevensRoom_Text_194BDD, 4
- giveitem_std ITEM_TM47
+ giveitem_std ITEM_TM47_STEEL_WING
compare RESULT, 0
call_if_eq GraniteCave_StevensRoom_EventScript_15CC83
msgbox GraniteCave_StevensRoom_Text_194C8D, 4
diff --git a/data/scripts/maps/LavaridgeTown_Gym_1F.inc b/data/scripts/maps/LavaridgeTown_Gym_1F.inc
index c0604400e..27655127a 100644
--- a/data/scripts/maps/LavaridgeTown_Gym_1F.inc
+++ b/data/scripts/maps/LavaridgeTown_Gym_1F.inc
@@ -83,7 +83,7 @@ LavaridgeTown_Gym_1F_EventScript_153766:: @ 8153766
end
LavaridgeTown_Gym_1F_EventScript_1537A7:: @ 81537A7
- giveitem_std ITEM_TM50
+ giveitem_std ITEM_TM50_OVERHEAT
compare RESULT, 0
goto_if_eq LavaridgeTown_Gym_1F_EventScript_1A029B
msgbox LavaridgeTown_Gym_1F_Text_176B8F, 4
diff --git a/data/scripts/maps/LilycoveCity_DepartmentStore_4F.inc b/data/scripts/maps/LilycoveCity_DepartmentStore_4F.inc
index d922d9181..907b79847 100644
--- a/data/scripts/maps/LilycoveCity_DepartmentStore_4F.inc
+++ b/data/scripts/maps/LilycoveCity_DepartmentStore_4F.inc
@@ -25,10 +25,10 @@ LilycoveCity_DepartmentStore_4F_EventScript_15A019:: @ 815A019
.align 2
LilycoveCity_DepartmentStore_4F_Items1:: @ 815A030
- .2byte ITEM_TM38
- .2byte ITEM_TM25
- .2byte ITEM_TM14
- .2byte ITEM_TM15
+ .2byte ITEM_TM38_FIRE_BLAST
+ .2byte ITEM_TM25_THUNDER
+ .2byte ITEM_TM14_BLIZZARD
+ .2byte ITEM_TM15_HYPER_BEAM
.2byte ITEM_NONE
release
end
@@ -45,10 +45,10 @@ LilycoveCity_DepartmentStore_4F_EventScript_15A03C:: @ 815A03C
.align 2
LilycoveCity_DepartmentStore_4F_Items2:: @ 815A054
- .2byte ITEM_TM17
- .2byte ITEM_TM20
- .2byte ITEM_TM33
- .2byte ITEM_TM16
+ .2byte ITEM_TM17_PROTECT
+ .2byte ITEM_TM20_SAFEGUARD
+ .2byte ITEM_TM33_REFLECT
+ .2byte ITEM_TM16_LIGHT_SCREEN
.2byte ITEM_NONE
release
end
diff --git a/data/scripts/maps/LilycoveCity_House2.inc b/data/scripts/maps/LilycoveCity_House2.inc
index 0572c23cc..797c8f203 100644
--- a/data/scripts/maps/LilycoveCity_House2.inc
+++ b/data/scripts/maps/LilycoveCity_House2.inc
@@ -6,7 +6,7 @@ LilycoveCity_House2_EventScript_159BA3:: @ 8159BA3
faceplayer
goto_if_set FLAG_RECEIVED_TM44, LilycoveCity_House2_EventScript_159BDA
msgbox LilycoveCity_House2_Text_18B83C, 4
- giveitem_std ITEM_TM44
+ giveitem_std ITEM_TM44_REST
compare RESULT, 0
goto_if_eq LilycoveCity_House2_EventScript_1A029B
setflag FLAG_RECEIVED_TM44
diff --git a/data/scripts/maps/MauvilleCity.inc b/data/scripts/maps/MauvilleCity.inc
index 03974ddae..852f24f2a 100644
--- a/data/scripts/maps/MauvilleCity.inc
+++ b/data/scripts/maps/MauvilleCity.inc
@@ -298,7 +298,7 @@ MauvilleCity_EventScript_14C332:: @ 814C332
MauvilleCity_EventScript_14C33C:: @ 814C33C
msgbox MauvilleCity_Text_1663EB, 4
- giveitem_std ITEM_TM24
+ giveitem_std ITEM_TM24_THUNDERBOLT
compare RESULT, 0
goto_if_eq MauvilleCity_EventScript_1A029B
setflag FLAG_RECEIVED_TM24
diff --git a/data/scripts/maps/MauvilleCity_GameCorner.inc b/data/scripts/maps/MauvilleCity_GameCorner.inc
index 2b784aeb9..b9f8e5ad1 100644
--- a/data/scripts/maps/MauvilleCity_GameCorner.inc
+++ b/data/scripts/maps/MauvilleCity_GameCorner.inc
@@ -252,27 +252,27 @@ MauvilleCity_GameCorner_EventScript_156D54:: @ 8156D54
MauvilleCity_GameCorner_EventScript_156DA6:: @ 8156DA6
setvar VAR_TEMP_1, 1
- bufferitemname 0, ITEM_TM32
+ bufferitemname 0, ITEM_TM32_DOUBLE_TEAM
goto MauvilleCity_GameCorner_EventScript_156DEC
MauvilleCity_GameCorner_EventScript_156DB4:: @ 8156DB4
setvar VAR_TEMP_1, 2
- bufferitemname 0, ITEM_TM29
+ bufferitemname 0, ITEM_TM29_PSYCHIC
goto MauvilleCity_GameCorner_EventScript_156DEC
MauvilleCity_GameCorner_EventScript_156DC2:: @ 8156DC2
setvar VAR_TEMP_1, 3
- bufferitemname 0, ITEM_TM35
+ bufferitemname 0, ITEM_TM35_FLAMETHROWER
goto MauvilleCity_GameCorner_EventScript_156DEC
MauvilleCity_GameCorner_EventScript_156DD0:: @ 8156DD0
setvar VAR_TEMP_1, 4
- bufferitemname 0, ITEM_TM24
+ bufferitemname 0, ITEM_TM24_THUNDERBOLT
goto MauvilleCity_GameCorner_EventScript_156DEC
MauvilleCity_GameCorner_EventScript_156DDE:: @ 8156DDE
setvar VAR_TEMP_1, 5
- bufferitemname 0, ITEM_TM13
+ bufferitemname 0, ITEM_TM13_ICE_BEAM
goto MauvilleCity_GameCorner_EventScript_156DEC
MauvilleCity_GameCorner_EventScript_156DEC:: @ 8156DEC
@@ -291,11 +291,11 @@ MauvilleCity_GameCorner_EventScript_156E3C:: @ 8156E3C
checkcoins VAR_TEMP_2
compare VAR_TEMP_2, 1500
goto_if_lt MauvilleCity_GameCorner_EventScript_156F5E
- checkitemspace ITEM_TM32, 1
+ checkitemspace ITEM_TM32_DOUBLE_TEAM, 1
compare RESULT, 0
goto_if_eq MauvilleCity_GameCorner_EventScript_156F6C
takecoins 1500
- giveitem ITEM_TM32, 1
+ giveitem ITEM_TM32_DOUBLE_TEAM, 1
updatecoinsbox 0, 0
playse SE_REGI
msgbox MauvilleCity_GameCorner_Text_181F08, 4
@@ -306,11 +306,11 @@ MauvilleCity_GameCorner_EventScript_156E76:: @ 8156E76
checkcoins VAR_TEMP_2
compare VAR_TEMP_2, 3500
goto_if_lt MauvilleCity_GameCorner_EventScript_156F5E
- checkitemspace ITEM_TM29, 1
+ checkitemspace ITEM_TM29_PSYCHIC, 1
compare RESULT, 0
goto_if_eq MauvilleCity_GameCorner_EventScript_156F6C
takecoins 3500
- giveitem ITEM_TM29, 1
+ giveitem ITEM_TM29_PSYCHIC, 1
updatecoinsbox 0, 0
playse SE_REGI
msgbox MauvilleCity_GameCorner_Text_181F08, 4
@@ -321,11 +321,11 @@ MauvilleCity_GameCorner_EventScript_156EB0:: @ 8156EB0
checkcoins VAR_TEMP_2
compare VAR_TEMP_2, 4000
goto_if_lt MauvilleCity_GameCorner_EventScript_156F5E
- checkitemspace ITEM_TM35, 1
+ checkitemspace ITEM_TM35_FLAMETHROWER, 1
compare RESULT, 0
goto_if_eq MauvilleCity_GameCorner_EventScript_156F6C
takecoins 4000
- giveitem ITEM_TM35, 1
+ giveitem ITEM_TM35_FLAMETHROWER, 1
updatecoinsbox 0, 0
playse SE_REGI
msgbox MauvilleCity_GameCorner_Text_181F08, 4
@@ -336,11 +336,11 @@ MauvilleCity_GameCorner_EventScript_156EEA:: @ 8156EEA
checkcoins VAR_TEMP_2
compare VAR_TEMP_2, 4000
goto_if_lt MauvilleCity_GameCorner_EventScript_156F5E
- checkitemspace ITEM_TM24, 1
+ checkitemspace ITEM_TM24_THUNDERBOLT, 1
compare RESULT, 0
goto_if_eq MauvilleCity_GameCorner_EventScript_156F6C
takecoins 4000
- giveitem ITEM_TM24, 1
+ giveitem ITEM_TM24_THUNDERBOLT, 1
updatecoinsbox 0, 0
playse SE_REGI
msgbox MauvilleCity_GameCorner_Text_181F08, 4
@@ -351,11 +351,11 @@ MauvilleCity_GameCorner_EventScript_156F24:: @ 8156F24
checkcoins VAR_TEMP_2
compare VAR_TEMP_2, 4000
goto_if_lt MauvilleCity_GameCorner_EventScript_156F5E
- checkitemspace ITEM_TM13, 1
+ checkitemspace ITEM_TM13_ICE_BEAM, 1
compare RESULT, 0
goto_if_eq MauvilleCity_GameCorner_EventScript_156F6C
takecoins 4000
- giveitem ITEM_TM13, 1
+ giveitem ITEM_TM13_ICE_BEAM, 1
updatecoinsbox 0, 0
playse SE_REGI
msgbox MauvilleCity_GameCorner_Text_181F08, 4
diff --git a/data/scripts/maps/MauvilleCity_Gym.inc b/data/scripts/maps/MauvilleCity_Gym.inc
index 1dc7fc0c7..d9b8aced7 100644
--- a/data/scripts/maps/MauvilleCity_Gym.inc
+++ b/data/scripts/maps/MauvilleCity_Gym.inc
@@ -93,7 +93,7 @@ MauvilleCity_Gym_EventScript_1565DB:: @ 81565DB
end
MauvilleCity_Gym_EventScript_15661D:: @ 815661D
- giveitem_std ITEM_TM34
+ giveitem_std ITEM_TM34_SHOCK_WAVE
compare RESULT, 0
goto_if_eq MauvilleCity_Gym_EventScript_1A029B
msgbox MauvilleCity_Gym_Text_180E76, 4
diff --git a/data/scripts/maps/MauvilleCity_House1.inc b/data/scripts/maps/MauvilleCity_House1.inc
index eb21a49e9..4caaef545 100644
--- a/data/scripts/maps/MauvilleCity_House1.inc
+++ b/data/scripts/maps/MauvilleCity_House1.inc
@@ -6,7 +6,7 @@ MauvilleCity_House1_EventScript_1569FD:: @ 81569FD
faceplayer
goto_if_set FLAG_RECEIVED_HM06, MauvilleCity_House1_EventScript_156A29
msgbox MauvilleCity_House1_Text_181B1A, 4
- giveitem_std ITEM_HM06
+ giveitem_std ITEM_HM06_ROCK_SMASH
setflag FLAG_RECEIVED_HM06
msgbox MauvilleCity_House1_Text_181B64, 4
release
diff --git a/data/scripts/maps/MossdeepCity_Gym.inc b/data/scripts/maps/MossdeepCity_Gym.inc
index 341962431..0ae02fba4 100644
--- a/data/scripts/maps/MossdeepCity_Gym.inc
+++ b/data/scripts/maps/MossdeepCity_Gym.inc
@@ -67,7 +67,7 @@ MossdeepCity_Gym_EventScript_15A594:: @ 815A594
end
MossdeepCity_Gym_EventScript_15A5C6:: @ 815A5C6
- giveitem_std ITEM_TM04
+ giveitem_std ITEM_TM04_CALM_MIND
compare RESULT, 0
goto_if_eq MossdeepCity_Gym_EventScript_1A029B
msgbox MossdeepCity_Gym_Text_18D1CF, 4
diff --git a/data/scripts/maps/MossdeepCity_StevensHouse.inc b/data/scripts/maps/MossdeepCity_StevensHouse.inc
index d9ad70f70..0f1aace1d 100644
--- a/data/scripts/maps/MossdeepCity_StevensHouse.inc
+++ b/data/scripts/maps/MossdeepCity_StevensHouse.inc
@@ -38,7 +38,7 @@ MossdeepCity_StevensHouse_EventScript_15AA0B:: @ 815AA0B
applymovement 1, MossdeepCity_StevensHouse_Movement_15AA6E
waitmovement 0
msgbox MossdeepCity_StevensHouse_Text_18DA77, 4
- giveitem_std ITEM_HM08
+ giveitem_std ITEM_HM08_DIVE
setflag FLAG_RECEIVED_HM08
setflag FLAG_OMIT_DIVE_FROM_STEVEN_LETTER
msgbox MossdeepCity_StevensHouse_Text_18DB22, 4
@@ -123,6 +123,6 @@ MossdeepCity_StevensHouse_EventScript_15AB16:: @ 815AB16
end
MossdeepCity_StevensHouse_EventScript_15AB20:: @ 815AB20
- giveitem_std ITEM_HM08, 1, 1
+ giveitem_std ITEM_HM08_DIVE, 1, 1
setflag FLAG_RECEIVED_HM08
end
diff --git a/data/scripts/maps/PacifidlogTown_House2.inc b/data/scripts/maps/PacifidlogTown_House2.inc
index 8ad949bf2..110bdcbe6 100644
--- a/data/scripts/maps/PacifidlogTown_House2.inc
+++ b/data/scripts/maps/PacifidlogTown_House2.inc
@@ -41,7 +41,7 @@ PacifidlogTown_House2_EventScript_1541E8:: @ 81541E8
PacifidlogTown_House2_EventScript_1541EC:: @ 81541EC
msgbox PacifidlogTown_House2_Text_179169, 4
- giveitem_std ITEM_TM27
+ giveitem_std ITEM_TM27_RETURN
compare RESULT, 0
goto_if_eq PacifidlogTown_House2_EventScript_1A029B
setflag FLAG_RECEIVED_FANCLUB_TM_THIS_WEEK
@@ -57,7 +57,7 @@ PacifidlogTown_House2_EventScript_15421B:: @ 815421B
PacifidlogTown_House2_EventScript_154225:: @ 8154225
msgbox PacifidlogTown_House2_Text_17922D, 4
- giveitem_std ITEM_TM21
+ giveitem_std ITEM_TM21_FRUSTRATION
compare RESULT, 0
goto_if_eq PacifidlogTown_House2_EventScript_1A029B
setflag FLAG_RECEIVED_FANCLUB_TM_THIS_WEEK
diff --git a/data/scripts/maps/PetalburgCity_Gym.inc b/data/scripts/maps/PetalburgCity_Gym.inc
index 1199b3571..1dc1a77ec 100644
--- a/data/scripts/maps/PetalburgCity_Gym.inc
+++ b/data/scripts/maps/PetalburgCity_Gym.inc
@@ -402,7 +402,7 @@ PetalburgCity_Gym_EventScript_1549D6:: @ 81549D6
end
PetalburgCity_Gym_EventScript_154A2C:: @ 8154A2C
- giveitem_std ITEM_TM42
+ giveitem_std ITEM_TM42_FACADE
compare RESULT, 0
goto_if_eq PetalburgCity_Gym_EventScript_1A029B
setflag FLAG_RECEIVED_TM42
diff --git a/data/scripts/maps/PetalburgCity_WallysHouse.inc b/data/scripts/maps/PetalburgCity_WallysHouse.inc
index d642d70ed..1a1605817 100644
--- a/data/scripts/maps/PetalburgCity_WallysHouse.inc
+++ b/data/scripts/maps/PetalburgCity_WallysHouse.inc
@@ -20,7 +20,7 @@ PetalburgCity_WallysHouse_EventScript_1543F7:: @ 81543F7
PetalburgCity_WallysHouse_EventScript_154406:: @ 8154406
msgbox PetalburgCity_WallysHouse_Text_179996, 4
- giveitem_std ITEM_HM03
+ giveitem_std ITEM_HM03_SURF
setflag FLAG_RECEIVED_HM03
msgbox PetalburgCity_WallysHouse_Text_179B14, 4
release
diff --git a/data/scripts/maps/Route104.inc b/data/scripts/maps/Route104.inc
index a3824efcf..2d44d4dfd 100644
--- a/data/scripts/maps/Route104.inc
+++ b/data/scripts/maps/Route104.inc
@@ -102,7 +102,7 @@ Route104_EventScript_14EF93:: @ 814EF93
faceplayer
goto_if_set FLAG_RECEIVED_TM09, Route104_EventScript_14EFC2
msgbox Route104_Text_16DC5F, 4
- giveitem_std ITEM_TM09
+ giveitem_std ITEM_TM09_BULLET_SEED
compare RESULT, 0
goto_if_eq Route104_EventScript_1A029B
setflag FLAG_RECEIVED_TM09
diff --git a/data/scripts/maps/Route110_TrickHouseEnd.inc b/data/scripts/maps/Route110_TrickHouseEnd.inc
index 020c61258..2c2215a42 100644
--- a/data/scripts/maps/Route110_TrickHouseEnd.inc
+++ b/data/scripts/maps/Route110_TrickHouseEnd.inc
@@ -112,7 +112,7 @@ Route110_TrickHouseEnd_EventScript_161AFB:: @ 8161AFB
msgbox Route110_TrickHouseEnd_Text_19C491, 4
msgbox Route110_TrickHouseEnd_Text_19C90B, 4
setvar VAR_TRICK_HOUSE_PRIZE_PICKUP, 0
- giveitem_std ITEM_TM12
+ giveitem_std ITEM_TM12_TAUNT
compare RESULT, 0
call_if_eq Route110_TrickHouseEnd_EventScript_161C4E
msgbox Route110_TrickHouseEnd_Text_19C9BD, 4
diff --git a/data/scripts/maps/Route110_TrickHouseEntrance.inc b/data/scripts/maps/Route110_TrickHouseEntrance.inc
index 527f09d27..3fceeb8d1 100644
--- a/data/scripts/maps/Route110_TrickHouseEntrance.inc
+++ b/data/scripts/maps/Route110_TrickHouseEntrance.inc
@@ -401,7 +401,7 @@ Route110_TrickHouseEntrance_EventScript_161452:: @ 8161452
end
Route110_TrickHouseEntrance_EventScript_16147E:: @ 816147E
- giveitem_std ITEM_TM12
+ giveitem_std ITEM_TM12_TAUNT
compare RESULT, 1
goto_if_eq Route110_TrickHouseEntrance_EventScript_161502
compare RESULT, 0
diff --git a/data/scripts/maps/Route114.inc b/data/scripts/maps/Route114.inc
index 30ab8c572..54a4ee59a 100644
--- a/data/scripts/maps/Route114.inc
+++ b/data/scripts/maps/Route114.inc
@@ -28,7 +28,7 @@ Route114_EventScript_150782:: @ 8150782
faceplayer
goto_if_set FLAG_RECEIVED_TM05, Route114_EventScript_1507B9
msgbox Route114_Text_170154, 4
- giveitem_std ITEM_TM05
+ giveitem_std ITEM_TM05_ROAR
compare RESULT, 0
goto_if_eq Route114_EventScript_1A029B
setflag FLAG_RECEIVED_TM05
diff --git a/data/scripts/maps/Route114_FossilManiacsHouse.inc b/data/scripts/maps/Route114_FossilManiacsHouse.inc
index b191db5f6..c93584561 100644
--- a/data/scripts/maps/Route114_FossilManiacsHouse.inc
+++ b/data/scripts/maps/Route114_FossilManiacsHouse.inc
@@ -11,7 +11,7 @@ Route114_FossilManiacsHouse_EventScript_15C1C3:: @ 815C1C3
faceplayer
goto_if_set FLAG_RECEIVED_TM28, Route114_FossilManiacsHouse_EventScript_15C1F2
msgbox Route114_FossilManiacsHouse_Text_1925E1, 4
- giveitem_std ITEM_TM28
+ giveitem_std ITEM_TM28_DIG
compare RESULT, 0
goto_if_eq Route114_FossilManiacsHouse_EventScript_1A029B
setflag FLAG_RECEIVED_TM28
diff --git a/data/scripts/maps/Route119.inc b/data/scripts/maps/Route119.inc
index 4b9f3ce5f..30eed9cc0 100644
--- a/data/scripts/maps/Route119.inc
+++ b/data/scripts/maps/Route119.inc
@@ -147,7 +147,7 @@ Route119_EventScript_151337:: @ 8151337
end
Route119_EventScript_151352:: @ 8151352
- giveitem_std ITEM_HM02
+ giveitem_std ITEM_HM02_FLY
setflag FLAG_RECEIVED_HM02
return
diff --git a/data/scripts/maps/Route123.inc b/data/scripts/maps/Route123.inc
index 5f77ea023..d954bec1a 100644
--- a/data/scripts/maps/Route123.inc
+++ b/data/scripts/maps/Route123.inc
@@ -15,7 +15,7 @@ Route123_EventScript_151C5D:: @ 8151C5D
compare RESULT, 0
goto_if_eq Route123_EventScript_151CAA
msgbox Route123_Text_171DC2, 4
- giveitem_std ITEM_TM19
+ giveitem_std ITEM_TM19_GIGA_DRAIN
compare RESULT, 0
goto_if_eq Route123_EventScript_1A029B
setflag FLAG_RECEIVED_TM19
diff --git a/data/scripts/maps/RustboroCity_CuttersHouse.inc b/data/scripts/maps/RustboroCity_CuttersHouse.inc
index e18a1e029..b43e0aafe 100644
--- a/data/scripts/maps/RustboroCity_CuttersHouse.inc
+++ b/data/scripts/maps/RustboroCity_CuttersHouse.inc
@@ -6,7 +6,7 @@ RustboroCity_CuttersHouse_EventScript_157D27:: @ 8157D27
faceplayer
goto_if_set FLAG_RECEIVED_HM01, RustboroCity_CuttersHouse_EventScript_157D53
msgbox RustboroCity_CuttersHouse_Text_18509C, 4
- giveitem_std ITEM_HM01
+ giveitem_std ITEM_HM01_CUT
setflag FLAG_RECEIVED_HM01
msgbox RustboroCity_CuttersHouse_Text_1851C9, 4
release
diff --git a/data/scripts/maps/RustboroCity_Gym.inc b/data/scripts/maps/RustboroCity_Gym.inc
index bcd597541..307617e50 100644
--- a/data/scripts/maps/RustboroCity_Gym.inc
+++ b/data/scripts/maps/RustboroCity_Gym.inc
@@ -25,7 +25,7 @@ RustboroCity_Gym_EventScript_1578FE:: @ 81578FE
end
RustboroCity_Gym_EventScript_15793C:: @ 815793C
- giveitem_std ITEM_TM39
+ giveitem_std ITEM_TM39_ROCK_TOMB
compare RESULT, 0
goto_if_eq RustboroCity_Gym_EventScript_1A029B
setflag FLAG_RECEIVED_TM39
diff --git a/data/scripts/maps/RusturfTunnel.inc b/data/scripts/maps/RusturfTunnel.inc
index 7c715b6c2..06f2dfa82 100644
--- a/data/scripts/maps/RusturfTunnel.inc
+++ b/data/scripts/maps/RusturfTunnel.inc
@@ -63,7 +63,7 @@ RusturfTunnel_EventScript_15C7D1:: @ 815C7D1
call_if_eq RusturfTunnel_EventScript_15C8EB
compare VAR_TEMP_1, 3
call_if_eq RusturfTunnel_EventScript_15C8EB
- giveitem_std ITEM_HM04
+ giveitem_std ITEM_HM04_STRENGTH
setflag FLAG_RECEIVED_HM04
msgbox RusturfTunnel_Text_194693, 4
closemessage
diff --git a/data/scripts/maps/SSTidalRooms.inc b/data/scripts/maps/SSTidalRooms.inc
index 58e7c3235..89372bd84 100644
--- a/data/scripts/maps/SSTidalRooms.inc
+++ b/data/scripts/maps/SSTidalRooms.inc
@@ -6,7 +6,7 @@ SSTidalRooms_EventScript_15FF06:: @ 815FF06
faceplayer
goto_if_set FLAG_RECEIVED_TM49, SSTidalRooms_EventScript_15FF3D
msgbox SSTidalRooms_Text_199B65, 4
- giveitem_std ITEM_TM49
+ giveitem_std ITEM_TM49_SNATCH
compare RESULT, 0
goto_if_eq SSTidalRooms_EventScript_1A029B
setflag FLAG_RECEIVED_TM49
diff --git a/data/scripts/maps/SlateportCity.inc b/data/scripts/maps/SlateportCity.inc
index 4af912ed3..213fc3163 100644
--- a/data/scripts/maps/SlateportCity.inc
+++ b/data/scripts/maps/SlateportCity.inc
@@ -473,8 +473,8 @@ SlateportCity_EventScript_14BE9A:: @ 814BE9A
.align 2
SlateportCity_Items2:: @ 814BEB4
- .2byte ITEM_TM10
- .2byte ITEM_TM43
+ .2byte ITEM_TM10_HIDDEN_POWER
+ .2byte ITEM_TM43_SECRET_POWER
.2byte ITEM_NONE
release
end
diff --git a/data/scripts/maps/SlateportCity_ContestHall.inc b/data/scripts/maps/SlateportCity_ContestHall.inc
index 4151579a2..5f6a3c15d 100644
--- a/data/scripts/maps/SlateportCity_ContestHall.inc
+++ b/data/scripts/maps/SlateportCity_ContestHall.inc
@@ -14,7 +14,7 @@ SlateportCity_ContestHall_EventScript_15555E:: @ 815555E
faceplayer
goto_if_set FLAG_RECEIVED_TM41, SlateportCity_ContestHall_EventScript_155595
msgbox SlateportCity_ContestHall_Text_17CCE2, 4
- giveitem_std ITEM_TM41
+ giveitem_std ITEM_TM41_TORMENT
compare RESULT, 0
goto_if_eq SlateportCity_ContestHall_EventScript_1A029B
setflag FLAG_RECEIVED_TM41
diff --git a/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc b/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc
index c8ece697d..45ca62167 100644
--- a/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc
+++ b/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc
@@ -163,7 +163,7 @@ SlateportCity_OceanicMuseum_1F_EventScript_155C3A:: @ 8155C3A
applymovement 13, SlateportCity_OceanicMuseum_1F_Movement_1A0835
waitmovement 0
msgbox SlateportCity_OceanicMuseum_1F_Text_17E582, 4
- giveitem_std ITEM_TM46
+ giveitem_std ITEM_TM46_THIEF
compare RESULT, 0
goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_155CC2
setflag FLAG_RECEIVED_TM46
diff --git a/data/scripts/maps/SootopolisCity_Gym_1F.inc b/data/scripts/maps/SootopolisCity_Gym_1F.inc
index 44bcda12f..0ad6aa027 100644
--- a/data/scripts/maps/SootopolisCity_Gym_1F.inc
+++ b/data/scripts/maps/SootopolisCity_Gym_1F.inc
@@ -106,7 +106,7 @@ SootopolisCity_Gym_1F_EventScript_15B02D:: @ 815B02D
end
SootopolisCity_Gym_1F_EventScript_15B056:: @ 815B056
- giveitem_std ITEM_TM03
+ giveitem_std ITEM_TM03_WATER_PULSE
compare RESULT, 0
goto_if_eq SootopolisCity_Gym_1F_EventScript_1A029B
msgbox SootopolisCity_Gym_1F_Text_18F466, 4
diff --git a/data/scripts/maps/SootopolisCity_House1.inc b/data/scripts/maps/SootopolisCity_House1.inc
index 67be3738b..d1b842f7b 100644
--- a/data/scripts/maps/SootopolisCity_House1.inc
+++ b/data/scripts/maps/SootopolisCity_House1.inc
@@ -6,7 +6,7 @@ SootopolisCity_House1_EventScript_15B29B:: @ 815B29B
faceplayer
goto_if_set FLAG_RECEIVED_TM31, SootopolisCity_House1_EventScript_15B2C7
msgbox SootopolisCity_House1_Text_18F991, 4
- giveitem_std ITEM_TM31
+ giveitem_std ITEM_TM31_BRICK_BREAK
setflag FLAG_RECEIVED_TM31
msgbox SootopolisCity_House1_Text_18FA03, 4
release
diff --git a/data/scripts/maps/VerdanturfTown_ContestLobby.inc b/data/scripts/maps/VerdanturfTown_ContestLobby.inc
index 85b524c99..3aef08e94 100644
--- a/data/scripts/maps/VerdanturfTown_ContestLobby.inc
+++ b/data/scripts/maps/VerdanturfTown_ContestLobby.inc
@@ -103,7 +103,7 @@ VerdanturfTown_ContestLobby_EventScript_153E47:: @ 8153E47
faceplayer
goto_if_set FLAG_RECEIVED_TM45, VerdanturfTown_ContestLobby_EventScript_153E76
msgbox VerdanturfTown_ContestLobby_Text_177DEC, 4
- giveitem_std ITEM_TM45
+ giveitem_std ITEM_TM45_ATTRACT
compare RESULT, 0
goto_if_eq VerdanturfTown_ContestLobby_EventScript_1A029B
setflag FLAG_RECEIVED_TM45
diff --git a/data/scripts/secret_power_tm.inc b/data/scripts/secret_power_tm.inc
index 1f5e074d9..6fe9e9a6e 100644
--- a/data/scripts/secret_power_tm.inc
+++ b/data/scripts/secret_power_tm.inc
@@ -9,7 +9,7 @@ Route111_EventScript_1A3858:: @ 81A3858
end
Route111_EventScript_1A3877:: @ 81A3877
- giveitem_std ITEM_TM43
+ giveitem_std ITEM_TM43_SECRET_POWER
compare RESULT, 0
goto_if_eq Route111_EventScript_1A38D9
msgbox Route111_Text_1A35C5, 4
diff --git a/include/battle_ai.h b/include/battle_ai.h
index c22ca8633..fdad0c7e9 100644
--- a/include/battle_ai.h
+++ b/include/battle_ai.h
@@ -10,10 +10,10 @@ enum
// AI states
enum
{
- AIState_SettingUp,
- AIState_Processing,
- AIState_FinishedProcessing,
- AIState_DoNotProcess
+ BATTLEAI_SETTING_UP,
+ BATTLEAI_PROCESSING,
+ BATTLEAI_FINISHED,
+ BATTLEAI_DO_NOT_PROCESS
};
// battle_ai
diff --git a/include/constants/items.h b/include/constants/items.h
index 48fba1427..cde5c7141 100644
--- a/include/constants/items.h
+++ b/include/constants/items.h
@@ -290,64 +290,64 @@
#define ITEM_ROOT_FOSSIL 286
#define ITEM_CLAW_FOSSIL 287
#define ITEM_DEVON_SCOPE 288
-#define ITEM_TM01 289
-#define ITEM_TM02 290
-#define ITEM_TM03 291
-#define ITEM_TM04 292
-#define ITEM_TM05 293
-#define ITEM_TM06 294
-#define ITEM_TM07 295
-#define ITEM_TM08 296
-#define ITEM_TM09 297
-#define ITEM_TM10 298
-#define ITEM_TM11 299
-#define ITEM_TM12 300
-#define ITEM_TM13 301
-#define ITEM_TM14 302
-#define ITEM_TM15 303
-#define ITEM_TM16 304
-#define ITEM_TM17 305
-#define ITEM_TM18 306
-#define ITEM_TM19 307
-#define ITEM_TM20 308
-#define ITEM_TM21 309
-#define ITEM_TM22 310
-#define ITEM_TM23 311
-#define ITEM_TM24 312
-#define ITEM_TM25 313
-#define ITEM_TM26 314
-#define ITEM_TM27 315
-#define ITEM_TM28 316
-#define ITEM_TM29 317
-#define ITEM_TM30 318
-#define ITEM_TM31 319
-#define ITEM_TM32 320
-#define ITEM_TM33 321
-#define ITEM_TM34 322
-#define ITEM_TM35 323
-#define ITEM_TM36 324
-#define ITEM_TM37 325
-#define ITEM_TM38 326
-#define ITEM_TM39 327
-#define ITEM_TM40 328
-#define ITEM_TM41 329
-#define ITEM_TM42 330
-#define ITEM_TM43 331
-#define ITEM_TM44 332
-#define ITEM_TM45 333
-#define ITEM_TM46 334
-#define ITEM_TM47 335
-#define ITEM_TM48 336
-#define ITEM_TM49 337
-#define ITEM_TM50 338
-#define ITEM_HM01 339
-#define ITEM_HM02 340
-#define ITEM_HM03 341
-#define ITEM_HM04 342
-#define ITEM_HM05 343
-#define ITEM_HM06 344
-#define ITEM_HM07 345
-#define ITEM_HM08 346
+#define ITEM_TM01_FOCUS_PUNCH 289
+#define ITEM_TM02_DRAGON_CLAW 290
+#define ITEM_TM03_WATER_PULSE 291
+#define ITEM_TM04_CALM_MIND 292
+#define ITEM_TM05_ROAR 293
+#define ITEM_TM06_TOXIC 294
+#define ITEM_TM07_HAIL 295
+#define ITEM_TM08_BULK_UP 296
+#define ITEM_TM09_BULLET_SEED 297
+#define ITEM_TM10_HIDDEN_POWER 298
+#define ITEM_TM11_SUNNY_DAY 299
+#define ITEM_TM12_TAUNT 300
+#define ITEM_TM13_ICE_BEAM 301
+#define ITEM_TM14_BLIZZARD 302
+#define ITEM_TM15_HYPER_BEAM 303
+#define ITEM_TM16_LIGHT_SCREEN 304
+#define ITEM_TM17_PROTECT 305
+#define ITEM_TM18_RAIN_DANCE 306
+#define ITEM_TM19_GIGA_DRAIN 307
+#define ITEM_TM20_SAFEGUARD 308
+#define ITEM_TM21_FRUSTRATION 309
+#define ITEM_TM22_SOLARBEAM 310
+#define ITEM_TM23_IRON_TAIL 311
+#define ITEM_TM24_THUNDERBOLT 312
+#define ITEM_TM25_THUNDER 313
+#define ITEM_TM26_EARTHQUAKE 314
+#define ITEM_TM27_RETURN 315
+#define ITEM_TM28_DIG 316
+#define ITEM_TM29_PSYCHIC 317
+#define ITEM_TM30_SHADOW_BALL 318
+#define ITEM_TM31_BRICK_BREAK 319
+#define ITEM_TM32_DOUBLE_TEAM 320
+#define ITEM_TM33_REFLECT 321
+#define ITEM_TM34_SHOCK_WAVE 322
+#define ITEM_TM35_FLAMETHROWER 323
+#define ITEM_TM36_SLUDGE_BOMB 324
+#define ITEM_TM37_SANDSTORM 325
+#define ITEM_TM38_FIRE_BLAST 326
+#define ITEM_TM39_ROCK_TOMB 327
+#define ITEM_TM40_AERIAL_ACE 328
+#define ITEM_TM41_TORMENT 329
+#define ITEM_TM42_FACADE 330
+#define ITEM_TM43_SECRET_POWER 331
+#define ITEM_TM44_REST 332
+#define ITEM_TM45_ATTRACT 333
+#define ITEM_TM46_THIEF 334
+#define ITEM_TM47_STEEL_WING 335
+#define ITEM_TM48_SKILL_SWAP 336
+#define ITEM_TM49_SNATCH 337
+#define ITEM_TM50_OVERHEAT 338
+#define ITEM_HM01_CUT 339
+#define ITEM_HM02_FLY 340
+#define ITEM_HM03_SURF 341
+#define ITEM_HM04_STRENGTH 342
+#define ITEM_HM05_FLASH 343
+#define ITEM_HM06_ROCK_SMASH 344
+#define ITEM_HM07_WATERFALL 345
+#define ITEM_HM08_DIVE 346
#define ITEM_15B 347
#define ITEM_15C 348
diff --git a/include/contest.h b/include/contest.h
index 6e71358a2..6b1f1f520 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -67,6 +67,22 @@ struct ContestPokemon
/*0x3C*/ u32 otId; // otId
}; // wow
+struct ContestAIInfo {
+ /*0x00*/ u8 aiState;
+ /*0x02*/ u16 unk2;
+ /*0x04*/ u8 unk4;
+ /*0x05*/ u8 unk5[4];
+ /*0x09*/ u8 aiAction;
+ /*0x0A*/ u8 fillerA[0x6]; // TODO: don't know what's here
+ /*0x10*/ u8 unk10;
+ /*0x14*/ u32 flags;
+ /*0x18*/ s16 scriptResult;
+ /*0x1A*/ s16 scriptArr[3];
+ /*0x20*/ u32 stack[8];
+ /*0x40*/ u8 unk40;
+ /*0x41*/ u8 unk41;
+};
+
extern struct ContestPokemon gContestMons[];
extern const struct ContestMove gContestMoves[];
extern const struct ContestEffect gContestEffects[];
@@ -86,6 +102,7 @@ void sub_80B0F28(u8);
bool8 Contest_SaveWinner(u8);
u8 sub_80B2C4C(u8, u8);
void Contest_ResetWinners(void);
+s8 Contest_GetMoveExcitement(u16);
// Contest Shared EWRAM
@@ -135,48 +152,48 @@ struct Contest
struct ContestantStatus
{
- s16 appeal1; // move appeal?
- s16 appeal2; // final appeal after end of turn, maybe?
- s16 unk4;
- u16 currMove;
- u16 prevMove;
- u8 moveCategory;
- u8 unkB_0:2;
- u8 unkB_2:2;
- u8 moveRepeatCount:3;
- u8 unkB_7:1; // used a one-time move?
- u8 unkC_0:1;
- u8 unkC_1:2;
- s8 unkD;
- u8 unkE;
- u8 unkF;
- u8 unk10_0:1;
- u8 unk10_1:1;
- u8 unk10_2:1;
- u8 unk10_3:1;
- u8 unk10_4:2;
- u8 unk10_6:2;
- u8 unk11_0:2;
- u8 unk11_2:1;
- u8 unk11_3:1;
- u8 unk11_4:1;
- u8 unk11_5:1;
- u8 unk12;
- u8 unk13; // status action?
- u8 unk14;
- u8 disappointedRepeat:1;
- u8 unk15_1:1;
- u8 unk15_2:1;
- u8 unk15_3:1;
- u8 unk15_4:1;
- u8 unk15_5:1;
- u8 unk15_6:1;
- u8 unk16;
- u8 unk17;
- u8 unk18;
- u8 unk19; // turn position
- u8 attentionLevel; // How much the Pokemon "stood out"
- u8 unk1B;
+ /*0x00*/ s16 appeal1; // move appeal?
+ /*0x02*/ s16 appeal2; // final appeal after end of turn, maybe?
+ /*0x04*/ s16 unk4;
+ /*0x06*/ u16 currMove;
+ /*0x08*/ u16 prevMove;
+ /*0x0A*/ u8 moveCategory;
+ /*0x0B*/ u8 unkB_0:2;
+ u8 unkB_2:2;
+ u8 moveRepeatCount:3;
+ u8 unkB_7:1; // used a one-time move?
+ /*0x0C*/ u8 unkC_0:1;
+ u8 unkC_1:2;
+ /*0x0D*/ s8 unkD;
+ /*0x0E*/ u8 unkE;
+ /*0x0F*/ u8 unkF;
+ /*0x10*/ u8 unk10_0:1;
+ u8 unk10_1:1;
+ u8 unk10_2:1;
+ u8 unk10_3:1;
+ u8 unk10_4:2;
+ u8 unk10_6:2;
+ /*0x11*/ u8 unk11_0:2;
+ u8 unk11_2:1;
+ u8 unk11_3:1;
+ u8 unk11_4:1;
+ u8 unk11_5:1;
+ /*0x12*/ u8 unk12;
+ /*0x13*/ u8 unk13; // status action?
+ /*0x14*/ u8 unk14;
+ /*0x15*/ u8 disappointedRepeat:1;
+ u8 unk15_1:1;
+ u8 unk15_2:1;
+ u8 unk15_3:1;
+ u8 unk15_4:1;
+ u8 unk15_5:1;
+ u8 unk15_6:1;
+ /*0x16*/ u8 unk16;
+ /*0x17*/ u8 unk17;
+ /*0x18*/ u8 unk18;
+ /*0x19*/ u8 unk19; // turn position
+ /*0x1A*/ u8 attentionLevel; // How much the Pokemon "stood out"
+ /*0x1B*/ u8 unk1B;
};
struct UnknownContestStruct3
@@ -241,6 +258,7 @@ struct UnknownContestStruct6
s32 unkC;
};
+// TODO: Please move these to ewram.h once the defines are settled down and figured out completely.
#define shared15800 (gSharedMem + 0x15800)
#define shared15DE0 (*(struct ContestWinner *)(gSharedMem + 0x15DE0))
#define shared16800 (gSharedMem + 0x16800)
@@ -248,7 +266,6 @@ struct UnknownContestStruct6
#define shared18004 ((u16 *)(gSharedMem + 0x18004))
#define sContest (*(struct Contest *)(gSharedMem + 0x19204))
#define sContestantStatus ((struct ContestantStatus *)(gSharedMem + 0x19260))
-#define shared192D0 (*(struct UnknownContestStruct7 *)(gSharedMem + 0x192D0))
#define shared192E4 (gSharedMem + 0x192E4)
#define shared19328 (*(struct UnknownContestStruct5 *)(gSharedMem + 0x19328))
#define shared19338 ((struct UnknownContestStruct4 *)(gSharedMem + 0x19338))
diff --git a/include/contest_ai.h b/include/contest_ai.h
new file mode 100755
index 000000000..da143b541
--- /dev/null
+++ b/include/contest_ai.h
@@ -0,0 +1,16 @@
+#ifndef GUARD_CONTESTAI_H
+#define GUARD_CONTESTAI_H
+
+// AI states
+enum
+{
+ CONTESTAI_SETTING_UP,
+ CONTESTAI_PROCESSING,
+ CONTESTAI_FINISHED,
+ CONTESTAI_DO_NOT_PROCESS
+};
+
+void ContestAI_ResetAI(u8);
+u8 ContestAI_GetActionToUse(void);
+
+#endif
diff --git a/include/ewram.h b/include/ewram.h
index 809d4ff66..36081dd2a 100644
--- a/include/ewram.h
+++ b/include/ewram.h
@@ -20,7 +20,7 @@ extern u8 gSharedMem[];
#define eBrendanSprite (gSharedMem + 0x0)
#define ewram0_6 (u32)(&gSharedMem[0])
#define ewram0_7 (&gSharedMem[0])
-#define eSaveSection (struct SaveSection *)(gSharedMem + 0x0)
+#define eSaveSection (struct SaveSector *)(gSharedMem + 0x0)
#define ewram0arr ((u8 (*)[32])gSharedMem)
#define eVoidSharedArr (void *)(ewram_addr + 0x0)
#define eVoidSharedArr2 (u32)(ewram_addr) // ew(ram)
@@ -234,6 +234,8 @@ extern u8 gSharedMem[];
#define eCableCar2 ((struct CableCarEwramStruct2 *)(gSharedMem + 0x19000))
#define ePokedexView3 (struct PokedexView *)(gSharedMem + 0x19000)
#define eRoulette ((struct Roulette *)(gSharedMem + 0x19000))
+#define shared192D0 (*(struct UnknownContestStruct7 *)(gSharedMem + 0x192D0))
+#define eContestAI ((struct ContestAIInfo *)(gSharedMem + 0x192E4))
#define EWRAM_19348 (*(u16 *)(gSharedMem + 0x19348))
#define ewram19800 (&gSharedMem[0x19800])
#define ePokedexView4 (struct PokedexView *)(gSharedMem + 0x19800)
diff --git a/include/graphics.h b/include/graphics.h
index 00a210350..76a45f6f6 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -51,11 +51,7 @@ extern const u8 gMonFootprint_QuestionMark[];
extern const u8 gContestNextTurnGfx[];
extern const u8 gContestNextTurnNumbersGfx[];
extern const u8 gContestNextTurnRandomGfx[];
-extern const u8 gBattleAnimSpriteSheet_264[];
-extern const u8 gBattleAnimSpritePalette_264[];
-extern const u8 gBattleAnimSpritePalette_265[];
-extern const u8 gBattleAnimSpritePalette_067[];
-extern const u8 gBattleAnimSpritePalette_068[];
+// extern const u8 gBattleAnimSpriteSheet_264[];
extern const u8 gContestApplauseGfx[];
extern const u8 gContestApplauseMeterGfx[];
extern const u16 gContestPal[];
@@ -2743,4 +2739,602 @@ extern const u16 gCableCar_Pal[];
extern const u16 gCableCarBG_Pal[];
extern const u8 gCableCarBG_Gfx[];
+// data/graphics.s
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_000;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_001;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_002;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_003;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_004;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_005;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_006;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_007;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_008;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_009;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_010;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_011;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_012;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_013;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_014;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_015;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_016;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_017;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_018;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_019;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_020;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_021;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_021;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_023;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_024;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_025;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_026;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_027;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_028;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_029;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_030;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_031;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_032;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_033;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_034;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_035;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_036;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_037;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_038;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_039;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_040;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_041;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_042;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_043;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_044;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_045;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_046;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_046;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_048;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_048;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_050;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_051;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_052;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_053;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_054;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_055;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_056;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_057;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_058;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_059;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_060;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_061;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_062;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_063;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_064;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_065;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_066;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_070;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_071;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_072;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_073;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_074;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_075;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_076;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_077;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_078;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_079;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_080;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_081;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_082;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_083;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_084;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_085;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_086;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_087;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_088;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_089;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_090;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_091;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_092;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_093;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_094;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_095;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_096;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_097;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_098;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_099;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_100;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_101;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_102;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_103;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_104;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_105;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_106;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_107;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_108;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_109;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_110;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_111;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_112;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_113;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_114;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_115;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_116;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_117;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_118;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_119;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_120;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_121;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_122;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_123;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_124;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_125;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_126;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_127;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_128;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_129;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_130;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_131;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_132;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_133;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_134;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_135;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_136;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_137;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_138;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_139;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_140;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_141;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_142;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_143;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_144;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_145;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_146;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_147;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_148;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_149;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_150;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_151;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_152;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_153;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_154;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_155;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_156;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_157;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_158;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_159;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_160;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_161;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_162;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_163;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_166;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_171;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_173;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_174;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_175;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_176;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_177;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_178;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_179;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_180;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_181;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_182;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_183;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_184;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_185;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_186;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_187;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_188;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_189;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_190;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_191;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_192;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_193;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_194;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_195;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_196;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_197;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_198;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_199;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_200;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_201;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_202;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_203;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_204;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_205;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_206;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_207;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_208;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_209;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_210;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_211;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_212;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_213;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_214;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_215;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_210;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_217;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_218;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_210;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_220;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_221;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_222;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_223;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_224;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_225;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_226;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_227;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_228;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_229;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_230;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_231;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_232;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_233;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_234;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_235;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_235;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_235;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_238;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_239;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_240;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_241;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_242;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_243;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_244;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_245;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_246;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_247;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_248;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_249;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_250;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_251;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_252;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_253;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_254;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_255;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_256;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_257;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_258;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_260;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_261;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_262;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_263;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_264;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_266;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_269;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_270;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_271;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_272;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_273;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_274;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_275;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_276;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_277;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_278;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_279;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_280;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_281;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_282;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_283;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_284;
+extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_285;
+
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_000;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_001;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_002;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_003;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_004;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_005;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_006;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_007;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_008;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_009;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_010;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_011;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_012;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_013;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_014;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_015;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_016;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_016;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_018;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_019;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_020;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_021;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_022;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_023;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_024;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_025;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_026;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_027;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_028;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_029;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_030;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_031;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_032;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_033;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_033;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_033;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_036;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_036;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_038;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_039;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_038;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_038;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_042;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_043;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_044;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_045;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_046;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_047;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_048;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_049;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_050;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_050;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_050;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_026;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_054;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_050;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_056;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_057;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_058;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_059;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_060;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_061;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_062;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_063;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_064;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_065;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_066;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_067;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_068;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_065;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_070;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_070;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_072;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_073;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_074;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_075;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_076;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_076;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_078;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_078;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_080;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_081;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_082;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_083;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_084;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_085;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_086;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_087;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_088;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_089;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_090;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_091;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_092;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_093;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_094;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_095;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_096;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_097;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_094;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_099;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_100;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_101;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_101;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_103;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_104;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_105;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_105;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_107;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_107;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_109;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_109;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_111;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_112;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_113;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_114;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_115;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_116;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_117;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_118;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_119;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_120;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_121;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_122;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_122;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_124;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_125;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_126;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_127;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_128;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_128;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_130;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_130;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_132;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_133;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_133;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_135;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_136;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_135;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_135;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_139;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_140;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_141;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_141;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_143;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_144;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_139;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_115;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_147;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_148;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_148;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_150;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_150;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_152;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_153;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_154;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_155;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_156;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_157;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_158;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_159;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_160;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_161;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_162;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_163;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_164;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_165;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_166;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_167;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_168;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_169;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_170;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_171;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_172;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_174;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_175;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_176;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_177;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_178;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_179;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_182;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_183;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_184;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_185;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_186;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_187;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_188;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_189;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_190;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_191;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_192;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_193;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_194;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_195;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_196;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_197;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_198;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_199;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_200;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_201;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_202;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_203;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_204;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_205;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_206;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_207;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_209;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_210;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_211;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_215;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_216;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_217;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_218;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_219;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_220;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_221;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_222;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_223;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_224;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_225;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_226;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_228;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_229;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_230;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_231;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_233;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_234;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_235;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_236;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_237;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_238;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_239;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_240;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_241;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_242;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_243;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_244;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_245;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_248;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_249;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_251;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_252;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_253;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_254;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_255;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_256;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_257;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_258;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_259;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_260;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_261;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_262;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_263;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_264;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_265;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_266;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_267;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_268;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_269;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_270;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_271;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_272;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_274;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_277;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_278;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_279;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_280;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_281;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_282;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_283;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_284;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_285;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_286;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_287;
+extern struct CompressedSpritePalette gBattleAnimSpritePalette_288;
+
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_00;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_02;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_03;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_04;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_07;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_09;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_11;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_12;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_15;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_16;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_17;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_20;
+extern struct BattleAnimBackground gBattleAnimBackgroundImage_21;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_00;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_02;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_03;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_04;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_07;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_09;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_11;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_12;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_15;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_16;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_17;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_18;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_20;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_21;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_22;
+extern struct BattleAnimBackground gBattleAnimBackgroundPalette_24;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_00;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_02;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_03;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_04;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_05;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_06;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_07;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_08;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_09;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_10;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_11;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_12;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_13;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_14;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_15;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_16;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_17;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_20;
+extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_21;
+
#endif // GUARD_GRAPHICS_H
diff --git a/include/save.h b/include/save.h
index c35ad547a..13e07d06a 100644
--- a/include/save.h
+++ b/include/save.h
@@ -1,85 +1,38 @@
#ifndef GUARD_SAVE_H
#define GUARD_SAVE_H
-struct SaveSectionLocation
-{
- u8 *data;
- u16 size;
-};
-
-struct SaveSection
-{
- u8 data[0xFF4];
- u16 id;
- u16 checksum;
- u32 security;
- u32 counter;
-}; // size is 0x1000
-
-// headless save section?
-struct UnkSaveSection
-{
- u8 data[0xFF4];
- u32 security;
-}; // size is 0xFF8
-
// Ruby/Sapphire's save data is Flash 128K, which is 32 save sectors.
#define NUM_SECTORS 32 // defined in agb_flash but not in a header
-#define UNKNOWN_CHECK_VALUE 0x8012025
+#define SAVE_STATUS_EMPTY 0
+#define SAVE_STATUS_OK 1
+#define SAVE_STATUS_NO_FLASH 4
+#define SAVE_STATUS_ERROR 0xFF
-// SetDamagedSectorBits states
-enum
-{
- ENABLE,
- DISABLE,
- CHECK // unused
-};
+extern u16 gSaveFileStatus;
+
+void Save_EraseAllData(void);
+void Save_ResetSaveCounters(void);
-// Do save types
enum
{
- NORMAL_SAVE,
- LINK_SAVE,
- EREADER_SAVE, // mossdeep event
- HOF_SAVE,
- DIFFERENT_FILE_SAVE,
- HOF_DELETE_SAVE // unused
+ SAVE_NORMAL,
+ SAVE_LINK,
+ SAVE_EREADER,
+ SAVE_HALL_OF_FAME,
+ SAVE_OVERWRITE_DIFFERENT_FILE,
+ SAVE_HALL_OF_FAME_ERASE_BEFORE, // unused
};
-void ClearSaveData(void);
-void ResetSaveCounters(void);
-bool32 ManipulateSectorBits(u8 op, u8 bit);
-u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *a2);
-u8 HandleWriteSector(u16, const struct SaveSectionLocation *);
-u8 HandleWriteSectorNBytes(u8 sector, u8 *data, u16 size);
-u8 TryWriteSector(u8, u8 *);
-u32 RestoreSaveBackupVarsAndIncrement(const struct SaveSectionLocation *location);
-u32 RestoreSaveBackupVars(const struct SaveSectionLocation *location);
-u8 sub_812550C(u16 a1, const struct SaveSectionLocation *location);
-u8 sub_812556C(u16 a1, const struct SaveSectionLocation *location);
-u8 sub_81255B8(u16, const struct SaveSectionLocation *location);
-u8 sub_8125758(u16 a1, const struct SaveSectionLocation *location);
-u8 sub_81257F0(u16 a1, const struct SaveSectionLocation *location);
-u8 sub_812587C(u16 a1, const struct SaveSectionLocation *location);
-u8 sub_81258BC(u16, const struct SaveSectionLocation *location);
-u8 GetSaveValidStatus(const struct SaveSectionLocation *location);
-u8 sub_8125B88(u8 a1, u8 *data, u16 size);
-u8 DoReadFlashWholeSection(u8, struct SaveSection *);
-u16 CalculateChecksum(void *, u16);
-u8 HandleSavingData(u8 saveType);
-u8 TrySavingData(u8 saveType);
+u8 Save_WriteDataInternal(u8 saveType);
+u8 Save_WriteData(u8 saveType);
+
u8 sub_8125D80(void);
bool8 sub_8125DA8(void);
u8 sub_8125DDC(void);
u8 sub_8125E04(void);
u8 sub_8125E2C(void);
bool8 sub_8125E6C(void);
-u8 sub_8125EC8(u8 a1);
-bool8 unref_sub_8125F4C(struct UnkSaveSection *a1);
-u8 unref_sub_8125FA0(void);
-u8 unref_sub_8125FF0(u8 *data, u16 size);
-u8 unref_sub_8126068(u8 sector, u8 *data, u32 size);
-u8 unref_sub_8126080(u8 sector, u8 *data);
+u8 Save_LoadGameData(u8 a1);
#endif // GUARD_SAVE_H
diff --git a/ld_script.txt b/ld_script.txt
index 0cb2d0262..128eb4c20 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -355,7 +355,7 @@ SECTIONS {
src/engine/save.o(.text);
src/engine/mystery_event_script.o(.text);
src/field/field_effect_helpers.o(.text);
- asm/contest_ai.o(.text);
+ src/contest_ai.o(.text);
src/unused_81258BC.o(.text);
src/battle/anim/sfx.o(.text);
src/battle/battle_controller_safari.o(.text);
@@ -526,7 +526,6 @@ SECTIONS {
src/engine/tileset_anim.o(.rodata);
src/engine/palette.o(.rodata);
src/engine/sound.o(.rodata);
- data/battle_anim.o(.rodata);
src/battle/battle_anim.o(.rodata);
src/rom_8077ABC.o(.rodata);
data/map_events.o(.rodata);
@@ -553,7 +552,7 @@ SECTIONS {
src/pokemon/pokemon_summary_screen.o(.rodata);
src/field/fldeff_cut.o(.rodata);
src/field/item_menu.o(.rodata);
- data/battle_anim_80A7E7C.o(.rodata);
+ src/battle/battle_anim_80A7E7C.o(.rodata);
src/field/item.o(.rodata);
src/debug/matsuda_debug_menu.o(.rodata);
data/contest.o(.rodata);
@@ -615,7 +614,7 @@ SECTIONS {
src/scene/cable_car.o(.rodata);
src/engine/save.o(.rodata);
src/field/field_effect_helpers.o(.rodata);
- data/contest_ai.o(.rodata);
+ src/contest_ai.o(.rodata);
src/battle/battle_controller_safari.o(.rodata);
data/battle_anim_812C144.o(.rodata);
src/pokemon/learn_move.o(.rodata);
diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c
index 977e91f5c..80848d2fd 100644
--- a/src/battle/battle_ai.c
+++ b/src/battle/battle_ai.c
@@ -355,7 +355,7 @@ u8 BattleAI_GetAIActionToUse(void)
{
if (AI_THINKING_STRUCT->aiFlags & 1)
{
- AI_THINKING_STRUCT->aiState = AIState_SettingUp;
+ AI_THINKING_STRUCT->aiState = BATTLEAI_SETTING_UP;
BattleAI_DoAIProcessing();
}
AI_THINKING_STRUCT->aiFlags >>= 1;
@@ -393,13 +393,13 @@ u8 BattleAI_GetAIActionToUse(void)
void BattleAI_DoAIProcessing(void)
{
- while (AI_THINKING_STRUCT->aiState != AIState_FinishedProcessing)
+ while (AI_THINKING_STRUCT->aiState != BATTLEAI_FINISHED)
{
switch (AI_THINKING_STRUCT->aiState)
{
- case AIState_DoNotProcess: //Needed to match.
+ case BATTLEAI_DO_NOT_PROCESS: //Needed to match.
break;
- case AIState_SettingUp:
+ case BATTLEAI_SETTING_UP:
gAIScriptPtr = BattleAIs[AI_THINKING_STRUCT->aiLogicId]; // set the AI ptr.
if (gBattleMons[gBankAttacker].pp[AI_THINKING_STRUCT->movesetIndex] == 0)
{
@@ -411,7 +411,7 @@ void BattleAI_DoAIProcessing(void)
}
AI_THINKING_STRUCT->aiState++;
break;
- case AIState_Processing:
+ case BATTLEAI_PROCESSING:
if (AI_THINKING_STRUCT->moveConsidered != MOVE_NONE)
sBattleAICmdTable[*gAIScriptPtr](); // run AI command.
else
@@ -423,7 +423,7 @@ void BattleAI_DoAIProcessing(void)
{
AI_THINKING_STRUCT->movesetIndex++;
if (AI_THINKING_STRUCT->movesetIndex < MAX_MON_MOVES && (AI_THINKING_STRUCT->aiAction & AI_ACTION_DO_NOT_ATTACK) == 0)
- AI_THINKING_STRUCT->aiState = AIState_SettingUp; // as long as their are more moves to process, keep setting this to setup state.
+ AI_THINKING_STRUCT->aiState = BATTLEAI_SETTING_UP; // as long as their are more moves to process, keep setting this to setup state.
else
AI_THINKING_STRUCT->aiState++; // done processing.
AI_THINKING_STRUCT->aiAction &= (AI_ACTION_FLEE | AI_ACTION_WATCH | AI_ACTION_DO_NOT_ATTACK |
diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c
index a0c74be1d..4549d1fcb 100644
--- a/src/battle/battle_anim.c
+++ b/src/battle/battle_anim.c
@@ -13,6 +13,7 @@
#include "sprite.h"
#include "task.h"
#include "ewram.h"
+#include "graphics.h"
// sprites start at 10000 and thus must be subtracted of 10000 to account for the true index.
#define GET_TRUE_SPRITE_INDEX(i) (i - 10000)
@@ -20,6 +21,1271 @@
#define ANIM_SPRITE_INDEX_COUNT 8
#define ANIM_ARGS_COUNT 8
+const struct OamData gOamData_837DF24 =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 0,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF2C =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 0,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF34 =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 0,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF3C =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 0,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF44 =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 1,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF4C =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 1,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF54 =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 1,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF5C =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 1,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF64 =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 2,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF6C =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 2,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF74 =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 2,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF7C =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 2,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF84 =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 0,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF8C =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 0,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF94 =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 0,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF9C =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 0,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFA4 =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 1,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFAC =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 1,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFB4 =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 1,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFBC =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 1,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFC4 =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 2,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFCC =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 2,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFD4 =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 2,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFDC =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 2,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFE4 =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 0,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFEC =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 0,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFF4 =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 0,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFFC =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 0,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837D004 =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 1,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837D00C =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 1,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E014 =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 1,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E01C =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 1,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E024 =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 2,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E02C =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 2,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E034 =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 2,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E03C =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 2,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E044 =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 0,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E04C =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 0,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E054 =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 0,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E05C =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 0,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E064 =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 1,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E06C =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 1,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E074 =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 1,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E07C =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 1,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E084 =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 2,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E08C =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 2,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E094 =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 2,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E09C =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 2,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0A4 =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 0,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0AC =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 0,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0B4 =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 0,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0BC =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 0,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0C4 =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 1,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0CC =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 1,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0D4 =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 1,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0DC =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 1,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0E4 =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 2,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0EC =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 2,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0F4 =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 2,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0FC =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 2,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E104 =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 0,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E10C =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 0,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E114 =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 0,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E11C =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 0,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E124 =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 1,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E12C =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 1,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E134 =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 1,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E13C =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 1,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E144 =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 2,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E14C =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 2,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E154 =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 2,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E15C =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 2,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct CompressedSpriteSheet gBattleAnimPicTable[] =
+{
+ { (u8 *) &gBattleAnimSpriteSheet_000, 0x200, 10000 },
+ { (u8 *) &gBattleAnimSpriteSheet_001, 0x300, 10001 },
+ { (u8 *) &gBattleAnimSpriteSheet_002, 0x200, 10002 },
+ { (u8 *) &gBattleAnimSpriteSheet_003, 0x100, 10003 },
+ { (u8 *) &gBattleAnimSpriteSheet_004, 0x200, 10004 },
+ { (u8 *) &gBattleAnimSpriteSheet_005, 0x400, 10005 },
+ { (u8 *) &gBattleAnimSpriteSheet_006, 0x180, 10006 },
+ { (u8 *) &gBattleAnimSpriteSheet_007, 0x800, 10007 },
+ { (u8 *) &gBattleAnimSpriteSheet_008, 0x20, 10008 },
+ { (u8 *) &gBattleAnimSpriteSheet_009, 0x400, 10009 },
+ { (u8 *) &gBattleAnimSpriteSheet_010, 0x1200, 10010 },
+ { (u8 *) &gBattleAnimSpriteSheet_011, 0x180, 10011 },
+ { (u8 *) &gBattleAnimSpriteSheet_012, 0x80, 10012 },
+ { (u8 *) &gBattleAnimSpriteSheet_013, 0x80, 10013 },
+ { (u8 *) &gBattleAnimSpriteSheet_014, 0x280, 10014 },
+ { (u8 *) &gBattleAnimSpriteSheet_015, 0x80, 10015 },
+ { (u8 *) &gBattleAnimSpriteSheet_016, 0x100, 10016 },
+ { (u8 *) &gBattleAnimSpriteSheet_017, 0x20, 10017 },
+ { (u8 *) &gBattleAnimSpriteSheet_018, 0x80, 10018 },
+ { (u8 *) &gBattleAnimSpriteSheet_019, 0x400, 10019 },
+ { (u8 *) &gBattleAnimSpriteSheet_020, 0x200, 10020 },
+ { (u8 *) &gBattleAnimSpriteSheet_021, 0xA00, 10021 },
+ { (u8 *) &gBattleAnimSpriteSheet_021, 0xA00, 10022 },
+ { (u8 *) &gBattleAnimSpriteSheet_023, 0x380, 10023 },
+ { (u8 *) &gBattleAnimSpriteSheet_024, 0x300, 10024 },
+ { (u8 *) &gBattleAnimSpriteSheet_025, 0xA00, 10025 },
+ { (u8 *) &gBattleAnimSpriteSheet_026, 0xA00, 10026 },
+ { (u8 *) &gBattleAnimSpriteSheet_027, 0xA00, 10027 },
+ { (u8 *) &gBattleAnimSpriteSheet_028, 0xA00, 10028 },
+ { (u8 *) &gBattleAnimSpriteSheet_029, 0xA00, 10029 },
+ { (u8 *) &gBattleAnimSpriteSheet_030, 0xA00, 10030 },
+ { (u8 *) &gBattleAnimSpriteSheet_031, 0xE00, 10031 },
+ { (u8 *) &gBattleAnimSpriteSheet_032, 0x380, 10032 },
+ { (u8 *) &gBattleAnimSpriteSheet_033, 0x1000, 10033 },
+ { (u8 *) &gBattleAnimSpriteSheet_034, 0x800, 10034 },
+ { (u8 *) &gBattleAnimSpriteSheet_035, 0xA00, 10035 },
+ { (u8 *) &gBattleAnimSpriteSheet_036, 0x800, 10036 },
+ { (u8 *) &gBattleAnimSpriteSheet_037, 0xA00, 10037 },
+ { (u8 *) &gBattleAnimSpriteSheet_038, 0xA00, 10038 },
+ { (u8 *) &gBattleAnimSpriteSheet_039, 0xA00, 10039 },
+ { (u8 *) &gBattleAnimSpriteSheet_040, 0xA00, 10040 },
+ { (u8 *) &gBattleAnimSpriteSheet_041, 0xA00, 10041 },
+ { (u8 *) &gBattleAnimSpriteSheet_042, 0xA00, 10042 },
+ { (u8 *) &gBattleAnimSpriteSheet_043, 0xA00, 10043 },
+ { (u8 *) &gBattleAnimSpriteSheet_044, 0xA00, 10044 },
+ { (u8 *) &gBattleAnimSpriteSheet_045, 0xA00, 10045 },
+ { (u8 *) &gBattleAnimSpriteSheet_046, 0x1000, 10046 },
+ { (u8 *) &gBattleAnimSpriteSheet_046, 0x1000, 10047 },
+ { (u8 *) &gBattleAnimSpriteSheet_048, 0x1000, 10048 },
+ { (u8 *) &gBattleAnimSpriteSheet_048, 0x1000, 10049 },
+ { (u8 *) &gBattleAnimSpriteSheet_050, 0x200, 10050 },
+ { (u8 *) &gBattleAnimSpriteSheet_051, 0x200, 10051 },
+ { (u8 *) &gBattleAnimSpriteSheet_052, 0x200, 10052 },
+ { (u8 *) &gBattleAnimSpriteSheet_053, 0x800, 10053 },
+ { (u8 *) &gBattleAnimSpriteSheet_054, 0x80, 10054 },
+ { (u8 *) &gBattleAnimSpriteSheet_055, 0x200, 10055 },
+ { (u8 *) &gBattleAnimSpriteSheet_056, 0x1000, 10056 },
+ { (u8 *) &gBattleAnimSpriteSheet_057, 0x180, 10057 },
+ { (u8 *) &gBattleAnimSpriteSheet_058, 0xC00, 10058 },
+ { (u8 *) &gBattleAnimSpriteSheet_059, 0x100, 10059 },
+ { (u8 *) &gBattleAnimSpriteSheet_060, 0x40, 10060 },
+ { (u8 *) &gBattleAnimSpriteSheet_061, 0x180, 10061 },
+ { (u8 *) &gBattleAnimSpriteSheet_062, 0x800, 10062 },
+ { (u8 *) &gBattleAnimSpriteSheet_063, 0x480, 10063 },
+ { (u8 *) &gBattleAnimSpriteSheet_064, 0x200, 10064 },
+ { (u8 *) &gBattleAnimSpriteSheet_065, 0x200, 10065 },
+ { (u8 *) &gBattleAnimSpriteSheet_066, 0x100, 10066 },
+ { (u8 *) &gBattleAnimSpriteSheet_065, 0x200, 10067 },
+ { (u8 *) &gBattleAnimSpriteSheet_065, 0x200, 10068 },
+ { (u8 *) &gBattleAnimSpriteSheet_065, 0x200, 10069 },
+ { (u8 *) &gBattleAnimSpriteSheet_070, 0x200, 10070 },
+ { (u8 *) &gBattleAnimSpriteSheet_071, 0xA00, 10071 },
+ { (u8 *) &gBattleAnimSpriteSheet_072, 0x300, 10072 },
+ { (u8 *) &gBattleAnimSpriteSheet_073, 0x180, 10073 },
+ { (u8 *) &gBattleAnimSpriteSheet_074, 0xA0, 10074 },
+ { (u8 *) &gBattleAnimSpriteSheet_075, 0x700, 10075 },
+ { (u8 *) &gBattleAnimSpriteSheet_076, 0x400, 10076 },
+ { (u8 *) &gBattleAnimSpriteSheet_077, 0x200, 10077 },
+ { (u8 *) &gBattleAnimSpriteSheet_078, 0x300, 10078 },
+ { (u8 *) &gBattleAnimSpriteSheet_079, 0xC00, 10079 },
+ { (u8 *) &gBattleAnimSpriteSheet_080, 0xA00, 10080 },
+ { (u8 *) &gBattleAnimSpriteSheet_081, 0x80, 10081 },
+ { (u8 *) &gBattleAnimSpriteSheet_082, 0x40, 10082 },
+ { (u8 *) &gBattleAnimSpriteSheet_083, 0xE00, 10083 },
+ { (u8 *) &gBattleAnimSpriteSheet_084, 0xE00, 10084 },
+ { (u8 *) &gBattleAnimSpriteSheet_085, 0x280, 10085 },
+ { (u8 *) &gBattleAnimSpriteSheet_086, 0x200, 10086 },
+ { (u8 *) &gBattleAnimSpriteSheet_087, 0x80, 10087 },
+ { (u8 *) &gBattleAnimSpriteSheet_088, 0xC0, 10088 },
+ { (u8 *) &gBattleAnimSpriteSheet_089, 0xA00, 10089 },
+ { (u8 *) &gBattleAnimSpriteSheet_090, 0x200, 10090 },
+ { (u8 *) &gBattleAnimSpriteSheet_091, 0x180, 10091 },
+ { (u8 *) &gBattleAnimSpriteSheet_092, 0x80, 10092 },
+ { (u8 *) &gBattleAnimSpriteSheet_093, 0x1000, 10093 },
+ { (u8 *) &gBattleAnimSpriteSheet_094, 0xA00, 10094 },
+ { (u8 *) &gBattleAnimSpriteSheet_095, 0x180, 10095 },
+ { (u8 *) &gBattleAnimSpriteSheet_096, 0x380, 10096 },
+ { (u8 *) &gBattleAnimSpriteSheet_097, 0xC00, 10097 },
+ { (u8 *) &gBattleAnimSpriteSheet_098, 0x200, 10098 },
+ { (u8 *) &gBattleAnimSpriteSheet_099, 0x200, 10099 },
+ { (u8 *) &gBattleAnimSpriteSheet_100, 0x200, 10100 },
+ { (u8 *) &gBattleAnimSpriteSheet_101, 0x200, 10101 },
+ { (u8 *) &gBattleAnimSpriteSheet_102, 0x400, 10102 },
+ { (u8 *) &gBattleAnimSpriteSheet_103, 0x80, 10103 },
+ { (u8 *) &gBattleAnimSpriteSheet_104, 0x400, 10104 },
+ { (u8 *) &gBattleAnimSpriteSheet_105, 0xC00, 10105 },
+ { (u8 *) &gBattleAnimSpriteSheet_106, 0x200, 10106 },
+ { (u8 *) &gBattleAnimSpriteSheet_107, 0x1000, 10107 },
+ { (u8 *) &gBattleAnimSpriteSheet_108, 0xA00, 10108 },
+ { (u8 *) &gBattleAnimSpriteSheet_109, 0x20, 10109 },
+ { (u8 *) &gBattleAnimSpriteSheet_110, 0xE00, 10110 },
+ { (u8 *) &gBattleAnimSpriteSheet_111, 0x80, 10111 },
+ { (u8 *) &gBattleAnimSpriteSheet_112, 0xA00, 10112 },
+ { (u8 *) &gBattleAnimSpriteSheet_113, 0x400, 10113 },
+ { (u8 *) &gBattleAnimSpriteSheet_114, 0x200, 10114 },
+ { (u8 *) &gBattleAnimSpriteSheet_115, 0x700, 10115 },
+ { (u8 *) &gBattleAnimSpriteSheet_116, 0x800, 10116 },
+ { (u8 *) &gBattleAnimSpriteSheet_117, 0xA00, 10117 },
+ { (u8 *) &gBattleAnimSpriteSheet_118, 0x600, 10118 },
+ { (u8 *) &gBattleAnimSpriteSheet_119, 0x800, 10119 },
+ { (u8 *) &gBattleAnimSpriteSheet_120, 0x200, 10120 },
+ { (u8 *) &gBattleAnimSpriteSheet_121, 0x40, 10121 },
+ { (u8 *) &gBattleAnimSpriteSheet_122, 0x180, 10122 },
+ { (u8 *) &gBattleAnimSpriteSheet_123, 0x600, 10123 },
+ { (u8 *) &gBattleAnimSpriteSheet_124, 0x600, 10124 },
+ { (u8 *) &gBattleAnimSpriteSheet_125, 0x200, 10125 },
+ { (u8 *) &gBattleAnimSpriteSheet_126, 0x80, 10126 },
+ { (u8 *) &gBattleAnimSpriteSheet_127, 0x200, 10127 },
+ { (u8 *) &gBattleAnimSpriteSheet_128, 0x800, 10128 },
+ { (u8 *) &gBattleAnimSpriteSheet_129, 0x80, 10129 },
+ { (u8 *) &gBattleAnimSpriteSheet_130, 0xA00, 10130 },
+ { (u8 *) &gBattleAnimSpriteSheet_131, 0x280, 10131 },
+ { (u8 *) &gBattleAnimSpriteSheet_132, 0x280, 10132 },
+ { (u8 *) &gBattleAnimSpriteSheet_133, 0x100, 10133 },
+ { (u8 *) &gBattleAnimSpriteSheet_134, 0x200, 10134 },
+ { (u8 *) &gBattleAnimSpriteSheet_135, 0x200, 10135 },
+ { (u8 *) &gBattleAnimSpriteSheet_136, 0x20, 10136 },
+ { (u8 *) &gBattleAnimSpriteSheet_137, 0xA00, 10137 },
+ { (u8 *) &gBattleAnimSpriteSheet_138, 0x800, 10138 },
+ { (u8 *) &gBattleAnimSpriteSheet_139, 0x800, 10139 },
+ { (u8 *) &gBattleAnimSpriteSheet_140, 0xC0, 10140 },
+ { (u8 *) &gBattleAnimSpriteSheet_141, 0x1C0, 10141 },
+ { (u8 *) &gBattleAnimSpriteSheet_142, 0x100, 10142 },
+ { (u8 *) &gBattleAnimSpriteSheet_143, 0x800, 10143 },
+ { (u8 *) &gBattleAnimSpriteSheet_144, 0x200, 10144 },
+ { (u8 *) &gBattleAnimSpriteSheet_145, 0x800, 10145 },
+ { (u8 *) &gBattleAnimSpriteSheet_146, 0x180, 10146 },
+ { (u8 *) &gBattleAnimSpriteSheet_147, 0x180, 10147 },
+ { (u8 *) &gBattleAnimSpriteSheet_148, 0x200, 10148 },
+ { (u8 *) &gBattleAnimSpriteSheet_149, 0x200, 10149 },
+ { (u8 *) &gBattleAnimSpriteSheet_150, 0x180, 10150 },
+ { (u8 *) &gBattleAnimSpriteSheet_151, 0x400, 10151 },
+ { (u8 *) &gBattleAnimSpriteSheet_152, 0x80, 10152 },
+ { (u8 *) &gBattleAnimSpriteSheet_153, 0x100, 10153 },
+ { (u8 *) &gBattleAnimSpriteSheet_154, 0x100, 10154 },
+ { (u8 *) &gBattleAnimSpriteSheet_155, 0x140, 10155 },
+ { (u8 *) &gBattleAnimSpriteSheet_156, 0x800, 10156 },
+ { (u8 *) &gBattleAnimSpriteSheet_157, 0x200, 10157 },
+ { (u8 *) &gBattleAnimSpriteSheet_158, 0x100, 10158 },
+ { (u8 *) &gBattleAnimSpriteSheet_159, 0xA0, 10159 },
+ { (u8 *) &gBattleAnimSpriteSheet_160, 0x100, 10160 },
+ { (u8 *) &gBattleAnimSpriteSheet_161, 0x80, 10161 },
+ { (u8 *) &gBattleAnimSpriteSheet_162, 0x300, 10162 },
+ { (u8 *) &gBattleAnimSpriteSheet_163, 0x100, 10163 },
+ { (u8 *) &gBattleAnimSpriteSheet_163, 0x100, 10164 },
+ { (u8 *) &gBattleAnimSpriteSheet_163, 0x100, 10165 },
+ { (u8 *) &gBattleAnimSpriteSheet_166, 0x800, 10166 },
+ { (u8 *) &gBattleAnimSpriteSheet_166, 0x800, 10167 },
+ { (u8 *) &gBattleAnimSpriteSheet_166, 0x800, 10168 },
+ { (u8 *) &gBattleAnimSpriteSheet_166, 0x800, 10169 },
+ { (u8 *) &gBattleAnimSpriteSheet_166, 0x800, 10170 },
+ { (u8 *) &gBattleAnimSpriteSheet_171, 0x80, 10171 },
+ { (u8 *) &gBattleAnimSpriteSheet_144, 0x200, 10172 },
+ { (u8 *) &gBattleAnimSpriteSheet_173, 0x200, 10173 },
+ { (u8 *) &gBattleAnimSpriteSheet_174, 0x200, 10174 },
+ { (u8 *) &gBattleAnimSpriteSheet_175, 0x80, 10175 },
+ { (u8 *) &gBattleAnimSpriteSheet_176, 0x200, 10176 },
+ { (u8 *) &gBattleAnimSpriteSheet_177, 0x500, 10177 },
+ { (u8 *) &gBattleAnimSpriteSheet_178, 0x800, 10178 },
+ { (u8 *) &gBattleAnimSpriteSheet_179, 0x400, 10179 },
+ { (u8 *) &gBattleAnimSpriteSheet_180, 0x20, 10180 },
+ { (u8 *) &gBattleAnimSpriteSheet_181, 0x800, 10181 },
+ { (u8 *) &gBattleAnimSpriteSheet_182, 0x100, 10182 },
+ { (u8 *) &gBattleAnimSpriteSheet_183, 0x800, 10183 },
+ { (u8 *) &gBattleAnimSpriteSheet_184, 0x400, 10184 },
+ { (u8 *) &gBattleAnimSpriteSheet_185, 0xA00, 10185 },
+ { (u8 *) &gBattleAnimSpriteSheet_186, 0x1000, 10186 },
+ { (u8 *) &gBattleAnimSpriteSheet_187, 0x800, 10187 },
+ { (u8 *) &gBattleAnimSpriteSheet_188, 0x400, 10188 },
+ { (u8 *) &gBattleAnimSpriteSheet_189, 0x200, 10189 },
+ { (u8 *) &gBattleAnimSpriteSheet_190, 0x800, 10190 },
+ { (u8 *) &gBattleAnimSpriteSheet_191, 0x800, 10191 },
+ { (u8 *) &gBattleAnimSpriteSheet_192, 0x800, 10192 },
+ { (u8 *) &gBattleAnimSpriteSheet_193, 0x200, 10193 },
+ { (u8 *) &gBattleAnimSpriteSheet_194, 0x800, 10194 },
+ { (u8 *) &gBattleAnimSpriteSheet_195, 0x200, 10195 },
+ { (u8 *) &gBattleAnimSpriteSheet_196, 0x800, 10196 },
+ { (u8 *) &gBattleAnimSpriteSheet_197, 0x200, 10197 },
+ { (u8 *) &gBattleAnimSpriteSheet_198, 0x800, 10198 },
+ { (u8 *) &gBattleAnimSpriteSheet_199, 0x400, 10199 },
+ { (u8 *) &gBattleAnimSpriteSheet_200, 0x200, 10200 },
+ { (u8 *) &gBattleAnimSpriteSheet_201, 0xA80, 10201 },
+ { (u8 *) &gBattleAnimSpriteSheet_202, 0x600, 10202 },
+ { (u8 *) &gBattleAnimSpriteSheet_203, 0x800, 10203 },
+ { (u8 *) &gBattleAnimSpriteSheet_204, 0x200, 10204 },
+ { (u8 *) &gBattleAnimSpriteSheet_205, 0x600, 10205 },
+ { (u8 *) &gBattleAnimSpriteSheet_206, 0x800, 10206 },
+ { (u8 *) &gBattleAnimSpriteSheet_207, 0x180, 10207 },
+ { (u8 *) &gBattleAnimSpriteSheet_208, 0x800, 10208 },
+ { (u8 *) &gBattleAnimSpriteSheet_209, 0x800, 10209 },
+ { (u8 *) &gBattleAnimSpriteSheet_210, 0x80, 10210 },
+ { (u8 *) &gBattleAnimSpriteSheet_211, 0x80, 10211 },
+ { (u8 *) &gBattleAnimSpriteSheet_212, 0x800, 10212 },
+ { (u8 *) &gBattleAnimSpriteSheet_213, 0x800, 10213 },
+ { (u8 *) &gBattleAnimSpriteSheet_214, 0x600, 10214 },
+ { (u8 *) &gBattleAnimSpriteSheet_215, 0x600, 10215 },
+ { (u8 *) &gBattleAnimSpriteSheet_210, 0x80, 10216 },
+ { (u8 *) &gBattleAnimSpriteSheet_217, 0x80, 10217 },
+ { (u8 *) &gBattleAnimSpriteSheet_218, 0x180, 10218 },
+ { (u8 *) &gBattleAnimSpriteSheet_210, 0x80, 10219 },
+ { (u8 *) &gBattleAnimSpriteSheet_220, 0x200, 10220 },
+ { (u8 *) &gBattleAnimSpriteSheet_221, 0x400, 10221 },
+ { (u8 *) &gBattleAnimSpriteSheet_222, 0xA00, 10222 },
+ { (u8 *) &gBattleAnimSpriteSheet_223, 0x800, 10223 },
+ { (u8 *) &gBattleAnimSpriteSheet_224, 0x200, 10224 },
+ { (u8 *) &gBattleAnimSpriteSheet_225, 0x400, 10225 },
+ { (u8 *) &gBattleAnimSpriteSheet_226, 0x80, 10226 },
+ { (u8 *) &gBattleAnimSpriteSheet_227, 0x800, 10227 },
+ { (u8 *) &gBattleAnimSpriteSheet_228, 0x200, 10228 },
+ { (u8 *) &gBattleAnimSpriteSheet_229, 0x300, 10229 },
+ { (u8 *) &gBattleAnimSpriteSheet_230, 0x800, 10230 },
+ { (u8 *) &gBattleAnimSpriteSheet_231, 0x380, 10231 },
+ { (u8 *) &gBattleAnimSpriteSheet_232, 0x800, 10232 },
+ { (u8 *) &gBattleAnimSpriteSheet_233, 0xC0, 10233 },
+ { (u8 *) &gBattleAnimSpriteSheet_234, 0x800, 10234 },
+ { (u8 *) &gBattleAnimSpriteSheet_235, 0x60, 10235 },
+ { (u8 *) &gBattleAnimSpriteSheet_235, 0x60, 10236 },
+ { (u8 *) &gBattleAnimSpriteSheet_235, 0x60, 10237 },
+ { (u8 *) &gBattleAnimSpriteSheet_238, 0x80, 10238 },
+ { (u8 *) &gBattleAnimSpriteSheet_239, 0x180, 10239 },
+ { (u8 *) &gBattleAnimSpriteSheet_240, 0x180, 10240 },
+ { (u8 *) &gBattleAnimSpriteSheet_241, 0x200, 10241 },
+ { (u8 *) &gBattleAnimSpriteSheet_242, 0x200, 10242 },
+ { (u8 *) &gBattleAnimSpriteSheet_243, 0x20, 10243 },
+ { (u8 *) &gBattleAnimSpriteSheet_244, 0x400, 10244 },
+ { (u8 *) &gBattleAnimSpriteSheet_245, 0x600, 10245 },
+ { (u8 *) &gBattleAnimSpriteSheet_246, 0x1000, 10246 },
+ { (u8 *) &gBattleAnimSpriteSheet_247, 0x400, 10247 },
+ { (u8 *) &gBattleAnimSpriteSheet_248, 0x20, 10248 },
+ { (u8 *) &gBattleAnimSpriteSheet_249, 0x80, 10249 },
+ { (u8 *) &gBattleAnimSpriteSheet_250, 0x800, 10250 },
+ { (u8 *) &gBattleAnimSpriteSheet_251, 0x80, 10251 },
+ { (u8 *) &gBattleAnimSpriteSheet_252, 0x200, 10252 },
+ { (u8 *) &gBattleAnimSpriteSheet_253, 0x400, 10253 },
+ { (u8 *) &gBattleAnimSpriteSheet_254, 0x200, 10254 },
+ { (u8 *) &gBattleAnimSpriteSheet_255, 0x200, 10255 },
+ { (u8 *) &gBattleAnimSpriteSheet_256, 0x800, 10256 },
+ { (u8 *) &gBattleAnimSpriteSheet_257, 0x280, 10257 },
+ { (u8 *) &gBattleAnimSpriteSheet_258, 0x200, 10258 },
+ { (u8 *) &gBattleAnimSpriteSheet_149, 0x200, 10259 },
+ { (u8 *) &gBattleAnimSpriteSheet_260, 0x400, 10260 },
+ { (u8 *) &gBattleAnimSpriteSheet_261, 0x200, 10261 },
+ { (u8 *) &gBattleAnimSpriteSheet_262, 0x200, 10262 },
+ { (u8 *) &gBattleAnimSpriteSheet_263, 0x80, 10263 },
+ { (u8 *) &gBattleAnimSpriteSheet_264, 0x20, 10264 },
+ { (u8 *) &gBattleAnimSpriteSheet_264, 0x20, 10265 },
+ { (u8 *) &gBattleAnimSpriteSheet_266, 0x80, 10266 },
+ { (u8 *) &gBattleAnimSpriteSheet_212, 0x800, 10267 },
+ { (u8 *) &gBattleAnimSpriteSheet_264, 0x20, 10268 },
+ { (u8 *) &gBattleAnimSpriteSheet_269, 0x80, 10269 },
+ { (u8 *) &gBattleAnimSpriteSheet_270, 0x400, 10270 },
+ { (u8 *) &gBattleAnimSpriteSheet_271, 0x80, 10271 },
+ { (u8 *) &gBattleAnimSpriteSheet_272, 0x800, 10272 },
+ { (u8 *) &gBattleAnimSpriteSheet_273, 0x20, 10273 },
+ { (u8 *) &gBattleAnimSpriteSheet_274, 0x800, 10274 },
+ { (u8 *) &gBattleAnimSpriteSheet_275, 0x800, 10275 },
+ { (u8 *) &gBattleAnimSpriteSheet_276, 0x800, 10276 },
+ { (u8 *) &gBattleAnimSpriteSheet_277, 0x1000, 10277 },
+ { (u8 *) &gBattleAnimSpriteSheet_278, 0x800, 10278 },
+ { (u8 *) &gBattleAnimSpriteSheet_279, 0xA0, 10279 },
+ { (u8 *) &gBattleAnimSpriteSheet_280, 0x800, 10280 },
+ { (u8 *) &gBattleAnimSpriteSheet_281, 0x200, 10281 },
+ { (u8 *) &gBattleAnimSpriteSheet_282, 0x600, 10282 },
+ { (u8 *) &gBattleAnimSpriteSheet_283, 0x200, 10283 },
+ { (u8 *) &gBattleAnimSpriteSheet_284, 0x800, 10284 },
+ { (u8 *) &gBattleAnimSpriteSheet_285, 0x200, 10285 },
+ { (u8 *) &gBattleAnimSpriteSheet_183, 0x800, 10286 },
+ { (u8 *) &gBattleAnimSpriteSheet_056, 0x1000, 10287 },
+ { (u8 *) &gBattleAnimSpriteSheet_163, 0x100, 10288 },
+};
+
+const struct CompressedSpritePalette gBattleAnimPaletteTable[] =
+{
+ { (u8 *) &gBattleAnimSpritePalette_000, 10000 },
+ { (u8 *) &gBattleAnimSpritePalette_001, 10001 },
+ { (u8 *) &gBattleAnimSpritePalette_002, 10002 },
+ { (u8 *) &gBattleAnimSpritePalette_003, 10003 },
+ { (u8 *) &gBattleAnimSpritePalette_004, 10004 },
+ { (u8 *) &gBattleAnimSpritePalette_005, 10005 },
+ { (u8 *) &gBattleAnimSpritePalette_006, 10006 },
+ { (u8 *) &gBattleAnimSpritePalette_007, 10007 },
+ { (u8 *) &gBattleAnimSpritePalette_008, 10008 },
+ { (u8 *) &gBattleAnimSpritePalette_009, 10009 },
+ { (u8 *) &gBattleAnimSpritePalette_010, 10010 },
+ { (u8 *) &gBattleAnimSpritePalette_011, 10011 },
+ { (u8 *) &gBattleAnimSpritePalette_012, 10012 },
+ { (u8 *) &gBattleAnimSpritePalette_013, 10013 },
+ { (u8 *) &gBattleAnimSpritePalette_014, 10014 },
+ { (u8 *) &gBattleAnimSpritePalette_015, 10015 },
+ { (u8 *) &gBattleAnimSpritePalette_016, 10016 },
+ { (u8 *) &gBattleAnimSpritePalette_016, 10017 },
+ { (u8 *) &gBattleAnimSpritePalette_018, 10018 },
+ { (u8 *) &gBattleAnimSpritePalette_019, 10019 },
+ { (u8 *) &gBattleAnimSpritePalette_020, 10020 },
+ { (u8 *) &gBattleAnimSpritePalette_021, 10021 },
+ { (u8 *) &gBattleAnimSpritePalette_022, 10022 },
+ { (u8 *) &gBattleAnimSpritePalette_023, 10023 },
+ { (u8 *) &gBattleAnimSpritePalette_024, 10024 },
+ { (u8 *) &gBattleAnimSpritePalette_025, 10025 },
+ { (u8 *) &gBattleAnimSpritePalette_026, 10026 },
+ { (u8 *) &gBattleAnimSpritePalette_027, 10027 },
+ { (u8 *) &gBattleAnimSpritePalette_028, 10028 },
+ { (u8 *) &gBattleAnimSpritePalette_029, 10029 },
+ { (u8 *) &gBattleAnimSpritePalette_030, 10030 },
+ { (u8 *) &gBattleAnimSpritePalette_031, 10031 },
+ { (u8 *) &gBattleAnimSpritePalette_032, 10032 },
+ { (u8 *) &gBattleAnimSpritePalette_033, 10033 },
+ { (u8 *) &gBattleAnimSpritePalette_033, 10034 },
+ { (u8 *) &gBattleAnimSpritePalette_033, 10035 },
+ { (u8 *) &gBattleAnimSpritePalette_036, 10036 },
+ { (u8 *) &gBattleAnimSpritePalette_036, 10037 },
+ { (u8 *) &gBattleAnimSpritePalette_038, 10038 },
+ { (u8 *) &gBattleAnimSpritePalette_039, 10039 },
+ { (u8 *) &gBattleAnimSpritePalette_038, 10040 },
+ { (u8 *) &gBattleAnimSpritePalette_038, 10041 },
+ { (u8 *) &gBattleAnimSpritePalette_042, 10042 },
+ { (u8 *) &gBattleAnimSpritePalette_043, 10043 },
+ { (u8 *) &gBattleAnimSpritePalette_044, 10044 },
+ { (u8 *) &gBattleAnimSpritePalette_045, 10045 },
+ { (u8 *) &gBattleAnimSpritePalette_046, 10046 },
+ { (u8 *) &gBattleAnimSpritePalette_047, 10046 },
+ { (u8 *) &gBattleAnimSpritePalette_048, 10048 },
+ { (u8 *) &gBattleAnimSpritePalette_049, 10049 },
+ { (u8 *) &gBattleAnimSpritePalette_050, 10050 },
+ { (u8 *) &gBattleAnimSpritePalette_050, 10051 },
+ { (u8 *) &gBattleAnimSpritePalette_050, 10052 },
+ { (u8 *) &gBattleAnimSpritePalette_026, 10053 },
+ { (u8 *) &gBattleAnimSpritePalette_054, 10054 },
+ { (u8 *) &gBattleAnimSpritePalette_050, 10055 },
+ { (u8 *) &gBattleAnimSpritePalette_056, 10056 },
+ { (u8 *) &gBattleAnimSpritePalette_057, 10057 },
+ { (u8 *) &gBattleAnimSpritePalette_058, 10058 },
+ { (u8 *) &gBattleAnimSpritePalette_059, 10059 },
+ { (u8 *) &gBattleAnimSpritePalette_060, 10060 },
+ { (u8 *) &gBattleAnimSpritePalette_061, 10061 },
+ { (u8 *) &gBattleAnimSpritePalette_062, 10062 },
+ { (u8 *) &gBattleAnimSpritePalette_063, 10063 },
+ { (u8 *) &gBattleAnimSpritePalette_064, 10064 },
+ { (u8 *) &gBattleAnimSpritePalette_065, 10065 },
+ { (u8 *) &gBattleAnimSpritePalette_066, 10066 },
+ { (u8 *) &gBattleAnimSpritePalette_067, 10067 },
+ { (u8 *) &gBattleAnimSpritePalette_068, 10068 },
+ { (u8 *) &gBattleAnimSpritePalette_065, 10069 },
+ { (u8 *) &gBattleAnimSpritePalette_070, 10070 },
+ { (u8 *) &gBattleAnimSpritePalette_070, 10071 },
+ { (u8 *) &gBattleAnimSpritePalette_072, 10072 },
+ { (u8 *) &gBattleAnimSpritePalette_073, 10073 },
+ { (u8 *) &gBattleAnimSpritePalette_074, 10074 },
+ { (u8 *) &gBattleAnimSpritePalette_075, 10075 },
+ { (u8 *) &gBattleAnimSpritePalette_076, 10076 },
+ { (u8 *) &gBattleAnimSpritePalette_076, 10077 },
+ { (u8 *) &gBattleAnimSpritePalette_078, 10078 },
+ { (u8 *) &gBattleAnimSpritePalette_078, 10079 },
+ { (u8 *) &gBattleAnimSpritePalette_080, 10080 },
+ { (u8 *) &gBattleAnimSpritePalette_081, 10081 },
+ { (u8 *) &gBattleAnimSpritePalette_082, 10082 },
+ { (u8 *) &gBattleAnimSpritePalette_083, 10083 },
+ { (u8 *) &gBattleAnimSpritePalette_084, 10084 },
+ { (u8 *) &gBattleAnimSpritePalette_085, 10085 },
+ { (u8 *) &gBattleAnimSpritePalette_086, 10086 },
+ { (u8 *) &gBattleAnimSpritePalette_087, 10087 },
+ { (u8 *) &gBattleAnimSpritePalette_088, 10088 },
+ { (u8 *) &gBattleAnimSpritePalette_089, 10089 },
+ { (u8 *) &gBattleAnimSpritePalette_090, 10090 },
+ { (u8 *) &gBattleAnimSpritePalette_091, 10091 },
+ { (u8 *) &gBattleAnimSpritePalette_092, 10092 },
+ { (u8 *) &gBattleAnimSpritePalette_093, 10093 },
+ { (u8 *) &gBattleAnimSpritePalette_094, 10094 },
+ { (u8 *) &gBattleAnimSpritePalette_095, 10095 },
+ { (u8 *) &gBattleAnimSpritePalette_096, 10096 },
+ { (u8 *) &gBattleAnimSpritePalette_097, 10097 },
+ { (u8 *) &gBattleAnimSpritePalette_094, 10098 },
+ { (u8 *) &gBattleAnimSpritePalette_099, 10099 },
+ { (u8 *) &gBattleAnimSpritePalette_100, 10100 },
+ { (u8 *) &gBattleAnimSpritePalette_101, 10101 },
+ { (u8 *) &gBattleAnimSpritePalette_101, 10102 },
+ { (u8 *) &gBattleAnimSpritePalette_103, 10103 },
+ { (u8 *) &gBattleAnimSpritePalette_104, 10104 },
+ { (u8 *) &gBattleAnimSpritePalette_105, 10105 },
+ { (u8 *) &gBattleAnimSpritePalette_105, 10106 },
+ { (u8 *) &gBattleAnimSpritePalette_107, 10107 },
+ { (u8 *) &gBattleAnimSpritePalette_107, 10108 },
+ { (u8 *) &gBattleAnimSpritePalette_109, 10109 },
+ { (u8 *) &gBattleAnimSpritePalette_109, 10110 },
+ { (u8 *) &gBattleAnimSpritePalette_111, 10111 },
+ { (u8 *) &gBattleAnimSpritePalette_112, 10112 },
+ { (u8 *) &gBattleAnimSpritePalette_113, 10113 },
+ { (u8 *) &gBattleAnimSpritePalette_114, 10114 },
+ { (u8 *) &gBattleAnimSpritePalette_115, 10115 },
+ { (u8 *) &gBattleAnimSpritePalette_116, 10116 },
+ { (u8 *) &gBattleAnimSpritePalette_117, 10117 },
+ { (u8 *) &gBattleAnimSpritePalette_118, 10118 },
+ { (u8 *) &gBattleAnimSpritePalette_119, 10119 },
+ { (u8 *) &gBattleAnimSpritePalette_120, 10120 },
+ { (u8 *) &gBattleAnimSpritePalette_121, 10121 },
+ { (u8 *) &gBattleAnimSpritePalette_122, 10122 },
+ { (u8 *) &gBattleAnimSpritePalette_122, 10123 },
+ { (u8 *) &gBattleAnimSpritePalette_124, 10124 },
+ { (u8 *) &gBattleAnimSpritePalette_125, 10125 },
+ { (u8 *) &gBattleAnimSpritePalette_126, 10126 },
+ { (u8 *) &gBattleAnimSpritePalette_127, 10127 },
+ { (u8 *) &gBattleAnimSpritePalette_128, 10128 },
+ { (u8 *) &gBattleAnimSpritePalette_128, 10129 },
+ { (u8 *) &gBattleAnimSpritePalette_130, 10130 },
+ { (u8 *) &gBattleAnimSpritePalette_130, 10131 },
+ { (u8 *) &gBattleAnimSpritePalette_132, 10132 },
+ { (u8 *) &gBattleAnimSpritePalette_133, 10133 },
+ { (u8 *) &gBattleAnimSpritePalette_133, 10134 },
+ { (u8 *) &gBattleAnimSpritePalette_135, 10135 },
+ { (u8 *) &gBattleAnimSpritePalette_136, 10136 },
+ { (u8 *) &gBattleAnimSpritePalette_135, 10137 },
+ { (u8 *) &gBattleAnimSpritePalette_135, 10138 },
+ { (u8 *) &gBattleAnimSpritePalette_139, 10139 },
+ { (u8 *) &gBattleAnimSpritePalette_140, 10140 },
+ { (u8 *) &gBattleAnimSpritePalette_141, 10141 },
+ { (u8 *) &gBattleAnimSpritePalette_141, 10142 },
+ { (u8 *) &gBattleAnimSpritePalette_143, 10143 },
+ { (u8 *) &gBattleAnimSpritePalette_144, 10144 },
+ { (u8 *) &gBattleAnimSpritePalette_139, 10145 },
+ { (u8 *) &gBattleAnimSpritePalette_115, 10146 },
+ { (u8 *) &gBattleAnimSpritePalette_147, 10147 },
+ { (u8 *) &gBattleAnimSpritePalette_148, 10148 },
+ { (u8 *) &gBattleAnimSpritePalette_148, 10149 },
+ { (u8 *) &gBattleAnimSpritePalette_150, 10150 },
+ { (u8 *) &gBattleAnimSpritePalette_150, 10151 },
+ { (u8 *) &gBattleAnimSpritePalette_152, 10152 },
+ { (u8 *) &gBattleAnimSpritePalette_153, 10153 },
+ { (u8 *) &gBattleAnimSpritePalette_154, 10154 },
+ { (u8 *) &gBattleAnimSpritePalette_155, 10155 },
+ { (u8 *) &gBattleAnimSpritePalette_156, 10156 },
+ { (u8 *) &gBattleAnimSpritePalette_157, 10157 },
+ { (u8 *) &gBattleAnimSpritePalette_158, 10158 },
+ { (u8 *) &gBattleAnimSpritePalette_159, 10159 },
+ { (u8 *) &gBattleAnimSpritePalette_160, 10160 },
+ { (u8 *) &gBattleAnimSpritePalette_161, 10161 },
+ { (u8 *) &gBattleAnimSpritePalette_162, 10162 },
+ { (u8 *) &gBattleAnimSpritePalette_163, 10163 },
+ { (u8 *) &gBattleAnimSpritePalette_164, 10164 },
+ { (u8 *) &gBattleAnimSpritePalette_165, 10165 },
+ { (u8 *) &gBattleAnimSpritePalette_166, 10166 },
+ { (u8 *) &gBattleAnimSpritePalette_167, 10167 },
+ { (u8 *) &gBattleAnimSpritePalette_168, 10168 },
+ { (u8 *) &gBattleAnimSpritePalette_169, 10169 },
+ { (u8 *) &gBattleAnimSpritePalette_170, 10170 },
+ { (u8 *) &gBattleAnimSpritePalette_171, 10171 },
+ { (u8 *) &gBattleAnimSpritePalette_172, 10172 },
+ { (u8 *) &gBattleAnimSpritePalette_001, 10173 },
+ { (u8 *) &gBattleAnimSpritePalette_174, 10174 },
+ { (u8 *) &gBattleAnimSpritePalette_175, 10175 },
+ { (u8 *) &gBattleAnimSpritePalette_176, 10176 },
+ { (u8 *) &gBattleAnimSpritePalette_177, 10177 },
+ { (u8 *) &gBattleAnimSpritePalette_178, 10178 },
+ { (u8 *) &gBattleAnimSpritePalette_179, 10179 },
+ { (u8 *) &gBattleAnimSpritePalette_179, 10180 },
+ { (u8 *) &gBattleAnimSpritePalette_179, 10181 },
+ { (u8 *) &gBattleAnimSpritePalette_182, 10182 },
+ { (u8 *) &gBattleAnimSpritePalette_183, 10183 },
+ { (u8 *) &gBattleAnimSpritePalette_184, 10184 },
+ { (u8 *) &gBattleAnimSpritePalette_185, 10185 },
+ { (u8 *) &gBattleAnimSpritePalette_186, 10186 },
+ { (u8 *) &gBattleAnimSpritePalette_187, 10187 },
+ { (u8 *) &gBattleAnimSpritePalette_188, 10188 },
+ { (u8 *) &gBattleAnimSpritePalette_189, 10189 },
+ { (u8 *) &gBattleAnimSpritePalette_190, 10190 },
+ { (u8 *) &gBattleAnimSpritePalette_191, 10191 },
+ { (u8 *) &gBattleAnimSpritePalette_192, 10192 },
+ { (u8 *) &gBattleAnimSpritePalette_193, 10193 },
+ { (u8 *) &gBattleAnimSpritePalette_194, 10194 },
+ { (u8 *) &gBattleAnimSpritePalette_195, 10195 },
+ { (u8 *) &gBattleAnimSpritePalette_196, 10196 },
+ { (u8 *) &gBattleAnimSpritePalette_197, 10197 },
+ { (u8 *) &gBattleAnimSpritePalette_198, 10198 },
+ { (u8 *) &gBattleAnimSpritePalette_199, 10199 },
+ { (u8 *) &gBattleAnimSpritePalette_200, 10200 },
+ { (u8 *) &gBattleAnimSpritePalette_201, 10201 },
+ { (u8 *) &gBattleAnimSpritePalette_202, 10202 },
+ { (u8 *) &gBattleAnimSpritePalette_203, 10203 },
+ { (u8 *) &gBattleAnimSpritePalette_204, 10204 },
+ { (u8 *) &gBattleAnimSpritePalette_205, 10205 },
+ { (u8 *) &gBattleAnimSpritePalette_206, 10206 },
+ { (u8 *) &gBattleAnimSpritePalette_207, 10207 },
+ { (u8 *) &gBattleAnimSpritePalette_167, 10208 },
+ { (u8 *) &gBattleAnimSpritePalette_209, 10209 },
+ { (u8 *) &gBattleAnimSpritePalette_210, 10210 },
+ { (u8 *) &gBattleAnimSpritePalette_211, 10211 },
+ { (u8 *) &gBattleAnimSpritePalette_211, 10212 },
+ { (u8 *) &gBattleAnimSpritePalette_211, 10213 },
+ { (u8 *) &gBattleAnimSpritePalette_064, 10214 },
+ { (u8 *) &gBattleAnimSpritePalette_215, 10215 },
+ { (u8 *) &gBattleAnimSpritePalette_216, 10216 },
+ { (u8 *) &gBattleAnimSpritePalette_217, 10217 },
+ { (u8 *) &gBattleAnimSpritePalette_218, 10218 },
+ { (u8 *) &gBattleAnimSpritePalette_219, 10219 },
+ { (u8 *) &gBattleAnimSpritePalette_220, 10220 },
+ { (u8 *) &gBattleAnimSpritePalette_221, 10221 },
+ { (u8 *) &gBattleAnimSpritePalette_222, 10222 },
+ { (u8 *) &gBattleAnimSpritePalette_223, 10223 },
+ { (u8 *) &gBattleAnimSpritePalette_224, 10224 },
+ { (u8 *) &gBattleAnimSpritePalette_225, 10225 },
+ { (u8 *) &gBattleAnimSpritePalette_226, 10226 },
+ { (u8 *) &gBattleAnimSpritePalette_226, 10227 },
+ { (u8 *) &gBattleAnimSpritePalette_228, 10228 },
+ { (u8 *) &gBattleAnimSpritePalette_229, 10229 },
+ { (u8 *) &gBattleAnimSpritePalette_230, 10230 },
+ { (u8 *) &gBattleAnimSpritePalette_231, 10231 },
+ { (u8 *) &gBattleAnimSpritePalette_231, 10232 },
+ { (u8 *) &gBattleAnimSpritePalette_233, 10233 },
+ { (u8 *) &gBattleAnimSpritePalette_234, 10234 },
+ { (u8 *) &gBattleAnimSpritePalette_235, 10235 },
+ { (u8 *) &gBattleAnimSpritePalette_236, 10236 },
+ { (u8 *) &gBattleAnimSpritePalette_237, 10237 },
+ { (u8 *) &gBattleAnimSpritePalette_238, 10238 },
+ { (u8 *) &gBattleAnimSpritePalette_239, 10239 },
+ { (u8 *) &gBattleAnimSpritePalette_240, 10240 },
+ { (u8 *) &gBattleAnimSpritePalette_241, 10241 },
+ { (u8 *) &gBattleAnimSpritePalette_242, 10242 },
+ { (u8 *) &gBattleAnimSpritePalette_243, 10243 },
+ { (u8 *) &gBattleAnimSpritePalette_244, 10244 },
+ { (u8 *) &gBattleAnimSpritePalette_245, 10245 },
+ { (u8 *) &gBattleAnimSpritePalette_245, 10246 },
+ { (u8 *) &gBattleAnimSpritePalette_064, 10247 },
+ { (u8 *) &gBattleAnimSpritePalette_248, 10248 },
+ { (u8 *) &gBattleAnimSpritePalette_249, 10249 },
+ { (u8 *) &gBattleAnimSpritePalette_249, 10250 },
+ { (u8 *) &gBattleAnimSpritePalette_251, 10251 },
+ { (u8 *) &gBattleAnimSpritePalette_252, 10252 },
+ { (u8 *) &gBattleAnimSpritePalette_253, 10253 },
+ { (u8 *) &gBattleAnimSpritePalette_254, 10254 },
+ { (u8 *) &gBattleAnimSpritePalette_255, 10255 },
+ { (u8 *) &gBattleAnimSpritePalette_256, 10256 },
+ { (u8 *) &gBattleAnimSpritePalette_257, 10257 },
+ { (u8 *) &gBattleAnimSpritePalette_258, 10258 },
+ { (u8 *) &gBattleAnimSpritePalette_259, 10259 },
+ { (u8 *) &gBattleAnimSpritePalette_260, 10260 },
+ { (u8 *) &gBattleAnimSpritePalette_261, 10261 },
+ { (u8 *) &gBattleAnimSpritePalette_262, 10262 },
+ { (u8 *) &gBattleAnimSpritePalette_263, 10263 },
+ { (u8 *) &gBattleAnimSpritePalette_264, 10264 },
+ { (u8 *) &gBattleAnimSpritePalette_265, 10265 },
+ { (u8 *) &gBattleAnimSpritePalette_266, 10266 },
+ { (u8 *) &gBattleAnimSpritePalette_267, 10267 },
+ { (u8 *) &gBattleAnimSpritePalette_268, 10268 },
+ { (u8 *) &gBattleAnimSpritePalette_269, 10269 },
+ { (u8 *) &gBattleAnimSpritePalette_270, 10270 },
+ { (u8 *) &gBattleAnimSpritePalette_271, 10271 },
+ { (u8 *) &gBattleAnimSpritePalette_272, 10272 },
+ { (u8 *) &gBattleAnimSpritePalette_272, 10273 },
+ { (u8 *) &gBattleAnimSpritePalette_274, 10274 },
+ { (u8 *) &gBattleAnimSpritePalette_274, 10275 },
+ { (u8 *) &gBattleAnimSpritePalette_274, 10276 },
+ { (u8 *) &gBattleAnimSpritePalette_277, 10277 },
+ { (u8 *) &gBattleAnimSpritePalette_278, 10278 },
+ { (u8 *) &gBattleAnimSpritePalette_279, 10279 },
+ { (u8 *) &gBattleAnimSpritePalette_280, 10280 },
+ { (u8 *) &gBattleAnimSpritePalette_281, 10281 },
+ { (u8 *) &gBattleAnimSpritePalette_282, 10282 },
+ { (u8 *) &gBattleAnimSpritePalette_283, 10283 },
+ { (u8 *) &gBattleAnimSpritePalette_284, 10284 },
+ { (u8 *) &gBattleAnimSpritePalette_285, 10285 },
+ { (u8 *) &gBattleAnimSpritePalette_286, 10286 },
+ { (u8 *) &gBattleAnimSpritePalette_287, 10287 },
+ { (u8 *) &gBattleAnimSpritePalette_288, 10288 },
+};
+
+const struct BattleAnimBackground gBattleAnimBackgroundTable[] =
+{
+ &gBattleAnimBackgroundImage_00, &gBattleAnimBackgroundPalette_00, &gBattleAnimBackgroundTilemap_00,
+ &gBattleAnimBackgroundImage_00, &gBattleAnimBackgroundPalette_00, &gBattleAnimBackgroundTilemap_00,
+ &gBattleAnimBackgroundImage_02, &gBattleAnimBackgroundPalette_02, &gBattleAnimBackgroundTilemap_02,
+ &gBattleAnimBackgroundImage_03, &gBattleAnimBackgroundPalette_03, &gBattleAnimBackgroundTilemap_03,
+ &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_04, &gBattleAnimBackgroundTilemap_04,
+ &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_04, &gBattleAnimBackgroundTilemap_05,
+ &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_04, &gBattleAnimBackgroundTilemap_06,
+ &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_07, &gBattleAnimBackgroundTilemap_07,
+ &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_07, &gBattleAnimBackgroundTilemap_08,
+ &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_09, &gBattleAnimBackgroundTilemap_09,
+ &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_09, &gBattleAnimBackgroundTilemap_10,
+ &gBattleAnimBackgroundImage_11, &gBattleAnimBackgroundPalette_11, &gBattleAnimBackgroundTilemap_11,
+ &gBattleAnimBackgroundImage_12, &gBattleAnimBackgroundPalette_12, &gBattleAnimBackgroundTilemap_12,
+ &gBattleAnimBackgroundImage_12, &gBattleAnimBackgroundPalette_12, &gBattleAnimBackgroundTilemap_13,
+ &gBattleAnimBackgroundImage_12, &gBattleAnimBackgroundPalette_12, &gBattleAnimBackgroundTilemap_14,
+ &gBattleAnimBackgroundImage_15, &gBattleAnimBackgroundPalette_15, &gBattleAnimBackgroundTilemap_15,
+ &gBattleAnimBackgroundImage_16, &gBattleAnimBackgroundPalette_16, &gBattleAnimBackgroundTilemap_16,
+ &gBattleAnimBackgroundImage_17, &gBattleAnimBackgroundPalette_17, &gBattleAnimBackgroundTilemap_17,
+ &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_18, &gBattleAnimBackgroundTilemap_07,
+ &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_18, &gBattleAnimBackgroundTilemap_08,
+ &gBattleAnimBackgroundImage_20, &gBattleAnimBackgroundPalette_20, &gBattleAnimBackgroundTilemap_20,
+ &gBattleAnimBackgroundImage_21, &gBattleAnimBackgroundPalette_21, &gBattleAnimBackgroundTilemap_21,
+ &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_22, &gBattleAnimBackgroundTilemap_09,
+ &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_22, &gBattleAnimBackgroundTilemap_10,
+ &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_04,
+ &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_05,
+ &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_06,
+};
+
extern u16 gBattlePartyID[4];
extern u8 gObjectBankIDs[];
extern u8 gBankAttacker;
@@ -63,9 +1329,6 @@ extern struct MusicPlayerInfo gMPlay_SE2;
extern const u16 gUnknown_081C7160[];
extern const u8 *const gBattleAnims_Moves[];
-extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
-extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
-extern const struct BattleAnimBackground gBattleAnimBackgroundTable[];
static void RunAnimScriptCommand(void);
static void ScriptCmd_loadspritegfx(void);
diff --git a/src/battle/battle_anim_80A7E7C.c b/src/battle/battle_anim_80A7E7C.c
index c35434df0..f109333e3 100644
--- a/src/battle/battle_anim_80A7E7C.c
+++ b/src/battle/battle_anim_80A7E7C.c
@@ -20,17 +20,77 @@ static void sub_80A808C(u8 taskId);
static void sub_80A81D8(u8 taskId);
static void sub_80A8374(u8 taskId);
static void sub_80A8488(u8 taskId);
+static void sub_80A8530(struct Sprite *sprite);
static void sub_80A85A4(struct Sprite *sprite);
-void sub_80A8614(struct Sprite* sprite);
+static void sub_80A85C8(struct Sprite *sprite);
+static void sub_80A8614(struct Sprite* sprite);
+static void sub_80A8638(struct Sprite *sprite);
static void sub_80A86F4(struct Sprite *sprite);
+static void sub_80A8764(struct Sprite *sprite);
+static void sub_80A8818(struct Sprite *sprite);
static void sub_80A88F0(struct Sprite *sprite);
static void sub_80A89B4(u8 taskId);
static void sub_80A8A18(u8 taskId);
static void sub_80A8C0C(u8 taskId);
static void sub_80A8D8C(u8 taskId);
-void sub_80A8FD8(u8 taskId);
+static void sub_80A8FD8(u8 taskId);
static void sub_80A913C(u8 taskId);
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FB0 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A8530,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FC8 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A85C8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FE0 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A8638,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FF8 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A8764,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83C2010 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A8818,
+};
+
void sub_80A7E7C(u8 taskId)
{
u8 sprite;
@@ -335,7 +395,7 @@ void sub_80A8500(u8 taskId)
sub_80A8408(taskId);
}
-void sub_80A8530(struct Sprite *sprite)
+static void sub_80A8530(struct Sprite *sprite)
{
sprite->invisible = TRUE;
if (GetBankSide(gAnimBankAttacker))
@@ -362,7 +422,7 @@ static void sub_80A85A4(struct Sprite *sprite)
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
-void sub_80A85C8(struct Sprite *sprite)
+static void sub_80A85C8(struct Sprite *sprite)
{
u8 spriteId;
sprite->invisible = TRUE;
@@ -376,7 +436,7 @@ void sub_80A85C8(struct Sprite *sprite)
sprite->callback = sub_8078458;
}
-void sub_80A8614(struct Sprite *sprite)
+static void sub_80A8614(struct Sprite *sprite)
{
sprite->data[0] = sprite->data[4];
sprite->data[2] = -sprite->data[2];
@@ -384,7 +444,7 @@ void sub_80A8614(struct Sprite *sprite)
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
-void sub_80A8638(struct Sprite *sprite)
+static void sub_80A8638(struct Sprite *sprite)
{
int something;
int spriteId;
@@ -451,7 +511,7 @@ static void sub_80A86F4(struct Sprite *sprite)
}
}
-void sub_80A8764(struct Sprite *sprite)
+static void sub_80A8764(struct Sprite *sprite)
{
u8 v1;
u8 spriteId;
@@ -486,7 +546,7 @@ void sub_80A8764(struct Sprite *sprite)
sprite->callback = sub_80784A8;
}
-void sub_80A8818(struct Sprite *sprite)
+static void sub_80A8818(struct Sprite *sprite)
{
u8 spriteId;
u8 v1;
@@ -833,7 +893,7 @@ void sub_80A8EFC(u8 taskId)
TASK.func = sub_80A8FD8;
}
-void sub_80A8FD8(u8 taskId)
+static void sub_80A8FD8(u8 taskId)
{
TASK.data[3] += TASK.data[4];
obj_id_set_rotscale(TASK.data[5], 0x100, 0x100, TASK.data[3]);
diff --git a/src/contest.c b/src/contest.c
index 875fe4502..df4bb361d 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -31,13 +31,12 @@
#include "tv.h"
#include "scanline_effect.h"
#include "util.h"
+#include "contest_ai.h"
extern u8 AreMovesContestCombo(u16, u16); // I don't think this is a bool
extern void sub_80C8A38(u8);
extern void sub_80C8AD0(u8);
extern void sub_80C8C80(u8);
-extern void sub_81288F4();
-extern u8 sub_8128944(void);
extern struct MusicPlayerInfo gMPlay_SE1;
extern u16 gSpecialVar_ContestCategory;
@@ -391,7 +390,7 @@ void ClearContestVars(void)
}
memset(&shared192D0, 0, sizeof(shared192D0));
- memset(shared192E4, 0, 0x44 * sizeof(*shared192E4));
+ memset(eContestAI, 0, sizeof(struct ContestAIInfo));
memset(&shared19328, 0, sizeof(shared19328));
memset(shared19338, 0, 4 * sizeof(*shared19338));
if (!(gIsLinkContest & 1))
@@ -2629,8 +2628,8 @@ u16 GetChosenMove(u8 a)
{
u8 moveChoice;
- sub_81288F4(a);
- moveChoice = sub_8128944();
+ ContestAI_ResetAI(a);
+ moveChoice = ContestAI_GetActionToUse();
return gContestMons[a].moves[moveChoice];
}
}
diff --git a/src/contest_ai.c b/src/contest_ai.c
new file mode 100755
index 000000000..66b387270
--- /dev/null
+++ b/src/contest_ai.c
@@ -0,0 +1,1763 @@
+#include "global.h"
+#include "contest.h"
+#include "random.h"
+#include "contest_ai.h"
+#include "ewram.h"
+
+extern u8 AreMovesContestCombo(u16, u16);
+extern bool8 sub_80B214C(u8);
+extern bool8 Contest_IsMonsTurnDisabled(u8);
+
+extern s16 gUnknown_02038670[];
+extern u16 gSpecialVar_ContestCategory;
+
+extern u8 *gAIScriptPtr;
+extern u8 *gContestAIs[];
+
+static void ContestAICmd_unk_00(void);
+static void ContestAICmd_get_turn(void);
+static void ContestAICmd_unk_02(void);
+static void ContestAICmd_unk_03(void);
+static void ContestAICmd_unk_04(void);
+static void ContestAICmd_unk_05(void);
+static void ContestAICmd_get_excitement(void);
+static void ContestAICmd_unk_07(void);
+static void ContestAICmd_unk_08(void);
+static void ContestAICmd_unk_09(void);
+static void ContestAICmd_unk_0A(void);
+static void ContestAICmd_get_user_order(void);
+static void ContestAICmd_unk_0C(void);
+static void ContestAICmd_unk_0D(void);
+static void ContestAICmd_unk_0E(void);
+static void ContestAICmd_unk_0F(void);
+static void ContestAICmd_get_user_condition_maybe(void);
+static void ContestAICmd_unk_11(void);
+static void ContestAICmd_unk_12(void);
+static void ContestAICmd_unk_13(void);
+static void ContestAICmd_unk_14(void);
+static void ContestAICmd_unk_15(void);
+static void ContestAICmd_unk_16(void);
+static void ContestAICmd_unk_17(void);
+static void ContestAICmd_unk_18(void);
+static void ContestAICmd_unk_19(void);
+static void ContestAICmd_unk_1A(void);
+static void ContestAICmd_unk_1B(void);
+static void ContestAICmd_unk_1C(void);
+static void ContestAICmd_unk_1D(void);
+static void ContestAICmd_unk_1E(void);
+static void ContestAICmd_get_contest_type(void);
+static void ContestAICmd_unk_20(void);
+static void ContestAICmd_unk_21(void);
+static void ContestAICmd_get_move_excitement(void);
+static void ContestAICmd_unk_23(void);
+static void ContestAICmd_unk_24(void);
+static void ContestAICmd_unk_25(void);
+static void ContestAICmd_unk_26(void);
+static void ContestAICmd_get_move_effect(void);
+static void ContestAICmd_unk_28(void);
+static void ContestAICmd_unk_29(void);
+static void ContestAICmd_get_move_effect_type(void);
+static void ContestAICmd_unk_2B(void);
+static void ContestAICmd_unk_2C(void);
+static void ContestAICmd_check_move_has_highest_appeal(void);
+static void ContestAICmd_unk_2E(void);
+static void ContestAICmd_unk_2F(void);
+static void ContestAICmd_unk_30(void);
+static void ContestAICmd_unk_31(void);
+static void ContestAICmd_unk_32(void);
+static void ContestAICmd_unk_33(void);
+static void ContestAICmd_unk_34(void);
+static void ContestAICmd_unk_35(void);
+static void ContestAICmd_unk_36(void);
+static void ContestAICmd_unk_37(void);
+static void ContestAICmd_unk_38(void);
+static void ContestAICmd_unk_39(void);
+static void ContestAICmd_unk_3A(void);
+static void ContestAICmd_get_move_used_count(void);
+static void ContestAICmd_unk_3C(void);
+static void ContestAICmd_unk_3D(void);
+static void ContestAICmd_unk_3E(void);
+static void ContestAICmd_unk_3F(void);
+static void ContestAICmd_check_combo_starter(void);
+static void ContestAICmd_unk_41(void);
+static void ContestAICmd_unk_42(void);
+static void ContestAICmd_check_combo_finisher(void);
+static void ContestAICmd_unk_44(void);
+static void ContestAICmd_unk_45(void);
+static void ContestAICmd_check_would_finish_combo(void);
+static void ContestAICmd_unk_47(void);
+static void ContestAICmd_unk_48(void);
+static void ContestAICmd_get_condition(void);
+static void ContestAICmd_unk_4A(void);
+static void ContestAICmd_unk_4B(void);
+static void ContestAICmd_unk_4C(void);
+static void ContestAICmd_unk_4D(void);
+static void ContestAICmd_get_used_combo_starter(void);
+static void ContestAICmd_unk_4F(void);
+static void ContestAICmd_unk_50(void);
+static void ContestAICmd_unk_51(void);
+static void ContestAICmd_unk_52(void);
+static void ContestAICmd_check_can_participate(void);
+static void ContestAICmd_unk_54(void);
+static void ContestAICmd_unk_55(void);
+static void ContestAICmd_get_val_812A188(void);
+static void ContestAICmd_unk_57(void);
+static void ContestAICmd_unk_58(void);
+static void ContestAICmd_unk_59(void);
+static void ContestAICmd_unk_5A(void);
+static void ContestAICmd_unk_5B(void);
+static void ContestAICmd_unk_5C(void);
+static void ContestAICmd_unk_5D(void);
+static void ContestAICmd_unk_5E(void);
+static void ContestAICmd_unk_5F(void);
+static void ContestAICmd_unk_60(void);
+static void ContestAICmd_unk_61(void);
+static void ContestAICmd_unk_62(void);
+static void ContestAICmd_unk_63(void);
+static void ContestAICmd_unk_64(void);
+static void ContestAICmd_unk_65(void);
+static void ContestAICmd_unk_66(void);
+static void ContestAICmd_unk_67(void);
+static void ContestAICmd_unk_68(void);
+static void ContestAICmd_unk_69(void);
+static void ContestAICmd_unk_6A(void);
+static void ContestAICmd_unk_6B(void);
+static void ContestAICmd_unk_6C(void);
+static void ContestAICmd_unk_6D(void);
+static void ContestAICmd_unk_6E(void);
+static void ContestAICmd_unk_6F(void);
+static void ContestAICmd_unk_70(void);
+static void ContestAICmd_unk_71(void);
+static void ContestAICmd_unk_72(void);
+static void ContestAICmd_unk_73(void);
+static void ContestAICmd_unk_74(void);
+static void ContestAICmd_unk_75(void);
+static void ContestAICmd_unk_76(void);
+static void ContestAICmd_unk_77(void);
+static void ContestAICmd_unk_78(void);
+static void ContestAICmd_unk_79(void);
+static void ContestAICmd_unk_7A(void);
+static void ContestAICmd_unk_7B(void);
+static void ContestAICmd_unk_7C(void);
+static void ContestAICmd_unk_7D(void);
+static void ContestAICmd_unk_7E(void);
+static void ContestAICmd_unk_7F(void);
+static void ContestAICmd_unk_80(void);
+static void ContestAICmd_unk_81(void);
+static void ContestAICmd_check_for_exciting_move(void);
+static void ContestAICmd_unk_83(void);
+static void ContestAICmd_unk_84(void);
+static void ContestAICmd_unk_85(void);
+static void ContestAICmd_unk_86(void);
+static void ContestAICmd_unk_87(void);
+
+typedef void (* ContestAICmdFunc)(void);
+
+static const ContestAICmdFunc sContestAICmdTable[] =
+{
+ ContestAICmd_unk_00, // 0x00
+ ContestAICmd_get_turn, // 0x01
+ ContestAICmd_unk_02, // 0x02
+ ContestAICmd_unk_03, // 0x03
+ ContestAICmd_unk_04, // 0x04
+ ContestAICmd_unk_05, // 0x05
+ ContestAICmd_get_excitement, // 0x06
+ ContestAICmd_unk_07, // 0x07
+ ContestAICmd_unk_08, // 0x08
+ ContestAICmd_unk_09, // 0x09
+ ContestAICmd_unk_0A, // 0x0A
+ ContestAICmd_get_user_order, // 0x0B
+ ContestAICmd_unk_0C, // 0x0C
+ ContestAICmd_unk_0D, // 0x0D
+ ContestAICmd_unk_0E, // 0x0E
+ ContestAICmd_unk_0F, // 0x0F
+ ContestAICmd_get_user_condition_maybe, // 0x10
+ ContestAICmd_unk_11, // 0x11
+ ContestAICmd_unk_12, // 0x12
+ ContestAICmd_unk_13, // 0x13
+ ContestAICmd_unk_14, // 0x14
+ ContestAICmd_unk_15, // 0x15
+ ContestAICmd_unk_16, // 0x16
+ ContestAICmd_unk_17, // 0x17
+ ContestAICmd_unk_18, // 0x18
+ ContestAICmd_unk_19, // 0x19
+ ContestAICmd_unk_1A, // 0x1A
+ ContestAICmd_unk_1B, // 0x1B
+ ContestAICmd_unk_1C, // 0x1C
+ ContestAICmd_unk_1D, // 0x1D
+ ContestAICmd_unk_1E, // 0x1E
+ ContestAICmd_get_contest_type, // 0x1F
+ ContestAICmd_unk_20, // 0x20
+ ContestAICmd_unk_21, // 0x21
+ ContestAICmd_get_move_excitement, // 0x22
+ ContestAICmd_unk_23, // 0x23
+ ContestAICmd_unk_24, // 0x24
+ ContestAICmd_unk_25, // 0x25
+ ContestAICmd_unk_26, // 0x26
+ ContestAICmd_get_move_effect, // 0x27
+ ContestAICmd_unk_28, // 0x28
+ ContestAICmd_unk_29, // 0x29
+ ContestAICmd_get_move_effect_type, // 0x2A
+ ContestAICmd_unk_2B, // 0x2B
+ ContestAICmd_unk_2C, // 0x2C
+ ContestAICmd_check_move_has_highest_appeal, // 0x2D
+ ContestAICmd_unk_2E, // 0x2E
+ ContestAICmd_unk_2F, // 0x2F
+ ContestAICmd_unk_30, // 0x30
+ ContestAICmd_unk_31, // 0x31
+ ContestAICmd_unk_32, // 0x32
+ ContestAICmd_unk_33, // 0x33
+ ContestAICmd_unk_34, // 0x34
+ ContestAICmd_unk_35, // 0x35
+ ContestAICmd_unk_36, // 0x36
+ ContestAICmd_unk_37, // 0x37
+ ContestAICmd_unk_38, // 0x38
+ ContestAICmd_unk_39, // 0x39
+ ContestAICmd_unk_3A, // 0x3A
+ ContestAICmd_get_move_used_count, // 0x3B
+ ContestAICmd_unk_3C, // 0x3C
+ ContestAICmd_unk_3D, // 0x3D
+ ContestAICmd_unk_3E, // 0x3E
+ ContestAICmd_unk_3F, // 0x3F
+ ContestAICmd_check_combo_starter, // 0x40
+ ContestAICmd_unk_41, // 0x41
+ ContestAICmd_unk_42, // 0x42
+ ContestAICmd_check_combo_finisher, // 0x43
+ ContestAICmd_unk_44, // 0x44
+ ContestAICmd_unk_45, // 0x45
+ ContestAICmd_check_would_finish_combo, // 0x46
+ ContestAICmd_unk_47, // 0x47
+ ContestAICmd_unk_48, // 0x48
+ ContestAICmd_get_condition, // 0x49
+ ContestAICmd_unk_4A, // 0x4A
+ ContestAICmd_unk_4B, // 0x4B
+ ContestAICmd_unk_4C, // 0x4C
+ ContestAICmd_unk_4D, // 0x4D
+ ContestAICmd_get_used_combo_starter, // 0x4E
+ ContestAICmd_unk_4F, // 0x4F
+ ContestAICmd_unk_50, // 0x50
+ ContestAICmd_unk_51, // 0x51
+ ContestAICmd_unk_52, // 0x52
+ ContestAICmd_check_can_participate, // 0x53
+ ContestAICmd_unk_54, // 0x54
+ ContestAICmd_unk_55, // 0x55
+ ContestAICmd_get_val_812A188, // 0x56
+ ContestAICmd_unk_57, // 0x57
+ ContestAICmd_unk_58, // 0x58
+ ContestAICmd_unk_59, // 0x59
+ ContestAICmd_unk_5A, // 0x5A
+ ContestAICmd_unk_5B, // 0x5B
+ ContestAICmd_unk_5C, // 0x5C
+ ContestAICmd_unk_5D, // 0x5D
+ ContestAICmd_unk_5E, // 0x5E
+ ContestAICmd_unk_5F, // 0x5F
+ ContestAICmd_unk_60, // 0x60
+ ContestAICmd_unk_61, // 0x61
+ ContestAICmd_unk_62, // 0x62
+ ContestAICmd_unk_63, // 0x63
+ ContestAICmd_unk_64, // 0x64
+ ContestAICmd_unk_65, // 0x65
+ ContestAICmd_unk_66, // 0x66
+ ContestAICmd_unk_67, // 0x67
+ ContestAICmd_unk_68, // 0x68
+ ContestAICmd_unk_69, // 0x69
+ ContestAICmd_unk_6A, // 0x6A
+ ContestAICmd_unk_6B, // 0x6B
+ ContestAICmd_unk_6C, // 0x6C
+ ContestAICmd_unk_6D, // 0x6D
+ ContestAICmd_unk_6E, // 0x6E
+ ContestAICmd_unk_6F, // 0x6F
+ ContestAICmd_unk_70, // 0x70
+ ContestAICmd_unk_71, // 0x71
+ ContestAICmd_unk_72, // 0x72
+ ContestAICmd_unk_73, // 0x73
+ ContestAICmd_unk_74, // 0x74
+ ContestAICmd_unk_75, // 0x75
+ ContestAICmd_unk_76, // 0x76
+ ContestAICmd_unk_77, // 0x77
+ ContestAICmd_unk_78, // 0x78
+ ContestAICmd_unk_79, // 0x79
+ ContestAICmd_unk_7A, // 0x7A
+ ContestAICmd_unk_7B, // 0x7B
+ ContestAICmd_unk_7C, // 0x7C
+ ContestAICmd_unk_7D, // 0x7D
+ ContestAICmd_unk_7E, // 0x7E
+ ContestAICmd_unk_7F, // 0x7F
+ ContestAICmd_unk_80, // 0x80
+ ContestAICmd_unk_81, // 0x81
+ ContestAICmd_check_for_exciting_move, // 0x82
+ ContestAICmd_unk_83, // 0x83
+ ContestAICmd_unk_84, // 0x84
+ ContestAICmd_unk_85, // 0x85
+ ContestAICmd_unk_86, // 0x86
+ ContestAICmd_unk_87, // 0x87
+};
+
+static void ContestAI_DoAIProcessing(void);
+static bool8 sub_8128A7C(u8);
+static void sub_812ACA4(u8 *);
+static u8 sub_812ACC8(void);
+
+void ContestAI_ResetAI(u8 var)
+{
+ int i;
+ memset(eContestAI, 0, sizeof(struct ContestAIInfo));
+
+ for(i = 0; i < 4; i++)
+ eContestAI->unk5[i] = 100;
+
+ eContestAI->unk41 = var;
+ eContestAI->unk40 = 0;
+ eContestAI->flags = gContestMons[eContestAI->unk41].flags;
+}
+
+u8 ContestAI_GetActionToUse(void)
+{
+ while(eContestAI->flags != 0)
+ {
+ if(eContestAI->flags & 1)
+ {
+ eContestAI->aiState = 0;
+ ContestAI_DoAIProcessing();
+ }
+ eContestAI->flags >>= 1;
+ eContestAI->unk10++;
+ eContestAI->unk4 = 0;
+ }
+
+ while (1)
+ {
+ u8 rval = Random() & 3;
+ u8 r2 = eContestAI->unk5[rval];
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ if (r2 < eContestAI->unk5[i])
+ break;
+ }
+ if (i == 4)
+ return rval;
+ }
+}
+
+static void ContestAI_DoAIProcessing(void)
+{
+ while(eContestAI->aiState != CONTESTAI_FINISHED)
+ {
+ switch(eContestAI->aiState)
+ {
+ case CONTESTAI_DO_NOT_PROCESS:
+ break;
+ case CONTESTAI_SETTING_UP:
+ gAIScriptPtr = gContestAIs[eContestAI->unk10];
+
+ if(gContestMons[eContestAI->unk41].moves[eContestAI->unk4] == 0)
+ eContestAI->unk2 = 0; // don't process a move that doesn't exist.
+ else
+ eContestAI->unk2 = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+ eContestAI->aiState++;
+ break;
+ case CONTESTAI_PROCESSING:
+ if(eContestAI->unk2 != 0)
+ sContestAICmdTable[*gAIScriptPtr](); // run the command.
+ else
+ {
+ eContestAI->unk5[eContestAI->unk4] = 0; // don't consider a move that doesn't exist.
+ eContestAI->aiAction |= 1;
+ }
+ if(eContestAI->aiAction & 1)
+ {
+ eContestAI->unk4++;
+ if(eContestAI->unk4 < 4)
+ eContestAI->aiState = 0;
+ else
+ eContestAI->aiState++;
+ eContestAI->aiAction &= 0xFE; // TODO: Define action flags
+ }
+ break;
+ }
+ }
+}
+
+static u8 sub_8128A7C(u8 var)
+{
+ int i;
+
+ for(i = 0; i < 4; i++)
+ if(shared192D0.unk0[i] == var)
+ break;
+
+ return i;
+}
+
+static void ContestAICmd_unk_00(void)
+{
+ s16 score = eContestAI->unk5[eContestAI->unk4] + (s8)gAIScriptPtr[1];
+
+ if (score > 255)
+ score = 255;
+ else if (score < 0)
+ score = 0;
+
+ eContestAI->unk5[eContestAI->unk4] = score;
+
+ gAIScriptPtr += 2;
+}
+
+static void ContestAICmd_get_turn(void)
+{
+ eContestAI->scriptResult = sContest.turnNumber;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_02(void)
+{
+ ContestAICmd_get_turn();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_03(void)
+{
+ ContestAICmd_get_turn();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_04(void)
+{
+ ContestAICmd_get_turn();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_05(void)
+{
+ ContestAICmd_get_turn();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_get_excitement(void)
+{
+ eContestAI->scriptResult = sContest.applauseLevel;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_07(void)
+{
+ ContestAICmd_get_excitement();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_08(void)
+{
+ ContestAICmd_get_excitement();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_09(void)
+{
+ ContestAICmd_get_excitement();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_0A(void)
+{
+ ContestAICmd_get_excitement();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_get_user_order(void)
+{
+ eContestAI->scriptResult = shared192D0.unk0[eContestAI->unk41];
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_0C(void)
+{
+ ContestAICmd_get_user_order();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_0D(void)
+{
+ ContestAICmd_get_user_order();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_0E(void)
+{
+ ContestAICmd_get_user_order();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_0F(void)
+{
+ ContestAICmd_get_user_order();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_get_user_condition_maybe(void)
+{
+ eContestAI->scriptResult = sContestantStatus[eContestAI->unk41].unkD / 10;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_11(void)
+{
+ ContestAICmd_get_user_condition_maybe();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_12(void)
+{
+ ContestAICmd_get_user_condition_maybe();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_13(void)
+{
+ ContestAICmd_get_user_condition_maybe();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_14(void)
+{
+ ContestAICmd_get_user_condition_maybe();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_15(void)
+{
+ eContestAI->scriptResult = sContestantStatus[eContestAI->unk41].unk4;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_16(void)
+{
+ ContestAICmd_unk_15();
+
+ if(eContestAI->scriptResult < (s16)T1_READ_16(gAIScriptPtr + 0))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+static void ContestAICmd_unk_17(void)
+{
+ ContestAICmd_unk_15();
+
+ if(eContestAI->scriptResult > (s16)T1_READ_16(gAIScriptPtr + 0))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+static void ContestAICmd_unk_18(void)
+{
+ ContestAICmd_unk_15();
+
+ if(eContestAI->scriptResult == (s16)T1_READ_16(gAIScriptPtr + 0))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+static void ContestAICmd_unk_19(void)
+{
+ ContestAICmd_unk_15();
+
+ if(eContestAI->scriptResult != (s16)T1_READ_16(gAIScriptPtr + 0))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+static void ContestAICmd_unk_1A(void)
+{
+ eContestAI->scriptResult = gUnknown_02038670[eContestAI->unk41];
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_1B(void)
+{
+ ContestAICmd_unk_1A();
+
+ if(eContestAI->scriptResult < (s16)T1_READ_16(gAIScriptPtr + 0))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+static void ContestAICmd_unk_1C(void)
+{
+ ContestAICmd_unk_1A();
+
+ if(eContestAI->scriptResult > (s16)T1_READ_16(gAIScriptPtr + 0))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+static void ContestAICmd_unk_1D(void)
+{
+ ContestAICmd_unk_1A();
+
+ if(eContestAI->scriptResult == (s16)T1_READ_16(gAIScriptPtr + 0))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+static void ContestAICmd_unk_1E(void)
+{
+ ContestAICmd_unk_1A();
+
+ if(eContestAI->scriptResult != (s16)T1_READ_16(gAIScriptPtr + 0))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+static void ContestAICmd_get_contest_type(void)
+{
+ eContestAI->scriptResult = gSpecialVar_ContestCategory;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_20(void)
+{
+ ContestAICmd_get_contest_type();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_21(void)
+{
+ ContestAICmd_get_contest_type();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_get_move_excitement(void)
+{
+ eContestAI->scriptResult = Contest_GetMoveExcitement(gContestMons[eContestAI->unk41].moves[eContestAI->unk4]);
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_23(void)
+{
+ ContestAICmd_get_move_excitement();
+
+ if(eContestAI->scriptResult < (s8)gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_24(void)
+{
+ ContestAICmd_get_move_excitement();
+
+ if(eContestAI->scriptResult > (s8)gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_25(void)
+{
+ ContestAICmd_get_move_excitement();
+
+ if(eContestAI->scriptResult == (s8)gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_26(void)
+{
+ ContestAICmd_get_move_excitement();
+
+ if(eContestAI->scriptResult != (s8)gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_get_move_effect(void)
+{
+ u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+
+ eContestAI->scriptResult = gContestMoves[move].effect;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_28(void)
+{
+ ContestAICmd_get_move_effect();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_29(void)
+{
+ ContestAICmd_get_move_effect();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_get_move_effect_type(void)
+{
+ u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+
+ eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].effectType;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_2B(void)
+{
+ ContestAICmd_get_move_effect_type();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_2C(void)
+{
+ ContestAICmd_get_move_effect_type();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_check_move_has_highest_appeal(void)
+{
+ int i;
+ u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+ u8 appeal = gContestEffects[gContestMoves[move].effect].appeal;
+
+ for(i = 0; i < 4; i++)
+ {
+ u16 newMove = gContestMons[eContestAI->unk41].moves[i];
+ if(newMove != 0 && appeal < gContestEffects[gContestMoves[newMove].effect].appeal)
+ break;
+ }
+
+ if(i == 4)
+ eContestAI->scriptResult = TRUE;
+ else
+ eContestAI->scriptResult = FALSE;
+
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_2E(void)
+{
+ ContestAICmd_check_move_has_highest_appeal();
+
+ if(eContestAI->scriptResult != FALSE)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_2F(void)
+{
+ int i;
+ u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+ u8 jam = gContestEffects[gContestMoves[move].effect].jam;
+
+ for(i = 0; i < 4; i++)
+ {
+ u16 newMove = gContestMons[eContestAI->unk41].moves[i];
+ if(newMove != 0 && jam < gContestEffects[gContestMoves[newMove].effect].jam)
+ break;
+ }
+
+ if(i == 4)
+ eContestAI->scriptResult = TRUE;
+ else
+ eContestAI->scriptResult = FALSE;
+
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_30(void)
+{
+ ContestAICmd_unk_2F();
+
+ if(eContestAI->scriptResult != FALSE)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_31(void)
+{
+ u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+
+ eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].appeal / 10;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_32(void)
+{
+ ContestAICmd_unk_31();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_33(void)
+{
+ ContestAICmd_unk_31();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_34(void)
+{
+ ContestAICmd_unk_31();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_35(void)
+{
+ ContestAICmd_unk_31();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_36(void)
+{
+ u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+
+ eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].jam / 10;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_37(void)
+{
+ ContestAICmd_unk_36();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_38(void)
+{
+ ContestAICmd_unk_36();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_39(void)
+{
+ ContestAICmd_unk_36();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_3A(void)
+{
+ ContestAICmd_unk_36();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_get_move_used_count(void)
+{
+ s16 result;
+ u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+
+ if(move != sContestantStatus[eContestAI->unk41].prevMove)
+ result = 0; // move is unique and not reused.
+ else
+ result = sContestantStatus[eContestAI->unk41].moveRepeatCount + 1;
+
+ eContestAI->scriptResult = result;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_3C(void)
+{
+ ContestAICmd_get_move_used_count();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_3D(void)
+{
+ ContestAICmd_get_move_used_count();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_3E(void)
+{
+ ContestAICmd_get_move_used_count();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_3F(void)
+{
+ ContestAICmd_get_move_used_count();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_check_combo_starter(void)
+{
+ u8 result = 0;
+ int i;
+ u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+
+ for(i = 0; i < 4; i++)
+ {
+ if (gContestMons[eContestAI->unk41].moves[i])
+ {
+ result = AreMovesContestCombo(move, gContestMons[eContestAI->unk41].moves[i]);
+ if (result)
+ {
+ result = 1;
+ break;
+ }
+ }
+ }
+
+ if (result)
+ result = 1;
+
+ eContestAI->scriptResult = result;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_41(void)
+{
+ ContestAICmd_check_combo_starter();
+
+ if(eContestAI->scriptResult != 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_42(void)
+{
+ ContestAICmd_check_combo_starter();
+
+ if(eContestAI->scriptResult == 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_check_combo_finisher(void)
+{
+ u8 result = 0;
+ int i;
+ u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+
+ for(i = 0; i < 4; i++)
+ {
+ if (gContestMons[eContestAI->unk41].moves[i])
+ {
+ result = AreMovesContestCombo(gContestMons[eContestAI->unk41].moves[i], move);
+ if (result)
+ {
+ result = 1;
+ break;
+ }
+ }
+ }
+
+ if (result)
+ result = 1;
+
+ eContestAI->scriptResult = result;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_44(void)
+{
+ ContestAICmd_check_combo_finisher();
+
+ if(eContestAI->scriptResult != 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_45(void)
+{
+ ContestAICmd_check_combo_finisher();
+
+ if(eContestAI->scriptResult == 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_check_would_finish_combo(void)
+{
+ u8 result = 0;
+ u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+
+ if(sContestantStatus[eContestAI->unk41].prevMove)
+ result = AreMovesContestCombo(sContestantStatus[eContestAI->unk41].prevMove, move);
+
+ if(result)
+ result = 1;
+
+ eContestAI->scriptResult = result;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_47(void)
+{
+ ContestAICmd_check_would_finish_combo();
+
+ if(eContestAI->scriptResult != 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_48(void)
+{
+ ContestAICmd_check_would_finish_combo();
+
+ if(eContestAI->scriptResult == 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_get_condition(void)
+{
+ int var = sub_8128A7C(gAIScriptPtr[1]);
+
+ eContestAI->scriptResult = sContestantStatus[var].unkD / 10;
+ gAIScriptPtr += 2;
+}
+
+static void ContestAICmd_unk_4A(void)
+{
+ ContestAICmd_get_condition();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_4B(void)
+{
+ ContestAICmd_get_condition();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_4C(void)
+{
+ ContestAICmd_get_condition();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_4D(void)
+{
+ ContestAICmd_get_condition();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_get_used_combo_starter(void)
+{
+ u16 result = 0;
+ u8 var = sub_8128A7C(gAIScriptPtr[1]);
+
+ if(sub_80B214C(var))
+ result = gContestMoves[sContestantStatus[var].prevMove].comboStarterId ? 1 : 0;
+
+ eContestAI->scriptResult = result;
+ gAIScriptPtr += 2;
+}
+
+static void ContestAICmd_unk_4F(void)
+{
+ ContestAICmd_get_used_combo_starter();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_50(void)
+{
+ ContestAICmd_get_used_combo_starter();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_51(void)
+{
+ ContestAICmd_get_used_combo_starter();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_52(void)
+{
+ ContestAICmd_get_used_combo_starter();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_check_can_participate(void)
+{
+ if(Contest_IsMonsTurnDisabled(sub_8128A7C(gAIScriptPtr[1])))
+ eContestAI->scriptResult = FALSE;
+ else
+ eContestAI->scriptResult = TRUE;
+
+ gAIScriptPtr += 2;
+}
+
+static void ContestAICmd_unk_54(void)
+{
+ ContestAICmd_check_can_participate();
+
+ if(eContestAI->scriptResult != 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_55(void)
+{
+ ContestAICmd_check_can_participate();
+
+ if(eContestAI->scriptResult == 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_get_val_812A188(void)
+{
+ u8 var = sub_8128A7C(gAIScriptPtr[1]);
+
+ eContestAI->scriptResult = sContestantStatus[var].unk15_3;
+ gAIScriptPtr += 2;
+}
+
+static void ContestAICmd_unk_57(void)
+{
+ ContestAICmd_get_val_812A188();
+
+ if(eContestAI->scriptResult != 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_58(void)
+{
+ ContestAICmd_get_val_812A188();
+
+ if(eContestAI->scriptResult == 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_59(void)
+{
+ u8 var = sub_8128A7C(gAIScriptPtr[1]);
+
+ eContestAI->scriptResult = sContestantStatus[var].unk4 - sContestantStatus[eContestAI->unk41].unk4;
+ gAIScriptPtr += 2;
+}
+
+static void ContestAICmd_unk_5A(void)
+{
+ ContestAICmd_unk_59();
+
+ if(eContestAI->scriptResult < 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_5B(void)
+{
+ ContestAICmd_unk_59();
+
+ if(eContestAI->scriptResult > 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_5C(void)
+{
+ ContestAICmd_unk_59();
+
+ if(eContestAI->scriptResult == 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_5D(void)
+{
+ ContestAICmd_unk_59();
+
+ if(eContestAI->scriptResult != 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_5E(void)
+{
+ u8 var = sub_8128A7C(gAIScriptPtr[1]);
+
+ eContestAI->scriptResult = gUnknown_02038670[var] - gUnknown_02038670[eContestAI->unk41];
+ gAIScriptPtr += 2;
+}
+
+static void ContestAICmd_unk_5F(void)
+{
+ ContestAICmd_unk_5E();
+
+ if(eContestAI->scriptResult < 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_60(void)
+{
+ ContestAICmd_unk_5E();
+
+ if(eContestAI->scriptResult > 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_61(void)
+{
+ ContestAICmd_unk_5E();
+
+ if(eContestAI->scriptResult == 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_62(void)
+{
+ ContestAICmd_unk_5E();
+
+ if(eContestAI->scriptResult != 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_63(void)
+{
+ u8 var = sub_8128A7C(gAIScriptPtr[1]);
+ u8 var2 = gAIScriptPtr[2];
+ u16 move = sContest.unk19220[var2][var];
+
+ eContestAI->scriptResult = gContestMoves[move].effect;
+ gAIScriptPtr += 3;
+}
+
+static void ContestAICmd_unk_64(void)
+{
+ ContestAICmd_unk_63();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_65(void)
+{
+ ContestAICmd_unk_63();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_66(void)
+{
+ ContestAICmd_unk_63();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_67(void)
+{
+ ContestAICmd_unk_63();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_68(void)
+{
+ u8 var = sub_8128A7C(gAIScriptPtr[1]);
+ u8 var2 = gAIScriptPtr[2];
+ s8 result = sContest.unk19248[var2][var];
+
+ eContestAI->scriptResult = result;
+ gAIScriptPtr += 3;
+}
+
+static void ContestAICmd_unk_69(void)
+{
+ ContestAICmd_unk_68();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_6A(void)
+{
+ ContestAICmd_unk_68();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_6B(void)
+{
+ ContestAICmd_unk_68();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_6C(void)
+{
+ ContestAICmd_unk_68();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_6D(void)
+{
+ u8 var = sub_8128A7C(gAIScriptPtr[1]);
+ u8 var2 = gAIScriptPtr[2];
+ u16 move = sContest.unk19220[var2][var];
+
+ eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].effectType;
+ gAIScriptPtr += 3;
+}
+
+static void ContestAICmd_unk_6E(void)
+{
+ ContestAICmd_unk_6D();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_6F(void)
+{
+ ContestAICmd_unk_6D();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_70(void)
+{
+ eContestAI->scriptArr[gAIScriptPtr[1]] = eContestAI->scriptResult;
+ gAIScriptPtr += 2;
+}
+
+static void ContestAICmd_unk_71(void)
+{
+ eContestAI->scriptArr[gAIScriptPtr[1]] = T1_READ_16(gAIScriptPtr + 2);
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_72(void)
+{
+ // wtf? shouldn't T1_READ_16 work here? why the signed 8 load by gAIScriptPtr[2]?
+ eContestAI->scriptArr[gAIScriptPtr[1]] += ((s8)gAIScriptPtr[2] | gAIScriptPtr[3] << 8);
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_73(void)
+{
+ eContestAI->scriptArr[gAIScriptPtr[1]] += eContestAI->scriptArr[gAIScriptPtr[2]];
+ gAIScriptPtr += 3;
+}
+
+static void ContestAICmd_unk_74(void)
+{
+ eContestAI->scriptArr[gAIScriptPtr[1]] += eContestAI->scriptArr[gAIScriptPtr[2]];
+ gAIScriptPtr += 3;
+}
+
+static void ContestAICmd_unk_75(void)
+{
+ if(eContestAI->scriptArr[gAIScriptPtr[1]] < T1_READ_16(gAIScriptPtr + 2))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4);
+ else
+ gAIScriptPtr += 8;
+}
+
+static void ContestAICmd_unk_76(void)
+{
+ if(eContestAI->scriptArr[gAIScriptPtr[1]] > T1_READ_16(gAIScriptPtr + 2))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4);
+ else
+ gAIScriptPtr += 8;
+}
+
+static void ContestAICmd_unk_77(void)
+{
+ if(eContestAI->scriptArr[gAIScriptPtr[1]] == T1_READ_16(gAIScriptPtr + 2))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4);
+ else
+ gAIScriptPtr += 8;
+}
+
+static void ContestAICmd_unk_78(void)
+{
+ if(eContestAI->scriptArr[gAIScriptPtr[1]] != T1_READ_16(gAIScriptPtr + 2))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4);
+ else
+ gAIScriptPtr += 8;
+}
+
+static void ContestAICmd_unk_79(void)
+{
+ if(eContestAI->scriptArr[gAIScriptPtr[1]] < (eContestAI->scriptArr[gAIScriptPtr[2]]))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3);
+ else
+ gAIScriptPtr += 7;
+}
+
+static void ContestAICmd_unk_7A(void)
+{
+ if(eContestAI->scriptArr[gAIScriptPtr[1]] > (eContestAI->scriptArr[gAIScriptPtr[2]]))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3);
+ else
+ gAIScriptPtr += 7;
+}
+
+static void ContestAICmd_unk_7B(void)
+{
+ if(eContestAI->scriptArr[gAIScriptPtr[1]] == (eContestAI->scriptArr[gAIScriptPtr[2]]))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3);
+ else
+ gAIScriptPtr += 7;
+}
+
+static void ContestAICmd_unk_7C(void)
+{
+ if(eContestAI->scriptArr[gAIScriptPtr[1]] != (eContestAI->scriptArr[gAIScriptPtr[2]]))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3);
+ else
+ gAIScriptPtr += 7;
+}
+
+static void ContestAICmd_unk_7D(void)
+{
+ if((Random() & 0xFF) < eContestAI->scriptArr[gAIScriptPtr[1]])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+static void ContestAICmd_unk_7E(void)
+{
+ if((Random() & 0xFF) > eContestAI->scriptArr[gAIScriptPtr[1]])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+// jump
+static void ContestAICmd_unk_7F(void)
+{
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+}
+
+static void ContestAICmd_unk_80(void)
+{
+ sub_812ACA4(gAIScriptPtr + 5);
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+}
+
+static void ContestAICmd_unk_81(void)
+{
+ if(!sub_812ACC8())
+ eContestAI->aiAction |= 1;
+}
+
+// push stack?
+static void sub_812ACA4(u8 *ptr)
+{
+ u8 unk40 = eContestAI->unk40++;
+ eContestAI->stack[unk40] = (u32)ptr;
+}
+
+// pop stack?
+static bool8 sub_812ACC8(void)
+{
+ if(eContestAI->unk40 != 0)
+ {
+ --eContestAI->unk40;
+ gAIScriptPtr = (u8 *)eContestAI->stack[eContestAI->unk40];
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+static void ContestAICmd_check_for_exciting_move(void)
+{
+ int result = 0;
+ int i;
+
+ for(i = 0; i < 4; i++)
+ {
+ if(gContestMons[eContestAI->unk41].moves[i])
+ {
+ // why is it using gSharedMem + 0x19325? that does not exist...
+ if(Contest_GetMoveExcitement(gContestMons[eContestAI->unk41].moves[i]) == 1)
+ {
+ result = 1;
+ break;
+ }
+ }
+ }
+
+ eContestAI->scriptResult = result;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_83(void)
+{
+ ContestAICmd_check_for_exciting_move();
+
+ if(eContestAI->scriptResult != 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_84(void)
+{
+ ContestAICmd_check_for_exciting_move();
+
+ if(eContestAI->scriptResult == 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_85(void)
+{
+ int result = 0;
+ int i;
+ u16 arg = T1_READ_16(gAIScriptPtr + 1);
+
+ for(i = 0; i < 4; i++)
+ {
+ u16 move = gContestMons[eContestAI->unk41].moves[i];
+ if(move == arg)
+ {
+ result = 1;
+ break;
+ }
+ }
+
+ eContestAI->scriptResult = result;
+ gAIScriptPtr += 3;
+}
+
+static void ContestAICmd_unk_86(void)
+{
+ ContestAICmd_unk_85();
+
+ if(eContestAI->scriptResult != 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_87(void)
+{
+ ContestAICmd_unk_85();
+
+ if(eContestAI->scriptResult == 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
diff --git a/src/data/items_de.h b/src/data/items_de.h
index 0453a95d0..92304e8b0 100644
--- a/src/data/items_de.h
+++ b/src/data/items_de.h
@@ -4626,7 +4626,7 @@ const struct Item gItems[] =
},
{
.name = _("TM01"),
- .itemId = ITEM_TM01,
+ .itemId = ITEM_TM01_FOCUS_PUNCH,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4642,7 +4642,7 @@ const struct Item gItems[] =
},
{
.name = _("TM02"),
- .itemId = ITEM_TM02,
+ .itemId = ITEM_TM02_DRAGON_CLAW,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4658,7 +4658,7 @@ const struct Item gItems[] =
},
{
.name = _("TM03"),
- .itemId = ITEM_TM03,
+ .itemId = ITEM_TM03_WATER_PULSE,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4674,7 +4674,7 @@ const struct Item gItems[] =
},
{
.name = _("TM04"),
- .itemId = ITEM_TM04,
+ .itemId = ITEM_TM04_CALM_MIND,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4690,7 +4690,7 @@ const struct Item gItems[] =
},
{
.name = _("TM05"),
- .itemId = ITEM_TM05,
+ .itemId = ITEM_TM05_ROAR,
.price = 1000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4706,7 +4706,7 @@ const struct Item gItems[] =
},
{
.name = _("TM06"),
- .itemId = ITEM_TM06,
+ .itemId = ITEM_TM06_TOXIC,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4722,7 +4722,7 @@ const struct Item gItems[] =
},
{
.name = _("TM07"),
- .itemId = ITEM_TM07,
+ .itemId = ITEM_TM07_HAIL,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4738,7 +4738,7 @@ const struct Item gItems[] =
},
{
.name = _("TM08"),
- .itemId = ITEM_TM08,
+ .itemId = ITEM_TM08_BULK_UP,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4754,7 +4754,7 @@ const struct Item gItems[] =
},
{
.name = _("TM09"),
- .itemId = ITEM_TM09,
+ .itemId = ITEM_TM09_BULLET_SEED,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4770,7 +4770,7 @@ const struct Item gItems[] =
},
{
.name = _("TM10"),
- .itemId = ITEM_TM10,
+ .itemId = ITEM_TM10_HIDDEN_POWER,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4786,7 +4786,7 @@ const struct Item gItems[] =
},
{
.name = _("TM11"),
- .itemId = ITEM_TM11,
+ .itemId = ITEM_TM11_SUNNY_DAY,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4802,7 +4802,7 @@ const struct Item gItems[] =
},
{
.name = _("TM12"),
- .itemId = ITEM_TM12,
+ .itemId = ITEM_TM12_TAUNT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4818,7 +4818,7 @@ const struct Item gItems[] =
},
{
.name = _("TM13"),
- .itemId = ITEM_TM13,
+ .itemId = ITEM_TM13_ICE_BEAM,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4834,7 +4834,7 @@ const struct Item gItems[] =
},
{
.name = _("TM14"),
- .itemId = ITEM_TM14,
+ .itemId = ITEM_TM14_BLIZZARD,
.price = 5500,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4850,7 +4850,7 @@ const struct Item gItems[] =
},
{
.name = _("TM15"),
- .itemId = ITEM_TM15,
+ .itemId = ITEM_TM15_HYPER_BEAM,
.price = 7500,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4866,7 +4866,7 @@ const struct Item gItems[] =
},
{
.name = _("TM16"),
- .itemId = ITEM_TM16,
+ .itemId = ITEM_TM16_LIGHT_SCREEN,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4882,7 +4882,7 @@ const struct Item gItems[] =
},
{
.name = _("TM17"),
- .itemId = ITEM_TM17,
+ .itemId = ITEM_TM17_PROTECT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4898,7 +4898,7 @@ const struct Item gItems[] =
},
{
.name = _("TM18"),
- .itemId = ITEM_TM18,
+ .itemId = ITEM_TM18_RAIN_DANCE,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4914,7 +4914,7 @@ const struct Item gItems[] =
},
{
.name = _("TM19"),
- .itemId = ITEM_TM19,
+ .itemId = ITEM_TM19_GIGA_DRAIN,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4930,7 +4930,7 @@ const struct Item gItems[] =
},
{
.name = _("TM20"),
- .itemId = ITEM_TM20,
+ .itemId = ITEM_TM20_SAFEGUARD,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4946,7 +4946,7 @@ const struct Item gItems[] =
},
{
.name = _("TM21"),
- .itemId = ITEM_TM21,
+ .itemId = ITEM_TM21_FRUSTRATION,
.price = 1000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4962,7 +4962,7 @@ const struct Item gItems[] =
},
{
.name = _("TM22"),
- .itemId = ITEM_TM22,
+ .itemId = ITEM_TM22_SOLARBEAM,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4978,7 +4978,7 @@ const struct Item gItems[] =
},
{
.name = _("TM23"),
- .itemId = ITEM_TM23,
+ .itemId = ITEM_TM23_IRON_TAIL,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4994,7 +4994,7 @@ const struct Item gItems[] =
},
{
.name = _("TM24"),
- .itemId = ITEM_TM24,
+ .itemId = ITEM_TM24_THUNDERBOLT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5010,7 +5010,7 @@ const struct Item gItems[] =
},
{
.name = _("TM25"),
- .itemId = ITEM_TM25,
+ .itemId = ITEM_TM25_THUNDER,
.price = 5500,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5026,7 +5026,7 @@ const struct Item gItems[] =
},
{
.name = _("TM26"),
- .itemId = ITEM_TM26,
+ .itemId = ITEM_TM26_EARTHQUAKE,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5042,7 +5042,7 @@ const struct Item gItems[] =
},
{
.name = _("TM27"),
- .itemId = ITEM_TM27,
+ .itemId = ITEM_TM27_RETURN,
.price = 1000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5058,7 +5058,7 @@ const struct Item gItems[] =
},
{
.name = _("TM28"),
- .itemId = ITEM_TM28,
+ .itemId = ITEM_TM28_DIG,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5074,7 +5074,7 @@ const struct Item gItems[] =
},
{
.name = _("TM29"),
- .itemId = ITEM_TM29,
+ .itemId = ITEM_TM29_PSYCHIC,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5090,7 +5090,7 @@ const struct Item gItems[] =
},
{
.name = _("TM30"),
- .itemId = ITEM_TM30,
+ .itemId = ITEM_TM30_SHADOW_BALL,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5106,7 +5106,7 @@ const struct Item gItems[] =
},
{
.name = _("TM31"),
- .itemId = ITEM_TM31,
+ .itemId = ITEM_TM31_BRICK_BREAK,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5122,7 +5122,7 @@ const struct Item gItems[] =
},
{
.name = _("TM32"),
- .itemId = ITEM_TM32,
+ .itemId = ITEM_TM32_DOUBLE_TEAM,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5138,7 +5138,7 @@ const struct Item gItems[] =
},
{
.name = _("TM33"),
- .itemId = ITEM_TM33,
+ .itemId = ITEM_TM33_REFLECT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5154,7 +5154,7 @@ const struct Item gItems[] =
},
{
.name = _("TM34"),
- .itemId = ITEM_TM34,
+ .itemId = ITEM_TM34_SHOCK_WAVE,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5170,7 +5170,7 @@ const struct Item gItems[] =
},
{
.name = _("TM35"),
- .itemId = ITEM_TM35,
+ .itemId = ITEM_TM35_FLAMETHROWER,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5186,7 +5186,7 @@ const struct Item gItems[] =
},
{
.name = _("TM36"),
- .itemId = ITEM_TM36,
+ .itemId = ITEM_TM36_SLUDGE_BOMB,
.price = 1000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5202,7 +5202,7 @@ const struct Item gItems[] =
},
{
.name = _("TM37"),
- .itemId = ITEM_TM37,
+ .itemId = ITEM_TM37_SANDSTORM,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5218,7 +5218,7 @@ const struct Item gItems[] =
},
{
.name = _("TM38"),
- .itemId = ITEM_TM38,
+ .itemId = ITEM_TM38_FIRE_BLAST,
.price = 5500,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5234,7 +5234,7 @@ const struct Item gItems[] =
},
{
.name = _("TM39"),
- .itemId = ITEM_TM39,
+ .itemId = ITEM_TM39_ROCK_TOMB,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5250,7 +5250,7 @@ const struct Item gItems[] =
},
{
.name = _("TM40"),
- .itemId = ITEM_TM40,
+ .itemId = ITEM_TM40_AERIAL_ACE,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5266,7 +5266,7 @@ const struct Item gItems[] =
},
{
.name = _("TM41"),
- .itemId = ITEM_TM41,
+ .itemId = ITEM_TM41_TORMENT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5282,7 +5282,7 @@ const struct Item gItems[] =
},
{
.name = _("TM42"),
- .itemId = ITEM_TM42,
+ .itemId = ITEM_TM42_FACADE,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5298,7 +5298,7 @@ const struct Item gItems[] =
},
{
.name = _("TM43"),
- .itemId = ITEM_TM43,
+ .itemId = ITEM_TM43_SECRET_POWER,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5314,7 +5314,7 @@ const struct Item gItems[] =
},
{
.name = _("TM44"),
- .itemId = ITEM_TM44,
+ .itemId = ITEM_TM44_REST,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5330,7 +5330,7 @@ const struct Item gItems[] =
},
{
.name = _("TM45"),
- .itemId = ITEM_TM45,
+ .itemId = ITEM_TM45_ATTRACT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5346,7 +5346,7 @@ const struct Item gItems[] =
},
{
.name = _("TM46"),
- .itemId = ITEM_TM46,
+ .itemId = ITEM_TM46_THIEF,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5362,7 +5362,7 @@ const struct Item gItems[] =
},
{
.name = _("TM47"),
- .itemId = ITEM_TM47,
+ .itemId = ITEM_TM47_STEEL_WING,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5378,7 +5378,7 @@ const struct Item gItems[] =
},
{
.name = _("TM48"),
- .itemId = ITEM_TM48,
+ .itemId = ITEM_TM48_SKILL_SWAP,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5394,7 +5394,7 @@ const struct Item gItems[] =
},
{
.name = _("TM49"),
- .itemId = ITEM_TM49,
+ .itemId = ITEM_TM49_SNATCH,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5410,7 +5410,7 @@ const struct Item gItems[] =
},
{
.name = _("TM50"),
- .itemId = ITEM_TM50,
+ .itemId = ITEM_TM50_OVERHEAT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5426,7 +5426,7 @@ const struct Item gItems[] =
},
{
.name = _("VM01"),
- .itemId = ITEM_HM01,
+ .itemId = ITEM_HM01_CUT,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5442,7 +5442,7 @@ const struct Item gItems[] =
},
{
.name = _("VM02"),
- .itemId = ITEM_HM02,
+ .itemId = ITEM_HM02_FLY,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5458,7 +5458,7 @@ const struct Item gItems[] =
},
{
.name = _("VM03"),
- .itemId = ITEM_HM03,
+ .itemId = ITEM_HM03_SURF,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5474,7 +5474,7 @@ const struct Item gItems[] =
},
{
.name = _("VM04"),
- .itemId = ITEM_HM04,
+ .itemId = ITEM_HM04_STRENGTH,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5490,7 +5490,7 @@ const struct Item gItems[] =
},
{
.name = _("VM05"),
- .itemId = ITEM_HM05,
+ .itemId = ITEM_HM05_FLASH,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5506,7 +5506,7 @@ const struct Item gItems[] =
},
{
.name = _("VM06"),
- .itemId = ITEM_HM06,
+ .itemId = ITEM_HM06_ROCK_SMASH,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5522,7 +5522,7 @@ const struct Item gItems[] =
},
{
.name = _("VM07"),
- .itemId = ITEM_HM07,
+ .itemId = ITEM_HM07_WATERFALL,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5538,7 +5538,7 @@ const struct Item gItems[] =
},
{
.name = _("VM08"),
- .itemId = ITEM_HM08,
+ .itemId = ITEM_HM08_DIVE,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
diff --git a/src/data/items_en.h b/src/data/items_en.h
index a3e822370..3660f4590 100644
--- a/src/data/items_en.h
+++ b/src/data/items_en.h
@@ -4626,7 +4626,7 @@ const struct Item gItems[] =
},
{
.name = _("TM01"),
- .itemId = ITEM_TM01,
+ .itemId = ITEM_TM01_FOCUS_PUNCH,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4642,7 +4642,7 @@ const struct Item gItems[] =
},
{
.name = _("TM02"),
- .itemId = ITEM_TM02,
+ .itemId = ITEM_TM02_DRAGON_CLAW,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4658,7 +4658,7 @@ const struct Item gItems[] =
},
{
.name = _("TM03"),
- .itemId = ITEM_TM03,
+ .itemId = ITEM_TM03_WATER_PULSE,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4674,7 +4674,7 @@ const struct Item gItems[] =
},
{
.name = _("TM04"),
- .itemId = ITEM_TM04,
+ .itemId = ITEM_TM04_CALM_MIND,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4690,7 +4690,7 @@ const struct Item gItems[] =
},
{
.name = _("TM05"),
- .itemId = ITEM_TM05,
+ .itemId = ITEM_TM05_ROAR,
.price = 1000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4706,7 +4706,7 @@ const struct Item gItems[] =
},
{
.name = _("TM06"),
- .itemId = ITEM_TM06,
+ .itemId = ITEM_TM06_TOXIC,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4722,7 +4722,7 @@ const struct Item gItems[] =
},
{
.name = _("TM07"),
- .itemId = ITEM_TM07,
+ .itemId = ITEM_TM07_HAIL,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4738,7 +4738,7 @@ const struct Item gItems[] =
},
{
.name = _("TM08"),
- .itemId = ITEM_TM08,
+ .itemId = ITEM_TM08_BULK_UP,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4754,7 +4754,7 @@ const struct Item gItems[] =
},
{
.name = _("TM09"),
- .itemId = ITEM_TM09,
+ .itemId = ITEM_TM09_BULLET_SEED,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4770,7 +4770,7 @@ const struct Item gItems[] =
},
{
.name = _("TM10"),
- .itemId = ITEM_TM10,
+ .itemId = ITEM_TM10_HIDDEN_POWER,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4786,7 +4786,7 @@ const struct Item gItems[] =
},
{
.name = _("TM11"),
- .itemId = ITEM_TM11,
+ .itemId = ITEM_TM11_SUNNY_DAY,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4802,7 +4802,7 @@ const struct Item gItems[] =
},
{
.name = _("TM12"),
- .itemId = ITEM_TM12,
+ .itemId = ITEM_TM12_TAUNT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4818,7 +4818,7 @@ const struct Item gItems[] =
},
{
.name = _("TM13"),
- .itemId = ITEM_TM13,
+ .itemId = ITEM_TM13_ICE_BEAM,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4834,7 +4834,7 @@ const struct Item gItems[] =
},
{
.name = _("TM14"),
- .itemId = ITEM_TM14,
+ .itemId = ITEM_TM14_BLIZZARD,
.price = 5500,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4850,7 +4850,7 @@ const struct Item gItems[] =
},
{
.name = _("TM15"),
- .itemId = ITEM_TM15,
+ .itemId = ITEM_TM15_HYPER_BEAM,
.price = 7500,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4866,7 +4866,7 @@ const struct Item gItems[] =
},
{
.name = _("TM16"),
- .itemId = ITEM_TM16,
+ .itemId = ITEM_TM16_LIGHT_SCREEN,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4882,7 +4882,7 @@ const struct Item gItems[] =
},
{
.name = _("TM17"),
- .itemId = ITEM_TM17,
+ .itemId = ITEM_TM17_PROTECT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4898,7 +4898,7 @@ const struct Item gItems[] =
},
{
.name = _("TM18"),
- .itemId = ITEM_TM18,
+ .itemId = ITEM_TM18_RAIN_DANCE,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4914,7 +4914,7 @@ const struct Item gItems[] =
},
{
.name = _("TM19"),
- .itemId = ITEM_TM19,
+ .itemId = ITEM_TM19_GIGA_DRAIN,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4930,7 +4930,7 @@ const struct Item gItems[] =
},
{
.name = _("TM20"),
- .itemId = ITEM_TM20,
+ .itemId = ITEM_TM20_SAFEGUARD,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4946,7 +4946,7 @@ const struct Item gItems[] =
},
{
.name = _("TM21"),
- .itemId = ITEM_TM21,
+ .itemId = ITEM_TM21_FRUSTRATION,
.price = 1000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4962,7 +4962,7 @@ const struct Item gItems[] =
},
{
.name = _("TM22"),
- .itemId = ITEM_TM22,
+ .itemId = ITEM_TM22_SOLARBEAM,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4978,7 +4978,7 @@ const struct Item gItems[] =
},
{
.name = _("TM23"),
- .itemId = ITEM_TM23,
+ .itemId = ITEM_TM23_IRON_TAIL,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4994,7 +4994,7 @@ const struct Item gItems[] =
},
{
.name = _("TM24"),
- .itemId = ITEM_TM24,
+ .itemId = ITEM_TM24_THUNDERBOLT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5010,7 +5010,7 @@ const struct Item gItems[] =
},
{
.name = _("TM25"),
- .itemId = ITEM_TM25,
+ .itemId = ITEM_TM25_THUNDER,
.price = 5500,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5026,7 +5026,7 @@ const struct Item gItems[] =
},
{
.name = _("TM26"),
- .itemId = ITEM_TM26,
+ .itemId = ITEM_TM26_EARTHQUAKE,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5042,7 +5042,7 @@ const struct Item gItems[] =
},
{
.name = _("TM27"),
- .itemId = ITEM_TM27,
+ .itemId = ITEM_TM27_RETURN,
.price = 1000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5058,7 +5058,7 @@ const struct Item gItems[] =
},
{
.name = _("TM28"),
- .itemId = ITEM_TM28,
+ .itemId = ITEM_TM28_DIG,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5074,7 +5074,7 @@ const struct Item gItems[] =
},
{
.name = _("TM29"),
- .itemId = ITEM_TM29,
+ .itemId = ITEM_TM29_PSYCHIC,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5090,7 +5090,7 @@ const struct Item gItems[] =
},
{
.name = _("TM30"),
- .itemId = ITEM_TM30,
+ .itemId = ITEM_TM30_SHADOW_BALL,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5106,7 +5106,7 @@ const struct Item gItems[] =
},
{
.name = _("TM31"),
- .itemId = ITEM_TM31,
+ .itemId = ITEM_TM31_BRICK_BREAK,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5122,7 +5122,7 @@ const struct Item gItems[] =
},
{
.name = _("TM32"),
- .itemId = ITEM_TM32,
+ .itemId = ITEM_TM32_DOUBLE_TEAM,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5138,7 +5138,7 @@ const struct Item gItems[] =
},
{
.name = _("TM33"),
- .itemId = ITEM_TM33,
+ .itemId = ITEM_TM33_REFLECT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5154,7 +5154,7 @@ const struct Item gItems[] =
},
{
.name = _("TM34"),
- .itemId = ITEM_TM34,
+ .itemId = ITEM_TM34_SHOCK_WAVE,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5170,7 +5170,7 @@ const struct Item gItems[] =
},
{
.name = _("TM35"),
- .itemId = ITEM_TM35,
+ .itemId = ITEM_TM35_FLAMETHROWER,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5186,7 +5186,7 @@ const struct Item gItems[] =
},
{
.name = _("TM36"),
- .itemId = ITEM_TM36,
+ .itemId = ITEM_TM36_SLUDGE_BOMB,
.price = 1000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5202,7 +5202,7 @@ const struct Item gItems[] =
},
{
.name = _("TM37"),
- .itemId = ITEM_TM37,
+ .itemId = ITEM_TM37_SANDSTORM,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5218,7 +5218,7 @@ const struct Item gItems[] =
},
{
.name = _("TM38"),
- .itemId = ITEM_TM38,
+ .itemId = ITEM_TM38_FIRE_BLAST,
.price = 5500,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5234,7 +5234,7 @@ const struct Item gItems[] =
},
{
.name = _("TM39"),
- .itemId = ITEM_TM39,
+ .itemId = ITEM_TM39_ROCK_TOMB,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5250,7 +5250,7 @@ const struct Item gItems[] =
},
{
.name = _("TM40"),
- .itemId = ITEM_TM40,
+ .itemId = ITEM_TM40_AERIAL_ACE,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5266,7 +5266,7 @@ const struct Item gItems[] =
},
{
.name = _("TM41"),
- .itemId = ITEM_TM41,
+ .itemId = ITEM_TM41_TORMENT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5282,7 +5282,7 @@ const struct Item gItems[] =
},
{
.name = _("TM42"),
- .itemId = ITEM_TM42,
+ .itemId = ITEM_TM42_FACADE,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5298,7 +5298,7 @@ const struct Item gItems[] =
},
{
.name = _("TM43"),
- .itemId = ITEM_TM43,
+ .itemId = ITEM_TM43_SECRET_POWER,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5314,7 +5314,7 @@ const struct Item gItems[] =
},
{
.name = _("TM44"),
- .itemId = ITEM_TM44,
+ .itemId = ITEM_TM44_REST,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5330,7 +5330,7 @@ const struct Item gItems[] =
},
{
.name = _("TM45"),
- .itemId = ITEM_TM45,
+ .itemId = ITEM_TM45_ATTRACT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5346,7 +5346,7 @@ const struct Item gItems[] =
},
{
.name = _("TM46"),
- .itemId = ITEM_TM46,
+ .itemId = ITEM_TM46_THIEF,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5362,7 +5362,7 @@ const struct Item gItems[] =
},
{
.name = _("TM47"),
- .itemId = ITEM_TM47,
+ .itemId = ITEM_TM47_STEEL_WING,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5378,7 +5378,7 @@ const struct Item gItems[] =
},
{
.name = _("TM48"),
- .itemId = ITEM_TM48,
+ .itemId = ITEM_TM48_SKILL_SWAP,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5394,7 +5394,7 @@ const struct Item gItems[] =
},
{
.name = _("TM49"),
- .itemId = ITEM_TM49,
+ .itemId = ITEM_TM49_SNATCH,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5410,7 +5410,7 @@ const struct Item gItems[] =
},
{
.name = _("TM50"),
- .itemId = ITEM_TM50,
+ .itemId = ITEM_TM50_OVERHEAT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5426,7 +5426,7 @@ const struct Item gItems[] =
},
{
.name = _("HM01"),
- .itemId = ITEM_HM01,
+ .itemId = ITEM_HM01_CUT,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5442,7 +5442,7 @@ const struct Item gItems[] =
},
{
.name = _("HM02"),
- .itemId = ITEM_HM02,
+ .itemId = ITEM_HM02_FLY,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5458,7 +5458,7 @@ const struct Item gItems[] =
},
{
.name = _("HM03"),
- .itemId = ITEM_HM03,
+ .itemId = ITEM_HM03_SURF,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5474,7 +5474,7 @@ const struct Item gItems[] =
},
{
.name = _("HM04"),
- .itemId = ITEM_HM04,
+ .itemId = ITEM_HM04_STRENGTH,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5490,7 +5490,7 @@ const struct Item gItems[] =
},
{
.name = _("HM05"),
- .itemId = ITEM_HM05,
+ .itemId = ITEM_HM05_FLASH,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5506,7 +5506,7 @@ const struct Item gItems[] =
},
{
.name = _("HM06"),
- .itemId = ITEM_HM06,
+ .itemId = ITEM_HM06_ROCK_SMASH,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5522,7 +5522,7 @@ const struct Item gItems[] =
},
{
.name = _("HM07"),
- .itemId = ITEM_HM07,
+ .itemId = ITEM_HM07_WATERFALL,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5538,7 +5538,7 @@ const struct Item gItems[] =
},
{
.name = _("HM08"),
- .itemId = ITEM_HM08,
+ .itemId = ITEM_HM08_DIVE,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
diff --git a/src/data/pokemon/tmhm_learnsets.h b/src/data/pokemon/tmhm_learnsets.h
index 02cd22d56..f14478863 100644
--- a/src/data/pokemon/tmhm_learnsets.h
+++ b/src/data/pokemon/tmhm_learnsets.h
@@ -1,431 +1,9393 @@
-//
-
-//
-
-#ifndef POKERUBY_TMHM_LEARNSETS_H
-#define POKERUBY_TMHM_LEARNSETS_H
-
-// TO-DO: Rewrite this declaration to allow assignment of TM/HM learns by name.
-// These are 58-bit numbers aligned to 64 bits. The least significant bit represents TM01,
-// while the most significant bit represents HM08.
-
-asm(
- ".align 2\n"
- ".global gTMHMLearnsets\n"
- "gTMHMLearnsets:\n"
-
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ??????????
- ".8byte 0b0011100100000111100000100010000100001101010000011100100000\n" // Bulbasaur
- ".8byte 0b0011100100000111100000100010000100001101010000011100100000\n" // Ivysaur
- ".8byte 0b0011100100000111100000100010000110001101010100011100110000\n" // Venusaur
- ".8byte 0b0010100110000111101010010011001100010100010000011000100011\n" // Charmander
- ".8byte 0b0010100110000111101010010011001100010100010000011000100011\n" // Charmeleon
- ".8byte 0b0010101110010111101010010011001110010100010100011000110011\n" // Charizard
- ".8byte 0b1110110000000111100000000011001100010100110011001001100101\n" // Squirtle
- ".8byte 0b1110110000000111100000000011001100010100110011001001100101\n" // Wartortle
- ".8byte 0b1110110000000111100000000011001110010100110111001001110101\n" // Blastoise
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Caterpie
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Metapod
- ".8byte 0b0001000000101111101000000010110100001111110100011000100000\n" // Butterfree
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Weedle
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Kakuna
- ".8byte 0b0010000100001111101000100011000100001101010100011000100000\n" // Beedrill
- ".8byte 0b0000001000011111101000000010000100000100110000011000100000\n" // Pidgey
- ".8byte 0b0000001000011111101000000010000100000100110000011000100000\n" // Pidgeotto
- ".8byte 0b0000001000011111101000000010000100000100110100011000100000\n" // Pidgeot
- ".8byte 0b0010000100001111100000001010101101110100110011111000100000\n" // Rattata
- ".8byte 0b0010100100001111100000001010101101110100110111111000110000\n" // Raticate
- ".8byte 0b0000001000011111101000000010000100000100110000011000100000\n" // Spearow
- ".8byte 0b0000001000011111101000000010000100000100110100011000100000\n" // Fearow
- ".8byte 0b0000100001001111110000100010001110010101110000011000100000\n" // Ekans
- ".8byte 0b0000100001001111110000100010001110010101110100011000100000\n" // Arbok
- ".8byte 0b0011100000000111100000001011001101110100111000001000100001\n" // Pikachu
- ".8byte 0b0011100000001111100000001011001101110100111100001000100001\n" // Raichu
- ".8byte 0b0010100100001111101101000011001110010100010000011000100001\n" // Sandshrew
- ".8byte 0b0010100100001111101101000011001110010100010100011000100001\n" // Sandslash
- ".8byte 0b0010100100001111101000101010001101110100110011011000100100\n" // Nidoran♀
- ".8byte 0b0010100100001111101000101010001101110100110011011000100100\n" // Nidorina
- ".8byte 0b0010110100001111111111111011101111110100110111111000110101\n" // Nidoqueen
- ".8byte 0b0010100100001111100000101010001101110100110011011000100100\n" // Nidoran♂
- ".8byte 0b0010100100001111100000101010001101110100110011011000100100\n" // Nidorino
- ".8byte 0b0010110100001111110111111011101111110100110111111000110101\n" // Nidoking
- ".8byte 0b0001100001000111100010011111111101111110111011011000101101\n" // Clefairy
- ".8byte 0b0001100001000111100010011111111101111110111111011000101101\n" // Clefable
- ".8byte 0b0000000010000111100010010010001100010110010000011000110000\n" // Vulpix
- ".8byte 0b0000000010000111100010010010001100010110010100011000110000\n" // Ninetales
- ".8byte 0b0001100001000111100010011111111101101110111011011000100101\n" // Jigglypuff
- ".8byte 0b0001100001000111100010011111111101101110111111011000100101\n" // Wigglytuff
- ".8byte 0b0000000001011111111000100010100100000101110000111000100000\n" // Zubat
- ".8byte 0b0000000001011111111000100010100100000101110100111000100000\n" // Golbat
- ".8byte 0b0001000100000111100000100010000100001101010000011100100000\n" // Oddish
- ".8byte 0b0001000100000111100000100010000100001101010000011100100000\n" // Gloom
- ".8byte 0b0001000100000111100000100010000100001101010100011100100000\n" // Vileplume
- ".8byte 0b0011000100001111101000100010001100001101010000011100100000\n" // Paras
- ".8byte 0b0011000100001111101000100010001100001101010100011100100000\n" // Parasect
- ".8byte 0b0001000000101111100000100010010100001101010000011000100000\n" // Venonat
- ".8byte 0b0001000000101111101000100010010100001101010100011000100000\n" // Venomoth
- ".8byte 0b0010000100001111101100100010001110000100010000011000100000\n" // Diglett
- ".8byte 0b0010000100001111101100100010001110000100010100011000100000\n" // Dugtrio
- ".8byte 0b0001000101001111111000001010101101110100110000111000100100\n" // Meowth
- ".8byte 0b0001000101001111111000001010101101110100110100111000110100\n" // Persian
- ".8byte 0b1111110000000111101000000011001100010100110011001001101101\n" // Psyduck
- ".8byte 0b1111110000000111101000000011001100010100110111001001101101\n" // Golduck
- ".8byte 0b0010100010001111101100000011001111110100110000111010100001\n" // Mankey
- ".8byte 0b0010100010001111101100000011001111110100110100111010100001\n" // Primeape
- ".8byte 0b0010100010001111101010010010001100010100010000011000110000\n" // Growlithe
- ".8byte 0b0010100010001111101010010010001100010100010100011000110000\n" // Arcanine
- ".8byte 0b1100010000001111100000000010011100000100110011001001100100\n" // Poliwag
- ".8byte 0b1110110000001111100000000011011110000100110011001001100101\n" // Poliwhirl
- ".8byte 0b1110110000001111100100000011011110000100110111001011100101\n" // Poliwrath
- ".8byte 0b0001000001101111110000001110110100010110111000111000101001\n" // Abra
- ".8byte 0b0001000001101111110000001110110100010110111000111000101001\n" // Kadabra
- ".8byte 0b0001000001101111110000001110110100010110111100111000101001\n" // Alakazam
- ".8byte 0b0010100000001111100110010011001110000100110000011010100001\n" // Machop
- ".8byte 0b0010100000001111100110010011001110000100110000011010100001\n" // Machoke
- ".8byte 0b0010100000001111100110010011001110000100110100011010100001\n" // Machamp
- ".8byte 0b0001000100001111100000100010000100001101010000011100100000\n" // Bellsprout
- ".8byte 0b0001000100001111100000100010000100001101010000011100100000\n" // Weepinbell
- ".8byte 0b0001000100001111100000100010000100001101010100011100100000\n" // Victreebel
- ".8byte 0b1100010100001111100000100010000100000101110011001001100100\n" // Tentacool
- ".8byte 0b1100010100001111100000100010000100000101110111001001100100\n" // Tentacruel
- ".8byte 0b0010100000000111100111010011001110000100010000011000100001\n" // Geodude
- ".8byte 0b0010100000000111100111010011001110000100010000011000100001\n" // Graveler
- ".8byte 0b0010100000000111100111010011001110000100010100011000110001\n" // Golem
- ".8byte 0b0000100010000111100010010010000100011100010000011000100000\n" // Ponyta
- ".8byte 0b0000100010000111100010010010000100011100010100011000100000\n" // Rapidash
- ".8byte 0b1001110000100111100010010010111110010110110011011001101100\n" // Slowpoke
- ".8byte 0b1011110000100111100010010011111110010110110111011001101101\n" // Slowbro
- ".8byte 0b0001000000000011100000001110000101100100110000011000100000\n" // Magnemite
- ".8byte 0b0001000000000011100000001110000101100100110100011000100000\n" // Magneton
- ".8byte 0b0000001100011111101000000010000100010100010000011000100000\n" // Farfetch'd
- ".8byte 0b0000001000011111101000000010000100000100010000011000100000\n" // Doduo
- ".8byte 0b0000001000011111111000000010000100000100010100111000100000\n" // Dodrio
- ".8byte 0b1100010000001111100000000010000100000110110011001001100100\n" // Seel
- ".8byte 0b1100010000001111100000000010000100000110110111001001100100\n" // Dewgong
- ".8byte 0b0000000000001111110110111010001101100101110000111000100000\n" // Grimer
- ".8byte 0b0010100000001111110110111011001101100101110100111000100001\n" // Muk
- ".8byte 0b1000010000000111100000000010000100000100110011001001100100\n" // Shellder
- ".8byte 0b1000010000000111110000000010000100000100110111001001100100\n" // Cloyster
- ".8byte 0b0000000001101111110000100010110100100101110000111000100000\n" // Gastly
- ".8byte 0b0000000001101111110000100010110100100101110000111000100000\n" // Haunter
- ".8byte 0b0010100001101111110000100011110101100101110100111000100001\n" // Gengar
- ".8byte 0b0010100000000111110101000010001110010100010000111000110000\n" // Onix
- ".8byte 0b0001000001101111110000000111110100000110111000111000101001\n" // Drowzee
- ".8byte 0b0001000001101111110000000111110100000110111100111000101001\n" // Hypno
- ".8byte 0b1010110100001111100100000010001100000100110011001001100100\n" // Krabby
- ".8byte 0b1010110100001111100100000010001100000100110111001001100100\n" // Kingler
- ".8byte 0b0001000000001011110000001010000101100100111000101000100000\n" // Voltorb
- ".8byte 0b0001000000001011110000001010000101100100111100101000100000\n" // Electrode
- ".8byte 0b0001100000101111100000100110010100001101011000011100100000\n" // Exeggcute
- ".8byte 0b0001100000101111100000100110010100001101011100011100100000\n" // Exeggutor
- ".8byte 0b0010100000001111101111010011001110010100010011011000100001\n" // Cubone
- ".8byte 0b0010100000001111101111010011001110010100010111011000100001\n" // Marowak
- ".8byte 0b0010100000001111100100000011000110000100110000011010100001\n" // Hitmonlee
- ".8byte 0b0010100000001111100100000011000110000100110000011010100001\n" // Hitmonchan
- ".8byte 0b0010110100001111100111011011101111111100110111011000100101\n" // Lickitung
- ".8byte 0b0001000000001111110010111010100101100100110000111000100000\n" // Koffing
- ".8byte 0b0001000000001111110010111010100101100100110100111000100000\n" // Weezing
- ".8byte 0b0010100000001111100111011010001111110100110011011000110000\n" // Rhyhorn
- ".8byte 0b0010110100001111100111011011001111110100110111011000110001\n" // Rhydon
- ".8byte 0b0011100001100111100111011011110111111110111111011001101101\n" // Chansey
- ".8byte 0b0011000100001111100000100010000100001101010100011100100000\n" // Tangela
- ".8byte 0b0010110100001111101111011011101111111100110111011001110101\n" // Kangaskhan
- ".8byte 0b1100010000000111100000000010000100000100110011001001100100\n" // Horsea
- ".8byte 0b1100010000000111100000000010000100000100110111001001100100\n" // Seadra
- ".8byte 0b1100010000000111100000000010000100000100110011001001100100\n" // Goldeen
- ".8byte 0b1100010000000111100000000010000100000100110111001001100100\n" // Seaking
- ".8byte 0b1101010000000011100000000110010101100100111011001001100100\n" // Staryu
- ".8byte 0b1101010000100011100000000110010101100100111111001001100100\n" // Starmie
- ".8byte 0b0001000001101111110000001111110101101110111100111000101001\n" // Mr. mime
- ".8byte 0b0010000100011111101000000010000100000100110100011000100000\n" // Scyther
- ".8byte 0b0001000000101111110000000111110100000100111111101001101101\n" // Jynx
- ".8byte 0b0011100000001111100000001011010101110100111100001000100001\n" // Electabuzz
- ".8byte 0b0010100000001111100010010011010100010100010100011000100001\n" // Magmar
- ".8byte 0b0010100100001111100100000011001110000100110100011010100001\n" // Pinsir
- ".8byte 0b0010110000000111100111011010000111111100110111011000100100\n" // Tauros
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Magikarp
- ".8byte 0b1110110000000111110011010010000111100100110111101001110100\n" // Gyarados
- ".8byte 0b1110110000000111100000001010010101110110110111001001110100\n" // Lapras
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Ditto
- ".8byte 0b0000000000000111100000000010101100010100110000011000100000\n" // Eevee
- ".8byte 0b1100010000000111100000000010101100010100110111011001110100\n" // Vaporeon
- ".8byte 0b0001000000000111100000001010101101110100110100011000110000\n" // Jolteon
- ".8byte 0b0000000010000111100010010010101100010100110100011000110000\n" // Flareon
- ".8byte 0b0001000000001011101000001010110101111100110111011000100000\n" // Porygon
- ".8byte 0b1110010000001111100101000010000100000100110011001001100100\n" // Omanyte
- ".8byte 0b1110010000001111100101000010000100000100110111001001100100\n" // Omastar
- ".8byte 0b0110010000001111101101000010001100000101110011001001100100\n" // Kabuto
- ".8byte 0b1110010100001111101101000011001100000101110111001001100100\n" // Kabutops
- ".8byte 0b0010101000011111111111010010000110010100110100111000110010\n" // Aerodactyl
- ".8byte 0b0000110000000111100111011011110111101100110111011000100101\n" // Snorlax
- ".8byte 0b0010001000010011101001000110000100000100110111011001110100\n" // Articuno
- ".8byte 0b0011001000010011101001001010000101100100111100011000110000\n" // Zapdos
- ".8byte 0b0010001010010011101011010010000100000110110100011000110000\n" // Moltres
- ".8byte 0b0100010000000111100010011010000101110110110111011001100100\n" // Dratini
- ".8byte 0b0100010000000111100010011010000101110110110111011001100100\n" // Dragonair
- ".8byte 0b1110111100010111101111011011000111110110110111011001110111\n" // Dragonite
- ".8byte 0b0011100001100011111111011111110111111110111111111011101101\n" // Mewtwo
- ".8byte 0b1111111111111111111111111111111111111111111111111111111111\n" // Mew
- ".8byte 0b0001000100000111100000000110000100011111011000011100100000\n" // Chikorita
- ".8byte 0b0011100100000111100000000110000100011111011000011100100000\n" // Bayleef
- ".8byte 0b0011100100000111100000000110000110011111011100011100100000\n" // Meganium
- ".8byte 0b0000000110000111101010010010001100000100010000011000100000\n" // Cyndaquil
- ".8byte 0b0010100110000111101010010011001100000100010000011000110001\n" // Quilava
- ".8byte 0b0010100110000111101010010011001110000100010100011000110001\n" // Typhlosion
- ".8byte 0b1100010100000111101000000011001100010100110011001001100101\n" // Totodile
- ".8byte 0b1110110100000111101000000011001100010100110011001001110101\n" // Croconaw
- ".8byte 0b1110110100000111101000000011001110010100110111001001110111\n" // Feraligatr
- ".8byte 0b0000010100001111100000011011101100111100110001011000100101\n" // Sentret
- ".8byte 0b0010110100001111100000011011101101111100110111011000100101\n" // Furret
- ".8byte 0b0001001000011111101000000110110100000100110000011000100000\n" // Hoothoot
- ".8byte 0b0001001000011111101000000110110100000100110100011000100000\n" // Noctowl
- ".8byte 0b0001000000001111101000000111001100001111011000011000100001\n" // Ledyba
- ".8byte 0b0001000000001111101000000111001100001111011100011000100001\n" // Ledian
- ".8byte 0b0001000000001111100000100010011100001101010000011000100000\n" // Spinarak
- ".8byte 0b0001000000001111100000100010011100001101010100011000100000\n" // Ariados
- ".8byte 0b0000001001011111111000100010100100000101110100111000100000\n" // Crobat
- ".8byte 0b1101010000000111100000001010000101100100110011001001100100\n" // Chinchou
- ".8byte 0b1101010000000111100000001010000101100100110111001001100100\n" // Lanturn
- ".8byte 0b0001000000000111100000001010000101110100111000001000100000\n" // Pichu
- ".8byte 0b0001000000000111100010011110111100011110111000011000100100\n" // Cleffa
- ".8byte 0b0001000000000111100010011110111100001110111000011000100100\n" // Igglybuff
- ".8byte 0b0011000000000111100010011110110100001110111000011000100100\n" // Togepi
- ".8byte 0b0011001000010111101010011111110100001110111100011000100101\n" // Togetic
- ".8byte 0b0001000000111111101000000110110100001101111000011000101000\n" // Natu
- ".8byte 0b0001001000111111101000000110110100001101111100011000101000\n" // Xatu
- ".8byte 0b0001000000000111100000001010000101110100111000001000100000\n" // Mareep
- ".8byte 0b0011100000000111100000001011000101110100111000001000100001\n" // Flaaffy
- ".8byte 0b0011100000000111100000001011000101110100111100001000100001\n" // Ampharos
- ".8byte 0b0001000100000111100000100010000100001111010100011100100000\n" // Bellossom
- ".8byte 0b1110110000000111100000000011001100010100110011001001100101\n" // Marill
- ".8byte 0b1110110000000111100000000011001100010100110111001001100101\n" // Azumarill
- ".8byte 0b0010100000001111100101000011001110000100010000111000101001\n" // Sudowoodo
- ".8byte 0b1110110000001111100000000011011110000100110111001001100101\n" // Politoed
- ".8byte 0b0001000000000111101000000010000100001101010000011100100000\n" // Hoppip
- ".8byte 0b0001000000000111101000000010000100001101010000011100100000\n" // Skiploom
- ".8byte 0b0001000000000111101000000010000100001101010100011100100000\n" // Jumpluff
- ".8byte 0b0010100101001111101000001011101101111100110000111000100101\n" // Aipom
- ".8byte 0b0001000100000111100000100010000100001111011000011100100000\n" // Sunkern
- ".8byte 0b0001000100000111100000100010000100001111011100011100100000\n" // Sunflora
- ".8byte 0b0001000000011111101000000010110100001101010000011000100000\n" // Yanma
- ".8byte 0b1111010000000111100001100010001110010100110011001001100100\n" // Wooper
- ".8byte 0b1111110000000111100101100011001110010100110111001001100101\n" // Quagsire
- ".8byte 0b0001000100100111100000000110111100010100111100011000101000\n" // Espeon
- ".8byte 0b0001000101000111110000000010111100010100110100111000100000\n" // Umbreon
- ".8byte 0b0000001001011111111000000010100100000100110000111000101000\n" // Murkrow
- ".8byte 0b1011110000100111100010010011111110010110110111011001101101\n" // Slowking
- ".8byte 0b0001000001101111111000001010110101100100110000111000101000\n" // Misdreavus
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Unown
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Wobbuffet
- ".8byte 0b0011100000101111100000001110110111110100111000011000101000\n" // Girafarig
- ".8byte 0b0010100000000111100001000110001110001101011000011000100000\n" // Pineco
- ".8byte 0b0010100000000111100001000110001110001101011100011000100000\n" // Forretress
- ".8byte 0b0010100000001111100110011010101111111100110011011000101100\n" // Dunsparce
- ".8byte 0b0010100100011111101101100010001110010100110000011000100000\n" // Gligar
- ".8byte 0b0010100100000111110101000010001110010100010100111000110000\n" // Steelix
- ".8byte 0b0010100010001111110010111011101111101100110000111010110101\n" // Snubbull
- ".8byte 0b0010100010001111110110111011101111111100110100111010110101\n" // Granbull
- ".8byte 0b1100010000000111100000101010100100000100110011001001100100\n" // Qwilfish
- ".8byte 0b0010100100011111101001000010000100000100110100011000100000\n" // Scizor
- ".8byte 0b0011100000000111100101100010001110000110010000011000100000\n" // Shuckle
- ".8byte 0b0010100100001111100100000011001110000100110100011010100001\n" // Heracross
- ".8byte 0b0010110101001111111000000011101100010100110011111001101001\n" // Sneasel
- ".8byte 0b0010100100001111111000000011001110000100110000111010110001\n" // Teddiursa
- ".8byte 0b0010100100001111111100000011001110000100110100111010110001\n" // Ursaring
- ".8byte 0b0010000010000111100010010110000100000100011000011000100000\n" // Slugma
- ".8byte 0b0010100010000111100111010110000110000100011100011000100000\n" // Magcargo
- ".8byte 0b0010100000000111100101000110001110000100111011001001110000\n" // Swinub
- ".8byte 0b0010100000000111100101000110001110000100111111001001110000\n" // Piloswine
- ".8byte 0b0010110000000111100101000110111110000110111011011001101100\n" // Corsola
- ".8byte 0b1100010000001111100010010010010100000100110111011000100100\n" // Remoraid
- ".8byte 0b1100010000001111100010110010010100000100110111011100100100\n" // Octillery
- ".8byte 0b0000001000001111101000000010000100000100110011001001100101\n" // Delibird
- ".8byte 0b1100010000000111101000000010000110000100110011001001100100\n" // Mantine
- ".8byte 0b0010001100011111111001000010000100000100010000111000110000\n" // Skarmory
- ".8byte 0b0010000011001111110010110010100100011100010000111000110000\n" // Houndour
- ".8byte 0b0010100011001111110010110010100100011100010100111000110000\n" // Houndoom
- ".8byte 0b1100010000000111100000000010000100000100110111001001100100\n" // Kingdra
- ".8byte 0b0010100000000111100101000010000110010100010000011000110000\n" // Phanpy
- ".8byte 0b0010100000000111100101000010000110010100010100011000110000\n" // Donphan
- ".8byte 0b0001000000001011101000001010110101111100110111011000100000\n" // Porygon2
- ".8byte 0b0001000000101111100000001110110111111100111000011000111000\n" // Stantler
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Smeargle
- ".8byte 0b0010100000001111100000000011000110000100110000011010100000\n" // Tyrogue
- ".8byte 0b0010100000001111100001000011001110000100110000011010100000\n" // Hitmontop
- ".8byte 0b0001000000101111100000000110110100000100111011001001101100\n" // Smoochum
- ".8byte 0b0011000000001111100000001011010101100100111000001000100001\n" // Elekid
- ".8byte 0b0010000000001111100010010011010100010100010000011000100001\n" // Magby
- ".8byte 0b0010110000000111100101001011100111111100110111011000100101\n" // Miltank
- ".8byte 0b0011100001100111100111011011110111111110111111011001101101\n" // Blissey
- ".8byte 0b0011100100000011100001001110001101110100110100011000111000\n" // Raikou
- ".8byte 0b0011100100000011100011010110001100011100110100011000111000\n" // Entei
- ".8byte 0b1110010100000011100001000110001100010100110111011001111100\n" // Suicune
- ".8byte 0b0010000000000111110001000011001110000100110100111000100000\n" // Larvitar
- ".8byte 0b0010000000000111110001000011001110000100110100111000100000\n" // Pupitar
- ".8byte 0b0010110100000111111111011011001111110100110111111000110111\n" // Tyranitar
- ".8byte 0b1110111000110011101001001110110111110111111111011001111100\n" // Lugia
- ".8byte 0b0011101010010011101011011110110111101111111100011000111000\n" // Ho-Oh
- ".8byte 0b0001000100100011101001001110110100001111111100011000101100\n" // Celebi
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0011100100000111101100000011001100011111010000011100100001\n" // Treecko
- ".8byte 0b0011100100000111101100000011001100011111010000011100100001\n" // Grovyle
- ".8byte 0b0011100100000111101100000011001110011111010100011100110011\n" // Sceptile
- ".8byte 0b0010100110000111101110010010001100000100010000011000100000\n" // Torchic
- ".8byte 0b0010100110000111101110010011001100000100010000011010100001\n" // Combusken
- ".8byte 0b0010100110000111101110010011001110000100010100011010110001\n" // Blaziken
- ".8byte 0b1110110000000111100100000010001100010100110011001001100100\n" // Mudkip
- ".8byte 0b1110110000000111100100000010001110010100110011001001100100\n" // Marshtomp
- ".8byte 0b1110110000000111100100000011001110010100110111001001110101\n" // Swampert
- ".8byte 0b0010000001001111110000000010101100010100110000111000110000\n" // Poochyena
- ".8byte 0b0010100001001111110000000010101100010100110100111000110000\n" // Mightyena
- ".8byte 0b0010010100001111100000001010101101110100110011011000100100\n" // Zigzagoon
- ".8byte 0b0010110100001111100000001010101101110100110111011000110100\n" // Linoone
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Wurmple
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Silcoon
- ".8byte 0b0001000000001111101000000010110100001111010100011000100000\n" // Beautifly
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Cascoon
- ".8byte 0b0001000000001111101000100010110100001101011100011000100000\n" // Dustox
- ".8byte 0b0001010000001111100000000010000100001101110011011101100100\n" // Lotad
- ".8byte 0b1111110000001111100000000011000100001101110011011101100100\n" // Lombre
- ".8byte 0b1111110000001111100000000011000100001101110111011101100101\n" // Ludicolo
- ".8byte 0b0011000000000111100000000010101100001101010000011100100000\n" // Seedot
- ".8byte 0b0011100100001111110100000011101100001101010100011100100000\n" // Nuzleaf
- ".8byte 0b0011100100001111111100000011101100001101010100011100100000\n" // Shiftry
- ".8byte 0b0001000100000011101001000010101100001101010000011000100000\n" // Nincada
- ".8byte 0b0001000100001111101001000010101100001101010100011000100000\n" // Ninjask
- ".8byte 0b0001000100001011101001000010101100001101010100011000100000\n" // Shedinja
- ".8byte 0b0000001000011111101000000010000100000100110000011000100000\n" // Taillow
- ".8byte 0b0000001000011111101000000010000100000100110100011000100000\n" // Swellow
- ".8byte 0b0001000001000111100000100010000100001111010000011100100000\n" // Shroomish
- ".8byte 0b0011100101000111100000100011000100011111010100011110100001\n" // Breloom
- ".8byte 0b0011100001101111100100001011111100000110110000011000101101\n" // Spinda
- ".8byte 0b0000001000011111101000001010000100000100110011001001100100\n" // Wingull
- ".8byte 0b0000011000011111101000001010000100000100110111001001100100\n" // Pelipper
- ".8byte 0b0001000000001111100000000010100100001101110011011000100100\n" // Surskit
- ".8byte 0b0001000000001111101000000010100100001101110111011000100100\n" // Masquerain
- ".8byte 0b1110110000000111100100000010000110000100110011001001110100\n" // Wailmer
- ".8byte 0b1110110000000111100100000010000110000100110111001001110100\n" // Wailord
- ".8byte 0b0001000000000111100000001010101101111110110011011000101100\n" // Skitty
- ".8byte 0b0011100000000111100000001010101101111110110111011000101100\n" // Delcatty
- ".8byte 0b0011100101101111101110011011101101111100110011011000100101\n" // Kecleon
- ".8byte 0b0001000000100011100101000110111110001100111001011000100000\n" // Baltoy
- ".8byte 0b0011100000100011100101000110111110001100111101011000100000\n" // Claydol
- ".8byte 0b0010100000000111110101001010000111100100010000111000100000\n" // Nosepass
- ".8byte 0b0010100010000111100010110010000100010100010000011000100000\n" // Torkoal
- ".8byte 0b0011000101001111111100001011111100000100110000111000101101\n" // Sableye
- ".8byte 0b1100010000000111100101000010000110000100110011001001100100\n" // Barboach
- ".8byte 0b1110110000000111100101000010000110000100110111001001100100\n" // Whiscash
- ".8byte 0b1100010000000111100000000010000100000110110011001001100100\n" // Luvdisc
- ".8byte 0b0110110100000111101100100011001100000100110011101001100100\n" // Corphish
- ".8byte 0b1110110100000111101100100011001100000100110111101001100100\n" // Crawdaunt
- ".8byte 0b1100010000000111100000000010000100000100110011001001100100\n" // Feebas
- ".8byte 0b1100010000000111100000000010000100010110110111001001100100\n" // Milotic
- ".8byte 0b1100010000001111110000000010000100000100110011101001100100\n" // Carvanha
- ".8byte 0b1110110000001111110100000010000110000100110111101001110100\n" // Sharpedo
- ".8byte 0b0010100000000111100101000010001110001101010100011000100000\n" // Trapinch
- ".8byte 0b0010101000010111100101000010001110001101010100011000100000\n" // Vibrava
- ".8byte 0b0010101000010111100111010010001110011101010100011000100010\n" // Flygon
- ".8byte 0b0010110000000111100100000011001110000100110000011010100001\n" // Makuhita
- ".8byte 0b0010110000000111100100000011001110000100110100011010100001\n" // Hariyama
- ".8byte 0b0001100000001111100000001010000101110100110000001000110000\n" // Electrike
- ".8byte 0b0001100000001111100000001010000101110100110100001000110000\n" // Manectric
- ".8byte 0b0010100010000111100111010010001110000100010000011000100000\n" // Numel
- ".8byte 0b0010100010000111100111010010001110000100010100011000110000\n" // Camerupt
- ".8byte 0b1110110000000111100100000010000110010100110011001001100100\n" // Spheal
- ".8byte 0b1110110000000111100100000010000110010100110011001001110100\n" // Sealeo
- ".8byte 0b1110110000000111100100000010000110010100110111001001110100\n" // Walrein
- ".8byte 0b0001000100000111100001000010000100001101010000011100100001\n" // Cacnea
- ".8byte 0b0001100100000111100001000010000100001101010100011100100001\n" // Cacturne
- ".8byte 0b0001000000000111100000000010100100000110111011001001100100\n" // Snorunt
- ".8byte 0b0001000000000111110000000010100110000110111111101001100100\n" // Glalie
- ".8byte 0b0001000000100011100101000110110110000110111101001000101000\n" // Lunatone
- ".8byte 0b0001000010100011100111010110110110001110011100011000101000\n" // Solrock
- ".8byte 0b0100010000000111100000000010000100010100110011001001100100\n" // Azurill
- ".8byte 0b0001000001101111110000001110110100010100111000111000101000\n" // Spoink
- ".8byte 0b0001000001101111110000001110110100010100111100111000101001\n" // Grumpig
- ".8byte 0b0001000000000111100000001010000101110100111000001000100000\n" // Plusle
- ".8byte 0b0001000000000111100000001010000101110100111000001000100000\n" // Minun
- ".8byte 0b0010100000000111110111110011000100001100110101111000100001\n" // Mawile
- ".8byte 0b0011100000000111100100000111110100000100111000011010101001\n" // Meditite
- ".8byte 0b0011100000000111100100000111110100000100111100011010101001\n" // Medicham
- ".8byte 0b0000001000011111101000000010000100001110110001011000100000\n" // Swablu
- ".8byte 0b0010001000011111101010010010000110011110110101011000110010\n" // Altaria
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Wynaut
- ".8byte 0b0001000001101111110000000010110100000100110011111000101000\n" // Duskull
- ".8byte 0b0011100001101111110100000010110110000100110111111000101001\n" // Dusclops
- ".8byte 0b0001000100000111100000100010100100001101010000011100100000\n" // Roselia
- ".8byte 0b0010100100000111101010011011100101101100110011011010100101\n" // Slakoth
- ".8byte 0b0010100100000111101010011011100111101100110011111010110101\n" // Vigoroth
- ".8byte 0b0010100100000111101010011011100111101100110111111010110101\n" // Slaking
- ".8byte 0b0010100001000111100000101010100100001101110001011100100100\n" // Gulpin
- ".8byte 0b0010100001000111100000101010100100001101110101011100100100\n" // Swalot
- ".8byte 0b0011101100010111101000000010000110001111010100011100110000\n" // Tropius
- ".8byte 0b0000000000000111100010011010100100001100110011011000110100\n" // Whismur
- ".8byte 0b0010100010000111110010011011100110001100110011111000110100\n" // Loudred
- ".8byte 0b0010100010000111110010011011100110001100110111111000110100\n" // Exploud
- ".8byte 0b1100010000000111100000000010000100000100110011001001100100\n" // Clamperl
- ".8byte 0b1100010001000111100100000010000100000100110111001001100100\n" // Huntail
- ".8byte 0b1100010000000111100000000010110100000110110111001001100100\n" // Gorebyss
- ".8byte 0b0011100101001111111011011010100101110100110111111001101100\n" // Absol
- ".8byte 0b0001000001101111110000001010110101100100110000111000101000\n" // Shuppet
- ".8byte 0b0001000001101111110000001010110101100100110100111000101000\n" // Banette
- ".8byte 0b0010100001001111100000110010001110010101110000111000100000\n" // Seviper
- ".8byte 0b0010100000001111101010011011101101111101110011111000110101\n" // Zangoose
- ".8byte 0b1110010000000111100101000010000110000110110111001001101100\n" // Relicanth
- ".8byte 0b0010100100000111101101001010001110010100110000011000110100\n" // Aron
- ".8byte 0b0010100100000111101101001010001110010100110000011000110100\n" // Lairon
- ".8byte 0b0010110100000111101111011011001111111100110111111000110111\n" // Aggron
- ".8byte 0b0001000000001111100011011010100101101100110011011001100100\n" // Castform
- ".8byte 0b0001000000001111101000001011100101101101111000011000100101\n" // Volbeat
- ".8byte 0b0001000000001111101000001011100101101101111000011000100101\n" // Illumise
- ".8byte 0b0000000000000111100001100010000100001101010000011100100000\n" // Lileep
- ".8byte 0b0010100000000111100101100010000110001101010100011100100000\n" // Cradily
- ".8byte 0b0010000100000111101101000011001100000100010000011000100100\n" // Anorith
- ".8byte 0b0010100100000111101101000011001110010100010100011000100100\n" // Armaldo
- ".8byte 0b0001000001101111110000001110110100100110111000111000101000\n" // Ralts
- ".8byte 0b0001000001101111110000001110110100100110111000111000101000\n" // Kirlia
- ".8byte 0b0001000001101111110000001110110100100110111100111000101000\n" // Gardevoir
- ".8byte 0b0010100100000111101110010011000100000100110000011000110010\n" // Bagon
- ".8byte 0b0010100100000111101110010011000100000100110000011000110010\n" // Shelgon
- ".8byte 0b0010101100010111101110010011000110010100110100011000110010\n" // Salamence
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Beldum
- ".8byte 0b0011100100000011101101100111110110000100111100011000100000\n" // Metang
- ".8byte 0b0011100100000011101101100111110110000100111100011000100000\n" // Metagross
- ".8byte 0b0010100000000011100101001011001111100110010100011000100001\n" // Regirock
- ".8byte 0b0010100000000011100000001011000111100110110111001001100001\n" // Regice
- ".8byte 0b0010100000000011101101001011000111100110110100011000100001\n" // Registeel
- ".8byte 0b1110110000000011100100001011000111100110110111001001111100\n" // Kyogre
- ".8byte 0b0010100110000011101111011011001111111110010100011010110010\n" // Groudon
- ".8byte 0b1110111010000011101011011011000111111100110111011010110110\n" // Rayquaza
- ".8byte 0b1101011100010111101001001110110111101110111101011000111110\n" // Latias
- ".8byte 0b1101011100010111101001001110110111101110111101011000111110\n" // Latios
- ".8byte 0b0001000000100011101001001110110101100110111100011000101100\n" // Jirachi
- ".8byte 0b0011100101100011111100001111110101101110111101111000101101\n" // Deoxys
- ".8byte 0b0001000001100111110000001110110100000110111000111000101000\n" // Chimecho
-);
-
-#endif //POKERUBY_TMHM_LEARNSETS_H
+#ifndef GUARD_TMHM_LEARNSETS_H
+#define GUARD_TMHM_LEARNSETS_H
+
+#define TMHM_LEARNSET(moves) {(u32)(moves), ((u64)(moves) >> 32)}
+#define TMHM(tmhm) ((u64)1 << (ITEM_##tmhm - ITEM_TM01_FOCUS_PUNCH))
+
+// This table determines which TMs and HMs a species is capable of learning.
+// Each entry is a 64-bit bit array spread across two 32-bit values, with
+// each bit corresponding to a .
+const u32 gTMHMLearnsets[][2] =
+{
+ [SPECIES_NONE] = TMHM_LEARNSET(0),
+
+ [SPECIES_BULBASAUR] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_IVYSAUR] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_VENUSAUR] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CHARMANDER] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CHARMELEON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CHARIZARD] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SQUIRTLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_WARTORTLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_BLASTOISE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_CATERPIE] = TMHM_LEARNSET(0),
+
+ [SPECIES_METAPOD] = TMHM_LEARNSET(0),
+
+ [SPECIES_BUTTERFREE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_WEEDLE] = TMHM_LEARNSET(0),
+
+ [SPECIES_KAKUNA] = TMHM_LEARNSET(0),
+
+ [SPECIES_BEEDRILL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PIDGEY] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_PIDGEOTTO] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_PIDGEOT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_RATTATA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_RATICATE] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SPEAROW] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_FEAROW] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_EKANS] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)),
+
+ [SPECIES_ARBOK] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)),
+
+ [SPECIES_PIKACHU] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_RAICHU] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SANDSHREW] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SANDSLASH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NIDORAN_F] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NIDORINA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NIDOQUEEN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NIDORAN_M] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NIDORINO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NIDOKING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CLEFAIRY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_CLEFABLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_VULPIX] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)),
+
+ [SPECIES_NINETALES] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)),
+
+ [SPECIES_JIGGLYPUFF] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_WIGGLYTUFF] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_ZUBAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM49_SNATCH)),
+
+ [SPECIES_GOLBAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM49_SNATCH)),
+
+ [SPECIES_ODDISH] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_GLOOM] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_VILEPLUME] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_PARAS] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PARASECT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_VENONAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_VENOMOTH] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_DIGLETT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_DUGTRIO] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MEOWTH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_PERSIAN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_PSYDUCK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_GOLDUCK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_MANKEY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PRIMEAPE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_GROWLITHE] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ARCANINE] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_POLIWAG] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_POLIWHIRL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_POLIWRATH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_ABRA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_KADABRA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_ALAKAZAM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MACHOP] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MACHOKE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MACHAMP] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_BELLSPROUT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_WEEPINBELL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_VICTREEBEL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_TENTACOOL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_TENTACRUEL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_GEODUDE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_GRAVELER] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_GOLEM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PONYTA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)),
+
+ [SPECIES_RAPIDASH] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)),
+
+ [SPECIES_SLOWPOKE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SLOWBRO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_MAGNEMITE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MAGNETON] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_FARFETCHD] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_DODUO] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_DODRIO] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_SEEL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_DEWGONG] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_GRIMER] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)),
+
+ [SPECIES_MUK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SHELLDER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_CLOYSTER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_GASTLY] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)),
+
+ [SPECIES_HAUNTER] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)),
+
+ [SPECIES_GENGAR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ONIX] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_DROWZEE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_HYPNO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_KRABBY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_KINGLER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_VOLTORB] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_ELECTRODE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_EXEGGCUTE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_EXEGGUTOR] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_CUBONE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MAROWAK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HITMONLEE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HITMONCHAN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_LICKITUNG] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_KOFFING] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_WEEZING] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_RHYHORN] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_RHYDON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CHANSEY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TANGELA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_KANGASKHAN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HORSEA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SEADRA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_GOLDEEN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SEAKING] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_STARYU] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_STARMIE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_MR_MIME] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SCYTHER] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_JYNX] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_ELECTABUZZ] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MAGMAR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PINSIR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TAUROS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MAGIKARP] = TMHM_LEARNSET(0),
+
+ [SPECIES_GYARADOS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_LAPRAS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_DITTO] = TMHM_LEARNSET(0),
+
+ [SPECIES_EEVEE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)),
+
+ [SPECIES_VAPOREON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_JOLTEON] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_FLAREON] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)),
+
+ [SPECIES_PORYGON] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_OMANYTE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_OMASTAR] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_KABUTO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)),
+
+ [SPECIES_KABUTOPS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_AERODACTYL] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SNORLAX] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)),
+
+ [SPECIES_ARTICUNO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ZAPDOS] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MOLTRES] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_DRATINI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)),
+
+ [SPECIES_DRAGONAIR] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)),
+
+ [SPECIES_DRAGONITE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_MEWTWO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MEW] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_CHIKORITA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_BAYLEEF] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MEGANIUM] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CYNDAQUIL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)),
+
+ [SPECIES_QUILAVA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TYPHLOSION] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TOTODILE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_CROCONAW] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_FERALIGATR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SENTRET] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)),
+
+ [SPECIES_FURRET] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HOOTHOOT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_NOCTOWL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_LEDYBA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_LEDIAN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SPINARAK] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_ARIADOS] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_CROBAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_CHINCHOU] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_LANTURN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_PICHU] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_CLEFFA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_IGGLYBUFF] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_TOGEPI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TOGETIC] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NATU] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_XATU] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM02_FLY)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MAREEP] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_FLAAFFY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_AMPHAROS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_BELLOSSOM] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MARILL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_AZUMARILL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SUDOWOODO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_POLITOED] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_HOPPIP] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SKIPLOOM] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_JUMPLUFF] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_AIPOM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SUNKERN] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SUNFLORA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_YANMA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_WOOPER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_QUAGSIRE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_ESPEON] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_UMBREON] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MURKROW] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_SLOWKING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_MISDREAVUS] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_UNOWN] = TMHM_LEARNSET(0),
+
+ [SPECIES_WOBBUFFET] = TMHM_LEARNSET(0),
+
+ [SPECIES_GIRAFARIG] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PINECO] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_FORRETRESS] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_DUNSPARCE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_GLIGAR] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_STEELIX] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SNUBBULL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_GRANBULL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_QWILFISH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SCIZOR] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SHUCKLE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HERACROSS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SNEASEL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TEDDIURSA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_URSARING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SLUGMA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MAGCARGO] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SWINUB] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PILOSWINE] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CORSOLA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_REMORAID] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_OCTILLERY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_DELIBIRD] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_MANTINE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SKARMORY] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HOUNDOUR] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HOUNDOOM] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_KINGDRA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_PHANPY] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_DONPHAN] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PORYGON2] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_STANTLER] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SMEARGLE] = TMHM_LEARNSET(0),
+
+ [SPECIES_TYROGUE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HITMONTOP] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SMOOCHUM] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_ELEKID] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MAGBY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MILTANK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_BLISSEY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_RAIKOU] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ENTEI] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SUICUNE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_LARVITAR] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PUPITAR] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TYRANITAR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_LUGIA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM02_FLY)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_HO_OH] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CELEBI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_OLD_UNOWN_B] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_C] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_D] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_E] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_F] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_G] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_H] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_I] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_J] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_K] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_L] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_M] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_N] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_O] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_P] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_Q] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_R] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_S] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_T] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_U] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_V] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_W] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_X] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_Y] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_Z] = TMHM_LEARNSET(0),
+
+ [SPECIES_TREECKO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_GROVYLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SCEPTILE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TORCHIC] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_COMBUSKEN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_BLAZIKEN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MUDKIP] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_MARSHTOMP] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SWAMPERT] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_POOCHYENA] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MIGHTYENA] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ZIGZAGOON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_LINOONE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_WURMPLE] = TMHM_LEARNSET(0),
+
+ [SPECIES_SILCOON] = TMHM_LEARNSET(0),
+
+ [SPECIES_BEAUTIFLY] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_CASCOON] = TMHM_LEARNSET(0),
+
+ [SPECIES_DUSTOX] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_LOTAD] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_LOMBRE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_LUDICOLO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SEEDOT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NUZLEAF] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SHIFTRY] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NINCADA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_NINJASK] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SHEDINJA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_TAILLOW] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_SWELLOW] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_SHROOMISH] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_BRELOOM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SPINDA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_WINGULL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_PELIPPER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM03_SURF)),
+
+ [SPECIES_SURSKIT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MASQUERAIN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_WAILMER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_WAILORD] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SKITTY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_DELCATTY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_KECLEON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_BALTOY] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_CLAYDOL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NOSEPASS] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TORKOAL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SABLEYE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_BARBOACH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_WHISCASH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_LUVDISC] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_CORPHISH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)),
+
+ [SPECIES_CRAWDAUNT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_FEEBAS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_MILOTIC] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_CARVANHA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SHARPEDO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_TRAPINCH] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_VIBRAVA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_FLYGON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MAKUHITA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HARIYAMA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ELECTRIKE] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MANECTRIC] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_NUMEL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CAMERUPT] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SPHEAL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SEALEO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_WALREIN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_CACNEA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_CACTURNE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SNORUNT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_GLALIE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_LUNATONE] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SOLROCK] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_AZURILL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)),
+
+ [SPECIES_SPOINK] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_GRUMPIG] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_PLUSLE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MINUN] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MAWILE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MEDITITE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MEDICHAM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SWABLU] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_ALTARIA] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_WYNAUT] = TMHM_LEARNSET(0),
+
+ [SPECIES_DUSKULL] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_DUSCLOPS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ROSELIA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SLAKOTH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_VIGOROTH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SLAKING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_GULPIN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SWALOT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TROPIUS] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_WHISMUR] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)),
+
+ [SPECIES_LOUDRED] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_EXPLOUD] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CLAMPERL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_HUNTAIL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_GOREBYSS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_ABSOL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SHUPPET] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_BANETTE] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SEVIPER] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ZANGOOSE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_RELICANTH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_ARON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_LAIRON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_AGGRON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CASTFORM] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_VOLBEAT] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_ILLUMISE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_LILEEP] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)),
+
+ [SPECIES_CRADILY] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ANORITH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ARMALDO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_RALTS] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_KIRLIA] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_GARDEVOIR] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_BAGON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SHELGON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SALAMENCE] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_BELDUM] = TMHM_LEARNSET(0),
+
+ [SPECIES_METANG] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_METAGROSS] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_REGIROCK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_REGICE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_REGISTEEL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_KYOGRE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_GROUDON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_RAYQUAZA] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_LATIAS] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_LATIOS] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_JIRACHI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_DEOXYS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CHIMECHO] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+};
+
+#endif // GUARD_TMHM_LEARNSETS_H
diff --git a/src/engine/clear_save_data_menu.c b/src/engine/clear_save_data_menu.c
index 08fd5cd18..b6053715a 100644
--- a/src/engine/clear_save_data_menu.c
+++ b/src/engine/clear_save_data_menu.c
@@ -73,7 +73,7 @@ static void Task_ProcessMenuInput(u8 taskId)
static void Task_ClearSaveData(u8 taskId)
{
- ClearSaveData();
+ Save_EraseAllData();
DestroyTask(taskId);
SetMainCallback2(CB2_SoftReset);
}
diff --git a/src/engine/link.c b/src/engine/link.c
index 34016d607..ec94295d7 100644
--- a/src/engine/link.c
+++ b/src/engine/link.c
@@ -409,7 +409,7 @@ static void LinkTestProcessKeyInput(void)
if (gMain.newKeys & START_BUTTON)
SetSuppressLinkErrorMessage(TRUE);
if (gMain.newKeys & R_BUTTON)
- TrySavingData(LINK_SAVE);
+ Save_WriteData(SAVE_LINK);
if (gMain.newKeys & SELECT_BUTTON)
sub_800832C();
if (gLinkTestDebugValuesEnabled)
diff --git a/src/engine/main_menu.c b/src/engine/main_menu.c
index a0b8b7020..5a3f55b29 100644
--- a/src/engine/main_menu.c
+++ b/src/engine/main_menu.c
@@ -1,4 +1,6 @@
#include "global.h"
+#include "constants/songs.h"
+#include "constants/species.h"
#include "main_menu.h"
#include "data2.h"
#include "decompress.h"
@@ -13,9 +15,8 @@
#include "overworld.h"
#include "rtc.h"
#include "save_menu_util.h"
-#include "constants/songs.h"
+#include "save.h"
#include "sound.h"
-#include "constants/species.h"
#include "string_util.h"
#include "strings.h"
#include "task.h"
@@ -28,8 +29,6 @@
extern struct PaletteFadeControl gPaletteFade;
-extern u16 gSaveFileStatus;
-
extern const u8 gBirchSpeech_Welcome[];
extern const u8 gBirchSpeech_ThisIsPokemon[];
extern const u8 gBirchSpeech_WorldInhabitedByPokemon[];
@@ -284,12 +283,11 @@ void Task_MainMenuCheckSave(u8 taskId)
switch (gSaveFileStatus)
{
- case 1:
+ case SAVE_STATUS_OK:
if (IsMysteryGiftEnabled() == TRUE)
gTasks[taskId].tMenuLayout = HAS_MYSTERY_GIFT;
else
gTasks[taskId].tMenuLayout = HAS_SAVED_GAME;
-
gTasks[taskId].func = Task_MainMenuCheckRtc;
break;
case 2:
@@ -300,7 +298,7 @@ void Task_MainMenuCheckSave(u8 taskId)
gTasks[taskId].tMenuLayout = HAS_NO_SAVED_GAME;
gTasks[taskId].func = Task_MainMenuWaitForSaveErrorAck;
break;
- case 255:
+ case SAVE_STATUS_ERROR:
Menu_DrawStdWindowFrame(2, 14, 27, 19);
MenuPrintMessage(gSaveFileCorruptMessage, 3, 15);
REG_WIN0H = WIN_RANGE(17, 223);
@@ -313,12 +311,12 @@ void Task_MainMenuCheckSave(u8 taskId)
else
gTasks[taskId].tMenuLayout = HAS_SAVED_GAME;
break;
- case 0:
+ case SAVE_STATUS_EMPTY:
default:
gTasks[taskId].tMenuLayout = HAS_NO_SAVED_GAME;
gTasks[taskId].func = Task_MainMenuCheckRtc;
break;
- case 4:
+ case SAVE_STATUS_NO_FLASH:
Menu_DrawStdWindowFrame(2, 14, 27, 19);
MenuPrintMessage(gBoardNotInstalledMessage, 3, 15);
REG_WIN0H = WIN_RANGE(17, 223);
diff --git a/src/engine/mystery_event_menu.c b/src/engine/mystery_event_menu.c
index b7b7c047e..8fad563e6 100644
--- a/src/engine/mystery_event_menu.c
+++ b/src/engine/mystery_event_menu.c
@@ -289,7 +289,7 @@ static void CB2_MysteryEventMenu(void)
unkVal = RunMysteryEventScript(gSharedMem);
CpuFill32(0, gSharedMem, 0x7D4);
if (!GetEventLoadMessage(gStringVar4, unkVal))
- TrySavingData(NORMAL_SAVE);
+ Save_WriteData(SAVE_NORMAL);
gMain.state++;
break;
case 12:
diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c
index a8b49a8eb..c7d45e929 100644
--- a/src/engine/reset_rtc_screen.c
+++ b/src/engine/reset_rtc_screen.c
@@ -576,7 +576,7 @@ void Task_ResetRtcScreen(u8 taskId)
}
break;
case 4:
- if (TrySavingData(0) == TRUE)
+ if (Save_WriteData(0) == SAVE_STATUS_OK)
{
ResetRtcScreen_ShowMessage(gSystemText_SaveCompleted);
PlaySE(SE_PINPON);
diff --git a/src/engine/save.c b/src/engine/save.c
index d5de2e408..be907edcc 100644
--- a/src/engine/save.c
+++ b/src/engine/save.c
@@ -4,55 +4,132 @@
#include "save.h"
#include "load_save.h"
#include "overworld.h"
+#include "pokemon.h"
#include "save_failed_screen.h"
#include "ewram.h"
-#define GETVALIDSTATUSBITFIELD ((1 << ARRAY_COUNT(gSaveSectionLocations)) - 1)
-#define GETCHUNKSIZE(chunk, n) ((sizeof(chunk) - (0xF80 * (n - 1))) >= 0xF80 ? 0xF80 : (sizeof(chunk) - (0xF80 * (n - 1))))
-#define GETBLOCKOFFSET(n) (0xF80 * (n - 1))
-#define TOTALNUMSECTORS ((ARRAY_COUNT(gSaveSectionLocations) * 2) + (ARRAY_COUNT(gHallOfFameSaveSectionLocations) * 2)) // there are 2 slots, so double each array count and get the sum.
+#define FILE_SIGNATURE 0x08012025 // signature value to determine if a sector is in use
-u16 gLastWrittenSector;
-u32 gLastSaveCounter;
+//#define TOTAL_FLASH_SECTORS ((ARRAY_COUNT(sSaveBlockChunks) * 2) + (ARRAY_COUNT(sHallOfFameChunks) * 2)) // there are 2 slots, so double each array count and get the sum.
+#define TOTAL_FLASH_SECTORS 32
+
+struct SaveBlockChunk
+{
+ u8 *data;
+ u16 size;
+};
+
+struct SaveSector
+{
+ u8 data[0xFF4];
+ u16 id;
+ u16 checksum;
+ u32 signature;
+ u32 counter;
+}; // size is 0x1000
+
+// headless save section?
+struct UnkSaveSection
+{
+ u8 data[0xFF4];
+ u32 signature;
+}; // size is 0xFF8
+
+static u8 WriteSingleChunk(u16, const struct SaveBlockChunk *);
+static u8 HandleWriteSectorNBytes(u8 sector, u8 *data, u16 size);
+static u8 TryWriteSector(u8, u8 *);
+static u32 RestoreSaveBackupVarsAndIncrement(const struct SaveBlockChunk *location);
+static u32 RestoreSaveBackupVars(const struct SaveBlockChunk *location);
+static u8 sub_812550C(u16 a1, const struct SaveBlockChunk *location);
+static u8 sub_812556C(u16 a1, const struct SaveBlockChunk *location);
+static u8 sub_81255B8(u16, const struct SaveBlockChunk *location);
+static u8 WriteSomeFlashByteToPrevSector(u16 a1, const struct SaveBlockChunk *location);
+static u8 WriteSomeFlashByte0x25ToPrevSector(u16 a1, const struct SaveBlockChunk *location);
+static u8 sub_812587C(u16 a1, const struct SaveBlockChunk *location);
+static u8 sub_81258BC(u16, const struct SaveBlockChunk *location);
+static u8 GetSaveValidStatus(const struct SaveBlockChunk *location);
+static u8 ReadSomeUnknownSectorAndVerify(u8 a1, u8 *data, u16 size);
+static u8 DoReadFlashWholeSection(u8, struct SaveSector *);
+static u16 CalculateChecksum(void *, u16);
+bool8 unref_sub_8125F4C(struct UnkSaveSection *a1);
+u8 unref_sub_8125FA0(void);
+u8 unref_sub_8125FF0(u8 *data, u16 size);
+u8 unref_sub_8126068(u8 sector, u8 *data, u32 size);
+u8 unref_sub_8126080(u8 sector, u8 *data);
+
+// Sector num to begin writing save data. Sectors are rotated each time the game is saved. (possibly to avoid wear on flash memory?)
+u16 gFirstSaveSector;
+u32 gPrevSaveCounter;
u16 gLastKnownGoodSector;
u32 gDamagedSaveSectors;
u32 gSaveCounter;
-struct SaveSection *gFastSaveSection; // the pointer is in fast IWRAM but may sometimes point to the slower EWRAM.
+struct SaveSector *gFastSaveSection; // the pointer is in fast IWRAM but may sometimes point to the slower EWRAM.
u16 gUnknown_03005EB4;
u16 gSaveFileStatus;
u32 gGameContinueCallback;
-extern struct PokemonStorage gPokemonStorage;
-
static EWRAM_DATA u32 gLastSaveSectorStatus = 0; // used but in an unferenced function, so unused
-const struct SaveSectionLocation gSaveSectionLocations[] =
-{
- {((u8 *) &gSaveBlock2) + GETBLOCKOFFSET(1), GETCHUNKSIZE(gSaveBlock2, 1)},
- {((u8 *) &gSaveBlock1) + GETBLOCKOFFSET(1), GETCHUNKSIZE(gSaveBlock1, 1)},
- {((u8 *) &gSaveBlock1) + GETBLOCKOFFSET(2), GETCHUNKSIZE(gSaveBlock1, 2)},
- {((u8 *) &gSaveBlock1) + GETBLOCKOFFSET(3), GETCHUNKSIZE(gSaveBlock1, 3)},
- {((u8 *) &gSaveBlock1) + GETBLOCKOFFSET(4), GETCHUNKSIZE(gSaveBlock1, 4)},
- {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(1), GETCHUNKSIZE(gPokemonStorage, 1)},
- {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(2), GETCHUNKSIZE(gPokemonStorage, 2)},
- {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(3), GETCHUNKSIZE(gPokemonStorage, 3)},
- {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(4), GETCHUNKSIZE(gPokemonStorage, 4)},
- {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(5), GETCHUNKSIZE(gPokemonStorage, 5)},
- {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(6), GETCHUNKSIZE(gPokemonStorage, 6)},
- {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(7), GETCHUNKSIZE(gPokemonStorage, 7)},
- {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(8), GETCHUNKSIZE(gPokemonStorage, 8)},
- {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(9), GETCHUNKSIZE(gPokemonStorage, 9)}
+// Each 4 KiB flash sector contains 3968 bytes of actual data followed by a 128 byte footer
+#define SECTOR_DATA_SIZE 3968
+#define SECTOR_FOOTER_SIZE 128
+
+/*
+ * Sector Layout:
+ *
+ * Sectors 0 - 13: Save Slot 1
+ * Sectors 14 - 27: Save Slot 2
+ * Sectors 28 - 29: Hall of Fame
+ * Sectors 30 - 31: e-Reader battle tower data, maybe?
+ *
+ * There are two save slots for saving the player's game data. We alternate between
+ * them each time the game is saved, so that if the current save slot is corrupt,
+ * we can load the previous one. We also rotate the sectors in each save slot
+ * so that the same data is not always being written to the same sector. This
+ * might be done to reduce wear on the flash memory, but I'm not sure, since all
+ * 14 sectors get written anyway.
+ */
+
+#define HALL_OF_FAME_SECTOR 28
+
+#define NUM_SECTORS_PER_SAVE_SLOT 14 // Number of sectors occupied by a save slot
+#define NUM_HALL_OF_FAME_SECTORS 2
+
+// Divide save blocks into individual chunks to be written to flash sectors
+
+#define SAVEBLOCK_CHUNK(structure, chunkNum) \
+{ \
+ (u8 *)&structure + chunkNum * SECTOR_DATA_SIZE, \
+ min(sizeof(structure) - chunkNum * SECTOR_DATA_SIZE, SECTOR_DATA_SIZE) \
+} \
+
+static const struct SaveBlockChunk sSaveBlockChunks[] =
+{
+ SAVEBLOCK_CHUNK(gSaveBlock2, 0),
+
+ SAVEBLOCK_CHUNK(gSaveBlock1, 0),
+ SAVEBLOCK_CHUNK(gSaveBlock1, 1),
+ SAVEBLOCK_CHUNK(gSaveBlock1, 2),
+ SAVEBLOCK_CHUNK(gSaveBlock1, 3),
+
+ SAVEBLOCK_CHUNK(gPokemonStorage, 0),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 1),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 2),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 3),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 4),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 5),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 6),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 7),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 8),
};
-const struct SaveSectionLocation gHallOfFameSaveSectionLocations[] =
+static const struct SaveBlockChunk sHallOfFameChunks[] =
{
- {((u8 *) eHallOfFame) + GETBLOCKOFFSET(1), GETCHUNKSIZE(struct HallOfFame, 1)}, // eHallOfFame is not a proper sym, so the struct must be used.
- {((u8 *) eHallOfFame) + GETBLOCKOFFSET(2), GETCHUNKSIZE(struct HallOfFame, 2)}
+ SAVEBLOCK_CHUNK(*eHallOfFame, 0),
+ SAVEBLOCK_CHUNK(*eHallOfFame, 1),
};
-const u8 gFlashSectors[] = { 0x1E, 0x1F };
-
-void ClearSaveData(void)
+void Save_EraseAllData(void)
{
u16 i;
@@ -60,27 +137,34 @@ void ClearSaveData(void)
EraseFlashSector(i);
}
-void ResetSaveCounters(void)
+void Save_ResetSaveCounters(void)
{
gSaveCounter = 0;
- gLastWrittenSector = 0;
+ gFirstSaveSector = 0;
gDamagedSaveSectors = 0;
}
-bool32 SetDamagedSectorBits(u8 op, u8 bit)
+enum
+{
+ SECTOR_DAMAGED,
+ SECTOR_OK,
+ SECTOR_CHECK, // unused
+};
+
+static bool32 SetSectorDamagedStatus(u8 op, u8 sectorNum)
{
bool32 retVal = FALSE;
switch (op)
{
- case ENABLE:
- gDamagedSaveSectors |= (1 << bit);
+ case SECTOR_DAMAGED:
+ gDamagedSaveSectors |= (1 << sectorNum);
break;
- case DISABLE:
- gDamagedSaveSectors &= ~(1 << bit);
+ case SECTOR_OK:
+ gDamagedSaveSectors &= ~(1 << sectorNum);
break;
- case CHECK: // unused
- if (gDamagedSaveSectors & (1 << bit))
+ case SECTOR_CHECK: // unused
+ if (gDamagedSaveSectors & (1 << sectorNum))
retVal = TRUE;
break;
}
@@ -88,163 +172,166 @@ bool32 SetDamagedSectorBits(u8 op, u8 bit)
return retVal;
}
-u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *location)
+// If chunkId is 0xFFFF, this function will write all of the chunks pointed to by 'chunks'.
+// Otherwise, it will write a single chunk with the given 'chunkId'.
+static u8 WriteSaveBlockChunks(u16 chunkId, const struct SaveBlockChunk *chunks)
{
u32 retVal;
u16 i;
gFastSaveSection = eSaveSection;
- if (a1 != 0xFFFF) // for link
+ if (chunkId != 0xFFFF) // write single chunk
{
- retVal = HandleWriteSector(a1, location);
+ retVal = WriteSingleChunk(chunkId, chunks);
}
- else
+ else // write all chunks
{
- gLastKnownGoodSector = gLastWrittenSector; // backup the current written sector before attempting to write.
- gLastSaveCounter = gSaveCounter;
- gLastWrittenSector++;
- gLastWrittenSector = gLastWrittenSector % ARRAY_COUNT(gSaveSectionLocations);
+ gLastKnownGoodSector = gFirstSaveSector;
+ gPrevSaveCounter = gSaveCounter;
+ gFirstSaveSector++;
+ gFirstSaveSector %= NUM_SECTORS_PER_SAVE_SLOT;
gSaveCounter++;
- retVal = 1;
+ retVal = SAVE_STATUS_OK;
- for (i = 0; i < ARRAY_COUNT(gSaveSectionLocations); i++)
- HandleWriteSector(i, location);
+ for (i = 0; i < NUM_SECTORS_PER_SAVE_SLOT; i++)
+ WriteSingleChunk(i, chunks);
+ // Check for any bad sectors
if (gDamagedSaveSectors != 0) // skip the damaged sector.
{
- retVal = 0xFF;
- gLastWrittenSector = gLastKnownGoodSector;
- gSaveCounter = gLastSaveCounter;
+ retVal = SAVE_STATUS_ERROR;
+ gFirstSaveSector = gLastKnownGoodSector;
+ gSaveCounter = gPrevSaveCounter;
}
}
return retVal;
}
-u8 HandleWriteSector(u16 a1, const struct SaveSectionLocation *location)
+static u8 WriteSingleChunk(u16 chunkId, const struct SaveBlockChunk *chunks)
{
u16 i;
- u16 sector;
- u8 *data;
- u16 size;
+ u16 sectorNum;
+ u8 *chunkData;
+ u16 chunkSize;
- sector = a1 + gLastWrittenSector;
- sector %= ARRAY_COUNT(gSaveSectionLocations);
- sector += ARRAY_COUNT(gSaveSectionLocations) * (gSaveCounter % 2);
+ // select sector number
+ sectorNum = chunkId + gFirstSaveSector;
+ sectorNum %= NUM_SECTORS_PER_SAVE_SLOT;
+ // select save slot
+ sectorNum += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2);
- data = location[a1].data;
- size = location[a1].size;
+ chunkData = chunks[chunkId].data;
+ chunkSize = chunks[chunkId].size;
// clear save section.
- for (i = 0; i < sizeof(struct SaveSection); i++)
- ((char *)gFastSaveSection)[i] = 0;
+ for (i = 0; i < sizeof(struct SaveSector); i++)
+ ((u8 *)gFastSaveSection)[i] = 0;
- gFastSaveSection->id = a1;
- gFastSaveSection->security = UNKNOWN_CHECK_VALUE;
+ gFastSaveSection->id = chunkId;
+ gFastSaveSection->signature = FILE_SIGNATURE;
gFastSaveSection->counter = gSaveCounter;
+ for (i = 0; i < chunkSize; i++)
+ gFastSaveSection->data[i] = chunkData[i];
+ gFastSaveSection->checksum = CalculateChecksum(chunkData, chunkSize);
- for (i = 0; i < size; i++)
- gFastSaveSection->data[i] = data[i];
-
- gFastSaveSection->checksum = CalculateChecksum(data, size);
- return TryWriteSector(sector, gFastSaveSection->data);
+ return TryWriteSector(sectorNum, gFastSaveSection->data);
}
-u8 HandleWriteSectorNBytes(u8 sector, u8 *data, u16 size)
+static u8 HandleWriteSectorNBytes(u8 sectorNum, u8 *data, u16 size)
{
u16 i;
- struct SaveSection *section = eSaveSection;
+ struct SaveSector *section = eSaveSection;
- for (i = 0; i < sizeof(struct SaveSection); i++)
+ for (i = 0; i < sizeof(struct SaveSector); i++)
((char *)section)[i] = 0;
- section->security = UNKNOWN_CHECK_VALUE;
-
+ section->signature = FILE_SIGNATURE;
for (i = 0; i < size; i++)
section->data[i] = data[i];
-
section->id = CalculateChecksum(data, size); // though this appears to be incorrect, it might be some sector checksum instead of a whole save checksum and only appears to be relevent to HOF data, if used.
- return TryWriteSector(sector, section->data);
+
+ return TryWriteSector(sectorNum, section->data);
}
-u8 TryWriteSector(u8 sector, u8 *data)
+static u8 TryWriteSector(u8 sectorNum, u8 *data)
{
- if (ProgramFlashSectorAndVerify(sector, data) != 0) // is damaged?
+ if (ProgramFlashSectorAndVerify(sectorNum, data) != 0) // is damaged?
{
- SetDamagedSectorBits(ENABLE, sector); // set damaged sector bits.
- return 0xFF;
+ SetSectorDamagedStatus(SECTOR_DAMAGED, sectorNum); // set damaged sector bits.
+ return SAVE_STATUS_ERROR;
}
else
{
- SetDamagedSectorBits(DISABLE, sector); // unset damaged sector bits. it's safe now.
- return 1;
+ SetSectorDamagedStatus(SECTOR_OK, sectorNum); // unset damaged sector bits. it's safe now.
+ return SAVE_STATUS_OK;
}
}
-u32 RestoreSaveBackupVarsAndIncrement(const struct SaveSectionLocation *location) // location is unused
+static u32 RestoreSaveBackupVarsAndIncrement(const struct SaveBlockChunk *chunk) // chunk is unused
{
gFastSaveSection = eSaveSection;
- gLastKnownGoodSector = gLastWrittenSector;
- gLastSaveCounter = gSaveCounter;
- gLastWrittenSector++;
- gLastWrittenSector = gLastWrittenSector % ARRAY_COUNT(gSaveSectionLocations);
+ gLastKnownGoodSector = gFirstSaveSector;
+ gPrevSaveCounter = gSaveCounter;
+ gFirstSaveSector++;
+ gFirstSaveSector %= NUM_SECTORS_PER_SAVE_SLOT;
gSaveCounter++;
gUnknown_03005EB4 = 0;
gDamagedSaveSectors = 0;
return 0;
}
-u32 RestoreSaveBackupVars(const struct SaveSectionLocation *location) // only ever called once, and gSaveBlock2 is passed to this function. location is unused
+static u32 RestoreSaveBackupVars(const struct SaveBlockChunk *chunk) // chunk is unused
{
gFastSaveSection = eSaveSection;
- gLastKnownGoodSector = gLastWrittenSector;
- gLastSaveCounter = gSaveCounter;
+ gLastKnownGoodSector = gFirstSaveSector;
+ gPrevSaveCounter = gSaveCounter;
gUnknown_03005EB4 = 0;
gDamagedSaveSectors = 0;
return 0;
}
-u8 sub_812550C(u16 a1, const struct SaveSectionLocation *location)
+static u8 sub_812550C(u16 a1, const struct SaveBlockChunk *chunk)
{
u8 retVal;
if (gUnknown_03005EB4 < a1 - 1)
{
- retVal = 1;
- HandleWriteSector(gUnknown_03005EB4, location);
+ retVal = SAVE_STATUS_OK;
+ WriteSingleChunk(gUnknown_03005EB4, chunk);
gUnknown_03005EB4++;
if (gDamagedSaveSectors)
{
- retVal = 0xFF;
- gLastWrittenSector = gLastKnownGoodSector;
- gSaveCounter = gLastSaveCounter;
+ retVal = SAVE_STATUS_ERROR;
+ gFirstSaveSector = gLastKnownGoodSector;
+ gSaveCounter = gPrevSaveCounter;
}
}
else
{
- retVal = 0xFF;
+ retVal = SAVE_STATUS_ERROR;
}
return retVal;
}
-u8 sub_812556C(u16 a1, const struct SaveSectionLocation *location)
+static u8 sub_812556C(u16 a1, const struct SaveBlockChunk *chunk)
{
- u8 retVal = 1;
+ u8 retVal = SAVE_STATUS_OK;
- sub_81255B8(a1 - 1, location);
+ sub_81255B8(a1 - 1, chunk);
if (gDamagedSaveSectors)
{
- retVal = 0xFF;
- gLastWrittenSector = gLastKnownGoodSector;
- gSaveCounter = gLastSaveCounter;
+ retVal = SAVE_STATUS_ERROR;
+ gFirstSaveSector = gLastKnownGoodSector;
+ gSaveCounter = gPrevSaveCounter;
}
return retVal;
}
-u8 sub_81255B8(u16 a1, const struct SaveSectionLocation *location)
+static u8 sub_81255B8(u16 chunkId, const struct SaveBlockChunk *chunks)
{
u16 i;
u16 sector;
@@ -252,19 +339,21 @@ u8 sub_81255B8(u16 a1, const struct SaveSectionLocation *location)
u16 size;
u8 status;
- sector = a1 + gLastWrittenSector;
- sector %= ARRAY_COUNT(gSaveSectionLocations);
- sector += ARRAY_COUNT(gSaveSectionLocations) * (gSaveCounter % 2);
+ // select sector number
+ sector = chunkId + gFirstSaveSector;
+ sector %= NUM_SECTORS_PER_SAVE_SLOT;
+ // select save slot
+ sector += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2);
- data = location[a1].data;
- size = location[a1].size;
+ data = chunks[chunkId].data;
+ size = chunks[chunkId].size;
// clear temp save section.
- for (i = 0; i < sizeof(struct SaveSection); i++)
+ for (i = 0; i < sizeof(struct SaveSector); i++)
((char *)gFastSaveSection)[i] = 0;
- gFastSaveSection->id = a1;
- gFastSaveSection->security = UNKNOWN_CHECK_VALUE;
+ gFastSaveSection->id = chunkId;
+ gFastSaveSection->signature = FILE_SIGNATURE;
gFastSaveSection->counter = gSaveCounter;
// set temp section's data.
@@ -276,275 +365,275 @@ u8 sub_81255B8(u16 a1, const struct SaveSectionLocation *location)
EraseFlashSector(sector);
- status = 1;
+ status = SAVE_STATUS_OK;
for (i = 0; i < sizeof(struct UnkSaveSection); i++)
{
if (ProgramFlashByte(sector, i, gFastSaveSection->data[i]))
{
- status = 0xFF;
+ status = SAVE_STATUS_ERROR;
break;
}
}
- if (status == 0xFF)
+ if (status == SAVE_STATUS_ERROR)
{
- SetDamagedSectorBits(ENABLE, sector);
- return 0xFF;
+ SetSectorDamagedStatus(SECTOR_DAMAGED, sector);
+ return SAVE_STATUS_ERROR;
}
else
{
- status = 1;
+ status = SAVE_STATUS_OK;
for (i = 0; i < 7; i++)
{
if (ProgramFlashByte(sector, 0xFF9 + i, ((u8 *)gFastSaveSection)[0xFF9 + i]))
{
- status = 0xFF;
+ status = SAVE_STATUS_ERROR;
break;
}
}
- if (status == 0xFF)
+ if (status == SAVE_STATUS_ERROR)
{
- SetDamagedSectorBits(ENABLE, sector);
- return 0xFF;
+ SetSectorDamagedStatus(SECTOR_DAMAGED, sector);
+ return SAVE_STATUS_ERROR;
}
else
{
- SetDamagedSectorBits(DISABLE, sector);
- return 1;
+ SetSectorDamagedStatus(SECTOR_OK, sector);
+ return SAVE_STATUS_OK;
}
}
}
-u8 sub_8125758(u16 a1, const struct SaveSectionLocation *location)
+static u8 WriteSomeFlashByteToPrevSector(u16 a1, const struct SaveBlockChunk *chunk)
{
u16 sector;
- sector = a1 + gLastWrittenSector - 1;
- sector %= ARRAY_COUNT(gSaveSectionLocations);
- sector += ARRAY_COUNT(gSaveSectionLocations) * (gSaveCounter % 2);
+ // select sector number
+ sector = a1 + gFirstSaveSector - 1;
+ sector %= NUM_SECTORS_PER_SAVE_SLOT;
+ // select save slot
+ sector += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2);
if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), ((u8 *)gFastSaveSection)[sizeof(struct UnkSaveSection)]))
{
// sector is damaged, so enable the bit in gDamagedSaveSectors and restore the last written sector and save counter.
- SetDamagedSectorBits(ENABLE, sector);
- gLastWrittenSector = gLastKnownGoodSector;
- gSaveCounter = gLastSaveCounter;
- return 0xFF;
+ SetSectorDamagedStatus(SECTOR_DAMAGED, sector);
+ gFirstSaveSector = gLastKnownGoodSector;
+ gSaveCounter = gPrevSaveCounter;
+ return SAVE_STATUS_ERROR;
}
else
{
- SetDamagedSectorBits(DISABLE, sector);
- return 1;
+ SetSectorDamagedStatus(SECTOR_OK, sector);
+ return SAVE_STATUS_OK;
}
}
-u8 sub_81257F0(u16 a1, const struct SaveSectionLocation *location)
+static u8 WriteSomeFlashByte0x25ToPrevSector(u16 a1, const struct SaveBlockChunk *chunk)
{
u16 sector;
- sector = a1 + gLastWrittenSector - 1;
- sector %= ARRAY_COUNT(gSaveSectionLocations);
- sector += ARRAY_COUNT(gSaveSectionLocations) * (gSaveCounter % 2);
+ sector = a1 + gFirstSaveSector - 1;
+ sector %= NUM_SECTORS_PER_SAVE_SLOT;
+ sector += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2);
if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), 0x25))
{
// sector is damaged, so enable the bit in gDamagedSaveSectors and restore the last written sector and save counter.
- SetDamagedSectorBits(ENABLE, sector);
- gLastWrittenSector = gLastKnownGoodSector;
- gSaveCounter = gLastSaveCounter;
- return 0xFF;
+ SetSectorDamagedStatus(SECTOR_DAMAGED, sector);
+ gFirstSaveSector = gLastKnownGoodSector;
+ gSaveCounter = gPrevSaveCounter;
+ return SAVE_STATUS_ERROR;
}
else
{
- SetDamagedSectorBits(DISABLE, sector);
- return 1;
+ SetSectorDamagedStatus(SECTOR_OK, sector);
+ return SAVE_STATUS_OK;
}
}
-u8 sub_812587C(u16 a1, const struct SaveSectionLocation *location)
+static u8 sub_812587C(u16 a1, const struct SaveBlockChunk *chunk)
{
u8 retVal;
gFastSaveSection = eSaveSection;
if (a1 != 0xFFFF)
{
- retVal = 0xFF;
+ retVal = SAVE_STATUS_ERROR;
}
else
{
- retVal = GetSaveValidStatus(location);
- sub_81258BC(0xFFFF, location);
+ retVal = GetSaveValidStatus(chunk);
+ sub_81258BC(0xFFFF, chunk);
}
return retVal;
}
-u8 sub_81258BC(u16 a1, const struct SaveSectionLocation *location)
+static u8 sub_81258BC(u16 a1, const struct SaveBlockChunk *chunks)
{
u16 i;
u16 checksum;
- u16 v3 = ARRAY_COUNT(gSaveSectionLocations) * (gSaveCounter % 2);
+ u16 sector = NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2);
u16 id;
- for (i = 0; i < ARRAY_COUNT(gSaveSectionLocations); i++)
+ for (i = 0; i < NUM_SECTORS_PER_SAVE_SLOT; i++)
{
- DoReadFlashWholeSection(i + v3, gFastSaveSection);
+ DoReadFlashWholeSection(i + sector, gFastSaveSection);
id = gFastSaveSection->id;
if (id == 0)
- gLastWrittenSector = i;
- checksum = CalculateChecksum(gFastSaveSection->data, location[id].size);
- if (gFastSaveSection->security == UNKNOWN_CHECK_VALUE
+ gFirstSaveSector = i;
+ checksum = CalculateChecksum(gFastSaveSection->data, chunks[id].size);
+ if (gFastSaveSection->signature == FILE_SIGNATURE
&& gFastSaveSection->checksum == checksum)
{
u16 j;
- for (j = 0; j < location[id].size; j++)
- location[id].data[j] = gFastSaveSection->data[j];
+ for (j = 0; j < chunks[id].size; j++)
+ chunks[id].data[j] = gFastSaveSection->data[j];
}
}
return 1;
}
-u8 GetSaveValidStatus(const struct SaveSectionLocation *location)
+static u8 GetSaveValidStatus(const struct SaveBlockChunk *chunks)
{
- u16 i;
+ u16 sector;
+ bool8 signatureValid;
u16 checksum;
- u32 saveSlot1Counter = 0;
- u32 saveSlot2Counter = 0;
- u32 slotCheckField = 0;
- bool8 securityPassed = FALSE;
- u8 saveSlot1Status;
- u8 saveSlot2Status;
+ u32 slot1saveCounter = 0;
+ u32 slot2saveCounter = 0;
+ u8 slot1Status;
+ u8 slot2Status;
+ u32 validSectors;
+ const u32 ALL_SECTORS = (1 << NUM_SECTORS_PER_SAVE_SLOT) - 1; // bitmask of all saveblock sectors
// check save slot 1.
- for (i = 0; i < ARRAY_COUNT(gSaveSectionLocations); i++)
+ validSectors = 0;
+ signatureValid = FALSE;
+ for (sector = 0; sector < NUM_SECTORS_PER_SAVE_SLOT; sector++)
{
- DoReadFlashWholeSection(i, gFastSaveSection);
- if (gFastSaveSection->security == UNKNOWN_CHECK_VALUE)
+ DoReadFlashWholeSection(sector, gFastSaveSection);
+ if (gFastSaveSection->signature == FILE_SIGNATURE)
{
- securityPassed = TRUE;
- checksum = CalculateChecksum(gFastSaveSection->data, location[gFastSaveSection->id].size);
+ signatureValid = TRUE;
+ checksum = CalculateChecksum(gFastSaveSection->data, chunks[gFastSaveSection->id].size);
if (gFastSaveSection->checksum == checksum)
{
- saveSlot1Counter = gFastSaveSection->counter;
- slotCheckField |= 1 << gFastSaveSection->id;
+ slot1saveCounter = gFastSaveSection->counter;
+ validSectors |= 1 << gFastSaveSection->id;
}
}
}
- if (securityPassed)
+ if (signatureValid)
{
- if (slotCheckField == GETVALIDSTATUSBITFIELD)
- saveSlot1Status = 1;
+ if (validSectors == ALL_SECTORS)
+ slot1Status = SAVE_STATUS_OK;
else
- saveSlot1Status = 255;
+ slot1Status = SAVE_STATUS_ERROR;
}
else
{
- saveSlot1Status = 0;
+ slot1Status = SAVE_STATUS_EMPTY;
}
- slotCheckField = 0;
- securityPassed = FALSE;
-
// check save slot 2.
- for (i = 0; i < ARRAY_COUNT(gSaveSectionLocations); i++)
+ validSectors = 0;
+ signatureValid = FALSE;
+ for (sector = 0; sector < NUM_SECTORS_PER_SAVE_SLOT; sector++)
{
- DoReadFlashWholeSection(i + ARRAY_COUNT(gSaveSectionLocations), gFastSaveSection);
- if (gFastSaveSection->security == UNKNOWN_CHECK_VALUE)
+ DoReadFlashWholeSection(NUM_SECTORS_PER_SAVE_SLOT + sector, gFastSaveSection);
+ if (gFastSaveSection->signature == FILE_SIGNATURE)
{
- securityPassed = TRUE;
- checksum = CalculateChecksum(gFastSaveSection->data, location[gFastSaveSection->id].size);
+ signatureValid = TRUE;
+ checksum = CalculateChecksum(gFastSaveSection->data, chunks[gFastSaveSection->id].size);
if (gFastSaveSection->checksum == checksum)
{
- saveSlot2Counter = gFastSaveSection->counter;
- slotCheckField |= 1 << gFastSaveSection->id;
+ slot2saveCounter = gFastSaveSection->counter;
+ validSectors |= 1 << gFastSaveSection->id;
}
}
}
- if (securityPassed)
+ if (signatureValid)
{
- if (slotCheckField == GETVALIDSTATUSBITFIELD)
- saveSlot2Status = 1;
+ if (validSectors == ALL_SECTORS)
+ slot2Status = SAVE_STATUS_OK;
else
- saveSlot2Status = 255;
+ slot2Status = SAVE_STATUS_ERROR;
}
else
{
- saveSlot2Status = 0;
+ slot2Status = SAVE_STATUS_EMPTY;
}
- if (saveSlot1Status == 1 && saveSlot2Status == 1)
+ if (slot1Status == SAVE_STATUS_OK && slot2Status == SAVE_STATUS_OK)
{
- if ((saveSlot1Counter == -1 && saveSlot2Counter == 0) || (saveSlot1Counter == 0 && saveSlot2Counter == -1))
+ // Choose counter of the most recent save file
+ if ((slot1saveCounter == -1 && slot2saveCounter == 0) || (slot1saveCounter == 0 && slot2saveCounter == -1))
{
- if ((unsigned)(saveSlot1Counter + 1) < (unsigned)(saveSlot2Counter + 1))
- {
- gSaveCounter = saveSlot2Counter;
- }
+ if ((unsigned)(slot1saveCounter + 1) < (unsigned)(slot2saveCounter + 1))
+ gSaveCounter = slot2saveCounter;
else
- {
- gSaveCounter = saveSlot1Counter;
- }
+ gSaveCounter = slot1saveCounter;
}
else
{
- if (saveSlot1Counter < saveSlot2Counter)
- {
- gSaveCounter = saveSlot2Counter;
- }
+ if (slot1saveCounter < slot2saveCounter)
+ gSaveCounter = slot2saveCounter;
else
- {
- gSaveCounter = saveSlot1Counter;
- }
+ gSaveCounter = slot1saveCounter;
}
- return 1;
+ return SAVE_STATUS_OK;
}
- if (saveSlot1Status == 1)
+ if (slot1Status == SAVE_STATUS_OK)
{
- gSaveCounter = saveSlot1Counter;
- if (saveSlot2Status == 255)
- return 255;
- return 1;
+ gSaveCounter = slot1saveCounter;
+ if (slot2Status == SAVE_STATUS_ERROR)
+ return SAVE_STATUS_ERROR;
+ else
+ return SAVE_STATUS_OK;
}
- if (saveSlot2Status == 1)
+ if (slot2Status == SAVE_STATUS_OK)
{
- gSaveCounter = saveSlot2Counter;
- if (saveSlot1Status == 255)
- return 255;
- return 1;
+ gSaveCounter = slot2saveCounter;
+ if (slot1Status == SAVE_STATUS_ERROR)
+ return SAVE_STATUS_ERROR;
+ else
+ return SAVE_STATUS_OK;
}
- if (saveSlot1Status == 0 && saveSlot2Status == 0)
+ if (slot1Status == SAVE_STATUS_EMPTY && slot2Status == SAVE_STATUS_EMPTY)
{
gSaveCounter = 0;
- gLastWrittenSector = 0;
- return 0;
+ gFirstSaveSector = 0;
+ return SAVE_STATUS_EMPTY;
}
gSaveCounter = 0;
- gLastWrittenSector = 0;
+ gFirstSaveSector = 0;
return 2;
}
-u8 sub_8125B88(u8 a1, u8 *data, u16 size)
+static u8 ReadSomeUnknownSectorAndVerify(u8 sector, u8 *data, u16 size)
{
u16 i;
- struct SaveSection *section = eSaveSection;
- DoReadFlashWholeSection(a1, section);
- if (section->security == UNKNOWN_CHECK_VALUE)
+ struct SaveSector *section = eSaveSection;
+
+ DoReadFlashWholeSection(sector, section);
+ if (section->signature == FILE_SIGNATURE)
{
u16 checksum = CalculateChecksum(section->data, size);
if (section->id == checksum)
{
for (i = 0; i < size; i++)
data[i] = section->data[i];
- return 1;
+ return SAVE_STATUS_OK;
}
else
{
@@ -553,17 +642,17 @@ u8 sub_8125B88(u8 a1, u8 *data, u16 size)
}
else
{
- return 0;
+ return SAVE_STATUS_EMPTY;
}
}
-u8 DoReadFlashWholeSection(u8 sector, struct SaveSection *section)
+static u8 DoReadFlashWholeSection(u8 sector, struct SaveSector *section)
{
- ReadFlash(sector, 0, section->data, sizeof(struct SaveSection));
+ ReadFlash(sector, 0, section->data, sizeof(struct SaveSector));
return 1;
}
-u16 CalculateChecksum(void *data, u16 size)
+static u16 CalculateChecksum(void *data, u16 size)
{
u16 i;
u32 checksum = 0;
@@ -574,55 +663,60 @@ u16 CalculateChecksum(void *data, u16 size)
return ((checksum >> 16) + checksum);
}
-u8 HandleSavingData(u8 saveType)
+u8 Save_WriteDataInternal(u8 saveType)
{
u8 i;
+
switch (saveType)
{
- case HOF_DELETE_SAVE: // deletes HOF before overwriting HOF completely. unused
- for (i = (ARRAY_COUNT(gSaveSectionLocations) * 2 + 0); i < TOTALNUMSECTORS; i++)
+ case SAVE_HALL_OF_FAME_ERASE_BEFORE: // wipes all hall of fame data, then saves hall of fame. unused
+ for (i = HALL_OF_FAME_SECTOR; i < TOTAL_FLASH_SECTORS; i++)
EraseFlashSector(i);
- case HOF_SAVE: // hall of fame.
+ // fall through
+ case SAVE_HALL_OF_FAME: // hall of fame.
if (GetGameStat(10) < 999)
IncrementGameStat(10);
- for (i = 0; i < ARRAY_COUNT(gHallOfFameSaveSectionLocations); i++)
- HandleWriteSectorNBytes((ARRAY_COUNT(gSaveSectionLocations) * 2 + 0) + i, gHallOfFameSaveSectionLocations[i].data, gHallOfFameSaveSectionLocations[i].size);
+ for (i = 0; i < NUM_HALL_OF_FAME_SECTORS; i++)
+ HandleWriteSectorNBytes(HALL_OF_FAME_SECTOR + i, sHallOfFameChunks[i].data, sHallOfFameChunks[i].size);
SaveSerializedGame();
- save_write_to_flash(0xFFFF, gSaveSectionLocations);
+ WriteSaveBlockChunks(0xFFFF, sSaveBlockChunks);
break;
- case NORMAL_SAVE: // normal save. also called by overwriting your own save.
+ case SAVE_NORMAL: // normal save. also called by overwriting your own save.
default:
SaveSerializedGame();
- save_write_to_flash(0xFFFF, gSaveSectionLocations);
+ WriteSaveBlockChunks(0xFFFF, sSaveBlockChunks);
break;
- case LINK_SAVE: // link save. updates only gSaveBlock1 and gSaveBlock2.
+ case SAVE_LINK: // link save. updates only gSaveBlock1 and gSaveBlock2.
SaveSerializedGame();
for (i = 0; i < 5; i++)
- save_write_to_flash(i, gSaveSectionLocations);
+ WriteSaveBlockChunks(i, sSaveBlockChunks);
break;
- case EREADER_SAVE: // used in mossdeep "game corner" before/after battling old man e-reader trainer
+ case SAVE_EREADER: // used in mossdeep "game corner" before/after battling old man e-reader trainer
SaveSerializedGame();
- save_write_to_flash(0, gSaveSectionLocations);
+ WriteSaveBlockChunks(0, sSaveBlockChunks);
break;
- case DIFFERENT_FILE_SAVE: // there is a different file, so erase the file and overwrite it completely.
- for (i = (ARRAY_COUNT(gSaveSectionLocations) * 2 + 0); i < TOTALNUMSECTORS; i++)
- EraseFlashSector(i); // erase HOF.
+ case SAVE_OVERWRITE_DIFFERENT_FILE: // there is a different file, so overwrite it completely.
+ // Erase Hall of Fame.
+ for (i = HALL_OF_FAME_SECTOR; i < TOTAL_FLASH_SECTORS; i++)
+ EraseFlashSector(i);
SaveSerializedGame();
- save_write_to_flash(0xFFFF, gSaveSectionLocations);
+ WriteSaveBlockChunks(0xFFFF, sSaveBlockChunks);
break;
}
return 0;
}
-u8 TrySavingData(u8 saveType) // TrySave
+u8 Save_WriteData(u8 saveType) // TrySave
{
if (gFlashMemoryPresent != TRUE)
- return 0xFF;
- HandleSavingData(saveType);
+ return SAVE_STATUS_ERROR;
+
+ Save_WriteDataInternal(saveType);
if (!gDamagedSaveSectors)
- return 1;
+ return SAVE_STATUS_OK;
+
DoSaveFailedScreen(saveType);
- return 0xFF;
+ return SAVE_STATUS_ERROR;
}
u8 sub_8125D80(void) // trade.s save
@@ -630,16 +724,16 @@ u8 sub_8125D80(void) // trade.s save
if (gFlashMemoryPresent != TRUE)
return 1;
SaveSerializedGame();
- RestoreSaveBackupVarsAndIncrement(gSaveSectionLocations);
+ RestoreSaveBackupVarsAndIncrement(sSaveBlockChunks);
return 0;
}
bool8 sub_8125DA8(void) // trade.s save
{
- u8 retVal = sub_812550C(ARRAY_COUNT(gSaveSectionLocations), gSaveSectionLocations);
+ u8 retVal = sub_812550C(ARRAY_COUNT(sSaveBlockChunks), sSaveBlockChunks);
if (gDamagedSaveSectors)
DoSaveFailedScreen(0);
- if (retVal == 0xFF)
+ if (retVal == SAVE_STATUS_ERROR)
return 1;
else
return 0;
@@ -647,7 +741,7 @@ bool8 sub_8125DA8(void) // trade.s save
u8 sub_8125DDC(void) // trade.s save
{
- sub_812556C(ARRAY_COUNT(gSaveSectionLocations), gSaveSectionLocations);
+ sub_812556C(ARRAY_COUNT(sSaveBlockChunks), sSaveBlockChunks);
if (gDamagedSaveSectors)
DoSaveFailedScreen(0);
return 0;
@@ -655,7 +749,7 @@ u8 sub_8125DDC(void) // trade.s save
u8 sub_8125E04(void) // trade.s save
{
- sub_8125758(ARRAY_COUNT(gSaveSectionLocations), gSaveSectionLocations);
+ WriteSomeFlashByteToPrevSector(ARRAY_COUNT(sSaveBlockChunks), sSaveBlockChunks);
if (gDamagedSaveSectors)
DoSaveFailedScreen(0);
return 0;
@@ -667,23 +761,24 @@ u8 sub_8125E2C(void)
return 1;
SaveSerializedGame();
- RestoreSaveBackupVars(gSaveSectionLocations);
- sub_812556C(gUnknown_03005EB4 + 1, gSaveSectionLocations);
+ RestoreSaveBackupVars(sSaveBlockChunks);
+ sub_812556C(gUnknown_03005EB4 + 1, sSaveBlockChunks);
return 0;
}
+// something to do with multiplayer. Possibly record mizing?
bool8 sub_8125E6C(void)
{
u8 retVal = FALSE;
u16 val = ++gUnknown_03005EB4;
if (val <= 4)
{
- sub_812556C(gUnknown_03005EB4 + 1, gSaveSectionLocations);
- sub_81257F0(val, gSaveSectionLocations);
+ sub_812556C(gUnknown_03005EB4 + 1, sSaveBlockChunks);
+ WriteSomeFlashByte0x25ToPrevSector(val, sSaveBlockChunks);
}
else
{
- sub_81257F0(val, gSaveSectionLocations);
+ WriteSomeFlashByte0x25ToPrevSector(val, sSaveBlockChunks);
retVal = TRUE;
}
if (gDamagedSaveSectors)
@@ -691,46 +786,48 @@ bool8 sub_8125E6C(void)
return retVal;
}
-u8 sub_8125EC8(u8 a1)
+u8 Save_LoadGameData(u8 saveType)
{
u8 result;
if (gFlashMemoryPresent != TRUE)
{
- gSaveFileStatus = 4;
- return 0xFF;
+ gSaveFileStatus = SAVE_STATUS_NO_FLASH;
+ return SAVE_STATUS_ERROR;
}
- switch (a1)
+ switch (saveType)
{
- case 0:
+ case SAVE_NORMAL:
default:
- result = sub_812587C(0xFFFF, gSaveSectionLocations);
+ result = sub_812587C(0xFFFF, sSaveBlockChunks);
LoadSerializedGame();
gSaveFileStatus = result;
gGameContinueCallback = 0;
break;
- case 3:
- result = sub_8125B88((ARRAY_COUNT(gSaveSectionLocations) * 2 + 0), gHallOfFameSaveSectionLocations[0].data, gHallOfFameSaveSectionLocations[0].size);
- if (result == 1)
- result = sub_8125B88((ARRAY_COUNT(gSaveSectionLocations) * 2 + 1), gHallOfFameSaveSectionLocations[1].data, gHallOfFameSaveSectionLocations[1].size);
+ case SAVE_HALL_OF_FAME:
+ result = ReadSomeUnknownSectorAndVerify(HALL_OF_FAME_SECTOR, sHallOfFameChunks[0].data, sHallOfFameChunks[0].size);
+ if (result == SAVE_STATUS_OK)
+ result = ReadSomeUnknownSectorAndVerify(HALL_OF_FAME_SECTOR + 1, sHallOfFameChunks[1].data, sHallOfFameChunks[1].size);
break;
}
return result;
}
+static const u8 sUnusedFlashSectors[] = { 30, 31 };
+
bool8 unref_sub_8125F4C(struct UnkSaveSection *a1)
{
u16 i;
char *raw = (char *)a1;
- for (i = 0; i < sizeof(struct SaveSection); i++)
+ for (i = 0; i < sizeof(struct SaveSector); i++)
raw[i] = 0;
- ReadFlash(gFlashSectors[0], 0, a1->data, 4096);
+ ReadFlash(sUnusedFlashSectors[0], 0, a1->data, 4096);
- if (a1->security != UNKNOWN_CHECK_VALUE)
+ if (a1->signature != FILE_SIGNATURE)
return FALSE;
return TRUE;
@@ -739,22 +836,22 @@ bool8 unref_sub_8125F4C(struct UnkSaveSection *a1)
u8 unref_sub_8125FA0(void)
{
u16 i;
- u8 v0 = TrySavingData(0);
+ u8 status = Save_WriteData(SAVE_NORMAL);
for (i = 0; i < 2; i++)
- EraseFlashSector(gFlashSectors[i]);
+ EraseFlashSector(sUnusedFlashSectors[i]);
- if (v0 == 255)
+ if (status == SAVE_STATUS_ERROR)
{
return 3;
}
- else if (v0 == 3)
+ else if (status == 3)
{
return 2;
}
else
{
- sub_8125EC8(0);
+ Save_LoadGameData(SAVE_NORMAL);
return 1;
}
}
@@ -764,32 +861,32 @@ u8 unref_sub_8125FF0(u8 *data, u16 size)
u16 i;
struct UnkSaveSection *section = (struct UnkSaveSection *)eSaveSection;
- for (i = 0; i < sizeof(struct SaveSection); i++)
+ for (i = 0; i < sizeof(struct SaveSector); i++)
((char *)section)[i] = 0;
- section->security = UNKNOWN_CHECK_VALUE;
+ section->signature = FILE_SIGNATURE;
for (i = 0; i < size; i++)
section->data[i] = data[i];
- gLastSaveSectorStatus = ProgramFlashSectorAndVerifyNBytes(gFlashSectors[0], section, sizeof(struct SaveSection));
+ gLastSaveSectorStatus = ProgramFlashSectorAndVerifyNBytes(sUnusedFlashSectors[0], section, sizeof(struct SaveSector));
if (gLastSaveSectorStatus)
- return 0xFF;
+ return SAVE_STATUS_ERROR;
else
- return 1;
+ return SAVE_STATUS_OK;
}
u8 unref_sub_8126068(u8 sector, u8 *data, u32 size)
{
if (ProgramFlashSectorAndVerify(sector, data))
- return 255;
+ return SAVE_STATUS_ERROR;
else
- return 1;
+ return SAVE_STATUS_OK;
}
u8 unref_sub_8126080(u8 sector, u8 *data)
{
- ReadFlash(sector, 0, data, sizeof(struct SaveSection));
+ ReadFlash(sector, 0, data, sizeof(struct SaveSector));
return 1;
}
diff --git a/src/engine/save_failed_screen.c b/src/engine/save_failed_screen.c
index 64b84a2f7..74a1e9612 100644
--- a/src/engine/save_failed_screen.c
+++ b/src/engine/save_failed_screen.c
@@ -166,7 +166,7 @@ static void CB2_WipeSave(void)
Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19);
Menu_PrintText(gSystemText_CheckCompleteSaveAttempt, 2, MSG_WIN_TOP + 1);
- HandleSavingData(gSaveFailedType);
+ Save_WriteDataInternal(gSaveFailedType);
if (gDamagedSaveSectors != 0)
{
diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c
index 11c05e478..ab2a818a7 100644
--- a/src/field/battle_tower.c
+++ b/src/field/battle_tower.c
@@ -1895,7 +1895,7 @@ void SaveBattleTowerProgress(void)
VarSet(VAR_TEMP_0, 0);
gSaveBlock2.battleTower.unk_554 = 1;
- TrySavingData(EREADER_SAVE);
+ Save_WriteData(SAVE_EREADER);
}
void BattleTower_SoftReset(void)
diff --git a/src/field/daycare.c b/src/field/daycare.c
index 7e4530906..36dd7ec03 100644
--- a/src/field/daycare.c
+++ b/src/field/daycare.c
@@ -557,7 +557,7 @@ void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, struct BoxP
{
for (j = 0; j < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; j++)
{
- if (gHatchedEggFatherMoves[i] == ItemIdToBattleMoveId(ITEM_TM01 + j) && CanMonLearnTMHM(egg, j))
+ if (gHatchedEggFatherMoves[i] == ItemIdToBattleMoveId(ITEM_TM01_FOCUS_PUNCH + j) && CanMonLearnTMHM(egg, j))
{
if (GiveMoveToMon(egg, gHatchedEggFatherMoves[i]) == 0xffff)
DeleteFirstMoveAndGiveMoveToMon(egg, gHatchedEggFatherMoves[i]);
diff --git a/src/field/item_use.c b/src/field/item_use.c
index bd76db77e..55fb21814 100644
--- a/src/field/item_use.c
+++ b/src/field/item_use.c
@@ -877,7 +877,7 @@ void ItemUseOutOfBattle_TMHM(u8 taskId)
{
Menu_EraseWindowRect(0, 0xD, 0xD, 0x14);
- if (gSpecialVar_ItemId >= ITEM_HM01)
+ if (gSpecialVar_ItemId >= ITEM_HM01_CUT)
DisplayItemMessageOnField(taskId, gOtherText_BootedHM, sub_80C9EE4, 1); // HM
else
DisplayItemMessageOnField(taskId, gOtherText_BootedTM, sub_80C9EE4, 1); // TM
diff --git a/src/field/party_menu.c b/src/field/party_menu.c
index 7d243f569..48275435e 100644
--- a/src/field/party_menu.c
+++ b/src/field/party_menu.c
@@ -3998,7 +3998,7 @@ void Task_ConfirmTakeHeldMail(u8 taskId)
u16 ItemIdToBattleMoveId(u16 item)
{
- u16 machineNumber = item - ITEM_TM01;
+ u16 machineNumber = item - ITEM_TM01_FOCUS_PUNCH;
return TMHMMoves[machineNumber];
}
diff --git a/src/field/player_pc.c b/src/field/player_pc.c
index 0d5c5234b..1d504586c 100644
--- a/src/field/player_pc.c
+++ b/src/field/player_pc.c
@@ -853,7 +853,7 @@ static void ItemStorage_DrawTMHMEntry(struct ItemSlot *itemSlot, u8 var, int var
{
ItemStorage_DrawItemName(itemSlot, var, var2);
- if(itemSlot->itemId < ITEM_HM01)
+ if(itemSlot->itemId < ITEM_HM01_CUT)
ItemStorage_DrawItemQuantity(itemSlot->quantity, STR_CONV_MODE_RIGHT_ALIGN, var, 3, var2);
else
ItemStorage_DrawItemVoidQuantity(var); // HMs do not have a quantity.
diff --git a/src/field/start_menu.c b/src/field/start_menu.c
index 2f6f1e7dd..87597eb6a 100644
--- a/src/field/start_menu.c
+++ b/src/field/start_menu.c
@@ -664,20 +664,20 @@ static u8 SaveDialogCB_DisplaySavingMessage(void)
static u8 SaveDialogCB_DoSave(void)
{
- bool8 saveSucceeded;
+ u8 saveStatus;
IncrementGameStat(0);
if (gDifferentSaveFile == TRUE)
{
- saveSucceeded = TrySavingData(DIFFERENT_FILE_SAVE);
+ saveStatus = Save_WriteData(SAVE_OVERWRITE_DIFFERENT_FILE);
gDifferentSaveFile = FALSE;
}
else
{
- saveSucceeded = TrySavingData(NORMAL_SAVE);
+ saveStatus = Save_WriteData(SAVE_NORMAL);
}
- if (saveSucceeded == TRUE)
+ if (saveStatus == SAVE_STATUS_OK)
{
//"(Player) saved the game."
DisplaySaveMessageWithCallback(gSaveText_PlayerSavedTheGame, SaveDialogCB_SaveSuccess);
diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c
index 303dcf3e0..a9532fd09 100644
--- a/src/scene/hall_of_fame.c
+++ b/src/scene/hall_of_fame.c
@@ -539,7 +539,7 @@ static void sub_814217C(u8 taskID)
ewram1E000(i) = 0;
}
else
- sub_8125EC8(3);
+ Save_LoadGameData(SAVE_HALL_OF_FAME);
for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, lastSavedTeam++)
{
@@ -566,7 +566,7 @@ static void sub_814217C(u8 taskID)
static void sub_8142274(u8 taskID)
{
gGameContinueCallback = sub_8141FC4;
- TrySavingData(3);
+ Save_WriteData(3);
PlaySE(SE_SAVE);
gTasks[taskID].func = sub_81422B8;
gTasks[taskID].tFrameCount = 32;
@@ -840,7 +840,7 @@ void sub_81428CC(void)
static void sub_8142A28(u8 taskID)
{
- if (sub_8125EC8(3) != 1)
+ if (Save_LoadGameData(SAVE_HALL_OF_FAME) != SAVE_STATUS_OK)
gTasks[taskID].func = sub_8142FEC;
else
{
diff --git a/src/scene/intro.c b/src/scene/intro.c
index d7d772a40..f7e196133 100644
--- a/src/scene/intro.c
+++ b/src/scene/intro.c
@@ -930,8 +930,8 @@ void CB2_InitCopyrightScreenAfterBootup(void)
if (!SetUpCopyrightScreen())
{
sub_8052E4C();
- ResetSaveCounters();
- sub_8125EC8(0);
+ Save_ResetSaveCounters();
+ Save_LoadGameData(SAVE_NORMAL);
if (gSaveFileStatus == 0 || gSaveFileStatus == 2)
ClearSav2();
SetPokemonCryStereo(gSaveBlock2.optionsSound);
diff --git a/sym_ewram.txt b/sym_ewram.txt
index dcbadf96e..b9c08aac6 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -447,17 +447,7 @@ gUnknown_0203856C: @ 203856C
.space 0x4
gContestMons: @ 2038570
- .space 0xD
-
-gUnknown_0203857D: @ 203857D
- .space 0x11
-
- @ contest move space
-gUnknown_0203858E: @ 203858E
- .space 0x8
-
-gUnknown_02038596: @ 2038596
- .space 0xDA
+ .space 0x100
gUnknown_02038670: @ 2038670
.space 0x8