summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/naming_screen.s1290
-rw-r--r--constants/map_constants.inc1
-rw-r--r--data/battle_setup.s77
-rw-r--r--data/berries.inc689
-rw-r--r--data/berry.s14
-rw-r--r--data/clock_hand_coords.inc361
-rw-r--r--data/contest_painting.s102
-rw-r--r--data/credits.s6
-rw-r--r--data/heal_location.s29
-rw-r--r--data/intro.s514
-rw-r--r--data/naming_screen.s107
-rw-r--r--data/starter_choose.s173
-rw-r--r--data/text/berry_descriptions.inc257
-rw-r--r--data/title_screen.s215
-rw-r--r--data/trainer_eye_trainers.inc58
-rw-r--r--data/wallclock.s86
-rw-r--r--data/wild_mons.inc3101
-rw-r--r--graphics/intro/unknown1.pal19
-rw-r--r--graphics/intro/unknown2.pal19
-rw-r--r--include/asm.h26
-rw-r--r--include/asm.inc.h2
-rw-r--r--include/battle.h50
-rw-r--r--include/berry.h12
-rw-r--r--include/gba/io_reg.h32
-rw-r--r--include/global.berry.h6
-rw-r--r--include/global.fieldmap.h28
-rw-r--r--include/heal_location.h8
-rw-r--r--include/libgncmultiboot.h4
-rw-r--r--include/map_constants.h1098
-rw-r--r--include/menu.h2
-rw-r--r--include/opponent_constants.h702
-rw-r--r--include/pokedex.h88
-rw-r--r--include/save.h18
-rw-r--r--include/species.h880
-rw-r--r--include/sprite.h37
-rw-r--r--include/starter_choose.h4
-rw-r--r--include/text_window.h4
-rw-r--r--include/trainer_card.h48
-rw-r--r--include/wallclock.h5
-rw-r--r--ld_script.txt19
-rw-r--r--src/battle_setup.c398
-rw-r--r--src/berry.c791
-rw-r--r--src/berry_tag_screen.c310
-rw-r--r--src/calculate_base_damage.c2080
-rw-r--r--src/contest_painting.c518
-rw-r--r--src/credits.c2004
-rw-r--r--src/decompress.c4
-rw-r--r--src/dewford_trend.c312
-rw-r--r--src/field_control_avatar.c4
-rw-r--r--src/heal_location.c33
-rw-r--r--src/intro.c1200
-rw-r--r--src/mail.c436
-rw-r--r--src/main_menu.c4
-rw-r--r--src/menu.c2
-rw-r--r--src/naming_screen.c1740
-rw-r--r--src/party_menu.c270
-rw-r--r--src/pokemon_2.c124
-rw-r--r--src/record_mixing.c282
-rw-r--r--src/rom4.c4
-rw-r--r--src/sprite.c120
-rw-r--r--src/start_menu.c2
-rw-r--r--src/starter_choose.c302
-rw-r--r--src/title_screen.c374
-rw-r--r--src/trainer_card.c1756
-rw-r--r--src/wallclock.c689
-rw-r--r--src/wild_encounter.c2889
-rw-r--r--tools/scaninc/Makefile2
-rw-r--r--tools/scaninc/c_file.cpp4
-rw-r--r--tools/scaninc/c_file.h4
69 files changed, 13965 insertions, 12884 deletions
diff --git a/asm/naming_screen.s b/asm/naming_screen.s
deleted file mode 100644
index a2da2caf4..000000000
--- a/asm/naming_screen.s
+++ /dev/null
@@ -1,1290 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80B7090
-sub_80B7090: @ 80B7090
- push {r4-r7,lr}
- bl sub_80B6F84
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, r5, 0
- ldr r0, _080B70C8 @ =0x02000000
- adds r0, 0x11
- adds r0, r5, r0
- ldrb r4, [r0]
- adds r6, r4, 0
- adds r0, r4, 0
- bl sub_80B7198
- lsls r0, 24
- cmp r0, 0
- beq _080B70D6
- adds r0, r4, 0
- bl sub_80B7264
- lsls r0, 24
- cmp r0, 0
- beq _080B70CC
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80B7370
- b _080B70F4
- .align 2, 0
-_080B70C8: .4byte 0x02000000
-_080B70CC:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80B73CC
- b _080B70F4
-_080B70D6:
- adds r0, r4, 0
- bl sub_80B71E4
- lsls r0, 24
- cmp r0, 0
- beq _080B70EC
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80B7474
- b _080B70F4
-_080B70EC:
- adds r0, r6, 0
- adds r1, r7, 0
- bl sub_80B72A4
-_080B70F4:
- bl sub_80B7960
- movs r0, 0x5
- bl PlaySE
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B7090
-
- thumb_func_start sub_80B7104
-sub_80B7104: @ 80B7104
- push {r4,r5,lr}
- bl sub_80B6F84
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080B7128 @ =0x02000000
- adds r0, 0x11
- adds r0, r5, r0
- ldrb r4, [r0]
- adds r0, r4, 0
- bl sub_80B720C
- lsls r0, 24
- cmp r0, 0
- bne _080B712C
- movs r0, 0
- b _080B7136
- .align 2, 0
-_080B7128: .4byte 0x02000000
-_080B712C:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80B72A4
- movs r0, 0x1
-_080B7136:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80B7104
-
- thumb_func_start sub_80B713C
-sub_80B713C: @ 80B713C
- push {r4,r5,lr}
- bl sub_80B6F84
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080B7160 @ =0x02000000
- adds r0, 0x11
- adds r0, r5, r0
- ldrb r4, [r0]
- adds r0, r4, 0
- bl sub_80B7264
- lsls r0, 24
- cmp r0, 0
- bne _080B7164
- movs r0, 0
- b _080B716E
- .align 2, 0
-_080B7160: .4byte 0x02000000
-_080B7164:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80B7370
- movs r0, 0x1
-_080B716E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80B713C
-
- thumb_func_start sub_80B7174
-sub_80B7174: @ 80B7174
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_80B6F44
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080B7194 @ =0x02000000
- adds r1, 0x11
- adds r0, r1
- strb r4, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7194: .4byte 0x02000000
- thumb_func_end sub_80B7174
-
- thumb_func_start sub_80B7198
-sub_80B7198: @ 80B7198
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xC9
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0x13
- bls _080B71DA
- adds r0, r1, 0
- adds r0, 0x79
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B71DA
- adds r0, r1, 0
- adds r0, 0x74
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B71DA
- adds r0, r1, 0
- adds r0, 0x6F
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B71DA
- adds r0, r1, 0
- adds r0, 0x6A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B71DE
-_080B71DA:
- movs r0, 0x1
- b _080B71E0
-_080B71DE:
- movs r0, 0
-_080B71E0:
- pop {r1}
- bx r1
- thumb_func_end sub_80B7198
-
- thumb_func_start sub_80B71E4
-sub_80B71E4: @ 80B71E4
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xB5
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B7202
- adds r0, r1, 0
- adds r0, 0x65
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B7206
-_080B7202:
- movs r0, 0x1
- b _080B7208
-_080B7206:
- movs r0, 0
-_080B7208:
- pop {r1}
- bx r1
- thumb_func_end sub_80B71E4
-
- thumb_func_start sub_80B720C
-sub_80B720C: @ 80B720C
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xFA
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0xE
- bls _080B725A
- adds r0, r1, 0
- subs r0, 0x1A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B725A
- adds r0, r1, 0
- subs r0, 0x4B
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B725A
- adds r0, r1, 0
- subs r0, 0x56
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xE
- bls _080B725A
- adds r0, r1, 0
- subs r0, 0x6A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B725A
- adds r0, r1, 0
- adds r0, 0x65
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B725E
-_080B725A:
- movs r0, 0x1
- b _080B7260
-_080B725E:
- movs r0, 0
-_080B7260:
- pop {r1}
- bx r1
- thumb_func_end sub_80B720C
-
- thumb_func_start sub_80B7264
-sub_80B7264: @ 80B7264
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xE6
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B729A
- adds r0, r1, 0
- subs r0, 0x46
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B729A
- adds r0, r1, 0
- subs r0, 0x6A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B729A
- adds r0, r1, 0
- adds r0, 0x6A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B729E
-_080B729A:
- movs r0, 0x1
- b _080B72A0
-_080B729E:
- movs r0, 0
-_080B72A0:
- pop {r1}
- bx r1
- thumb_func_end sub_80B7264
-
- thumb_func_start sub_80B72A4
-sub_80B72A4: @ 80B72A4
- push {lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsrs r2, r0, 24
- movs r3, 0xFA
- lsls r3, 24
- adds r0, r3
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B72C0
- adds r0, r2, 0
- adds r0, 0x31
- b _080B735A
-_080B72C0:
- adds r0, r2, 0
- subs r0, 0xB
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B72D2
- adds r0, r2, 0
- adds r0, 0x31
- b _080B735A
-_080B72D2:
- adds r0, r2, 0
- subs r0, 0x10
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B72E4
- adds r0, r2, 0
- adds r0, 0x31
- b _080B735A
-_080B72E4:
- adds r0, r2, 0
- subs r0, 0x1A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B72F6
- adds r0, r2, 0
- adds r0, 0x2C
- b _080B735A
-_080B72F6:
- adds r0, r2, 0
- subs r0, 0x4B
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B7356
- adds r0, r2, 0
- subs r0, 0x56
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B7314
- adds r0, r2, 0
- adds r0, 0x31
- b _080B735A
-_080B7314:
- adds r0, r2, 0
- subs r0, 0x5B
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B7326
- adds r0, r2, 0
- adds r0, 0x31
- b _080B735A
-_080B7326:
- adds r0, r2, 0
- subs r0, 0x60
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B7338
- adds r0, r2, 0
- adds r0, 0x31
- b _080B735A
-_080B7338:
- adds r0, r2, 0
- subs r0, 0x6A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B734A
- adds r0, r2, 0
- adds r0, 0x2C
- b _080B735A
-_080B734A:
- adds r0, r2, 0
- adds r0, 0x65
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B735E
-_080B7356:
- adds r0, r2, 0
- adds r0, 0xFB
-_080B735A:
- lsls r0, 24
- lsrs r2, r0, 24
-_080B735E:
- ldr r0, _080B736C @ =0x02000000
- adds r0, 0x11
- adds r0, r1, r0
- strb r2, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_080B736C: .4byte 0x02000000
- thumb_func_end sub_80B72A4
-
- thumb_func_start sub_80B7370
-sub_80B7370: @ 80B7370
- push {lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsrs r2, r0, 24
- movs r3, 0xE6
- lsls r3, 24
- adds r0, r3
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B738C
- adds r0, r2, 0
- adds r0, 0x31
- b _080B73B8
-_080B738C:
- adds r0, r2, 0
- subs r0, 0x46
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B73B6
- adds r0, r2, 0
- subs r0, 0x6A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B73AA
- adds r0, r2, 0
- adds r0, 0x31
- b _080B73B8
-_080B73AA:
- adds r0, r2, 0
- adds r0, 0x6A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B73BC
-_080B73B6:
- adds r0, r2, 0x5
-_080B73B8:
- lsls r0, 24
- lsrs r2, r0, 24
-_080B73BC:
- ldr r0, _080B73C8 @ =0x02000000
- adds r0, 0x11
- adds r0, r1, r0
- strb r2, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_080B73C8: .4byte 0x02000000
- thumb_func_end sub_80B7370
-
- thumb_func_start sub_80B73CC
-sub_80B73CC: @ 80B73CC
- push {lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsrs r2, r0, 24
- movs r3, 0xC9
- lsls r3, 24
- adds r0, r3
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B73E8
- adds r0, r2, 0
- adds r0, 0xCF
- b _080B745E
-_080B73E8:
- adds r0, r2, 0
- subs r0, 0x3C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B73FA
- adds r0, r2, 0
- adds r0, 0xCF
- b _080B745E
-_080B73FA:
- adds r0, r2, 0
- subs r0, 0x41
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B740C
- adds r0, r2, 0
- adds r0, 0xCF
- b _080B745E
-_080B740C:
- adds r0, r2, 0
- subs r0, 0x46
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B745A
- adds r0, r2, 0
- adds r0, 0x79
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B742A
- adds r0, r2, 0
- adds r0, 0xCF
- b _080B745E
-_080B742A:
- adds r0, r2, 0
- adds r0, 0x74
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B743C
- adds r0, r2, 0
- adds r0, 0xCF
- b _080B745E
-_080B743C:
- adds r0, r2, 0
- adds r0, 0x6F
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B744E
- adds r0, r2, 0
- adds r0, 0xCF
- b _080B745E
-_080B744E:
- adds r0, r2, 0
- adds r0, 0x6A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B7462
-_080B745A:
- adds r0, r2, 0
- adds r0, 0xD4
-_080B745E:
- lsls r0, 24
- lsrs r2, r0, 24
-_080B7462:
- ldr r0, _080B7470 @ =0x02000000
- adds r0, 0x11
- adds r0, r1, r0
- strb r2, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_080B7470: .4byte 0x02000000
- thumb_func_end sub_80B73CC
-
- thumb_func_start sub_80B7474
-sub_80B7474: @ 80B7474
- push {lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsrs r2, r0, 24
- movs r3, 0xB5
- lsls r3, 24
- adds r0, r3
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B7496
- adds r0, r2, 0
- adds r0, 0x65
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080B749E
-_080B7496:
- adds r0, r2, 0
- adds r0, 0xCF
- lsls r0, 24
- lsrs r2, r0, 24
-_080B749E:
- ldr r0, _080B74AC @ =0x02000000
- adds r0, 0x11
- adds r0, r1, r0
- strb r2, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_080B74AC: .4byte 0x02000000
- thumb_func_end sub_80B7474
-
- thumb_func_start sub_80B74B0
-sub_80B74B0: @ 80B74B0
- push {r4,lr}
- movs r1, 0
- ldr r3, _080B74E4 @ =0x02000000
- ldr r0, [r3, 0x34]
- ldrb r0, [r0, 0x1]
- cmp r1, r0
- bcs _080B74F6
- adds r2, r3, 0
- adds r4, r3, 0
- adds r4, 0x11
-_080B74C4:
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _080B74E8
- cmp r0, 0xFF
- beq _080B74E8
- ldr r0, [r2, 0x38]
- ldr r1, [r2, 0x34]
- ldrb r2, [r1, 0x1]
- adds r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- adds r1, r4, 0
- bl StringCopyN
- b _080B74F6
- .align 2, 0
-_080B74E4: .4byte 0x02000000
-_080B74E8:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, [r3, 0x34]
- ldrb r0, [r0, 0x1]
- cmp r1, r0
- bcc _080B74C4
-_080B74F6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B74B0
-
- thumb_func_start sub_80B74FC
-sub_80B74FC: @ 80B74FC
- push {r4,lr}
- ldr r0, _080B7528 @ =gStringVar1
- ldr r1, _080B752C @ =0x02000000
- ldr r1, [r1, 0x38]
- bl StringCopy
- ldr r4, _080B7530 @ =gStringVar4
- ldr r1, _080B7534 @ =gOtherText_SentToPC
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r0, _080B7538 @ =gWindowConfig_81E6E88
- bl BasicInitMenuWindow
- bl MenuDisplayMessageBox
- adds r0, r4, 0
- bl sub_8072044
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7528: .4byte gStringVar1
-_080B752C: .4byte 0x02000000
-_080B7530: .4byte gStringVar4
-_080B7534: .4byte gOtherText_SentToPC
-_080B7538: .4byte gWindowConfig_81E6E88
- thumb_func_end sub_80B74FC
-
- thumb_func_start sub_80B753C
-sub_80B753C: @ 80B753C
- push {lr}
- ldr r0, _080B7550 @ =gUnknown_083CE6A0
- bl LoadSpriteSheets
- ldr r0, _080B7554 @ =gUnknown_083CE708
- bl LoadSpritePalettes
- pop {r0}
- bx r0
- .align 2, 0
-_080B7550: .4byte gUnknown_083CE6A0
-_080B7554: .4byte gUnknown_083CE708
- thumb_func_end sub_80B753C
-
- thumb_func_start sub_80B7558
-sub_80B7558: @ 80B7558
- push {lr}
- bl sub_80B7568
- bl sub_80B75B0
- pop {r0}
- bx r0
- thumb_func_end sub_80B7558
-
- thumb_func_start sub_80B7568
-sub_80B7568: @ 80B7568
- push {r4,lr}
- ldr r4, _080B759C @ =gNamingScreenMenu_Gfx
- ldr r3, _080B75A0 @ =gMenuMessageBoxContentTileOffset
- ldrh r0, [r3]
- lsls r0, 5
- movs r1, 0xC0
- lsls r1, 19
- adds r0, r1
- ldr r1, _080B75A4 @ =0x040000d4
- str r4, [r1]
- str r0, [r1, 0x4]
- ldr r2, _080B75A8 @ =0x80000400
- str r2, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldrh r0, [r3]
- lsls r0, 5
- ldr r3, _080B75AC @ =0x06008000
- adds r0, r3
- str r4, [r1]
- str r0, [r1, 0x4]
- str r2, [r1, 0x8]
- ldr r0, [r1, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B759C: .4byte gNamingScreenMenu_Gfx
-_080B75A0: .4byte gMenuMessageBoxContentTileOffset
-_080B75A4: .4byte 0x040000d4
-_080B75A8: .4byte 0x80000400
-_080B75AC: .4byte 0x06008000
- thumb_func_end sub_80B7568
-
- thumb_func_start sub_80B75B0
-sub_80B75B0: @ 80B75B0
- push {lr}
- ldr r0, _080B75C0 @ =gNamingScreenPalettes
- movs r1, 0
- movs r2, 0x80
- bl LoadPalette
- pop {r0}
- bx r0
- .align 2, 0
-_080B75C0: .4byte gNamingScreenPalettes
- thumb_func_end sub_80B75B0
-
- thumb_func_start sub_80B75C4
-sub_80B75C4: @ 80B75C4
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r0, _080B7608 @ =gUnknown_083CE308
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- ldr r4, _080B760C @ =gUnknown_083CE2F0
- ldr r5, _080B7610 @ =0x02000000
- ldrb r1, [r5, 0xE]
- lsls r1, 3
- adds r1, r4
- ldrb r0, [r5, 0xC]
- lsls r0, 2
- add r0, sp
- ldr r0, [r0]
- ldr r1, [r1]
- bl _call_via_r1
- ldrb r1, [r5, 0xE]
- lsls r1, 3
- adds r4, 0x4
- adds r1, r4
- ldrb r0, [r5, 0xD]
- lsls r0, 2
- add r0, sp
- ldr r0, [r0]
- ldr r1, [r1]
- bl _call_via_r1
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7608: .4byte gUnknown_083CE308
-_080B760C: .4byte gUnknown_083CE2F0
-_080B7610: .4byte 0x02000000
- thumb_func_end sub_80B75C4
-
- thumb_func_start sub_80B7614
-sub_80B7614: @ 80B7614
- push {lr}
- sub sp, 0x8
- ldr r0, _080B7644 @ =gUnknown_083CE308
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- ldr r0, _080B7648 @ =gUnknown_083CE2F0
- ldr r2, _080B764C @ =0x02000000
- ldrb r1, [r2, 0xE]
- lsls r1, 3
- adds r0, 0x4
- adds r1, r0
- ldrb r0, [r2, 0xD]
- lsls r0, 2
- add r0, sp
- ldr r0, [r0]
- ldr r1, [r1]
- bl _call_via_r1
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_080B7644: .4byte gUnknown_083CE308
-_080B7648: .4byte gUnknown_083CE2F0
-_080B764C: .4byte 0x02000000
- thumb_func_end sub_80B7614
-
- thumb_func_start sub_80B7650
-sub_80B7650: @ 80B7650
- push {lr}
- ldr r1, _080B765C @ =gUnknown_083CE748
- bl sub_80B7698
- pop {r0}
- bx r0
- .align 2, 0
-_080B765C: .4byte gUnknown_083CE748
- thumb_func_end sub_80B7650
-
- thumb_func_start sub_80B7660
-sub_80B7660: @ 80B7660
- push {lr}
- ldr r1, _080B766C @ =gUnknown_083CEBF8
- bl sub_80B7698
- pop {r0}
- bx r0
- .align 2, 0
-_080B766C: .4byte gUnknown_083CEBF8
- thumb_func_end sub_80B7660
-
- thumb_func_start sub_80B7670
-sub_80B7670: @ 80B7670
- push {lr}
- ldr r1, _080B767C @ =gUnknown_083CF0A8
- bl sub_80B7698
- pop {r0}
- bx r0
- .align 2, 0
-_080B767C: .4byte gUnknown_083CF0A8
- thumb_func_end sub_80B7670
-
- thumb_func_start sub_80B7680
-sub_80B7680: @ 80B7680
- push {lr}
- ldr r0, _080B7690 @ =0x0600f000
- ldr r1, _080B7694 @ =gUnknown_08E86258
- bl sub_80B76E0
- pop {r0}
- bx r0
- .align 2, 0
-_080B7690: .4byte 0x0600f000
-_080B7694: .4byte gUnknown_08E86258
- thumb_func_end sub_80B7680
-
- thumb_func_start sub_80B7698
-sub_80B7698: @ 80B7698
- push {r4-r7,lr}
- mov r12, r0
- adds r3, r1, 0
- movs r4, 0
- ldr r0, _080B76DC @ =gMenuMessageBoxContentTileOffset
- ldrh r6, [r0]
-_080B76A4:
- movs r1, 0
- lsls r4, 16
- asrs r5, r4, 11
-_080B76AA:
- lsls r0, r1, 16
- asrs r0, 16
- adds r1, r5, r0
- lsls r1, 1
- add r1, r12
- ldrh r7, [r3]
- adds r2, r6, r7
- strh r2, [r1]
- adds r0, 0x1
- lsls r0, 16
- adds r3, 0x2
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, 0x1D
- ble _080B76AA
- movs r1, 0x80
- lsls r1, 9
- adds r0, r4, r1
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _080B76A4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B76DC: .4byte gMenuMessageBoxContentTileOffset
- thumb_func_end sub_80B7698
-
- thumb_func_start sub_80B76E0
-sub_80B76E0: @ 80B76E0
- push {r4-r7,lr}
- mov r12, r0
- adds r3, r1, 0
- movs r4, 0
- ldr r0, _080B7728 @ =gMenuMessageBoxContentTileOffset
- ldrh r6, [r0]
-_080B76EC:
- movs r1, 0
- lsls r5, r4, 16
- asrs r4, r5, 11
-_080B76F2:
- lsls r0, r1, 16
- asrs r0, 16
- adds r1, r4, r0
- lsls r1, 1
- add r1, r12
- ldrh r7, [r3]
- adds r2, r6, r7
- strh r2, [r1]
- adds r0, 0x1
- lsls r0, 16
- adds r3, 0x2
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, 0x1D
- ble _080B76F2
- adds r3, 0x4
- movs r1, 0x80
- lsls r1, 9
- adds r0, r5, r1
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _080B76EC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7728: .4byte gMenuMessageBoxContentTileOffset
- thumb_func_end sub_80B76E0
-
- thumb_func_start sub_80B772C
-sub_80B772C: @ 80B772C
- push {lr}
- ldr r1, _080B773C @ =0x02000000
- ldrb r0, [r1, 0xE]
- ldrb r1, [r1, 0xC]
- bl nullsub_20
- pop {r0}
- bx r0
- .align 2, 0
-_080B773C: .4byte 0x02000000
- thumb_func_end sub_80B772C
-
- thumb_func_start sub_80B7740
-sub_80B7740: @ 80B7740
- push {r4,lr}
- ldr r4, _080B7760 @ =0x02000000
- ldrb r0, [r4, 0xE]
- adds r0, 0x1
- movs r1, 0x3
- bl __modsi3
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r4, 0xD]
- bl nullsub_20
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7760: .4byte 0x02000000
- thumb_func_end sub_80B7740
-
- thumb_func_start nullsub_20
-nullsub_20: @ 80B7764
- bx lr
- thumb_func_end nullsub_20
-
- thumb_func_start sub_80B7768
-sub_80B7768: @ 80B7768
- ldr r3, _080B778C @ =gUnknown_083CE3A8
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- lsls r2, r1, 2
- adds r2, r1
- lsls r2, 2
- adds r0, r2
- ldr r1, _080B7790 @ =0x02000000
- ldrb r2, [r1, 0xE]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- adds r0, r1
- adds r0, r3
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080B778C: .4byte gUnknown_083CE3A8
-_080B7790: .4byte 0x02000000
- thumb_func_end sub_80B7768
-
- thumb_func_start sub_80B7794
-sub_80B7794: @ 80B7794
- push {r4-r6,lr}
- ldr r6, _080B77EC @ =gUnknown_083CE328
- ldr r4, _080B77F0 @ =0x02000000
- ldrb r0, [r4, 0xC]
- lsls r0, 2
- ldrb r1, [r4, 0xE]
- lsls r1, 4
- adds r0, r1
- adds r0, r6
- ldr r0, [r0]
- bl BasicInitMenuWindow
- ldr r5, _080B77F4 @ =gUnknown_083CE310
- ldrb r0, [r4, 0xE]
- lsls r0, 3
- adds r0, r5
- ldr r0, [r0]
- bl _call_via_r0
- ldrb r1, [r4, 0xD]
- lsls r1, 2
- ldrb r0, [r4, 0xE]
- lsls r0, 4
- adds r1, r0
- adds r6, 0x8
- adds r1, r6
- ldr r0, [r1]
- bl BasicInitMenuWindow
- ldrb r0, [r4, 0xE]
- lsls r0, 3
- adds r5, 0x4
- adds r0, r5
- ldr r0, [r0]
- bl _call_via_r0
- bl sub_80B772C
- bl sub_80B7740
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B77EC: .4byte gUnknown_083CE328
-_080B77F0: .4byte 0x02000000
-_080B77F4: .4byte gUnknown_083CE310
- thumb_func_end sub_80B7794
-
- thumb_func_start sub_80B77F8
-sub_80B77F8: @ 80B77F8
- push {r4,lr}
- ldr r2, _080B782C @ =gUnknown_083CE328
- ldr r4, _080B7830 @ =0x02000000
- ldrb r1, [r4, 0xD]
- lsls r1, 2
- ldrb r0, [r4, 0xE]
- lsls r0, 4
- adds r1, r0
- adds r2, 0x8
- adds r1, r2
- ldr r0, [r1]
- bl BasicInitMenuWindow
- ldr r1, _080B7834 @ =gUnknown_083CE310
- ldrb r0, [r4, 0xE]
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- bl sub_80B7740
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B782C: .4byte gUnknown_083CE328
-_080B7830: .4byte 0x02000000
-_080B7834: .4byte gUnknown_083CE310
- thumb_func_end sub_80B77F8
-
- thumb_func_start sub_80B7838
-sub_80B7838: @ 80B7838
- push {lr}
- movs r0, 0x1
- bl sub_80B785C
- pop {r0}
- bx r0
- thumb_func_end sub_80B7838
-
- thumb_func_start sub_80B7844
-sub_80B7844: @ 80B7844
- push {lr}
- movs r0, 0
- bl sub_80B785C
- pop {r0}
- bx r0
- thumb_func_end sub_80B7844
-
- thumb_func_start sub_80B7850
-sub_80B7850: @ 80B7850
- push {lr}
- movs r0, 0x2
- bl sub_80B785C
- pop {r0}
- bx r0
- thumb_func_end sub_80B7850
-
- thumb_func_start sub_80B785C
-sub_80B785C: @ 80B785C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0
- movs r5, 0x9
- lsls r1, r0, 2
- adds r1, r0
- lsls r6, r1, 4
-_080B786C:
- lsls r4, r2, 16
- asrs r4, 16
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 2
- ldr r1, _080B78A4 @ =gUnknown_083CE3A8
- adds r0, r1
- adds r0, r6, r0
- lsls r2, r5, 24
- lsrs r2, 24
- movs r1, 0x3
- bl MenuPrint
- adds r4, 0x1
- lsls r4, 16
- lsls r0, r5, 16
- movs r1, 0x80
- lsls r1, 10
- adds r0, r1
- lsrs r5, r0, 16
- lsrs r2, r4, 16
- asrs r4, 16
- cmp r4, 0x3
- ble _080B786C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B78A4: .4byte gUnknown_083CE3A8
- thumb_func_end sub_80B785C
-
- thumb_func_start sub_80B78A8
-sub_80B78A8: @ 80B78A8
- push {r4,lr}
- ldr r0, _080B78E4 @ =gWindowConfig_81E6F4C
- bl BasicInitMenuWindow
- ldr r1, _080B78E8 @ =gUnknown_083CE358
- ldr r4, _080B78EC @ =0x02000000
- ldrb r0, [r4, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- ldr r1, _080B78F0 @ =gUnknown_083CE368
- ldr r0, [r4, 0x34]
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- ldr r0, [r4, 0x34]
- ldr r0, [r0, 0x8]
- movs r1, 0x9
- movs r2, 0x2
- bl MenuPrint
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B78E4: .4byte gWindowConfig_81E6F4C
-_080B78E8: .4byte gUnknown_083CE358
-_080B78EC: .4byte 0x02000000
-_080B78F0: .4byte gUnknown_083CE368
- thumb_func_end sub_80B78A8
-
- thumb_func_start nullsub_61
-nullsub_61: @ 80B78F4
- bx lr
- thumb_func_end nullsub_61
-
- thumb_func_start sub_80B78F8
-sub_80B78F8: @ 80B78F8
- push {lr}
- ldr r0, _080B7914 @ =gStringVar1
- ldr r1, _080B7918 @ =0x02000000
- movs r3, 0x3E
- ldrsh r2, [r1, r3]
- movs r1, 0xB
- muls r1, r2
- ldr r2, _080B791C @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- pop {r0}
- bx r0
- .align 2, 0
-_080B7914: .4byte gStringVar1
-_080B7918: .4byte 0x02000000
-_080B791C: .4byte gSpeciesNames
- thumb_func_end sub_80B78F8
-
- thumb_func_start nullsub_62
-nullsub_62: @ 80B7920
- bx lr
- thumb_func_end nullsub_62
-
- thumb_func_start sub_80B7924
-sub_80B7924: @ 80B7924
- push {lr}
- sub sp, 0x4
- ldr r1, _080B7958 @ =gUnknown_083CE370
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- ldr r0, _080B795C @ =0x02000000
- adds r0, 0x40
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0xFF
- beq _080B7952
- cmp r0, 0xFE
- bne _080B7948
- mov r1, sp
- movs r0, 0xB6
- strb r0, [r1]
-_080B7948:
- mov r0, sp
- movs r1, 0x14
- movs r2, 0x4
- bl MenuPrint
-_080B7952:
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080B7958: .4byte gUnknown_083CE370
-_080B795C: .4byte 0x02000000
- thumb_func_end sub_80B7924
-
- thumb_func_start sub_80B7960
-sub_80B7960: @ 80B7960
- push {r4,lr}
- ldr r0, _080B799C @ =gStringVar1
- movs r2, 0xFC
- strb r2, [r0]
- movs r1, 0x14
- strb r1, [r0, 0x1]
- movs r1, 0x8
- strb r1, [r0, 0x2]
- strb r2, [r0, 0x3]
- movs r1, 0x11
- strb r1, [r0, 0x4]
- movs r1, 0x1
- strb r1, [r0, 0x5]
- adds r0, 0x6
- ldr r4, _080B79A0 @ =0x02000011
- adds r1, r4, 0
- bl StringCopy
- ldr r0, _080B79A4 @ =gWindowConfig_81E6F4C
- bl BasicInitMenuWindow
- ldr r0, _080B799C @ =gStringVar1
- subs r4, 0x11
- ldrb r1, [r4, 0x2]
- movs r2, 0x4
- bl MenuPrint
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B799C: .4byte gStringVar1
-_080B79A0: .4byte 0x02000011
-_080B79A4: .4byte gWindowConfig_81E6F4C
- thumb_func_end sub_80B7960
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/constants/map_constants.inc b/constants/map_constants.inc
index d7a8a323e..6d92c5e65 100644
--- a/constants/map_constants.inc
+++ b/constants/map_constants.inc
@@ -461,3 +461,4 @@
new_map_group
map_group Route124_DivingTreasureHuntersHouse @ 33.0
+
diff --git a/data/battle_setup.s b/data/battle_setup.s
deleted file mode 100644
index eb790edf4..000000000
--- a/data/battle_setup.s
+++ /dev/null
@@ -1,77 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gBattleTransitionTable_Wild:: @ 839ACF8
- .byte 8, 9, 5, 10, 0, 10, 7, 6
-
-gBattleTransitionTable_Trainer:: @ 839AD00
- .byte 4, 11, 2, 3, 0, 10, 1, 6
-
- .align 2
-gTrainerBattleSpecs_0:: @ 839AD08
- .4byte gTrainerBattleMode, 0
- .4byte gTrainerBattleOpponent, 1
- .4byte gTrainerMapObjectLocalId, 1
- .4byte gTrainerIntroSpeech, 2
- .4byte gTrainerDefeatSpeech, 2
- .4byte gTrainerVictorySpeech, 5
- .4byte gTrainerCannotBattleSpeech, 5
- .4byte gTrainerBattleEndScript, 5
- .4byte gTrainerBattleScriptReturnAddress, 6
-
- .align 2
-gTrainerBattleSpecs_1:: @ 839AD50
- .4byte gTrainerBattleMode, 0
- .4byte gTrainerBattleOpponent, 1
- .4byte gTrainerMapObjectLocalId, 1
- .4byte gTrainerIntroSpeech, 2
- .4byte gTrainerDefeatSpeech, 2
- .4byte gTrainerVictorySpeech, 5
- .4byte gTrainerCannotBattleSpeech, 5
- .4byte gTrainerBattleEndScript, 2
- .4byte gTrainerBattleScriptReturnAddress, 6
-
- .align 2
-gTrainerBattleSpecs_2:: @ 839AD98
- .4byte gTrainerBattleMode, 0
- .4byte gTrainerBattleOpponent, 1
- .4byte gTrainerMapObjectLocalId, 1
- .4byte gTrainerIntroSpeech, 2
- .4byte gTrainerDefeatSpeech, 2
- .4byte gTrainerVictorySpeech, 5
- .4byte gTrainerCannotBattleSpeech, 2
- .4byte gTrainerBattleEndScript, 5
- .4byte gTrainerBattleScriptReturnAddress, 6
-
- .align 2
-gTrainerBattleSpecs_3:: @ 839ADE0
- .4byte gTrainerBattleMode, 0
- .4byte gTrainerBattleOpponent, 1
- .4byte gTrainerMapObjectLocalId, 1
- .4byte gTrainerIntroSpeech, 5
- .4byte gTrainerDefeatSpeech, 2
- .4byte gTrainerVictorySpeech, 5
- .4byte gTrainerCannotBattleSpeech, 5
- .4byte gTrainerBattleEndScript, 5
- .4byte gTrainerBattleScriptReturnAddress, 6
-
- .align 2
-gTrainerBattleSpecs_4:: @ 839AE28
- .4byte gTrainerBattleMode, 0
- .4byte gTrainerBattleOpponent, 1
- .4byte gTrainerMapObjectLocalId, 1
- .4byte gTrainerIntroSpeech, 2
- .4byte gTrainerDefeatSpeech, 2
- .4byte gTrainerVictorySpeech, 5
- .4byte gTrainerCannotBattleSpeech, 2
- .4byte gTrainerBattleEndScript, 2
- .4byte gTrainerBattleScriptReturnAddress, 6
-
-@ 839AE70
- .include "data/trainer_eye_trainers.inc"
-
- .align 2
-gBadgeFlags:: @ 839B1F0
- .2byte 0x0807, 0x0808, 0x0809, 0x080a, 0x080b, 0x080c, 0x080d, 0x080e
diff --git a/data/berries.inc b/data/berries.inc
deleted file mode 100644
index 7d7d3edd1..000000000
--- a/data/berries.inc
+++ /dev/null
@@ -1,689 +0,0 @@
- .align 2
-gBerries:: @ 83CD2CC
- .string "CHERI$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 20 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Cheri
- .4byte gBerryDescriptionPart2_Cheri
- .byte 3 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "CHESTO$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 80 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Chesto
- .4byte gBerryDescriptionPart2_Chesto
- .byte 3 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 10 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "PECHA$", 7
- .byte BERRY_FIRMNESS_VERY_SOFT
- .2byte 40 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Pecha
- .4byte gBerryDescriptionPart2_Pecha
- .byte 3 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 10 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "RAWST$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 32 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Rawst
- .4byte gBerryDescriptionPart2_Rawst
- .byte 3 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 10 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "ASPEAR$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 50 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Aspear
- .4byte gBerryDescriptionPart2_Aspear
- .byte 3 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 10 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "LEPPA$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 28 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Leppa
- .4byte gBerryDescriptionPart2_Leppa
- .byte 4 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "ORAN$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 35 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Oran
- .4byte gBerryDescriptionPart2_Oran
- .byte 3 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "PERSIM$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 47 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Persim
- .4byte gBerryDescriptionPart2_Persim
- .byte 3 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "LUM$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 34 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Lum
- .4byte gBerryDescriptionPart2_Lum
- .byte 12 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "SITRUS$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 95 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Sitrus
- .4byte gBerryDescriptionPart2_Sitrus
- .byte 6 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "FIGY$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 100 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Figy
- .4byte gBerryDescriptionPart2_Figy
- .byte 6 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "WIKI$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 115 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Wiki
- .4byte gBerryDescriptionPart2_Wiki
- .byte 6 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 10 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "MAGO$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 126 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Mago
- .4byte gBerryDescriptionPart2_Mago
- .byte 6 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 10 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "AGUAV$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 64 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Aguav
- .4byte gBerryDescriptionPart2_Aguav
- .byte 6 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 10 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "IAPAPA$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 223 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Iapapa
- .4byte gBerryDescriptionPart2_Iapapa
- .byte 6 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 10 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "RAZZ$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 120 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 3 @ min yield
- .4byte gBerryDescriptionPart1_Razz
- .4byte gBerryDescriptionPart2_Razz
- .byte 1 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "BLUK$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 108 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 3 @ min yield
- .4byte gBerryDescriptionPart1_Bluk
- .4byte gBerryDescriptionPart2_Bluk
- .byte 1 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "NANAB$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 77 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 3 @ min yield
- .4byte gBerryDescriptionPart1_Nanab
- .4byte gBerryDescriptionPart2_Nanab
- .byte 1 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 0 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "WEPEAR$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 74 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 3 @ min yield
- .4byte gBerryDescriptionPart1_Wepear
- .4byte gBerryDescriptionPart2_Wepear
- .byte 1 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "PINAP$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 80 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 3 @ min yield
- .4byte gBerryDescriptionPart1_Pinap
- .4byte gBerryDescriptionPart2_Pinap
- .byte 1 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "POMEG$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 135 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Pomeg
- .4byte gBerryDescriptionPart2_Pomeg
- .byte 3 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 0 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "KELPSY$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 150 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Kelpsy
- .4byte gBerryDescriptionPart2_Kelpsy
- .byte 3 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 10 @ dry
- .byte 0 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "QUALOT$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 110 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Qualot
- .4byte gBerryDescriptionPart2_Qualot
- .byte 3 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 10 @ sweet
- .byte 0 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "HONDEW$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 162 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Hondew
- .4byte gBerryDescriptionPart2_Hondew
- .byte 3 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 0 @ sweet
- .byte 10 @ bitter
- .byte 0 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "GREPA$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 149 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Grepa
- .4byte gBerryDescriptionPart2_Grepa
- .byte 3 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 0 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "TAMATO$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 200 @ size (in millimeters)
- .byte 4 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Tamato
- .4byte gBerryDescriptionPart2_Tamato
- .byte 6 @ stage duration (in hours)
- .byte 20 @ spicy
- .byte 10 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 30 @ smoothness
- .byte 0 @ padding
-
- .string "CORNN$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 75 @ size (in millimeters)
- .byte 4 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Cornn
- .4byte gBerryDescriptionPart2_Cornn
- .byte 6 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 20 @ dry
- .byte 10 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 30 @ smoothness
- .byte 0 @ padding
-
- .string "MAGOST$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 140 @ size (in millimeters)
- .byte 4 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Magost
- .4byte gBerryDescriptionPart2_Magost
- .byte 6 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 20 @ sweet
- .byte 10 @ bitter
- .byte 0 @ sour
- .byte 30 @ smoothness
- .byte 0 @ padding
-
- .string "RABUTA$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 226 @ size (in millimeters)
- .byte 4 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Rabuta
- .4byte gBerryDescriptionPart2_Rabuta
- .byte 6 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 20 @ bitter
- .byte 10 @ sour
- .byte 30 @ smoothness
- .byte 0 @ padding
-
- .string "NOMEL$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 285 @ size (in millimeters)
- .byte 4 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Nomel
- .4byte gBerryDescriptionPart2_Nomel
- .byte 6 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 20 @ sour
- .byte 30 @ smoothness
- .byte 0 @ padding
-
- .string "SPELON$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 133 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Spelon
- .4byte gBerryDescriptionPart2_Spelon
- .byte 18 @ stage duration (in hours)
- .byte 40 @ spicy
- .byte 10 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 70 @ smoothness
- .byte 0 @ padding
-
- .string "PAMTRE$", 7
- .byte BERRY_FIRMNESS_VERY_SOFT
- .2byte 244 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Pamtre
- .4byte gBerryDescriptionPart2_Pamtre
- .byte 18 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 40 @ dry
- .byte 10 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 70 @ smoothness
- .byte 0 @ padding
-
- .string "WATMEL$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 250 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Watmel
- .4byte gBerryDescriptionPart2_Watmel
- .byte 18 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 40 @ sweet
- .byte 10 @ bitter
- .byte 0 @ sour
- .byte 70 @ smoothness
- .byte 0 @ padding
-
- .string "DURIN$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 280 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Durin
- .4byte gBerryDescriptionPart2_Durin
- .byte 18 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 40 @ bitter
- .byte 10 @ sour
- .byte 70 @ smoothness
- .byte 0 @ padding
-
- .string "BELUE$", 7
- .byte BERRY_FIRMNESS_VERY_SOFT
- .2byte 300 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Belue
- .4byte gBerryDescriptionPart2_Belue
- .byte 18 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 40 @ sour
- .byte 70 @ smoothness
- .byte 0 @ padding
-
- .string "LIECHI$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 111 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Liechi
- .4byte gBerryDescriptionPart2_Liechi
- .byte 24 @ stage duration (in hours)
- .byte 40 @ spicy
- .byte 0 @ dry
- .byte 40 @ sweet
- .byte 0 @ bitter
- .byte 10 @ sour
- .byte 80 @ smoothness
- .byte 0 @ padding
-
- .string "GANLON$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 33 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Ganlon
- .4byte gBerryDescriptionPart2_Ganlon
- .byte 24 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 40 @ dry
- .byte 0 @ sweet
- .byte 40 @ bitter
- .byte 0 @ sour
- .byte 80 @ smoothness
- .byte 0 @ padding
-
- .string "SALAC$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 95 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Salac
- .4byte gBerryDescriptionPart2_Salac
- .byte 24 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 40 @ sweet
- .byte 0 @ bitter
- .byte 40 @ sour
- .byte 80 @ smoothness
- .byte 0 @ padding
-
- .string "PETAYA$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 237 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Petaya
- .4byte gBerryDescriptionPart2_Petaya
- .byte 24 @ stage duration (in hours)
- .byte 40 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 40 @ bitter
- .byte 0 @ sour
- .byte 80 @ smoothness
- .byte 0 @ padding
-
- .string "APICOT$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 75 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Apicot
- .4byte gBerryDescriptionPart2_Apicot
- .byte 24 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 40 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 40 @ sour
- .byte 80 @ smoothness
- .byte 0 @ padding
-
- .string "LANSAT$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 97 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Lansat
- .4byte gBerryDescriptionPart2_Lansat
- .byte 24 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 30 @ smoothness
- .byte 0 @ padding
-
- .string "STARF$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 153 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Starf
- .4byte gBerryDescriptionPart2_Starf
- .byte 24 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 30 @ smoothness
- .byte 0 @ padding
-
- .string "ENIGMA$", 7
- .byte BERRY_FIRMNESS_UNKNOWN
- .2byte 0 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Enigma
- .4byte gBerryDescriptionPart2_Enigma
- .byte 24 @ stage duration (in hours)
- .byte 40 @ spicy
- .byte 40 @ dry
- .byte 40 @ sweet
- .byte 40 @ bitter
- .byte 40 @ sour
- .byte 40 @ smoothness
- .byte 0 @ padding
diff --git a/data/berry.s b/data/berry.s
deleted file mode 100644
index 091af4105..000000000
--- a/data/berry.s
+++ /dev/null
@@ -1,14 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-@ 83CC740
- .include "data/text/berry_descriptions.inc"
-
-@ 83CD2CC
- .include "data/berries.inc"
-
- .align 2
-gBlankBerryTree:: @ 83CD780
- .4byte 0, 0
diff --git a/data/clock_hand_coords.inc b/data/clock_hand_coords.inc
deleted file mode 100644
index 476ffb788..000000000
--- a/data/clock_hand_coords.inc
+++ /dev/null
@@ -1,361 +0,0 @@
-gClockHandCoords:: @ 83F7B58
- .byte 0, -24 @ 0
- .byte 1, -25 @ 1
- .byte 1, -25 @ 2
- .byte 2, -25 @ 3
- .byte 2, -25 @ 4
- .byte 2, -25 @ 5
- .byte 3, -24 @ 6
- .byte 3, -25 @ 7
- .byte 4, -25 @ 8
- .byte 4, -25 @ 9
- .byte 4, -25 @ 10
- .byte 5, -25 @ 11
- .byte 5, -25 @ 12
- .byte 6, -24 @ 13
- .byte 6, -24 @ 14
- .byte 6, -24 @ 15
- .byte 7, -24 @ 16
- .byte 7, -24 @ 17
- .byte 7, -24 @ 18
- .byte 8, -24 @ 19
- .byte 8, -24 @ 20
- .byte 9, -24 @ 21
- .byte 9, -24 @ 22
- .byte 10, -23 @ 23
- .byte 10, -23 @ 24
- .byte 11, -22 @ 25
- .byte 11, -22 @ 26
- .byte 11, -22 @ 27
- .byte 12, -22 @ 28
- .byte 12, -21 @ 29
- .byte 13, -21 @ 30
- .byte 13, -21 @ 31
- .byte 13, -21 @ 32
- .byte 14, -21 @ 33
- .byte 14, -21 @ 34
- .byte 14, -20 @ 35
- .byte 14, -20 @ 36
- .byte 15, -20 @ 37
- .byte 15, -19 @ 38
- .byte 16, -19 @ 39
- .byte 16, -19 @ 40
- .byte 16, -19 @ 41
- .byte 16, -18 @ 42
- .byte 16, -18 @ 43
- .byte 17, -18 @ 44
- .byte 17, -17 @ 45
- .byte 17, -17 @ 46
- .byte 18, -17 @ 47
- .byte 18, -17 @ 48
- .byte 18, -16 @ 49
- .byte 18, -16 @ 50
- .byte 19, -16 @ 51
- .byte 19, -15 @ 52
- .byte 19, -15 @ 53
- .byte 20, -15 @ 54
- .byte 20, -14 @ 55
- .byte 20, -14 @ 56
- .byte 20, -13 @ 57
- .byte 20, -13 @ 58
- .byte 21, -13 @ 59
- .byte 21, -13 @ 60
- .byte 21, -12 @ 61
- .byte 22, -12 @ 62
- .byte 22, -12 @ 63
- .byte 22, -11 @ 64
- .byte 22, -11 @ 65
- .byte 22, -10 @ 66
- .byte 23, -10 @ 67
- .byte 23, -9 @ 68
- .byte 23, -9 @ 69
- .byte 23, -9 @ 70
- .byte 23, -9 @ 71
- .byte 23, -8 @ 72
- .byte 23, -8 @ 73
- .byte 23, -7 @ 74
- .byte 23, -7 @ 75
- .byte 23, -6 @ 76
- .byte 24, -6 @ 77
- .byte 24, -6 @ 78
- .byte 25, -5 @ 79
- .byte 25, -5 @ 80
- .byte 24, -4 @ 81
- .byte 25, -4 @ 82
- .byte 24, -3 @ 83
- .byte 25, -3 @ 84
- .byte 25, -3 @ 85
- .byte 25, -2 @ 86
- .byte 25, -2 @ 87
- .byte 24, -1 @ 88
- .byte 25, -1 @ 89
- .byte 24, 0 @ 90
- .byte 24, 0 @ 91
- .byte 24, 0 @ 92
- .byte 24, 1 @ 93
- .byte 24, 1 @ 94
- .byte 25, 2 @ 95
- .byte 24, 2 @ 96
- .byte 25, 2 @ 97
- .byte 24, 3 @ 98
- .byte 24, 3 @ 99
- .byte 25, 4 @ 100
- .byte 24, 4 @ 101
- .byte 24, 5 @ 102
- .byte 24, 5 @ 103
- .byte 24, 5 @ 104
- .byte 24, 6 @ 105
- .byte 23, 6 @ 106
- .byte 23, 6 @ 107
- .byte 23, 7 @ 108
- .byte 23, 8 @ 109
- .byte 23, 8 @ 110
- .byte 23, 8 @ 111
- .byte 23, 9 @ 112
- .byte 23, 9 @ 113
- .byte 23, 10 @ 114
- .byte 22, 10 @ 115
- .byte 22, 10 @ 116
- .byte 22, 11 @ 117
- .byte 22, 11 @ 118
- .byte 22, 11 @ 119
- .byte 22, 12 @ 120
- .byte 21, 12 @ 121
- .byte 21, 12 @ 122
- .byte 21, 13 @ 123
- .byte 20, 13 @ 124
- .byte 20, 13 @ 125
- .byte 19, 13 @ 126
- .byte 19, 13 @ 127
- .byte 19, 14 @ 128
- .byte 19, 14 @ 129
- .byte 19, 15 @ 130
- .byte 19, 15 @ 131
- .byte 18, 15 @ 132
- .byte 18, 16 @ 133
- .byte 17, 16 @ 134
- .byte 17, 16 @ 135
- .byte 17, 17 @ 136
- .byte 17, 17 @ 137
- .byte 16, 17 @ 138
- .byte 16, 18 @ 139
- .byte 16, 18 @ 140
- .byte 15, 18 @ 141
- .byte 14, 18 @ 142
- .byte 15, 19 @ 143
- .byte 14, 19 @ 144
- .byte 14, 19 @ 145
- .byte 13, 19 @ 146
- .byte 13, 20 @ 147
- .byte 13, 20 @ 148
- .byte 13, 20 @ 149
- .byte 12, 20 @ 150
- .byte 12, 20 @ 151
- .byte 12, 21 @ 152
- .byte 11, 21 @ 153
- .byte 11, 21 @ 154
- .byte 11, 21 @ 155
- .byte 10, 21 @ 156
- .byte 10, 22 @ 157
- .byte 10, 22 @ 158
- .byte 9, 22 @ 159
- .byte 9, 22 @ 160
- .byte 8, 22 @ 161
- .byte 7, 22 @ 162
- .byte 7, 23 @ 163
- .byte 7, 23 @ 164
- .byte 6, 23 @ 165
- .byte 6, 23 @ 166
- .byte 5, 23 @ 167
- .byte 5, 23 @ 168
- .byte 5, 24 @ 169
- .byte 4, 24 @ 170
- .byte 4, 24 @ 171
- .byte 4, 24 @ 172
- .byte 3, 24 @ 173
- .byte 2, 24 @ 174
- .byte 2, 24 @ 175
- .byte 1, 24 @ 176
- .byte 1, 24 @ 177
- .byte 0, 24 @ 178
- .byte 0, 24 @ 179
- .byte -1, 23 @ 180
- .byte 0, 24 @ 181
- .byte 0, 24 @ 182
- .byte -1, 24 @ 183
- .byte -1, 24 @ 184
- .byte -2, 24 @ 185
- .byte -2, 24 @ 186
- .byte -3, 24 @ 187
- .byte -3, 24 @ 188
- .byte -4, 24 @ 189
- .byte -4, 24 @ 190
- .byte -5, 24 @ 191
- .byte -5, 23 @ 192
- .byte -5, 23 @ 193
- .byte -6, 23 @ 194
- .byte -6, 23 @ 195
- .byte -7, 23 @ 196
- .byte -7, 23 @ 197
- .byte -7, 23 @ 198
- .byte -8, 23 @ 199
- .byte -8, 22 @ 200
- .byte -9, 22 @ 201
- .byte -9, 22 @ 202
- .byte -10, 22 @ 203
- .byte -10, 22 @ 204
- .byte -10, 21 @ 205
- .byte -11, 21 @ 206
- .byte -11, 21 @ 207
- .byte -11, 21 @ 208
- .byte -11, 20 @ 209
- .byte -12, 20 @ 210
- .byte -12, 20 @ 211
- .byte -13, 20 @ 212
- .byte -13, 20 @ 213
- .byte -13, 19 @ 214
- .byte -14, 19 @ 215
- .byte -14, 19 @ 216
- .byte -14, 19 @ 217
- .byte -14, 18 @ 218
- .byte -15, 18 @ 219
- .byte -15, 18 @ 220
- .byte -15, 17 @ 221
- .byte -16, 17 @ 222
- .byte -16, 17 @ 223
- .byte -17, 17 @ 224
- .byte -17, 16 @ 225
- .byte -17, 16 @ 226
- .byte -18, 16 @ 227
- .byte -17, 15 @ 228
- .byte -18, 15 @ 229
- .byte -18, 15 @ 230
- .byte -19, 15 @ 231
- .byte -19, 14 @ 232
- .byte -19, 14 @ 233
- .byte -19, 13 @ 234
- .byte -19, 13 @ 235
- .byte -20, 13 @ 236
- .byte -20, 12 @ 237
- .byte -20, 12 @ 238
- .byte -21, 12 @ 239
- .byte -21, 12 @ 240
- .byte -21, 11 @ 241
- .byte -21, 11 @ 242
- .byte -21, 10 @ 243
- .byte -21, 10 @ 244
- .byte -21, 9 @ 245
- .byte -22, 9 @ 246
- .byte -22, 9 @ 247
- .byte -22, 8 @ 248
- .byte -22, 8 @ 249
- .byte -22, 7 @ 250
- .byte -23, 7 @ 251
- .byte -23, 7 @ 252
- .byte -23, 6 @ 253
- .byte -23, 6 @ 254
- .byte -23, 5 @ 255
- .byte -24, 5 @ 256
- .byte -23, 4 @ 257
- .byte -23, 4 @ 258
- .byte -24, 4 @ 259
- .byte -24, 4 @ 260
- .byte -24, 3 @ 261
- .byte -24, 3 @ 262
- .byte -24, 2 @ 263
- .byte -24, 2 @ 264
- .byte -24, 1 @ 265
- .byte -24, 1 @ 266
- .byte -24, 1 @ 267
- .byte -24, 0 @ 268
- .byte -25, 0 @ 269
- .byte -24, -1 @ 270
- .byte -25, -1 @ 271
- .byte -24, -1 @ 272
- .byte -24, -2 @ 273
- .byte -24, -2 @ 274
- .byte -24, -3 @ 275
- .byte -24, -3 @ 276
- .byte -24, -4 @ 277
- .byte -24, -4 @ 278
- .byte -24, -4 @ 279
- .byte -24, -5 @ 280
- .byte -24, -5 @ 281
- .byte -24, -6 @ 282
- .byte -24, -6 @ 283
- .byte -23, -6 @ 284
- .byte -23, -7 @ 285
- .byte -23, -7 @ 286
- .byte -23, -8 @ 287
- .byte -23, -8 @ 288
- .byte -23, -9 @ 289
- .byte -23, -9 @ 290
- .byte -22, -9 @ 291
- .byte -22, -9 @ 292
- .byte -22, -10 @ 293
- .byte -22, -10 @ 294
- .byte -21, -10 @ 295
- .byte -21, -11 @ 296
- .byte -22, -11 @ 297
- .byte -22, -12 @ 298
- .byte -21, -12 @ 299
- .byte -21, -13 @ 300
- .byte -21, -13 @ 301
- .byte -20, -13 @ 302
- .byte -21, -14 @ 303
- .byte -20, -14 @ 304
- .byte -20, -14 @ 305
- .byte -19, -14 @ 306
- .byte -19, -15 @ 307
- .byte -19, -15 @ 308
- .byte -18, -16 @ 309
- .byte -18, -16 @ 310
- .byte -18, -16 @ 311
- .byte -18, -17 @ 312
- .byte -18, -17 @ 313
- .byte -17, -17 @ 314
- .byte -17, -18 @ 315
- .byte -17, -18 @ 316
- .byte -16, -18 @ 317
- .byte -16, -18 @ 318
- .byte -16, -19 @ 319
- .byte -16, -19 @ 320
- .byte -15, -19 @ 321
- .byte -15, -19 @ 322
- .byte -15, -20 @ 323
- .byte -14, -20 @ 324
- .byte -14, -20 @ 325
- .byte -14, -21 @ 326
- .byte -13, -21 @ 327
- .byte -13, -21 @ 328
- .byte -13, -21 @ 329
- .byte -12, -21 @ 330
- .byte -12, -22 @ 331
- .byte -11, -22 @ 332
- .byte -11, -22 @ 333
- .byte -11, -22 @ 334
- .byte -10, -22 @ 335
- .byte -10, -22 @ 336
- .byte -9, -22 @ 337
- .byte -9, -23 @ 338
- .byte -9, -23 @ 339
- .byte -8, -23 @ 340
- .byte -8, -23 @ 341
- .byte -7, -23 @ 342
- .byte -7, -23 @ 343
- .byte -7, -24 @ 344
- .byte -6, -24 @ 345
- .byte -6, -24 @ 346
- .byte -5, -24 @ 347
- .byte -5, -24 @ 348
- .byte -4, -24 @ 349
- .byte -4, -24 @ 350
- .byte -4, -24 @ 351
- .byte -4, -25 @ 352
- .byte -3, -25 @ 353
- .byte -2, -25 @ 354
- .byte -2, -24 @ 355
- .byte -2, -24 @ 356
- .byte -1, -25 @ 357
- .byte -1, -25 @ 358
- .byte 0, -25 @ 359
diff --git a/data/contest_painting.s b/data/contest_painting.s
deleted file mode 100644
index 071661cb4..000000000
--- a/data/contest_painting.s
+++ /dev/null
@@ -1,102 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gPictureFramePalettes:: @ 83EF198
- .incbin "graphics/picture_frame/bg0.gbapal"
- .incbin "graphics/picture_frame/bg1.gbapal"
- .incbin "graphics/picture_frame/bg2.gbapal"
- .incbin "graphics/picture_frame/bg3.gbapal"
- .incbin "graphics/picture_frame/bg4.gbapal"
- .incbin "graphics/picture_frame/bg5.gbapal"
- .space 10 * 32
-
- .align 2
-gPictureFrameTiles_0:: @ 83EF398
- .incbin "graphics/picture_frame/frame0.4bpp.rl"
-
- .align 2
-gPictureFrameTiles_1:: @ 83F041C
- .incbin "graphics/picture_frame/frame1.4bpp.rl"
-
- .align 2
-gPictureFrameTiles_2:: @ 83F104C
- .incbin "graphics/picture_frame/frame2.4bpp.rl"
-
- .align 2
-gPictureFrameTiles_3:: @ 83F1B84
- .incbin "graphics/picture_frame/frame3.4bpp.rl"
-
- .align 2
-gPictureFrameTiles_4:: @ 83F2B3C
- .incbin "graphics/picture_frame/frame4.4bpp.rl"
-
- .align 2
-gPictureFrameTiles_5:: @ 83F3C6C
- .incbin "graphics/picture_frame/frame5.4bpp.rl"
-
- .align 2
-gPictureFrameTilemap_0:: @ 83F4260
- .incbin "graphics/picture_frame/frame0_map.bin.rl"
-
- .align 2
-gPictureFrameTilemap_1:: @ 83F476C
- .incbin "graphics/picture_frame/frame1_map.bin.rl"
-
- .align 2
-gPictureFrameTilemap_2:: @ 83F4C78
- .incbin "graphics/picture_frame/frame2_map.bin.rl"
-
- .align 2
-gPictureFrameTilemap_3:: @ 83F5184
- .incbin "graphics/picture_frame/frame3_map.bin.rl"
-
- .align 2
-gPictureFrameTilemap_4:: @ 83F5690
- .incbin "graphics/picture_frame/frame4_map.bin.rl"
-
- .align 2
-gPictureFrameTilemap_5:: @ 83F5B9C
- .incbin "graphics/picture_frame/frame5_map.bin.rl"
-
- .align 2
-gUnknown_083F60AC:: @ 83F60AC
- .4byte OtherText_Cool
- .4byte OtherText_Beauty2
- .4byte OtherText_Cute
- .4byte OtherText_Smart
- .4byte OtherText_Tough
-
- .align 2
-gUnknown_083F60C0:: @ 83F60C0
- .4byte OtherText_NonstopSuperCool, OtherText_Terminator6
- .4byte OtherText_GoodLookingPoke, OtherText_Terminator7
- .4byte OtherText_MarvelousGreat, OtherText_Terminator8
-
- .4byte OtherText_CenturyLastVenus, OtherText_Terminator9
- .4byte OtherText_Terminator10, OtherText_DazzlingSlime
- .4byte OtherText_PokeCenterIdol, OtherText_Terminator11
-
- .4byte OtherText_LovelyAndSweet, OtherText_Terminator12
- .4byte OtherText_ThePretty, OtherText_WinningPortrait
- .4byte OtherText_GiveUsWink, OtherText_Terminator13
-
- .4byte OtherText_SmartnessMaestro, OtherText_Terminator15
- .4byte OtherText_ChosenPokeAmong, OtherText_Terminator15
- .4byte OtherText_TheExcellent, OtherText_ItsMomentOfElegance
-
- .4byte OtherText_PowerfullyMuscular, OtherText_Terminator16
- .4byte OtherText_StrongErEst, OtherText_Terminator17
- .4byte OtherText_MightyTough, OtherText_Exclamation
-
- .align 2
-gOamData_83F6138:: @ 83F6138
- .2byte 0x3000
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gUnknown_083F6140:: @ 83F6140
- .space 4
diff --git a/data/credits.s b/data/credits.s
index 72fbde4f2..e5f5188d3 100644
--- a/data/credits.s
+++ b/data/credits.s
@@ -3,12 +3,6 @@
.section .rodata
-gUnknown_0840B7BC:: @ 840B7BC
- .incbin "graphics/credits/palette_1.gbapal"
-
-gUnknown_0840B7FC:: @ 840B7FC
- .incbin "graphics/credits/ampersand.4bpp"
-
gUnknown_0840B83C:: @ 840B83C
.incbin "baserom.gba", 0x0040b83c, 0xf
diff --git a/data/heal_location.s b/data/heal_location.s
deleted file mode 100644
index 101bec24f..000000000
--- a/data/heal_location.s
+++ /dev/null
@@ -1,29 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gHealLocations:: @ 83E5A20
- heal_location LittlerootTown_BrendansHouse_2F, 4, 2
- heal_location LittlerootTown_MaysHouse_2F, 4, 2
- heal_location PetalburgCity, 20, 17
- heal_location SlateportCity, 19, 20
- heal_location MauvilleCity, 22, 6
- heal_location RustboroCity, 16, 39
- heal_location FortreeCity, 5, 7
- heal_location LilycoveCity, 24, 15
- heal_location MossdeepCity, 28, 17
- heal_location SootopolisCity, 43, 32
- heal_location EverGrandeCity, 27, 49
- heal_location LittlerootTown, 5, 9
- heal_location LittlerootTown, 14, 9
- heal_location OldaleTown, 6, 17
- heal_location DewfordTown, 2, 11
- heal_location LavaridgeTown, 9, 7
- heal_location FallarborTown, 14, 8
- heal_location VerdanturfTown, 16, 4
- heal_location PacifidlogTown, 8, 16
- heal_location EverGrandeCity, 18, 6
- heal_location BattleTower_Outside, 14, 9
- heal_location SouthernIsland_Exterior, 15, 20
diff --git a/data/intro.s b/data/intro.s
deleted file mode 100644
index 11cf7d2e5..000000000
--- a/data/intro.s
+++ /dev/null
@@ -1,514 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-Palette_406340:: @ 8406340
- .incbin "baserom.gba", 0x406340, 0x20
-
- .align 2
-Palette_406360:: @ 8406360
- .incbin "baserom.gba", 0x406360, 0x20
-
- .align 2
-gIntroTiles::
- .incbin "graphics/intro/intro.4bpp.lz"
-
- .align 2
-gIntro1BGPals:: @ 8406974
- .incbin "graphics/intro/intro1_bgpal1.gbapal"
- .incbin "graphics/intro/intro1_bgpal2.gbapal"
- .incbin "graphics/intro/intro1_bgpal3.gbapal"
- .incbin "graphics/intro/intro1_bgpal4.gbapal"
- .incbin "graphics/intro/intro1_bgpal5.gbapal"
- .incbin "graphics/intro/intro1_bgpal6.gbapal"
- .incbin "graphics/intro/intro1_bgpal7.gbapal"
- .incbin "graphics/intro/intro1_bgpal8.gbapal"
- .incbin "graphics/intro/intro1_bgpal9.gbapal"
- .incbin "graphics/intro/intro1_bgpal10.gbapal"
- .incbin "graphics/intro/intro1_bgpal11.gbapal"
- .incbin "graphics/intro/intro1_bgpal12.gbapal"
- .incbin "graphics/intro/intro1_bgpal13.gbapal"
- .incbin "graphics/intro/intro1_bgpal14.gbapal"
- .incbin "graphics/intro/intro1_bgpal15.gbapal"
- .incbin "graphics/intro/intro1_bgpal16.gbapal"
-
- .align 2
-gIntro1BG0_Tilemap:: @ 8406B74
- .incbin "graphics/intro/intro1_bg0_map.bin.lz"
-
- .align 2
-gIntro1BG1_Tilemap:: @ 8406F28
- .incbin "graphics/intro/intro1_bg1_map.bin.lz"
-
- .align 2
-gIntro1BG2_Tilemap:: @ 840725C
- .incbin "graphics/intro/intro1_bg2_map.bin.lz"
-
- .align 2
-gIntro1BG3_Tilemap:: @ 840754C
- .incbin "graphics/intro/intro1_bg3_map.bin.lz"
-
- .align 2
-gIntro1BGLeavesGfx:: @ 8407764
- .incbin "graphics/intro/introgfx.4bpp.lz"
-
- .align 2
-gIntro3PokeballPal:: @ 84098D4
- .incbin "graphics/intro/intro3_pokeball.gbapal"
-
- .align 2
-gIntro3Pokeball_Tilemap:: @ 8409AD4
- .incbin "graphics/intro/intro3_pokeball_map.bin.lz"
-
- .align 2
-gIntro3Pokeball_Gfx:: @ 8409C04
- .incbin "graphics/intro/intro3_pokeball.8bpp.lz"
-
- .align 2
-gIntro3Streaks_Pal:: @ 840A758
- .incbin "graphics/intro/intro3_streaks.gbapal"
-
- .align 2
-gIntro3Streaks_Gfx:: @ 840A778
- .incbin "graphics/intro/intro3_streaks.4bpp.lz"
-
- .align 2
-gIntro3Streaks_Tilemap:: @ 840A7E4
- .incbin "graphics/intro/intro3_streaks_map.bin.lz"
-
- .align 2
-gIntro3Misc1Palette::
- .incbin "graphics/intro/intro3_misc1.gbapal"
-
- .align 2
-gIntro3Misc2Palette::
- .incbin "graphics/intro/intro3_misc2.gbapal"
-
- .align 2
-gIntro3MiscTiles::
- .incbin "graphics/intro/intro3_misc.4bpp.lz"
-
- .align 2
-gIntro1EonPalette::
- .incbin "graphics/intro/intro1_eon.gbapal"
-
- .align 2
-gIntro1EonTiles::
- .incbin "graphics/intro/intro1_eon.4bpp.lz"
-
- .align 2
-gOamData_840ADE8:: @ 840ADE8
- .2byte 0x00A0
- .2byte 0x8000
- .2byte 0x0000
-
- .align 2
-gSpriteAnim_840ADF0:: @ 840ADF0
- obj_image_anim_frame 16, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840ADF8:: @ 840ADF8
- obj_image_anim_frame 24, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AE00:: @ 840AE00
- obj_image_anim_frame 0, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AE08:: @ 840AE08
- obj_image_anim_frame 48, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_840AE10:: @ 840AE10
- .4byte gSpriteAnim_840ADF0
- .4byte gSpriteAnim_840ADF8
- .4byte gSpriteAnim_840AE00
- .4byte gSpriteAnim_840AE08
-
- .align 2
-gSpriteTemplate_840AE20:: @ 840AE20
- spr_template 2000, 2000, gOamData_840ADE8, gSpriteAnimTable_840AE10, NULL, gDummySpriteAffineAnimTable, sub_813D208
-
- .align 2
-Unknown_40AE38: @ 840AE38
- .incbin "baserom.gba", 0x40ae38, 0x14
-
- .align 2
-Unknown_40AE4C: @ 840AE4C
- .incbin "baserom.gba", 0x40ae4c, 0x14
-
- .align 2
-Unknown_40AE60: @ 840AE60
- .incbin "baserom.gba", 0x40ae60, 0x10
-
- .align 2
-Unknown_40AE70: @ 840AE70
- .incbin "baserom.gba", 0x40ae70, 0x10
-
- .align 2
-gUnknown_0840AE80:: @ 840AE80
- .4byte Unknown_40AE38
- .4byte Unknown_40AE4C
- .4byte Unknown_40AE60
- .4byte Unknown_40AE70
-
- .align 2
-gOamData_840AE90:: @ 840AE90
- .2byte 0x00A0
- .2byte 0x4000
- .2byte 0x0000
-
- .align 2
-gOamData_840AE98:: @ 840AE98
- .2byte 0x00A0
- .2byte 0x0000
- .2byte 0x0000
-
- .align 2
-gOamData_840AEA0:: @ 840AEA0
- .2byte 0x80A0
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gSpriteAnim_840AEA8:: @ 840AEA8
- obj_image_anim_frame 80, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AEB0:: @ 840AEB0
- obj_image_anim_frame 84, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AEB8:: @ 840AEB8
- obj_image_anim_frame 88, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AEC0:: @ 840AEC0
- obj_image_anim_frame 92, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AEC8:: @ 840AEC8
- obj_image_anim_frame 96, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AED0:: @ 840AED0
- obj_image_anim_frame 100, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AED8:: @ 840AED8
- obj_image_anim_frame 104, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AEE0:: @ 840AEE0
- obj_image_anim_frame 112, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AEE8:: @ 840AEE8
- obj_image_anim_frame 113, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AEF0:: @ 840AEF0
- obj_image_anim_frame 114, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AEF8:: @ 840AEF8
- obj_image_anim_frame 115, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AF00:: @ 840AF00
- obj_image_anim_frame 116, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AF08:: @ 840AF08
- obj_image_anim_frame 117, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840AF10:: @ 840AF10
- obj_image_anim_frame 128, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_840AF18:: @ 840AF18
- .4byte gSpriteAnim_840AEA8
- .4byte gSpriteAnim_840AEB0
- .4byte gSpriteAnim_840AEB8
- .4byte gSpriteAnim_840AEC0
- .4byte gSpriteAnim_840AEC8
- .4byte gSpriteAnim_840AED0
- .4byte gSpriteAnim_840AED8
-
- .align 2
-gSpriteAnimTable_840AF34:: @ 840AF34
- .4byte gSpriteAnim_840AEE0
- .4byte gSpriteAnim_840AEE8
- .4byte gSpriteAnim_840AEF0
- .4byte gSpriteAnim_840AEF8
- .4byte gSpriteAnim_840AF00
- .4byte gSpriteAnim_840AF08
-
- .align 2
-gSpriteAnimTable_840AF4C:: @ 840AF4C
- .4byte gSpriteAnim_840AF10
-
-gUnknown_0840AF50:: @ 840AF50
- .incbin "baserom.gba", 0x0040af50, 0x24
-
-gUnknown_0840AF74:: @ 840AF74
- .incbin "baserom.gba", 0x0040af74, 0x20
-
- .align 2
-gSpriteTemplate_840AF94:: @ 840AF94
- spr_template 2000, 2001, gOamData_840AE90, gSpriteAnimTable_840AF18, NULL, gDummySpriteAffineAnimTable, sub_813D908
-
- .align 2
-gSpriteTemplate_840AFAC:: @ 840AFAC
- spr_template 2000, 2001, gOamData_840AE98, gSpriteAnimTable_840AF34, NULL, gDummySpriteAffineAnimTable, sub_813D908
-
- .align 2
-gSpriteTemplate_840AFC4:: @ 840AFC4
- spr_template 2000, 2001, gOamData_840AEA0, gSpriteAnimTable_840AF4C, NULL, gDummySpriteAffineAnimTable, sub_813D908
-
- .align 2
-gOamData_840AFDC:: @ 840AFDC
- .2byte 0x40A0
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gSpriteAnim_840AFE4:: @ 840AFE4
- obj_image_anim_frame 0, 10
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnimTable_840AFEC:: @ 840AFEC
- .4byte gSpriteAnim_840AFE4
-
- .align 2
-gSpriteTemplate_840AFF0:: @ 840AFF0
- spr_template 2002, 2002, gOamData_840AFDC, gSpriteAnimTable_840AFEC, NULL, gDummySpriteAffineAnimTable, sub_813DA64
-
- .align 2
-gUnknown_0840B008:: @ 840B008
- obj_tiles gIntroTiles, 0x1400, 2000
- .space 8
-
- .align 2
-gUnknown_0840B018:: @ 840B018
- obj_tiles gIntro1EonTiles, 0x400, 2002
- .space 8
-
- .align 2
-gUnknown_0840B028:: @ 840B028
- obj_pal Palette_406340, 2000
- obj_pal Palette_406360, 2001
- obj_pal gIntro1EonPalette, 2002
- .space 8
-
-gUnknown_0840B048:: @ 840B048
- .incbin "baserom.gba", 0x40b048, 0x8
-
-gUnknown_0840B050:: @ 840B050
- .incbin "baserom.gba", 0x40b050, 0x8
-
-gUnknown_0840B058:: @ 840B058
- .incbin "baserom.gba", 0x40b058, 0xc
-
- .align 2
-gUnknown_0840B064:: @ 840B064
- .4byte gUnknown_0840B048
- .4byte gUnknown_0840B050
- .4byte gUnknown_0840B058
-
- .align 2
-gOamData_840B070:: @ 840B070
- .2byte 0x00A0
- .2byte 0x4000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_840B078:: @ 840B078
- obj_image_anim_frame 0, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_840B080:: @ 840B080
- .4byte gSpriteAnim_840B078
-
- .align 2
-gSpriteTemplate_840B084:: @ 840B084
- spr_template 2002, 2002, gOamData_840B070, gSpriteAnimTable_840B080, NULL, gDummySpriteAffineAnimTable, sub_813E30C
-
- .align 2
-gOamData_840B09C:: @ 840B09C
- .2byte 0x00A0
- .2byte 0x0000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_840B0A4:: @ 840B0A4
- obj_image_anim_frame 1, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_840B0AC:: @ 840B0AC
- .4byte gSpriteAnim_840B0A4
-
- .align 2
-gSpriteTemplate_840B0B0:: @ 840B0B0
- spr_template 2003, 2003, gOamData_840B09C, gSpriteAnimTable_840B0AC, NULL, gDummySpriteAffineAnimTable, sub_813E4B8
-
- .align 2
-gOamData_840B0C8:: @ 840B0C8
- .2byte 0x00A0
- .2byte 0x0000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_840B0D0:: @ 840B0D0
- obj_image_anim_frame 14, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_840B0D8:: @ 840B0D8
- .4byte gSpriteAnim_840B0D0
-
- .align 2
-gSpriteTemplate_840B0DC:: @ 840B0DC
- spr_template 2003, 2004, gOamData_840B0C8, gSpriteAnimTable_840B0D8, NULL, gDummySpriteAffineAnimTable, sub_813E5E0
-
- .align 2
-gSpriteTemplate_840B0F4:: @ 840B0F4
- spr_template 2003, 2004, gOamData_840B0C8, gSpriteAnimTable_840B0D8, NULL, gDummySpriteAffineAnimTable, sub_813E6C0
-
- .align 2
-gOamData_840B10C:: @ 840B10C
- .2byte 0x00A0
- .2byte 0x4000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_840B114:: @ 840B114
- obj_image_anim_frame 6, 8
- obj_image_anim_frame 6, 8, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnimTable_840B120:: @ 840B120
- .4byte gSpriteAnim_840B114
-
- .align 2
-gSpriteTemplate_840B124:: @ 840B124
- spr_template 2003, 2004, gOamData_840B10C, gSpriteAnimTable_840B120, NULL, gDummySpriteAffineAnimTable, sub_813E804
-
- .align 2
-gOamData_840B13C:: @ 840B13C
- .2byte 0x00A0
- .2byte 0x4000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_840B144:: @ 840B144
- obj_image_anim_frame 10, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_840B14C:: @ 840B14C
- .4byte gSpriteAnim_840B144
-
- .align 2
-gSpriteTemplate_840B150:: @ 840B150
- spr_template 2003, 2004, gOamData_840B13C, gSpriteAnimTable_840B14C, NULL, gDummySpriteAffineAnimTable, sub_813E980
-
-gUnknown_0840B168:: @ 840B168
- .incbin "baserom.gba", 0x0040b168, 0x8
-
- .align 2
-gSpriteTemplate_840B170:: @ 840B170
- spr_template 2003, 2004, gOamData_840B13C, gSpriteAnimTable_840B14C, NULL, gDummySpriteAffineAnimTable, sub_813EA60
-
-gUnknown_0840B188:: @ 840B188
- .incbin "baserom.gba", 0x0040b188, 0x14
-
- .align 2
-gOamData_840B19C:: @ 840B19C
- .2byte 0x00A0
- .2byte 0x4000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_840B1A4:: @ 840B1A4
- obj_image_anim_frame 2, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_840B1AC:: @ 840B1AC
- .4byte gSpriteAnim_840B1A4
-
- .align 2
-gSpriteTemplate_840B1B0:: @ 840B1B0
- spr_template 2003, 2004, gOamData_840B19C, gSpriteAnimTable_840B1AC, NULL, gDummySpriteAffineAnimTable, sub_813EBBC
-
- .align 2
-gSpriteTemplate_840B1C8:: @ 840B1C8
- spr_template 2003, 2004, gOamData_840B19C, gSpriteAnimTable_840B1AC, NULL, gDummySpriteAffineAnimTable, sub_813EC90
-
- .align 2
-gOamData_840B1E0:: @ 840B1E0
- .2byte 0x00A0
- .2byte 0xC000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_840B1E8:: @ 840B1E8
- obj_image_anim_frame 16, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_840B1F0:: @ 840B1F0
- .4byte gSpriteAnim_840B1E8
-
- .align 2
-gSpriteTemplate_840B1F4:: @ 840B1F4
- spr_template 2003, 2003, gOamData_840B1E0, gSpriteAnimTable_840B1F0, NULL, gDummySpriteAffineAnimTable, sub_813EDFC
-
- .align 2
-gIntro3PokeballGfx_Table:: @ 840B20C
- obj_tiles gInterfaceGfx_PokeBall, 0x100, 2002
- .space 8
-
- .align 2
-gIntro3MiscGfx_Table:: @ 840B21C
- obj_tiles gIntro3MiscTiles, 0xa00, 2003
- .space 8
-
- .align 2
-gInterfacePokeballPal_Table:: @ 840B22C
- obj_pal gInterfacePal_PokeBall, 2002
- .space 8
-
- .align 2
-gIntro3MiscPal_Table:: @ 840B23C
- obj_pal gIntro3Misc1Palette, 2003
- obj_pal gIntro3Misc2Palette, 2004
- .space 8
-
- .incbin "baserom.gba", 0x0040b254, 0x4
diff --git a/data/naming_screen.s b/data/naming_screen.s
index b799df2bb..60aba1345 100644
--- a/data/naming_screen.s
+++ b/data/naming_screen.s
@@ -4,113 +4,6 @@
.section .rodata
.align 2
-gUnknown_083CE2F0:: @ 83CE2F0
- .4byte sub_80B7660
- .4byte sub_80B7650
- .4byte sub_80B7650
- .4byte sub_80B7670
- .4byte sub_80B7670
- .4byte sub_80B7660
-
- .align 2
-gUnknown_083CE308:: @ 83CE308
- .4byte VRAM + 0xE000
- .4byte VRAM + 0xE800
-
- .align 2
-gUnknown_083CE310:: @ 83CE310
- .4byte sub_80B7844
- .4byte sub_80B7838
- .4byte sub_80B7838
- .4byte sub_80B7850
- .4byte sub_80B7850
- .4byte sub_80B7844
-
- .align 2
-gUnknown_083CE328:: @ 83CE328
- .4byte gWindowConfig_81E6EDC
- .4byte gWindowConfig_81E6EF8
- .4byte gWindowConfig_81E6EA4
- .4byte gWindowConfig_81E6EC0
- .4byte gWindowConfig_81E6EA4
- .4byte gWindowConfig_81E6EC0
- .4byte gWindowConfig_81E6F14
- .4byte gWindowConfig_81E6F30
- .4byte gWindowConfig_81E6F14
- .4byte gWindowConfig_81E6F30
- .4byte gWindowConfig_81E6EDC
- .4byte gWindowConfig_81E6EF8
-
- .align 2
-gUnknown_083CE358:: @ 83CE358
- .4byte nullsub_61
- .4byte nullsub_61
- .4byte sub_80B78F8
- .4byte sub_80B78F8
-
- .align 2
-gUnknown_083CE368:: @ 83CE368
- .4byte nullsub_62
- .4byte sub_80B7924
-
-gUnknown_083CE370:: @ 83CE370
- .string "♂$"
-
- .align 2
-Unknown_83CE374:
- .byte 0, 7, 1, 0, 0, 0, 0, 0
- .4byte OtherText_YourName
-
- .align 2
-Unknown_83CE380:
- .byte 0, 8, 2, 0, 0, 0, 0, 0
- .4byte OtherText_BoxName
-
- .align 2
-Unknown_83CE38C:
- .byte 0, 10, 3, 1, 0, 0, 0, 0
- .4byte OtherText_PokeName
-
- .align 2
-gUnknown_083CE398:: @ 83CE398
- .4byte Unknown_83CE374
- .4byte Unknown_83CE380
- .4byte Unknown_83CE38C
- .4byte Unknown_83CE38C
-
-gUnknown_083CE3A8:: @ 83CE3A8
- .string " A B C D E F . $"
- .string " G H I J K L , $"
- .string " M N O P Q R S $"
- .string " T U V W X Y Z $"
- .string " a b c d e f . $"
- .string " g h i j k l , $"
- .string " m n o p q r s $"
- .string " t u v w x y z $"
- .string " 0 1 2 3 4 $"
- .string " 5 6 7 8 9 $"
- .string " ! ? ♂ ♀ / - $"
- .string " … “ ” ‘ ’ $"
-
- .align 2
-gOamData_83CE498:: @ 83CE498
- .2byte 0x0000
- .2byte 0x0000
- .2byte 0x0000
-
- .align 2
-gOamData_83CE4A0:: @ 83CE4A0
- .2byte 0x0000
- .2byte 0x4000
- .2byte 0x0000
-
- .align 2
-gOamData_83CE4A8:: @ 83CE4A8
- .2byte 0x4000
- .2byte 0x8000
- .2byte 0x0000
-
- .align 2
gSubspriteTable_83CE4B0:: @ 83CE4B0
subsprite -20, -16, 1, 0, 32x8
subsprite 12, -16, 1, 4, 8x8
diff --git a/data/starter_choose.s b/data/starter_choose.s
deleted file mode 100644
index 4c549b449..000000000
--- a/data/starter_choose.s
+++ /dev/null
@@ -1,173 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gBirchBagGrassPal:: @ 83F62EC
- .incbin "graphics/misc/birch_bag.gbapal"
- .incbin "graphics/misc/birch_grass.gbapal"
-
- .align 2
-gBirchBallarrow_Pal::
- .incbin "graphics/misc/birch_ballarrow.gbapal"
-
- .align 2
-gBirchCircle_Pal::
- .incbin "graphics/misc/birch_circle.gbapal"
-
- .align 2
-gBirchBagTilemap:: @ 83F636C
- .incbin "graphics/misc/birch_bag_map.bin.lz"
-
- .align 2
-gBirchGrassTilemap:: @ 83F64F8
- .incbin "graphics/misc/birch_grass_map.bin.lz"
-
- .align 2
-gBirchHelpGfx:: @ 83F66F0
- .incbin "graphics/misc/birch_help.4bpp.lz"
-
- .align 2
-gBirchBallarrow_Gfx::
- .incbin "graphics/misc/birch_ballarrow.4bpp.lz"
-
- .align 2
-gBirchCircle_Gfx::
- .incbin "graphics/misc/birch_circle.4bpp.lz"
-
-gStarterChoose_PokeballCoords:: @ 83F76B8
- .byte 60, 64
- .byte 120, 88
- .byte 180, 64
-
-gStarterChoose_LabelCoords:: @ 83F76BE
- .byte 0, 9
- .byte 16, 10
- .byte 8, 4
-
- .align 1
-gStarterMons:: @ 83F76C4
- .2byte SPECIES_TREECKO
- .2byte SPECIES_TORCHIC
- .2byte SPECIES_MUDKIP
- .2byte 0
-
- .align 2
-gOamData_83F76CC:: @ 83F76CC
- .2byte 0x00A0
- .2byte 0x8000
- .2byte 0x0400
-
- .align 2
-gOamData_83F76D4:: @ 83F76D4
- .2byte 0x00A0
- .2byte 0x8000
- .2byte 0x0400
-
- .align 2
-gOamData_83F76DC:: @ 83F76DC
- .2byte 0x03A0
- .2byte 0xC000
- .2byte 0x0400
-
- .align 2
-gUnknown_083F76E4:: @ 83F76E4
- .byte 60, 32
- .byte 120, 56
- .byte 180, 32
- .byte 0, 0
-
- .align 2
-gSpriteAnim_83F76EC:: @ 83F76EC
- obj_image_anim_frame 48, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83F76F4:: @ 83F76F4
- obj_image_anim_frame 0, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83F76FC:: @ 83F76FC
- obj_image_anim_frame 16, 4
- obj_image_anim_frame 0, 4
- obj_image_anim_frame 32, 4
- obj_image_anim_frame 0, 4
- obj_image_anim_frame 16, 4
- obj_image_anim_frame 0, 4
- obj_image_anim_frame 32, 4
- obj_image_anim_frame 0, 4
- obj_image_anim_frame 0, 32
- obj_image_anim_frame 16, 8
- obj_image_anim_frame 0, 8
- obj_image_anim_frame 32, 8
- obj_image_anim_frame 0, 8
- obj_image_anim_frame 16, 8
- obj_image_anim_frame 0, 8
- obj_image_anim_frame 32, 8
- obj_image_anim_frame 0, 8
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_83F7744:: @ 83F7744
- obj_image_anim_frame 0, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83F774C:: @ 83F774C
- .4byte gSpriteAnim_83F76EC
-
- .align 2
-gSpriteAnimTable_83F7750:: @ 83F7750
- .4byte gSpriteAnim_83F76F4
- .4byte gSpriteAnim_83F76FC
-
- .align 2
-gSpriteAnimTable_83F7758:: @ 83F7758
- .4byte gSpriteAnim_83F7744
-
- .align 2
-gSpriteAffineAnim_83F775C:: @ 83F775C
- obj_rot_scal_anim_frame 0x10, 0x10, 0, 0
- obj_rot_scal_anim_frame 0x10, 0x10, 0, 15
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_83F7774:: @ 83F7774
- obj_rot_scal_anim_frame 0x14, 0x14, 0, 0
- obj_rot_scal_anim_frame 0x14, 0x14, 0, 15
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnimTable_83F778C:: @ 83F778C
- .4byte gSpriteAffineAnim_83F775C
-
- .align 2
-gSpriteAffineAnimTable_83F7790:: @ 83F7790
- .4byte gSpriteAffineAnim_83F7774
-
-gUnknown_083F7794:: @ 83F7794
- obj_tiles gBirchBallarrow_Gfx, 0x0800, 0x1000
- .space 8
-
-gUnknown_083F77A4:: @ 83F77A4
- obj_tiles gBirchCircle_Gfx, 0x0800, 0x1001
- .space 8
-
-gUnknown_083F77B4:: @ 83F77B4
- obj_pal gBirchBallarrow_Pal, 0x1000
- obj_pal gBirchCircle_Pal, 0x1001
- .space 8
-
- .align 2
-gSpriteTemplate_83F77CC:: @ 83F77CC
- spr_template 4096, 4096, gOamData_83F76CC, gSpriteAnimTable_83F774C, NULL, gDummySpriteAffineAnimTable, sub_810A62C
-
- .align 2
-gSpriteTemplate_83F77E4:: @ 83F77E4
- spr_template 4096, 4096, gOamData_83F76D4, gSpriteAnimTable_83F7750, NULL, gDummySpriteAffineAnimTable, sub_810A68C
-
- .align 2
-gSpriteTemplate_83F77FC:: @ 83F77FC
- spr_template 4097, 4097, gOamData_83F76DC, gSpriteAnimTable_83F7758, NULL, gSpriteAffineAnimTable_83F7790, StarterPokemonSpriteAnimCallback
diff --git a/data/text/berry_descriptions.inc b/data/text/berry_descriptions.inc
deleted file mode 100644
index ace0cff17..000000000
--- a/data/text/berry_descriptions.inc
+++ /dev/null
@@ -1,257 +0,0 @@
-gBerryDescriptionPart1_Cheri: @ 83CC740
- .string "Blooms with delicate pretty flowers.$"
-
-gBerryDescriptionPart2_Cheri: @ 83CC765
- .string "The bright red BERRY is very spicy.$"
-
-gBerryDescriptionPart1_Chesto: @ 83CC789
- .string "The BERRY’s thick skin and fruit are$"
-
-gBerryDescriptionPart2_Chesto: @ 83CC7AE
- .string "very tough. It is dry-tasting all over.$"
-
-gBerryDescriptionPart1_Pecha: @ 83CC7D6
- .string "Very sweet and delicious.$"
-
-gBerryDescriptionPart2_Pecha: @ 83CC7F0
- .string "Also very tender - handle with care.$"
-
-gBerryDescriptionPart1_Rawst: @ 83CC815
- .string "If the leaves grow long and curly,$"
-
-gBerryDescriptionPart2_Rawst: @ 83CC838
- .string "the BERRY seems to grow very bitter.$"
-
-gBerryDescriptionPart1_Aspear: @ 83CC85D
- .string "The hard BERRY is dense with a rich$"
-
-gBerryDescriptionPart2_Aspear: @ 83CC881
- .string "juice. It is quite sour.$"
-
-gBerryDescriptionPart1_Leppa: @ 83CC89A
- .string "Grows slower than CHERI and others.$"
-
-gBerryDescriptionPart2_Leppa: @ 83CC8BE
- .string "The smaller the BERRY, the tastier.$"
-
-gBerryDescriptionPart1_Oran: @ 83CC8E2
- .string "A peculiar BERRY with a mix of flavors.$"
-
-gBerryDescriptionPart2_Oran: @ 83CC90A
- .string "BERRIES grow in half a day.$"
-
-gBerryDescriptionPart1_Persim: @ 83CC926
- .string "Loves sunlight. The BERRY’s color$"
-
-gBerryDescriptionPart2_Persim: @ 83CC948
- .string "grows vivid when exposed to the sun.$"
-
-gBerryDescriptionPart1_Lum: @ 83CC96D
- .string "Slow to grow. If raised with loving$"
-
-gBerryDescriptionPart2_Lum: @ 83CC991
- .string "care, it may grow two BERRIES.$"
-
-gBerryDescriptionPart1_Sitrus: @ 83CC9B0
- .string "Closely related to ORAN. The large$"
-
-gBerryDescriptionPart2_Sitrus: @ 83CC9D3
- .string "BERRY has a well-rounded flavor.$"
-
-gBerryDescriptionPart1_Figy: @ 83CC9F4
- .string "The BERRY, which looks chewed up,$"
-
-gBerryDescriptionPart2_Figy: @ 83CCA16
- .string "brims with spicy substances.$"
-
-gBerryDescriptionPart1_Wiki: @ 83CCA33
- .string "The BERRY is said to have grown lumpy$"
-
-gBerryDescriptionPart2_Wiki: @ 83CCA59
- .string "to help POKéMON grip it.$"
-
-gBerryDescriptionPart1_Mago: @ 83CCA72
- .string "The BERRY turns curvy as it grows.$"
-
-gBerryDescriptionPart2_Mago: @ 83CCA95
- .string "The curvier, the sweeter and tastier.$"
-
-gBerryDescriptionPart1_Aguav: @ 83CCABB
- .string "The flower is dainty. It is rare in its$"
-
-gBerryDescriptionPart2_Aguav: @ 83CCAE3
- .string "ability to grow without light.$"
-
-gBerryDescriptionPart1_Iapapa: @ 83CCB02
- .string "The BERRY is very big and sour.$"
-
-gBerryDescriptionPart2_Iapapa: @ 83CCB22
- .string "It takes at least a day to grow.$"
-
-gBerryDescriptionPart1_Razz: @ 83CCB43
- .string "The red BERRY tastes slightly spicy.$"
-
-gBerryDescriptionPart2_Razz: @ 83CCB68
- .string "It grows quickly in just four hours.$"
-
-gBerryDescriptionPart1_Bluk: @ 83CCB8D
- .string "The BERRY is blue on the outside, but$"
-
-gBerryDescriptionPart2_Bluk: @ 83CCBB3
- .string "it blackens the mouth when eaten.$"
-
-gBerryDescriptionPart1_Nanab: @ 83CCBD5
- .string "This BERRY was the seventh$"
-
-gBerryDescriptionPart2_Nanab: @ 83CCBF0
- .string "discovered in the world. It is sweet.$"
-
-gBerryDescriptionPart1_Wepear: @ 83CCC16
- .string "The flower is small and white. It has a$"
-
-gBerryDescriptionPart2_Wepear: @ 83CCC3E
- .string "delicate balance of bitter and sour.$"
-
-gBerryDescriptionPart1_Pinap: @ 83CCC63
- .string "Weak against wind and cold.$"
-
-gBerryDescriptionPart2_Pinap: @ 83CCC7F
- .string "The fruit is spicy and the skin, sour.$"
-
-gBerryDescriptionPart1_Pomeg: @ 83CCCA6
- .string "However much it is watered,$"
-
-gBerryDescriptionPart2_Pomeg: @ 83CCCC2
- .string "it only grows up to six BERRIES.$"
-
-gBerryDescriptionPart1_Kelpsy: @ 83CCCE3
- .string "A rare variety shaped like a root.$"
-
-gBerryDescriptionPart2_Kelpsy: @ 83CCD06
- .string "Grows a very large flower.$"
-
-gBerryDescriptionPart1_Qualot: @ 83CCD21
- .string "Loves water. Grows strong even in$"
-
-gBerryDescriptionPart2_Qualot: @ 83CCD43
- .string "locations with constant rainfall.$"
-
-gBerryDescriptionPart1_Hondew: @ 83CCD65
- .string "A BERRY that is very valuable and$"
-
-gBerryDescriptionPart2_Hondew: @ 83CCD87
- .string "rarely seen. It is very delicious.$"
-
-gBerryDescriptionPart1_Grepa: @ 83CCDAA
- .string "Despite its tenderness and round$"
-
-gBerryDescriptionPart2_Grepa: @ 83CCDCB
- .string "shape, the BERRY is unimaginably sour.$"
-
-gBerryDescriptionPart1_Tamato: @ 83CCDF2
- .string "The BERRY is lip-bendingly spicy.$"
-
-gBerryDescriptionPart2_Tamato: @ 83CCE14
- .string "It takes time to grow.$"
-
-gBerryDescriptionPart1_Cornn: @ 83CCE2B
- .string "A BERRY from an ancient era. May not$"
-
-gBerryDescriptionPart2_Cornn: @ 83CCE50
- .string "grow unless planted in quantity.$"
-
-gBerryDescriptionPart1_Magost: @ 83CCE71
- .string "A BERRY that is widely said to have$"
-
-gBerryDescriptionPart2_Magost: @ 83CCE95
- .string "a finely balanced flavor.$"
-
-gBerryDescriptionPart1_Rabuta: @ 83CCEAF
- .string "A rare variety that is overgrown with$"
-
-gBerryDescriptionPart2_Rabuta: @ 83CCED5
- .string "hair. It is quite bitter.$"
-
-gBerryDescriptionPart1_Nomel: @ 83CCEEF
- .string "Quite sour. Just one bite makes it$"
-
-gBerryDescriptionPart2_Nomel: @ 83CCF12
- .string "impossible to taste for three days.$"
-
-gBerryDescriptionPart1_Spelon: @ 83CCF36
- .string "The vividly red BERRY is very spicy.$"
-
-gBerryDescriptionPart2_Spelon: @ 83CCF5B
- .string "Its warts secrete a spicy substance.$"
-
-gBerryDescriptionPart1_Pamtre: @ 83CCF80
- .string "Drifts on the sea from somewhere.$"
-
-gBerryDescriptionPart2_Pamtre: @ 83CCFA2
- .string "It is thought to grow elsewhere.$"
-
-gBerryDescriptionPart1_Watmel: @ 83CCFC3
- .string "A huge BERRY, with some over 20$"
-
-gBerryDescriptionPart2_Watmel: @ 83CCFE3
- .string "inches discovered. Exceedingly sweet.$"
-
-gBerryDescriptionPart1_Durin: @ 83CD009
- .string "Bitter to even look at. It is so$"
-
-gBerryDescriptionPart2_Durin: @ 83CD02A
- .string "bitter, no one has ever eaten it as is.$"
-
-gBerryDescriptionPart1_Belue: @ 83CD052
- .string "It is glossy and looks delicious, but$"
-
-gBerryDescriptionPart2_Belue: @ 83CD078
- .string "it is awfully sour. Takes time to grow.$"
-
-gBerryDescriptionPart1_Liechi: @ 83CD0A0
- .string "A mysterious BERRY. It is rumored to$"
-
-gBerryDescriptionPart2_Liechi: @ 83CD0C5
- .string "contain the power of the sea.$"
-
-gBerryDescriptionPart1_Ganlon: @ 83CD0E3
- .string "A mysterious BERRY. It is rumored to$"
-
-gBerryDescriptionPart2_Ganlon: @ 83CD108
- .string "contain the power of the land.$"
-
-gBerryDescriptionPart1_Salac: @ 83CD127
- .string "A mysterious BERRY. It is rumored to$"
-
-gBerryDescriptionPart2_Salac: @ 83CD14C
- .string "contain the power of the sky.$"
-
-gBerryDescriptionPart1_Petaya: @ 83CD16A
- .string "A mysterious BERRY. It is rumored to$"
-
-gBerryDescriptionPart2_Petaya: @ 83CD18F
- .string "contain the power of all living things.$"
-
-gBerryDescriptionPart1_Apicot: @ 83CD1B7
- .string "A very mystifying BERRY. No telling$"
-
-gBerryDescriptionPart2_Apicot: @ 83CD1DB
- .string "what may happen or how it can be used.$"
-
-gBerryDescriptionPart1_Lansat: @ 83CD202
- .string "Said to be a legendary BERRY.$"
-
-gBerryDescriptionPart2_Lansat: @ 83CD220
- .string "Holding it supposedly brings joy.$"
-
-gBerryDescriptionPart1_Starf: @ 83CD242
- .string "So strong, it was abandoned at the$"
-
-gBerryDescriptionPart2_Starf: @ 83CD265
- .string "world’s edge. Considered a mirage.$"
-
-gBerryDescriptionPart1_Enigma: @ 83CD288
- .string "A completely enigmatic BERRY.$"
-
-gBerryDescriptionPart2_Enigma: @ 83CD2A6
- .string "Appears to have the power of stars.$"
diff --git a/data/title_screen.s b/data/title_screen.s
deleted file mode 100644
index 7c818eeb2..000000000
--- a/data/title_screen.s
+++ /dev/null
@@ -1,215 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_08393210:: @ 8393210
- .ifdef SAPPHIRE
- .incbin "graphics/title_screen/kyogre_dark.gbapal"
- .incbin "graphics/title_screen/kyogre_glow.gbapal"
- .else
- .incbin "graphics/title_screen/groudon_dark.gbapal"
- .incbin "graphics/title_screen/groudon_glow.gbapal"
- .endif
-
- .align 2
-gUnknown_08393250:: @ 8393250
- .ifdef SAPPHIRE
- .incbin "graphics/title_screen/kyogre.4bpp.lz"
- .else
- .incbin "graphics/title_screen/groudon.4bpp.lz"
- .endif
-
- .align 2
-gUnknown_083939EC:: @ 83939EC
- .ifdef SAPPHIRE
- .incbin "graphics/title_screen/kyogre_map.bin.lz"
- .else
- .incbin "graphics/title_screen/groudon_map.bin.lz"
- .endif
-
- .align 2
-gUnknown_08393BF8:: @ 8393BF8
- .ifdef SAPPHIRE
- .incbin "graphics/title_screen/water_map.bin.lz"
- .else
- .incbin "graphics/title_screen/lava_map.bin.lz"
- .endif
-
- .align 2
-LogoShineTiles: @ 8393D14
- .incbin "graphics/title_screen/logo_shine.4bpp.lz"
-
- .align 1
-gUnknown_08393E64:: @ 8393E64
- .2byte 0x10
- .2byte 0x110
- .2byte 0x210
- .2byte 0x310
- .2byte 0x410
- .2byte 0x510
- .2byte 0x610
- .2byte 0x710
- .2byte 0x810
- .2byte 0x910
- .2byte 0xA10
- .2byte 0xB10
- .2byte 0xC10
- .2byte 0xD10
- .2byte 0xE10
- .2byte 0xF10
- .2byte 0x100F
- .2byte 0x100E
- .2byte 0x100D
- .2byte 0x100C
- .2byte 0x100B
- .2byte 0x100A
- .2byte 0x1009
- .2byte 0x1008
- .2byte 0x1007
- .2byte 0x1006
- .2byte 0x1005
- .2byte 0x1004
- .2byte 0x1003
- .2byte 0x1002
- .2byte 0x1001
- .2byte 0x1000
-
- .align 2
-gOamData_8393EA4:: @ 8393EA4
- .2byte 0x60A0
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gOamData_8393EAC:: @ 8393EAC
- .2byte 0x60A0
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gSpriteAnim_8393EB4:: @ 8393EB4
- obj_image_anim_frame 0, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8393EBC:: @ 8393EBC
- obj_image_anim_frame 64, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8393EC4:: @ 8393EC4
- .4byte gSpriteAnim_8393EB4
-
- .align 2
-gSpriteAnimTable_8393EC8:: @ 8393EC8
- .4byte gSpriteAnim_8393EBC
-
- .align 2
-gSpriteTemplate_8393ECC:: @ 8393ECC
- spr_template 1000, 1000, gOamData_8393EA4, gSpriteAnimTable_8393EC4, NULL, gDummySpriteAffineAnimTable, SpriteCallback_VersionBannerLeft
-
- .align 2
-gSpriteTemplate_8393EE4:: @ 8393EE4
- spr_template 1000, 1000, gOamData_8393EAC, gSpriteAnimTable_8393EC8, NULL, gDummySpriteAffineAnimTable, SpriteCallback_VersionBannerRight
-
- .align 2
-gUnknown_08393EFC:: @ 8393EFC
- obj_tiles gVersionTiles, 0x1000, 1000
- null_obj_tiles
-
- .align 2
-gOamData_8393F0C:: @ 8393F0C
- .2byte 0x40A0
- .2byte 0x4000
- .2byte 0x0000
-
- .align 2
-gSpriteAnim_8393F14:: @ 8393F14
- obj_image_anim_frame 0, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8393F1C:: @ 8393F1C
- obj_image_anim_frame 4, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8393F24:: @ 8393F24
- obj_image_anim_frame 8, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8393F2C:: @ 8393F2C
- obj_image_anim_frame 12, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8393F34:: @ 8393F34
- obj_image_anim_frame 16, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8393F3C:: @ 8393F3C
- obj_image_anim_frame 20, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8393F44:: @ 8393F44
- obj_image_anim_frame 24, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8393F4C:: @ 8393F4C
- obj_image_anim_frame 28, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8393F54:: @ 8393F54
- .4byte gSpriteAnim_8393F14
- .4byte gSpriteAnim_8393F1C
- .4byte gSpriteAnim_8393F24
- .4byte gSpriteAnim_8393F2C
- .4byte gSpriteAnim_8393F34
- .4byte gSpriteAnim_8393F3C
- .4byte gSpriteAnim_8393F44
- .4byte gSpriteAnim_8393F4C
-
- .align 2
-gSpriteTemplate_8393F74:: @ 8393F74
- spr_template 1001, 1001, gOamData_8393F0C, gSpriteAnimTable_8393F54, NULL, gDummySpriteAffineAnimTable, SpriteCallback_PressStartCopyrightBanner
-
- .align 2
-gUnknown_08393F8C:: @ 8393F8C
- obj_tiles gTitleScreenPressStart_Gfx, 0x520, 1001
- null_obj_tiles
-
- .align 2
-gUnknown_08393F9C:: @ 8393F9C
- obj_pal gTitleScreenLogoShinePalette, 1001
- obj_pal 0x0, 0x0
-
- .align 2
-gOamData_8393FAC:: @ 8393FAC
- .2byte 0x00A0
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gSpriteAnim_8393FB4:: @ 8393FB4
- obj_image_anim_frame 0, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8393FBC:: @ 8393FBC
- .4byte gSpriteAnim_8393FB4
-
- .align 2
-gSpriteTemplate_8393FC0:: @ 8393FC0
- spr_template 1002, 1001, gOamData_8393FAC, gSpriteAnimTable_8393FBC, NULL, gDummySpriteAffineAnimTable, SpriteCallback_PokemonLogoShine
-
- .align 2
-gUnknown_08393FD8:: @ 8393FD8
- obj_tiles LogoShineTiles, 0x800, 1002
- null_obj_tiles
diff --git a/data/trainer_eye_trainers.inc b/data/trainer_eye_trainers.inc
deleted file mode 100644
index 3628ea598..000000000
--- a/data/trainer_eye_trainers.inc
+++ /dev/null
@@ -1,58 +0,0 @@
- .align 2
-gTrainerEyeTrainers:: @ 839AE70
- trainer_eye_trainer ROSE_1, ROSE_2, ROSE_3, ROSE_4, ROSE_5, Route118
- trainer_eye_trainer DUSTY_1, DUSTY_2, DUSTY_3, DUSTY_4, DUSTY_5, Route111
- trainer_eye_trainer LOLA_1, LOLA_2, LOLA_3, LOLA_4, LOLA_5, Route109
- trainer_eye_trainer RICKY_1, RICKY_2, RICKY_3, RICKY_4, RICKY_5, Route109
- trainer_eye_trainer RITA_AND_SAM_1, RITA_AND_SAM_2, RITA_AND_SAM_3, RITA_AND_SAM_4, RITA_AND_SAM_5, Route124
- trainer_eye_trainer BROOKE_1, BROOKE_2, BROOKE_3, BROOKE_4, BROOKE_5, Route111
- trainer_eye_trainer WILTON_1, WILTON_2, WILTON_3, WILTON_4, WILTON_5, Route111
- trainer_eye_trainer VALERIE_1, VALERIE_2, VALERIE_3, VALERIE_4, VALERIE_5, MtPyre_6F
- trainer_eye_trainer CINDY_1, CINDY_3, CINDY_4, CINDY_5, CINDY_6, Route104
- trainer_eye_trainer JESSICA_1, JESSICA_2, JESSICA_3, JESSICA_4, JESSICA_5, Route121
- trainer_eye_trainer WINSTON_1, WINSTON_2, WINSTON_3, WINSTON_4, WINSTON_5, Route104
- trainer_eye_trainer STEVE_1, STEVE_2, STEVE_3, STEVE_4, STEVE_5, Route114
- trainer_eye_trainer TONY_1, TONY_2, TONY_3, TONY_4, TONY_5, Route107
- trainer_eye_trainer NOB_1, NOB_2, NOB_3, NOB_4, NOB_5, Route115
- trainer_eye_trainer DALTON_1, DALTON_2, DALTON_3, DALTON_4, DALTON_5, Route118
- trainer_eye_trainer BERNIE_1, BERNIE_2, BERNIE_3, BERNIE_4, BERNIE_5, Route114
- trainer_eye_trainer ETHAN_1, ETHAN_2, ETHAN_3, ETHAN_4, ETHAN_5, JaggedPass
- trainer_eye_trainer JOHN_AND_JAY_1, JOHN_AND_JAY_2, JOHN_AND_JAY_3, JOHN_AND_JAY_4, JOHN_AND_JAY_5, MeteorFalls_1F_2R
- trainer_eye_trainer BRANDON_1, BRANDON_2, BRANDON_3, BRANDON_4, BRANDON_5, Route120
- trainer_eye_trainer CAMERON_1, CAMERON_2, CAMERON_3, CAMERON_4, CAMERON_5, Route123
- trainer_eye_trainer JACKI_1, JACKI_2, JACKI_3, JACKI_4, JACKI_5, Route123
- trainer_eye_trainer WALTER_1, WALTER_2, WALTER_3, WALTER_4, WALTER_5, Route121
- trainer_eye_trainer KAREN_1, KAREN_2, KAREN_3, KAREN_4, KAREN_5, Route116
- trainer_eye_trainer JERRY_1, JERRY_2, JERRY_3, JERRY_4, JERRY_5, Route116
- trainer_eye_trainer ANNA_AND_MEG_1, ANNA_AND_MEG_2, ANNA_AND_MEG_3, ANNA_AND_MEG_4, ANNA_AND_MEG_5, Route117
- trainer_eye_trainer ISABEL_1, ISABEL_2, ISABEL_3, ISABEL_4, ISABEL_5, Route110
- trainer_eye_trainer MIGUEL_1, MIGUEL_2, MIGUEL_3, MIGUEL_4, MIGUEL_5, Route103
- trainer_eye_trainer TIMOTHY_1, TIMOTHY_2, TIMOTHY_3, TIMOTHY_4, TIMOTHY_5, Route115
- trainer_eye_trainer SHELBY_1, SHELBY_2, SHELBY_3, SHELBY_4, SHELBY_5, MtChimney
- trainer_eye_trainer CALVIN_1, CALVIN_2, CALVIN_3, CALVIN_4, CALVIN_5, Route102
- trainer_eye_trainer ELLIOT_1, ELLIOT_2, ELLIOT_3, ELLIOT_4, ELLIOT_5, Route106
- trainer_eye_trainer ABIGAIL_1, ABIGAIL_2, ABIGAIL_3, ABIGAIL_4, ABIGAIL_5, Route110
- trainer_eye_trainer BENJAMIN_1, BENJAMIN_2, BENJAMIN_3, BENJAMIN_4, BENJAMIN_5, Route110
- trainer_eye_trainer ISAIAH_1, ISAIAH_2, ISAIAH_3, ISAIAH_4, ISAIAH_5, Route128
- trainer_eye_trainer KATELYN_1, KATELYN_2, KATELYN_3, KATELYN_4, KATELYN_5, Route128
- trainer_eye_trainer MARIA_1, MARIA_2, MARIA_3, MARIA_4, MARIA_5, Route117
- trainer_eye_trainer DYLAN_1, DYLAN_2, DYLAN_3, DYLAN_4, DYLAN_5, Route117
- trainer_eye_trainer NICOLAS_1, NICOLAS_2, NICOLAS_3, NICOLAS_4, NICOLAS_5, MeteorFalls_1F_2R
- trainer_eye_trainer ROBERT_1, ROBERT_2, ROBERT_3, ROBERT_4, ROBERT_5, Route120
- trainer_eye_trainer LAO_1, LAO_2, LAO_3, LAO_4, LAO_5, Route113
- trainer_eye_trainer CYNDY_1, CYNDY_2, CYNDY_3, CYNDY_4, CYNDY_5, Route115
- trainer_eye_trainer MADELINE_1, MADELINE_2, MADELINE_3, MADELINE_4, MADELINE_5, Route113
- trainer_eye_trainer JENNY_1, JENNY_2, JENNY_3, JENNY_4, JENNY_5, Route124
- trainer_eye_trainer DIANA_1, DIANA_2, DIANA_3, DIANA_4, DIANA_5, JaggedPass
- trainer_eye_trainer AMY_AND_LIV_1, AMY_AND_LIV_2, AMY_AND_LIV_4, AMY_AND_LIV_5, AMY_AND_LIV_6, Route103
- trainer_eye_trainer ERNEST_1, ERNEST_2, ERNEST_3, ERNEST_4, ERNEST_5, Route125
- trainer_eye_trainer EDWIN_1, EDWIN_2, EDWIN_3, EDWIN_4, EDWIN_5, Route110
- trainer_eye_trainer LYDIA_1, LYDIA_2, LYDIA_3, LYDIA_4, LYDIA_5, Route117
- trainer_eye_trainer ISAAC_1, ISAAC_2, ISAAC_3, ISAAC_4, ISAAC_5, Route117
- trainer_eye_trainer CATHERINE_1, CATHERINE_2, CATHERINE_3, CATHERINE_4, CATHERINE_5, Route119
- trainer_eye_trainer JACKSON_1, JACKSON_2, JACKSON_3, JACKSON_4, JACKSON_5, Route119
- trainer_eye_trainer HALEY_1, HALEY_2, HALEY_3, HALEY_4, HALEY_5, Route104
- trainer_eye_trainer JAMES_1, JAMES_2, JAMES_3, JAMES_4, JAMES_5, PetalburgWoods
- trainer_eye_trainer TRENT_1, TRENT_2, TRENT_3, TRENT_4, TRENT_5, Route112
- trainer_eye_trainer LOIS_AND_HAL_1, LOIS_AND_HAL_2, LOIS_AND_HAL_3, LOIS_AND_HAL_4, LOIS_AND_HAL_5, AbandonedShip_Rooms2_1F
- trainer_eye_trainer WALLY_3, WALLY_4, WALLY_5, WALLY_6, NONE, VictoryRoad_1F
diff --git a/data/wallclock.s b/data/wallclock.s
deleted file mode 100644
index 15ab36097..000000000
--- a/data/wallclock.s
+++ /dev/null
@@ -1,86 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-ClockGfx_Misc: @ 83F7814
- .incbin "graphics/misc/clock_misc.4bpp.lz"
-
- .align 2
-gUnknown_083F7A90:: @ 83F7A90
- obj_tiles ClockGfx_Misc, 0x2000, 0x1000
- .space 8
-
- .align 2
-gUnknown_083F7AA0:: @ 83F7AA0
- obj_pal gMiscClockMale_Pal, 0x1000
- obj_pal gMiscClockFemale_Pal, 0x1001
- .space 8
-
- .align 2
-gOamData_83F7AB8:: @ 83F7AB8
- .2byte 0x00A0
- .2byte 0xC000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_83F7AC0:: @ 83F7AC0
- obj_image_anim_frame 0, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83F7AC8:: @ 83F7AC8
- obj_image_anim_frame 64, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83F7AD0:: @ 83F7AD0
- .4byte gSpriteAnim_83F7AC0
-
- .align 2
-gSpriteAnimTable_83F7AD4:: @ 83F7AD4
- .4byte gSpriteAnim_83F7AC8
-
- .align 2
-gSpriteTemplate_83F7AD8:: @ 83F7AD8
- spr_template 4096, 4096, gOamData_83F7AB8, gSpriteAnimTable_83F7AD0, NULL, gDummySpriteAffineAnimTable, sub_810B05C
-
- .align 2
-gSpriteTemplate_83F7AF0:: @ 83F7AF0
- spr_template 4096, 4096, gOamData_83F7AB8, gSpriteAnimTable_83F7AD4, NULL, gDummySpriteAffineAnimTable, sub_810B0F4
-
- .align 2
-gOamData_83F7B08:: @ 83F7B08
- .2byte 0x00A0
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gSpriteAnim_83F7B10:: @ 83F7B10
- obj_image_anim_frame 132, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83F7B18:: @ 83F7B18
- obj_image_anim_frame 128, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83F7B20:: @ 83F7B20
- .4byte gSpriteAnim_83F7B10
-
- .align 2
-gSpriteAnimTable_83F7B24:: @ 83F7B24
- .4byte gSpriteAnim_83F7B18
-
- .align 2
-gSpriteTemplate_83F7B28:: @ 83F7B28
- spr_template 4096, 4096, gOamData_83F7B08, gSpriteAnimTable_83F7B20, NULL, gDummySpriteAffineAnimTable, sub_810B18C
-
- .align 2
-gSpriteTemplate_83F7B40:: @ 83F7B40
- spr_template 4096, 4096, gOamData_83F7B08, gSpriteAnimTable_83F7B24, NULL, gDummySpriteAffineAnimTable, sub_810B230
-
-@ 83F7B58
- .include "data/clock_hand_coords.inc"
diff --git a/data/wild_mons.inc b/data/wild_mons.inc
index b30bc847d..01ebd8a16 100644
--- a/data/wild_mons.inc
+++ b/data/wild_mons.inc
@@ -1,3104 +1,3 @@
- .macro wild_mon_difference species1, species2
- .ifdef SAPPHIRE
- .equiv SPECIES_\species1\()_\species2, SPECIES_\species2
- .equiv SPECIES_\species2\()_\species1, SPECIES_\species1
- .else
- .equiv SPECIES_\species1\()_\species2, SPECIES_\species1
- .equiv SPECIES_\species2\()_\species1, SPECIES_\species2
- .endif
- .endm
-
- wild_mon_difference SEEDOT, LOTAD
- wild_mon_difference NUZLEAF, LOMBRE
- wild_mon_difference MAWILE, SABLEYE
- wild_mon_difference ZANGOOSE, SEVIPER
- wild_mon_difference SOLROCK, LUNATONE
- wild_mon_difference DUSKULL, SHUPPET
- wild_mon_difference DUSCLOPS, BANETTE
- wild_mon_difference KOFFING, GRIMER
- wild_mon_difference MINUN, PLUSLE
- wild_mon_difference ILLUMISE, VOLBEAT
-
- .align 2
-PetalburgCity_WaterMons:
- wild_mon MARILL, 20, 30
- wild_mon MARILL, 10, 20
- wild_mon MARILL, 30, 35
- wild_mon MARILL, 5, 10
- wild_mon MARILL, 5, 10
-
- .align 2
-PetalburgCity_WaterMonsInfo:
- .4byte 1 @ encounter rate
- .4byte PetalburgCity_WaterMons
-
- .align 2
-PetalburgCity_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon CORPHISH, 10, 30
- wild_mon CORPHISH, 25, 30
- wild_mon CORPHISH, 30, 35
- wild_mon CORPHISH, 20, 25
- wild_mon CORPHISH, 35, 40
- wild_mon CORPHISH, 40, 45
-
- .align 2
-PetalburgCity_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte PetalburgCity_FishingMons
-
- .align 2
-SlateportCity_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-SlateportCity_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SlateportCity_WaterMons
-
- .align 2
-SlateportCity_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-SlateportCity_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte SlateportCity_FishingMons
-
- .align 2
-LilycoveCity_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-LilycoveCity_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte LilycoveCity_WaterMons
-
- .align 2
-LilycoveCity_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon STARYU, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-LilycoveCity_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte LilycoveCity_FishingMons
-
- .align 2
-MossdeepCity_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-MossdeepCity_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte MossdeepCity_WaterMons
-
- .align 2
-MossdeepCity_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-MossdeepCity_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MossdeepCity_FishingMons
-
- .align 2
-SootopolisCity_WaterMons:
- wild_mon MAGIKARP, 5, 35
- wild_mon MAGIKARP, 10, 30
- wild_mon MAGIKARP, 15, 25
- wild_mon MAGIKARP, 25, 30
- wild_mon MAGIKARP, 25, 30
-
- .align 2
-SootopolisCity_WaterMonsInfo:
- .4byte 1 @ encounter rate
- .4byte SootopolisCity_WaterMons
-
- .align 2
-SootopolisCity_FishingMons:
- wild_mon MAGIKARP, 5, 10
- .ifdef SAPPHIRE
- wild_mon TENTACOOL, 5, 10
- .else
- wild_mon MAGIKARP, 10, 15
- .endif
- wild_mon MAGIKARP, 10, 30
- wild_mon MAGIKARP, 10, 30
- wild_mon MAGIKARP, 10, 30
- wild_mon MAGIKARP, 30, 35
- wild_mon MAGIKARP, 30, 35
- wild_mon GYARADOS, 35, 40
- wild_mon GYARADOS, 35, 45
- wild_mon GYARADOS, 5, 45
-
- .align 2
-SootopolisCity_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte SootopolisCity_FishingMons
-
- .align 2
-EverGrandeCity_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-EverGrandeCity_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte EverGrandeCity_WaterMons
-
- .align 2
-EverGrandeCity_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon LUVDISC, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon LUVDISC, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon CORSOLA, 30, 35
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-EverGrandeCity_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte EverGrandeCity_FishingMons
-
- .align 2
-MeteorFalls_1F_1R_LandMons:
- wild_mon ZUBAT, 16
- wild_mon ZUBAT, 17
- wild_mon ZUBAT, 18
- wild_mon ZUBAT, 15
- wild_mon ZUBAT, 14
- wild_mon SOLROCK_LUNATONE, 16
- wild_mon SOLROCK_LUNATONE, 18
- wild_mon SOLROCK_LUNATONE, 14
- wild_mon ZUBAT, 19
- wild_mon ZUBAT, 20
- wild_mon ZUBAT, 19
- wild_mon ZUBAT, 20
-
- .align 2
-MeteorFalls_1F_1R_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MeteorFalls_1F_1R_LandMons
-
- .align 2
-MeteorFalls_1F_1R_WaterMons:
- wild_mon ZUBAT, 5, 35
- wild_mon ZUBAT, 30, 35
- wild_mon SOLROCK_LUNATONE, 25, 35
- wild_mon SOLROCK_LUNATONE, 15, 25
- wild_mon SOLROCK_LUNATONE, 5, 15
-
- .align 2
-MeteorFalls_1F_1R_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte MeteorFalls_1F_1R_WaterMons
-
- .align 2
-MeteorFalls_1F_1R_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon BARBOACH, 20, 25
- wild_mon BARBOACH, 35, 40
- wild_mon BARBOACH, 40, 45
-
- .align 2
-MeteorFalls_1F_1R_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte MeteorFalls_1F_1R_FishingMons
-
- .align 2
-MeteorFalls_1F_2R_LandMons:
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon SOLROCK_LUNATONE, 35
- wild_mon SOLROCK_LUNATONE, 33
- wild_mon SOLROCK_LUNATONE, 37
- wild_mon GOLBAT, 35
- wild_mon SOLROCK_LUNATONE, 39
- wild_mon GOLBAT, 38
- wild_mon GOLBAT, 40
- wild_mon GOLBAT, 38
- wild_mon GOLBAT, 40
-
- .align 2
-MeteorFalls_1F_2R_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MeteorFalls_1F_2R_LandMons
-
- .align 2
-MeteorFalls_1F_2R_WaterMons:
- wild_mon GOLBAT, 30, 35
- wild_mon GOLBAT, 30, 35
- wild_mon SOLROCK_LUNATONE, 25, 35
- wild_mon SOLROCK_LUNATONE, 15, 25
- wild_mon SOLROCK_LUNATONE, 5, 15
-
- .align 2
-MeteorFalls_1F_2R_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte MeteorFalls_1F_2R_WaterMons
-
- .align 2
-MeteorFalls_1F_2R_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon WHISCASH, 30, 35
- wild_mon WHISCASH, 35, 40
- wild_mon WHISCASH, 40, 45
-
- .align 2
-MeteorFalls_1F_2R_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte MeteorFalls_1F_2R_FishingMons
-
- .align 2
-MeteorFalls_B1F_1R_LandMons:
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon SOLROCK_LUNATONE, 35
- wild_mon SOLROCK_LUNATONE, 33
- wild_mon SOLROCK_LUNATONE, 37
- wild_mon GOLBAT, 35
- wild_mon SOLROCK_LUNATONE, 39
- wild_mon GOLBAT, 38
- wild_mon GOLBAT, 40
- wild_mon GOLBAT, 38
- wild_mon GOLBAT, 40
-
- .align 2
-MeteorFalls_B1F_1R_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MeteorFalls_B1F_1R_LandMons
-
- .align 2
-MeteorFalls_B1F_1R_WaterMons:
- wild_mon GOLBAT, 30, 35
- wild_mon GOLBAT, 30, 35
- wild_mon SOLROCK_LUNATONE, 25, 35
- wild_mon SOLROCK_LUNATONE, 15, 25
- wild_mon SOLROCK_LUNATONE, 5, 15
-
- .align 2
-MeteorFalls_B1F_1R_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte MeteorFalls_B1F_1R_WaterMons
-
- .align 2
-MeteorFalls_B1F_1R_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon WHISCASH, 30, 35
- wild_mon WHISCASH, 35, 40
- wild_mon WHISCASH, 40, 45
-
- .align 2
-MeteorFalls_B1F_1R_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte MeteorFalls_B1F_1R_FishingMons
-
- .align 2
-MeteorFalls_B1F_2R_LandMons:
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 35
- wild_mon BAGON, 30
- wild_mon SOLROCK_LUNATONE, 35
- wild_mon BAGON, 35
- wild_mon SOLROCK_LUNATONE, 37
- wild_mon BAGON, 25
- wild_mon SOLROCK_LUNATONE, 39
- wild_mon GOLBAT, 38
- wild_mon GOLBAT, 40
- wild_mon GOLBAT, 38
- wild_mon GOLBAT, 40
-
- .align 2
-MeteorFalls_B1F_2R_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MeteorFalls_B1F_2R_LandMons
-
- .align 2
-MeteorFalls_B1F_2R_WaterMons:
- wild_mon GOLBAT, 30, 35
- wild_mon GOLBAT, 30, 35
- wild_mon SOLROCK_LUNATONE, 25, 35
- wild_mon SOLROCK_LUNATONE, 15, 25
- wild_mon SOLROCK_LUNATONE, 5, 15
-
- .align 2
-MeteorFalls_B1F_2R_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte MeteorFalls_B1F_2R_WaterMons
-
- .align 2
-MeteorFalls_B1F_2R_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon WHISCASH, 30, 35
- wild_mon WHISCASH, 35, 40
- wild_mon WHISCASH, 40, 45
-
- .align 2
-MeteorFalls_B1F_2R_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte MeteorFalls_B1F_2R_FishingMons
-
- .align 2
-RusturfTunnel_LandMons:
- wild_mon WHISMUR, 6
- wild_mon WHISMUR, 7
- wild_mon WHISMUR, 6
- wild_mon WHISMUR, 6
- wild_mon WHISMUR, 7
- wild_mon WHISMUR, 7
- wild_mon WHISMUR, 5
- wild_mon WHISMUR, 8
- wild_mon WHISMUR, 5
- wild_mon WHISMUR, 8
- wild_mon WHISMUR, 5
- wild_mon WHISMUR, 8
-
- .align 2
-RusturfTunnel_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte RusturfTunnel_LandMons
-
- .align 2
-GraniteCave_1F_LandMons:
- wild_mon ZUBAT, 7
- wild_mon MAKUHITA, 8
- wild_mon MAKUHITA, 7
- wild_mon ZUBAT, 8
- wild_mon MAKUHITA, 9
- wild_mon ABRA, 8
- wild_mon MAKUHITA, 10
- wild_mon MAKUHITA, 6
- wild_mon GEODUDE, 7
- wild_mon GEODUDE, 8
- wild_mon GEODUDE, 6
- wild_mon GEODUDE, 9
-
- .align 2
-GraniteCave_1F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte GraniteCave_1F_LandMons
-
- .align 2
-GraniteCave_B1F_LandMons:
- wild_mon ZUBAT, 9
- wild_mon ARON, 10
- wild_mon ARON, 9
- wild_mon ARON, 11
- wild_mon ZUBAT, 10
- wild_mon ABRA, 9
- wild_mon MAKUHITA, 10
- wild_mon MAKUHITA, 11
- wild_mon MAWILE_SABLEYE, 10
- wild_mon MAWILE_SABLEYE, 10
- wild_mon MAWILE_SABLEYE, 9
- wild_mon MAWILE_SABLEYE, 11
-
- .align 2
-GraniteCave_B1F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte GraniteCave_B1F_LandMons
-
- .align 2
-GraniteCave_B2F_LandMons:
- wild_mon ZUBAT, 10
- wild_mon ARON, 11
- wild_mon ARON, 10
- wild_mon ZUBAT, 11
- wild_mon ARON, 12
- wild_mon ABRA, 10
- wild_mon MAWILE_SABLEYE, 10
- wild_mon MAWILE_SABLEYE, 11
- wild_mon MAWILE_SABLEYE, 12
- wild_mon MAWILE_SABLEYE, 10
- wild_mon MAWILE_SABLEYE, 12
- wild_mon MAWILE_SABLEYE, 10
-
- .align 2
-GraniteCave_B2F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte GraniteCave_B2F_LandMons
-
- .align 2
-GraniteCave_B2F_RockSmashMons:
- wild_mon GEODUDE, 10, 15
- wild_mon NOSEPASS, 10, 20
- wild_mon GEODUDE, 5, 10
- wild_mon GEODUDE, 15, 20
- wild_mon GEODUDE, 15, 20
-
- .align 2
-GraniteCave_B2F_RockSmashMonsInfo:
- .4byte 20 @ encounter rate
- .4byte GraniteCave_B2F_RockSmashMons
-
- .align 2
-GraniteCave_StevensRoom_LandMons:
- wild_mon ZUBAT, 7
- wild_mon MAKUHITA, 8
- wild_mon MAKUHITA, 7
- wild_mon ZUBAT, 8
- wild_mon MAKUHITA, 9
- wild_mon ABRA, 8
- wild_mon MAKUHITA, 10
- wild_mon MAKUHITA, 6
- wild_mon ARON, 7
- wild_mon ARON, 8
- wild_mon ARON, 7
- wild_mon ARON, 8
-
- .align 2
-GraniteCave_StevensRoom_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte GraniteCave_StevensRoom_LandMons
-
- .align 2
-PetalburgWoods_LandMons:
- wild_mon ZIGZAGOON, 5
- wild_mon WURMPLE, 5
- wild_mon SHROOMISH, 5
- wild_mon ZIGZAGOON, 6
- wild_mon SILCOON, 5
- wild_mon CASCOON, 5
- wild_mon WURMPLE, 6
- wild_mon SHROOMISH, 6
- wild_mon TAILLOW, 5
- wild_mon SLAKOTH, 5
- wild_mon TAILLOW, 6
- wild_mon SLAKOTH, 6
-
- .align 2
-PetalburgWoods_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte PetalburgWoods_LandMons
-
- .ifdef SAPPHIRE
- .equiv JAGGED_PASS_LEVEL_DIFF, 2
- .else
- .equiv JAGGED_PASS_LEVEL_DIFF, 0
- .endif
-
- .align 2
-JaggedPass_LandMons:
- wild_mon NUMEL, 19 + JAGGED_PASS_LEVEL_DIFF
- wild_mon NUMEL, 19 + JAGGED_PASS_LEVEL_DIFF
- wild_mon MACHOP, 19 + JAGGED_PASS_LEVEL_DIFF
- wild_mon NUMEL, 18 + JAGGED_PASS_LEVEL_DIFF
- wild_mon SPOINK, 18 + JAGGED_PASS_LEVEL_DIFF
- wild_mon MACHOP, 18 + JAGGED_PASS_LEVEL_DIFF
- wild_mon SPOINK, 19 + JAGGED_PASS_LEVEL_DIFF
- wild_mon MACHOP, 20 + JAGGED_PASS_LEVEL_DIFF
- wild_mon NUMEL, 20 + JAGGED_PASS_LEVEL_DIFF
- wild_mon SPOINK, 20 + JAGGED_PASS_LEVEL_DIFF
- wild_mon NUMEL, 20 + JAGGED_PASS_LEVEL_DIFF
- wild_mon SPOINK, 20 + JAGGED_PASS_LEVEL_DIFF
-
- .align 2
-JaggedPass_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte JaggedPass_LandMons
-
- .align 2
-FieryPath_LandMons:
- wild_mon NUMEL, 15
- wild_mon KOFFING_GRIMER, 15
- wild_mon NUMEL, 16
- wild_mon MACHOP, 15
- wild_mon TORKOAL, 15
- wild_mon SLUGMA, 15
- wild_mon KOFFING_GRIMER, 16
- wild_mon MACHOP, 16
- wild_mon TORKOAL, 14
- wild_mon TORKOAL, 16
- wild_mon GRIMER_KOFFING, 14
- wild_mon GRIMER_KOFFING, 14
-
- .align 2
-FieryPath_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte FieryPath_LandMons
-
- .align 2
-MtPyre_1F_LandMons:
- wild_mon DUSKULL_SHUPPET, 27
- wild_mon DUSKULL_SHUPPET, 28
- wild_mon DUSKULL_SHUPPET, 26
- wild_mon DUSKULL_SHUPPET, 25
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
- wild_mon DUSKULL_SHUPPET, 23
- wild_mon DUSKULL_SHUPPET, 22
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
-
- .align 2
-MtPyre_1F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MtPyre_1F_LandMons
-
- .align 2
-MtPyre_2F_LandMons:
- wild_mon DUSKULL_SHUPPET, 27
- wild_mon DUSKULL_SHUPPET, 28
- wild_mon DUSKULL_SHUPPET, 26
- wild_mon DUSKULL_SHUPPET, 25
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
- wild_mon DUSKULL_SHUPPET, 23
- wild_mon DUSKULL_SHUPPET, 22
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
-
- .align 2
-MtPyre_2F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MtPyre_2F_LandMons
-
- .align 2
-MtPyre_3F_LandMons:
- wild_mon DUSKULL_SHUPPET, 27
- wild_mon DUSKULL_SHUPPET, 28
- wild_mon DUSKULL_SHUPPET, 26
- wild_mon DUSKULL_SHUPPET, 25
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
- wild_mon DUSKULL_SHUPPET, 23
- wild_mon DUSKULL_SHUPPET, 22
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
-
- .align 2
-MtPyre_3F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MtPyre_3F_LandMons
-
- .align 2
-MtPyre_4F_LandMons:
- wild_mon DUSKULL_SHUPPET, 27
- wild_mon DUSKULL_SHUPPET, 28
- wild_mon DUSKULL_SHUPPET, 26
- wild_mon DUSKULL_SHUPPET, 25
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
- wild_mon DUSKULL_SHUPPET, 23
- wild_mon DUSKULL_SHUPPET, 22
- wild_mon SHUPPET_DUSKULL, 27
- wild_mon SHUPPET_DUSKULL, 27
- wild_mon SHUPPET_DUSKULL, 25
- wild_mon SHUPPET_DUSKULL, 29
-
- .align 2
-MtPyre_4F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MtPyre_4F_LandMons
-
- .align 2
-MtPyre_5F_LandMons:
- wild_mon DUSKULL_SHUPPET, 27
- wild_mon DUSKULL_SHUPPET, 28
- wild_mon DUSKULL_SHUPPET, 26
- wild_mon DUSKULL_SHUPPET, 25
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
- wild_mon DUSKULL_SHUPPET, 23
- wild_mon DUSKULL_SHUPPET, 22
- wild_mon SHUPPET_DUSKULL, 27
- wild_mon SHUPPET_DUSKULL, 27
- wild_mon SHUPPET_DUSKULL, 25
- wild_mon SHUPPET_DUSKULL, 29
-
- .align 2
-MtPyre_5F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MtPyre_5F_LandMons
-
- .align 2
-MtPyre_6F_LandMons:
- wild_mon DUSKULL_SHUPPET, 27
- wild_mon DUSKULL_SHUPPET, 28
- wild_mon DUSKULL_SHUPPET, 26
- wild_mon DUSKULL_SHUPPET, 25
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 24
- wild_mon DUSKULL_SHUPPET, 23
- wild_mon DUSKULL_SHUPPET, 22
- wild_mon SHUPPET_DUSKULL, 27
- wild_mon SHUPPET_DUSKULL, 27
- wild_mon SHUPPET_DUSKULL, 25
- wild_mon SHUPPET_DUSKULL, 29
-
- .align 2
-MtPyre_6F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MtPyre_6F_LandMons
-
- .align 2
-MtPyre_Exterior_LandMons:
- wild_mon DUSKULL_SHUPPET, 27
- wild_mon MEDITITE, 27
- wild_mon DUSKULL_SHUPPET, 28
- wild_mon MEDITITE, 29
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon VULPIX, 27
- wild_mon VULPIX, 29
- wild_mon VULPIX, 25
- wild_mon WINGULL, 27
- wild_mon WINGULL, 27
- wild_mon WINGULL, 26
- wild_mon WINGULL, 28
-
- .align 2
-MtPyre_Exterior_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MtPyre_Exterior_LandMons
-
- .align 2
-MtPyre_Summit_LandMons:
- wild_mon DUSKULL_SHUPPET, 28
- wild_mon DUSKULL_SHUPPET, 29
- wild_mon DUSKULL_SHUPPET, 27
- wild_mon DUSKULL_SHUPPET, 26
- wild_mon DUSKULL_SHUPPET, 30
- wild_mon DUSKULL_SHUPPET, 25
- wild_mon DUSKULL_SHUPPET, 24
- wild_mon SHUPPET_DUSKULL, 28
- wild_mon SHUPPET_DUSKULL, 26
- wild_mon SHUPPET_DUSKULL, 30
- wild_mon CHIMECHO, 28
- wild_mon CHIMECHO, 28
-
- .align 2
-MtPyre_Summit_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte MtPyre_Summit_LandMons
-
- .align 2
-SeafloorCavern_Entrance_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon ZUBAT, 5, 35
- wild_mon ZUBAT, 30, 35
- wild_mon GOLBAT, 30, 35
- wild_mon GOLBAT, 30, 35
-
- .align 2
-SeafloorCavern_Entrance_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Entrance_WaterMons
-
- .align 2
-SeafloorCavern_Entrance_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-SeafloorCavern_Entrance_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte SeafloorCavern_Entrance_FishingMons
-
- .align 2
-SeafloorCavern_Room1_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-SeafloorCavern_Room1_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Room1_LandMons
-
- .align 2
-SeafloorCavern_Room2_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-SeafloorCavern_Room2_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Room2_LandMons
-
- .align 2
-SeafloorCavern_Room3_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-SeafloorCavern_Room3_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Room3_LandMons
-
- .align 2
-SeafloorCavern_Room4_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-SeafloorCavern_Room4_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Room4_LandMons
-
- .align 2
-SeafloorCavern_Room5_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-SeafloorCavern_Room5_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Room5_LandMons
-
- .align 2
-SeafloorCavern_Room6_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-SeafloorCavern_Room6_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Room6_LandMons
-
- .align 2
-SeafloorCavern_Room6_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon ZUBAT, 5, 35
- wild_mon ZUBAT, 30, 35
- wild_mon GOLBAT, 30, 35
- wild_mon GOLBAT, 30, 35
-
- .align 2
-SeafloorCavern_Room6_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Room6_WaterMons
-
- .align 2
-SeafloorCavern_Room6_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-SeafloorCavern_Room6_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte SeafloorCavern_Room6_FishingMons
-
- .align 2
-SeafloorCavern_Room7_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-SeafloorCavern_Room7_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Room7_LandMons
-
- .align 2
-SeafloorCavern_Room7_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon ZUBAT, 5, 35
- wild_mon ZUBAT, 30, 35
- wild_mon GOLBAT, 30, 35
- wild_mon GOLBAT, 30, 35
-
- .align 2
-SeafloorCavern_Room7_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Room7_WaterMons
-
- .align 2
-SeafloorCavern_Room7_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-SeafloorCavern_Room7_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte SeafloorCavern_Room7_FishingMons
-
- .align 2
-SeafloorCavern_Room8_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-SeafloorCavern_Room8_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte SeafloorCavern_Room8_LandMons
-
- .align 2
-CaveOfOrigin_Entrance_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-CaveOfOrigin_Entrance_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte CaveOfOrigin_Entrance_LandMons
-
- .align 2
-CaveOfOrigin_1F_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon MAWILE_SABLEYE, 30
- wild_mon MAWILE_SABLEYE, 32
- wild_mon MAWILE_SABLEYE, 34
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 34
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-CaveOfOrigin_1F_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte CaveOfOrigin_1F_LandMons
-
- .align 2
-CaveOfOrigin_B1F_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon MAWILE_SABLEYE, 30
- wild_mon MAWILE_SABLEYE, 32
- wild_mon MAWILE_SABLEYE, 34
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 34
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-CaveOfOrigin_B1F_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte CaveOfOrigin_B1F_LandMons
-
- .align 2
-CaveOfOrigin_B2F_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon MAWILE_SABLEYE, 30
- wild_mon MAWILE_SABLEYE, 32
- wild_mon MAWILE_SABLEYE, 34
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 34
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-CaveOfOrigin_B2F_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte CaveOfOrigin_B2F_LandMons
-
- .align 2
-CaveOfOrigin_B3F_LandMons:
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon MAWILE_SABLEYE, 30
- wild_mon MAWILE_SABLEYE, 32
- wild_mon MAWILE_SABLEYE, 34
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 34
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
-
- .align 2
-CaveOfOrigin_B3F_LandMonsInfo:
- .4byte 4 @ encounter rate
- .4byte CaveOfOrigin_B3F_LandMons
-
- .align 2
-VictoryRoad_1F_LandMons:
- wild_mon GOLBAT, 40
- wild_mon HARIYAMA, 40
- wild_mon LAIRON, 40
- wild_mon LOUDRED, 40
- wild_mon ZUBAT, 36
- wild_mon MAKUHITA, 36
- wild_mon GOLBAT, 38
- wild_mon HARIYAMA, 38
- wild_mon ARON, 36
- wild_mon WHISMUR, 36
- wild_mon ARON, 36
- wild_mon WHISMUR, 36
-
- .align 2
-VictoryRoad_1F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte VictoryRoad_1F_LandMons
-
- .align 2
-VictoryRoad_B1F_LandMons:
- wild_mon GOLBAT, 40
- wild_mon HARIYAMA, 40
- wild_mon LAIRON, 40
- wild_mon MEDICHAM, 40
- wild_mon GOLBAT, 38
- wild_mon HARIYAMA, 38
- wild_mon GOLBAT, 42
- wild_mon HARIYAMA, 42
- wild_mon LAIRON, 42
- wild_mon MEDITITE, 38
- wild_mon LAIRON, 42
- wild_mon MEDITITE, 38
-
- .align 2
-VictoryRoad_B1F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte VictoryRoad_B1F_LandMons
-
- .align 2
-VictoryRoad_B1F_RockSmashMons:
- wild_mon GRAVELER, 30, 40
- wild_mon GEODUDE, 30, 40
- wild_mon GRAVELER, 35, 40
- wild_mon GRAVELER, 35, 40
- wild_mon GRAVELER, 35, 40
-
- .align 2
-VictoryRoad_B1F_RockSmashMonsInfo:
- .4byte 20 @ encounter rate
- .4byte VictoryRoad_B1F_RockSmashMons
-
- .align 2
-VictoryRoad_B2F_LandMons:
- wild_mon GOLBAT, 40
- wild_mon MAWILE_SABLEYE, 40
- wild_mon LAIRON, 40
- wild_mon MEDICHAM, 40
- wild_mon GOLBAT, 42
- wild_mon MAWILE_SABLEYE, 42
- wild_mon GOLBAT, 44
- wild_mon MAWILE_SABLEYE, 44
- wild_mon LAIRON, 42
- wild_mon MEDICHAM, 42
- wild_mon LAIRON, 44
- wild_mon MEDICHAM, 44
-
- .align 2
-VictoryRoad_B2F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte VictoryRoad_B2F_LandMons
-
- .align 2
-VictoryRoad_B2F_WaterMons:
- wild_mon GOLBAT, 30, 35
- wild_mon GOLBAT, 25, 30
- wild_mon GOLBAT, 35, 40
- wild_mon GOLBAT, 35, 40
- wild_mon GOLBAT, 35, 40
-
- .align 2
-VictoryRoad_B2F_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte VictoryRoad_B2F_WaterMons
-
- .align 2
-VictoryRoad_B2F_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon WHISCASH, 30, 35
- wild_mon WHISCASH, 35, 40
- wild_mon WHISCASH, 40, 45
-
- .align 2
-VictoryRoad_B2F_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte VictoryRoad_B2F_FishingMons
-
- .align 2
-ShoalCave_LowTideEntranceRoom_LandMons:
- wild_mon ZUBAT, 26
- wild_mon SPHEAL, 26
- wild_mon ZUBAT, 28
- wild_mon SPHEAL, 28
- wild_mon ZUBAT, 30
- wild_mon SPHEAL, 30
- wild_mon ZUBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
-
- .align 2
-ShoalCave_LowTideEntranceRoom_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte ShoalCave_LowTideEntranceRoom_LandMons
-
- .align 2
-ShoalCave_LowTideEntranceRoom_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon ZUBAT, 5, 35
- wild_mon SPHEAL, 25, 30
- wild_mon SPHEAL, 25, 30
- wild_mon SPHEAL, 25, 35
-
- .align 2
-ShoalCave_LowTideEntranceRoom_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte ShoalCave_LowTideEntranceRoom_WaterMons
-
- .align 2
-ShoalCave_LowTideEntranceRoom_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-ShoalCave_LowTideEntranceRoom_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte ShoalCave_LowTideEntranceRoom_FishingMons
-
- .align 2
-ShoalCave_LowTideInnerRoom_LandMons:
- wild_mon ZUBAT, 26
- wild_mon SPHEAL, 26
- wild_mon ZUBAT, 28
- wild_mon SPHEAL, 28
- wild_mon ZUBAT, 30
- wild_mon SPHEAL, 30
- wild_mon ZUBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
-
- .align 2
-ShoalCave_LowTideInnerRoom_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte ShoalCave_LowTideInnerRoom_LandMons
-
- .align 2
-ShoalCave_LowTideInnerRoom_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon ZUBAT, 5, 35
- wild_mon SPHEAL, 25, 30
- wild_mon SPHEAL, 25, 30
- wild_mon SPHEAL, 25, 35
-
- .align 2
-ShoalCave_LowTideInnerRoom_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte ShoalCave_LowTideInnerRoom_WaterMons
-
- .align 2
-ShoalCave_LowTideInnerRoom_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-ShoalCave_LowTideInnerRoom_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte ShoalCave_LowTideInnerRoom_FishingMons
-
- .align 2
-ShoalCave_LowTideStairsRoom_LandMons:
- wild_mon ZUBAT, 26
- wild_mon SPHEAL, 26
- wild_mon ZUBAT, 28
- wild_mon SPHEAL, 28
- wild_mon ZUBAT, 30
- wild_mon SPHEAL, 30
- wild_mon ZUBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
-
- .align 2
-ShoalCave_LowTideStairsRoom_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte ShoalCave_LowTideStairsRoom_LandMons
-
- .align 2
-ShoalCave_LowTideLowerRoom_LandMons:
- wild_mon ZUBAT, 26
- wild_mon SPHEAL, 26
- wild_mon ZUBAT, 28
- wild_mon SPHEAL, 28
- wild_mon ZUBAT, 30
- wild_mon SPHEAL, 30
- wild_mon ZUBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
-
- .align 2
-ShoalCave_LowTideLowerRoom_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte ShoalCave_LowTideLowerRoom_LandMons
-
- .align 2
-ShoalCave_LowTideIceRoom_LandMons:
- wild_mon ZUBAT, 26
- wild_mon SPHEAL, 26
- wild_mon ZUBAT, 28
- wild_mon SPHEAL, 28
- wild_mon ZUBAT, 30
- wild_mon SPHEAL, 30
- wild_mon SNORUNT, 26
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 30
- wild_mon SNORUNT, 28
- wild_mon GOLBAT, 32
- wild_mon SNORUNT, 30
-
- .align 2
-ShoalCave_LowTideIceRoom_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte ShoalCave_LowTideIceRoom_LandMons
-
- .align 2
-NewMauville_Entrance_LandMons:
- wild_mon VOLTORB, 24
- wild_mon MAGNEMITE, 24
- wild_mon VOLTORB, 25
- wild_mon MAGNEMITE, 25
- wild_mon VOLTORB, 23
- wild_mon MAGNEMITE, 23
- wild_mon VOLTORB, 26
- wild_mon MAGNEMITE, 26
- wild_mon VOLTORB, 22
- wild_mon MAGNEMITE, 22
- wild_mon VOLTORB, 22
- wild_mon MAGNEMITE, 22
-
- .align 2
-NewMauville_Entrance_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte NewMauville_Entrance_LandMons
-
- .align 2
-NewMauville_Inside_LandMons:
- wild_mon VOLTORB, 24
- wild_mon MAGNEMITE, 24
- wild_mon VOLTORB, 25
- wild_mon MAGNEMITE, 25
- wild_mon VOLTORB, 23
- wild_mon MAGNEMITE, 23
- wild_mon VOLTORB, 26
- wild_mon MAGNEMITE, 26
- wild_mon VOLTORB, 22
- wild_mon MAGNEMITE, 22
- wild_mon ELECTRODE, 26
- wild_mon MAGNETON, 26
-
- .align 2
-NewMauville_Inside_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte NewMauville_Inside_LandMons
-
- .align 2
-AbandonedShip_Rooms_B1F_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACRUEL, 30, 35
-
- .align 2
-AbandonedShip_Rooms_B1F_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte AbandonedShip_Rooms_B1F_WaterMons
-
- .align 2
-AbandonedShip_Rooms_B1F_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon TENTACOOL, 25, 30
- wild_mon TENTACOOL, 30, 35
- wild_mon TENTACRUEL, 30, 35
- wild_mon TENTACRUEL, 25, 30
- wild_mon TENTACRUEL, 20, 25
-
- .align 2
-AbandonedShip_Rooms_B1F_FishingMonsInfo:
- .4byte 20 @ encounter rate
- .4byte AbandonedShip_Rooms_B1F_FishingMons
-
- .align 2
-AbandonedShip_HiddenFloorCorridors_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACRUEL, 30, 35
-
- .align 2
-AbandonedShip_HiddenFloorCorridors_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte AbandonedShip_HiddenFloorCorridors_WaterMons
-
- .align 2
-AbandonedShip_HiddenFloorCorridors_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon TENTACOOL, 25, 30
- wild_mon TENTACOOL, 30, 35
- wild_mon TENTACRUEL, 30, 35
- wild_mon TENTACRUEL, 25, 30
- wild_mon TENTACRUEL, 20, 25
-
- .align 2
-AbandonedShip_HiddenFloorCorridors_FishingMonsInfo:
- .4byte 20 @ encounter rate
- .4byte AbandonedShip_HiddenFloorCorridors_FishingMons
-
- .align 2
-SkyPillar_1F_LandMons:
- wild_mon MAWILE_SABLEYE, 48
- wild_mon GOLBAT, 48
- wild_mon GOLBAT, 50
- wild_mon MAWILE_SABLEYE, 50
- wild_mon CLAYDOL, 48
- wild_mon DUSCLOPS_BANETTE, 48
- wild_mon DUSCLOPS_BANETTE, 50
- wild_mon CLAYDOL, 49
- wild_mon CLAYDOL, 47
- wild_mon CLAYDOL, 50
- wild_mon CLAYDOL, 47
- wild_mon CLAYDOL, 50
-
- .align 2
-SkyPillar_1F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte SkyPillar_1F_LandMons
-
- .align 2
-SkyPillar_3F_LandMons:
- wild_mon MAWILE_SABLEYE, 51
- wild_mon GOLBAT, 51
- wild_mon GOLBAT, 53
- wild_mon MAWILE_SABLEYE, 53
- wild_mon CLAYDOL, 51
- wild_mon DUSCLOPS_BANETTE, 51
- wild_mon DUSCLOPS_BANETTE, 53
- wild_mon CLAYDOL, 52
- wild_mon CLAYDOL, 50
- wild_mon CLAYDOL, 53
- wild_mon CLAYDOL, 50
- wild_mon CLAYDOL, 53
-
- .align 2
-SkyPillar_3F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte SkyPillar_3F_LandMons
-
- .align 2
-SkyPillar_5F_LandMons:
- wild_mon MAWILE_SABLEYE, 54
- wild_mon GOLBAT, 54
- wild_mon GOLBAT, 56
- wild_mon MAWILE_SABLEYE, 56
- wild_mon CLAYDOL, 54
- wild_mon DUSCLOPS_BANETTE, 54
- wild_mon DUSCLOPS_BANETTE, 56
- wild_mon CLAYDOL, 55
- wild_mon CLAYDOL, 56
- wild_mon ALTARIA, 57
- wild_mon ALTARIA, 54
- wild_mon ALTARIA, 60
-
- .align 2
-SkyPillar_5F_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte SkyPillar_5F_LandMons
-
- .align 2
-Route101_LandMons:
- wild_mon WURMPLE, 2
- wild_mon ZIGZAGOON, 2
- wild_mon WURMPLE, 2
- wild_mon WURMPLE, 3
- wild_mon ZIGZAGOON, 3
- wild_mon ZIGZAGOON, 3
- wild_mon WURMPLE, 3
- wild_mon ZIGZAGOON, 3
- wild_mon POOCHYENA, 2
- wild_mon POOCHYENA, 2
- wild_mon POOCHYENA, 3
- wild_mon POOCHYENA, 3
-
- .align 2
-Route101_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route101_LandMons
-
- .align 2
-Route102_LandMons:
- wild_mon ZIGZAGOON, 3
- wild_mon WURMPLE, 3
- wild_mon ZIGZAGOON, 4
- wild_mon WURMPLE, 4
- wild_mon SEEDOT_LOTAD, 3
- wild_mon SEEDOT_LOTAD, 4
- wild_mon POOCHYENA, 3
- wild_mon POOCHYENA, 3
- wild_mon POOCHYENA, 4
- wild_mon RALTS, 4
- wild_mon POOCHYENA, 4
- wild_mon SURSKIT, 3
-
- .align 2
-Route102_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route102_LandMons
-
- .align 2
-Route102_WaterMons:
- wild_mon MARILL, 20, 30
- wild_mon MARILL, 10, 20
- wild_mon MARILL, 30, 35
- wild_mon MARILL, 5, 10
- wild_mon SURSKIT, 20, 30
-
- .align 2
-Route102_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route102_WaterMons
-
- .align 2
-Route102_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon CORPHISH, 10, 30
- wild_mon CORPHISH, 25, 30
- wild_mon CORPHISH, 30, 35
- wild_mon CORPHISH, 20, 25
- wild_mon CORPHISH, 35, 40
- wild_mon CORPHISH, 40, 45
-
- .align 2
-Route102_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route102_FishingMons
-
- .align 2
-Route103_LandMons:
- wild_mon ZIGZAGOON, 2
- wild_mon ZIGZAGOON, 3
- wild_mon ZIGZAGOON, 3
- wild_mon ZIGZAGOON, 4
- wild_mon POOCHYENA, 2
- wild_mon POOCHYENA, 3
- wild_mon POOCHYENA, 3
- wild_mon POOCHYENA, 4
- wild_mon WINGULL, 3
- wild_mon WINGULL, 3
- wild_mon WINGULL, 2
- wild_mon WINGULL, 4
-
- .align 2
-Route103_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route103_LandMons
-
- .align 2
-Route103_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route103_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route103_WaterMons
-
- .align 2
-Route103_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route103_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route103_FishingMons
-
- .align 2
-Route104_LandMons:
- wild_mon ZIGZAGOON, 4
- wild_mon WURMPLE, 4
- wild_mon ZIGZAGOON, 5
- wild_mon WURMPLE, 5
- wild_mon ZIGZAGOON, 4
- wild_mon ZIGZAGOON, 5
- wild_mon TAILLOW, 4
- wild_mon TAILLOW, 5
- wild_mon WINGULL, 4
- wild_mon WINGULL, 4
- wild_mon WINGULL, 3
- wild_mon WINGULL, 5
-
- .align 2
-Route104_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route104_LandMons
-
- .align 2
-Route104_WaterMons:
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route104_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route104_WaterMons
-
- .align 2
-Route104_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon MAGIKARP, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon MAGIKARP, 10, 30
- wild_mon MAGIKARP, 10, 30
- wild_mon MAGIKARP, 25, 30
- wild_mon MAGIKARP, 30, 35
- wild_mon MAGIKARP, 20, 25
- wild_mon MAGIKARP, 35, 40
- wild_mon MAGIKARP, 40, 45
-
- .align 2
-Route104_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route104_FishingMons
-
- .align 2
-Route105_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route105_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route105_WaterMons
-
- .align 2
-Route105_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route105_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route105_FishingMons
-
- .align 2
-Route106_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route106_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route106_WaterMons
-
- .align 2
-Route106_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route106_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route106_FishingMons
-
- .align 2
-Route107_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route107_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route107_WaterMons
-
- .align 2
-Route107_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route107_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route107_FishingMons
-
- .align 2
-Route108_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route108_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route108_WaterMons
-
- .align 2
-Route108_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route108_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route108_FishingMons
-
- .align 2
-Route109_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route109_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route109_WaterMons
-
- .align 2
-Route109_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route109_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route109_FishingMons
-
- .align 2
-Route110_LandMons:
- wild_mon ZIGZAGOON, 12
- wild_mon ELECTRIKE, 12
- wild_mon GULPIN, 12
- wild_mon ELECTRIKE, 13
- wild_mon MINUN_PLUSLE, 13
- wild_mon ODDISH, 13
- wild_mon MINUN_PLUSLE, 13
- wild_mon GULPIN, 13
- wild_mon WINGULL, 12
- wild_mon WINGULL, 12
- wild_mon PLUSLE_MINUN, 12
- wild_mon PLUSLE_MINUN, 13
-
- .align 2
-Route110_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route110_LandMons
-
- .align 2
-Route110_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route110_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route110_WaterMons
-
- .align 2
-Route110_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route110_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route110_FishingMons
-
- .align 2
-Route111_LandMons:
- wild_mon SANDSHREW, 20
- wild_mon TRAPINCH, 20
- wild_mon SANDSHREW, 21
- wild_mon TRAPINCH, 21
- wild_mon CACNEA, 19
- wild_mon CACNEA, 21
- wild_mon SANDSHREW, 19
- wild_mon TRAPINCH, 19
- wild_mon BALTOY, 20
- wild_mon BALTOY, 20
- wild_mon BALTOY, 22
- wild_mon BALTOY, 22
-
- .align 2
-Route111_LandMonsInfo:
- .4byte 10 @ encounter rate
- .4byte Route111_LandMons
-
- .align 2
-Route111_WaterMons:
- wild_mon MARILL, 20, 30
- wild_mon MARILL, 10, 20
- wild_mon MARILL, 30, 35
- wild_mon MARILL, 5, 10
- wild_mon SURSKIT, 20, 30
-
- .align 2
-Route111_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route111_WaterMons
-
- .align 2
-Route111_RockSmashMons:
- wild_mon GEODUDE, 10, 15
- wild_mon GEODUDE, 5, 10
- wild_mon GEODUDE, 15, 20
- wild_mon GEODUDE, 15, 20
- wild_mon GEODUDE, 15, 20
-
- .align 2
-Route111_RockSmashMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route111_RockSmashMons
-
- .align 2
-Route111_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon BARBOACH, 20, 25
- wild_mon BARBOACH, 35, 40
- wild_mon BARBOACH, 40, 45
-
- .align 2
-Route111_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route111_FishingMons
-
- .align 2
-Route112_LandMons:
- wild_mon NUMEL, 15
- wild_mon NUMEL, 15
- wild_mon MACHOP, 15
- wild_mon NUMEL, 14
- wild_mon NUMEL, 14
- wild_mon MACHOP, 14
- wild_mon NUMEL, 16
- wild_mon MACHOP, 16
- wild_mon NUMEL, 16
- wild_mon NUMEL, 16
- wild_mon NUMEL, 16
- wild_mon NUMEL, 16
-
- .align 2
-Route112_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route112_LandMons
-
- .align 2
-Route113_LandMons:
- wild_mon SPINDA, 15
- wild_mon SPINDA, 15
- wild_mon SANDSHREW, 15
- wild_mon SPINDA, 14
- wild_mon SPINDA, 14
- wild_mon SANDSHREW, 14
- wild_mon SPINDA, 16
- wild_mon SANDSHREW, 16
- wild_mon SPINDA, 16
- wild_mon SKARMORY, 16
- wild_mon SPINDA, 16
- wild_mon SKARMORY, 16
-
- .align 2
-Route113_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route113_LandMons
-
- .align 2
-Route114_LandMons:
- wild_mon SWABLU, 16
- wild_mon SEEDOT_LOTAD, 16
- wild_mon SWABLU, 17
- wild_mon SWABLU, 15
- wild_mon SEEDOT_LOTAD, 15
- wild_mon ZANGOOSE_SEVIPER, 16
- wild_mon NUZLEAF_LOMBRE, 16
- wild_mon NUZLEAF_LOMBRE, 18
- wild_mon ZANGOOSE_SEVIPER, 17
- wild_mon ZANGOOSE_SEVIPER, 15
- wild_mon ZANGOOSE_SEVIPER, 17
- wild_mon SURSKIT, 15
-
- .align 2
-Route114_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route114_LandMons
-
- .align 2
-Route114_WaterMons:
- wild_mon MARILL, 20, 30
- wild_mon MARILL, 10, 20
- wild_mon MARILL, 30, 35
- wild_mon MARILL, 5, 10
- wild_mon SURSKIT, 20, 30
-
- .align 2
-Route114_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route114_WaterMons
-
- .align 2
-Route114_RockSmashMons:
- wild_mon GEODUDE, 10, 15
- wild_mon GEODUDE, 5, 10
- wild_mon GEODUDE, 15, 20
- wild_mon GEODUDE, 15, 20
- wild_mon GEODUDE, 15, 20
-
- .align 2
-Route114_RockSmashMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route114_RockSmashMons
-
- .align 2
-Route114_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon BARBOACH, 20, 25
- wild_mon BARBOACH, 35, 40
- wild_mon BARBOACH, 40, 45
-
- .align 2
-Route114_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route114_FishingMons
-
- .align 2
-Route115_LandMons:
- wild_mon SWABLU, 23
- wild_mon TAILLOW, 23
- wild_mon SWABLU, 25
- wild_mon TAILLOW, 24
- wild_mon TAILLOW, 25
- wild_mon SWELLOW, 25
- wild_mon JIGGLYPUFF, 24
- wild_mon JIGGLYPUFF, 25
- wild_mon WINGULL, 24
- wild_mon WINGULL, 24
- wild_mon WINGULL, 26
- wild_mon WINGULL, 25
-
- .align 2
-Route115_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route115_LandMons
-
- .align 2
-Route115_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route115_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route115_WaterMons
-
- .align 2
-Route115_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route115_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route115_FishingMons
-
- .align 2
-Route116_LandMons:
- wild_mon ZIGZAGOON, 6
- wild_mon WHISMUR, 6
- wild_mon NINCADA, 6
- wild_mon WHISMUR, 7
- wild_mon NINCADA, 7
- wild_mon TAILLOW, 6
- wild_mon TAILLOW, 7
- wild_mon TAILLOW, 8
- wild_mon ZIGZAGOON, 7
- wild_mon ZIGZAGOON, 8
- wild_mon SKITTY, 7
- wild_mon SKITTY, 8
-
- .align 2
-Route116_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route116_LandMons
-
- .align 2
-Route117_LandMons:
- wild_mon ZIGZAGOON, 13
- wild_mon ROSELIA, 13
- wild_mon ZIGZAGOON, 14
- wild_mon ROSELIA, 14
- wild_mon MARILL, 13
- wild_mon ODDISH, 13
- wild_mon ILLUMISE_VOLBEAT, 13
- wild_mon ILLUMISE_VOLBEAT, 13
- wild_mon ILLUMISE_VOLBEAT, 14
- wild_mon ILLUMISE_VOLBEAT, 14
- wild_mon VOLBEAT_ILLUMISE, 13
- wild_mon SURSKIT, 13
-
- .align 2
-Route117_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route117_LandMons
-
- .align 2
-Route117_WaterMons:
- wild_mon MARILL, 20, 30
- wild_mon MARILL, 10, 20
- wild_mon MARILL, 30, 35
- wild_mon MARILL, 5, 10
- wild_mon SURSKIT, 20, 30
-
- .align 2
-Route117_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route117_WaterMons
-
- .align 2
-Route117_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon CORPHISH, 10, 30
- wild_mon CORPHISH, 25, 30
- wild_mon CORPHISH, 30, 35
- wild_mon CORPHISH, 20, 25
- wild_mon CORPHISH, 35, 40
- wild_mon CORPHISH, 40, 45
-
- .align 2
-Route117_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route117_FishingMons
-
- .align 2
-Route118_LandMons:
- wild_mon ZIGZAGOON, 24
- wild_mon ELECTRIKE, 24
- wild_mon ZIGZAGOON, 26
- wild_mon ELECTRIKE, 26
- wild_mon LINOONE, 26
- wild_mon MANECTRIC, 26
- wild_mon WINGULL, 25
- wild_mon WINGULL, 25
- wild_mon WINGULL, 26
- wild_mon WINGULL, 26
- wild_mon WINGULL, 27
- wild_mon KECLEON, 25
-
- .align 2
-Route118_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route118_LandMons
-
- .align 2
-Route118_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route118_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route118_WaterMons
-
- .align 2
-Route118_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon CARVANHA, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon CARVANHA, 30, 35
- wild_mon CARVANHA, 20, 25
- wild_mon CARVANHA, 35, 40
- wild_mon CARVANHA, 40, 45
-
- .align 2
-Route118_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route118_FishingMons
-
- .align 2
-Route119_LandMons:
- wild_mon ZIGZAGOON, 25
- wild_mon LINOONE, 25
- wild_mon ZIGZAGOON, 27
- wild_mon ODDISH, 25
- wild_mon LINOONE, 27
- wild_mon ODDISH, 26
- wild_mon ODDISH, 27
- wild_mon ODDISH, 24
- wild_mon TROPIUS, 25
- wild_mon TROPIUS, 26
- wild_mon TROPIUS, 27
- wild_mon KECLEON, 25
-
- .align 2
-Route119_LandMonsInfo:
- .4byte 15 @ encounter rate
- .4byte Route119_LandMons
-
- .align 2
-Route119_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route119_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route119_WaterMons
-
- .align 2
-Route119_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon CARVANHA, 10, 30
- wild_mon CARVANHA, 25, 30
- wild_mon CARVANHA, 30, 35
- wild_mon CARVANHA, 20, 25
- wild_mon CARVANHA, 35, 40
- wild_mon CARVANHA, 40, 45
-
- .align 2
-Route119_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route119_FishingMons
-
- .align 2
-Route120_LandMons:
- wild_mon ZIGZAGOON, 25
- wild_mon LINOONE, 25
- wild_mon LINOONE, 27
- wild_mon ODDISH, 25
- wild_mon MARILL, 25
- wild_mon ODDISH, 26
- wild_mon ODDISH, 27
- wild_mon MARILL, 27
- wild_mon ABSOL, 25
- wild_mon ABSOL, 27
- wild_mon KECLEON, 25
- wild_mon SURSKIT, 25
-
- .align 2
-Route120_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route120_LandMons
-
- .align 2
-Route120_WaterMons:
- wild_mon MARILL, 20, 30
- wild_mon MARILL, 10, 20
- wild_mon MARILL, 30, 35
- wild_mon MARILL, 5, 10
- wild_mon SURSKIT, 20, 30
-
- .align 2
-Route120_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route120_WaterMons
-
- .align 2
-Route120_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon BARBOACH, 20, 25
- wild_mon BARBOACH, 35, 40
- wild_mon BARBOACH, 40, 45
-
- .align 2
-Route120_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route120_FishingMons
-
- .align 2
-Route121_LandMons:
- wild_mon ZIGZAGOON, 26
- wild_mon DUSKULL_SHUPPET, 26
- wild_mon LINOONE, 26
- wild_mon DUSKULL_SHUPPET, 28
- wild_mon LINOONE, 28
- wild_mon ODDISH, 26
- wild_mon ODDISH, 28
- wild_mon GLOOM, 28
- wild_mon WINGULL, 26
- wild_mon WINGULL, 27
- wild_mon WINGULL, 28
- wild_mon KECLEON, 25
-
- .align 2
-Route121_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route121_LandMons
-
- .align 2
-Route121_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route121_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route121_WaterMons
-
- .align 2
-Route121_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route121_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route121_FishingMons
-
- .align 2
-Route122_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route122_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route122_WaterMons
-
- .align 2
-Route122_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route122_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route122_FishingMons
-
- .align 2
-Route123_LandMons:
- wild_mon ZIGZAGOON, 26
- wild_mon DUSKULL_SHUPPET, 26
- wild_mon LINOONE, 26
- wild_mon DUSKULL_SHUPPET, 28
- wild_mon LINOONE, 28
- wild_mon ODDISH, 26
- wild_mon ODDISH, 28
- wild_mon GLOOM, 28
- wild_mon WINGULL, 26
- wild_mon WINGULL, 27
- wild_mon WINGULL, 28
- wild_mon KECLEON, 25
-
- .align 2
-Route123_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route123_LandMons
-
- .align 2
-Route123_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route123_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route123_WaterMons
-
- .align 2
-Route123_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route123_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route123_FishingMons
-
- .align 2
-Route124_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route124_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route124_WaterMons
-
- .align 2
-Route124_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route124_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route124_FishingMons
-
- .align 2
-Route125_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route125_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route125_WaterMons
-
- .align 2
-Route125_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route125_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route125_FishingMons
-
- .align 2
-Route126_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route126_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route126_WaterMons
-
- .align 2
-Route126_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route126_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route126_FishingMons
-
- .align 2
-Route127_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route127_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route127_WaterMons
-
- .align 2
-Route127_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route127_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route127_FishingMons
-
- .align 2
-Route128_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route128_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route128_WaterMons
-
- .align 2
-Route128_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon LUVDISC, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon LUVDISC, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon CORSOLA, 30, 35
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route128_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route128_FishingMons
-
- .align 2
-Route129_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- .ifdef SAPPHIRE
- wild_mon WAILORD, 25, 30
- .else
- wild_mon WAILORD, 35, 40
- .endif
-
- .align 2
-Route129_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route129_WaterMons
-
- .align 2
-Route129_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route129_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route129_FishingMons
-
- .align 2
-Route130_LandMons:
- wild_mon WYNAUT, 30
- wild_mon WYNAUT, 35
- wild_mon WYNAUT, 25
- wild_mon WYNAUT, 40
- wild_mon WYNAUT, 20
- wild_mon WYNAUT, 45
- wild_mon WYNAUT, 15
- wild_mon WYNAUT, 50
- wild_mon WYNAUT, 10
- wild_mon WYNAUT, 5
- wild_mon WYNAUT, 10
- wild_mon WYNAUT, 5
-
- .align 2
-Route130_LandMonsInfo:
- .4byte 20 @ encounter rate
- .4byte Route130_LandMons
-
- .align 2
-Route130_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route130_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route130_WaterMons
-
- .align 2
-Route130_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route130_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route130_FishingMons
-
- .align 2
-Route131_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route131_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route131_WaterMons
-
- .align 2
-Route131_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route131_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route131_FishingMons
-
- .align 2
-Route132_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route132_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route132_WaterMons
-
- .align 2
-Route132_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon HORSEA, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route132_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route132_FishingMons
-
- .align 2
-Route133_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route133_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route133_WaterMons
-
- .align 2
-Route133_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon HORSEA, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route133_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route133_FishingMons
-
- .align 2
-Route134_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-Route134_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Route134_WaterMons
-
- .align 2
-Route134_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon HORSEA, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-Route134_FishingMonsInfo:
- .4byte 30 @ encounter rate
- .4byte Route134_FishingMons
-
- .align 2
-SafariZone_Northwest_LandMons:
- wild_mon RHYHORN, 27
- wild_mon ODDISH, 27
- wild_mon RHYHORN, 29
- wild_mon ODDISH, 29
- wild_mon DODUO, 27
- wild_mon GLOOM, 29
- wild_mon GLOOM, 31
- wild_mon DODUO, 29
- wild_mon DODRIO, 29
- wild_mon PINSIR, 27
- wild_mon DODRIO, 31
- wild_mon PINSIR, 29
-
- .align 2
-SafariZone_Northwest_LandMonsInfo:
- .4byte 25 @ encounter rate
- .4byte SafariZone_Northwest_LandMons
-
- .align 2
-SafariZone_Northwest_WaterMons:
- wild_mon PSYDUCK, 20, 30
- wild_mon PSYDUCK, 20, 30
- wild_mon PSYDUCK, 30, 35
- wild_mon GOLDUCK, 30, 35
- wild_mon GOLDUCK, 25, 40
-
- .align 2
-SafariZone_Northwest_WaterMonsInfo:
- .4byte 9 @ encounter rate
- .4byte SafariZone_Northwest_WaterMons
-
- .align 2
-SafariZone_Northwest_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 25
- wild_mon GOLDEEN, 10, 30
- wild_mon GOLDEEN, 25, 30
- wild_mon GOLDEEN, 30, 35
- wild_mon SEAKING, 30, 35
- wild_mon SEAKING, 35, 40
- wild_mon SEAKING, 25, 30
-
- .align 2
-SafariZone_Northwest_FishingMonsInfo:
- .4byte 35 @ encounter rate
- .4byte SafariZone_Northwest_FishingMons
-
- .align 2
-SafariZone_Northeast_LandMons:
- wild_mon PHANPY, 27
- wild_mon ODDISH, 27
- wild_mon PHANPY, 29
- wild_mon ODDISH, 29
- wild_mon NATU, 27
- wild_mon GLOOM, 29
- wild_mon GLOOM, 31
- wild_mon NATU, 29
- wild_mon XATU, 29
- wild_mon HERACROSS, 27
- wild_mon XATU, 31
- wild_mon HERACROSS, 29
-
- .align 2
-SafariZone_Northeast_LandMonsInfo:
- .4byte 25 @ encounter rate
- .4byte SafariZone_Northeast_LandMons
-
- .align 2
-SafariZone_Northeast_RockSmashMons:
- wild_mon GEODUDE, 10, 15
- wild_mon GEODUDE, 5, 10
- wild_mon GEODUDE, 15, 20
- wild_mon GEODUDE, 20, 25
- wild_mon GEODUDE, 25, 30
-
- .align 2
-SafariZone_Northeast_RockSmashMonsInfo:
- .4byte 25 @ encounter rate
- .4byte SafariZone_Northeast_RockSmashMons
-
- .align 2
-SafariZone_Southwest_LandMons:
- wild_mon ODDISH, 25
- wild_mon ODDISH, 27
- wild_mon GIRAFARIG, 25
- wild_mon GIRAFARIG, 27
- wild_mon NATU, 25
- .ifdef SAPPHIRE
- wild_mon DODUO, 27
- .else
- wild_mon DODUO, 25
- .endif
- wild_mon GLOOM, 25
- wild_mon WOBBUFFET, 27
- wild_mon PIKACHU, 25
- wild_mon WOBBUFFET, 27
- wild_mon PIKACHU, 27
- wild_mon WOBBUFFET, 29
-
- .align 2
-SafariZone_Southwest_LandMonsInfo:
- .4byte 25 @ encounter rate
- .4byte SafariZone_Southwest_LandMons
-
- .align 2
-SafariZone_Southwest_WaterMons:
- wild_mon PSYDUCK, 20, 30
- wild_mon PSYDUCK, 20, 30
- wild_mon PSYDUCK, 30, 35
- wild_mon PSYDUCK, 30, 35
- wild_mon PSYDUCK, 30, 35
-
- .align 2
-SafariZone_Southwest_WaterMonsInfo:
- .4byte 9 @ encounter rate
- .4byte SafariZone_Southwest_WaterMons
-
- .align 2
-SafariZone_Southwest_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 25
- wild_mon GOLDEEN, 10, 30
- wild_mon GOLDEEN, 25, 30
- wild_mon GOLDEEN, 30, 35
- wild_mon SEAKING, 30, 35
- wild_mon SEAKING, 35, 40
- wild_mon SEAKING, 25, 30
-
- .align 2
-SafariZone_Southwest_FishingMonsInfo:
- .4byte 35 @ encounter rate
- .4byte SafariZone_Southwest_FishingMons
-
- .align 2
-SafariZone_Southeast_LandMons:
- wild_mon ODDISH, 25
- wild_mon ODDISH, 27
- wild_mon GIRAFARIG, 25
- wild_mon GIRAFARIG, 27
- wild_mon NATU, 25
- wild_mon DODUO, 25
- wild_mon GLOOM, 25
- wild_mon WOBBUFFET, 27
- wild_mon PIKACHU, 25
- wild_mon WOBBUFFET, 27
- wild_mon PIKACHU, 27
- wild_mon WOBBUFFET, 29
-
- .align 2
-SafariZone_Southeast_LandMonsInfo:
- .4byte 25 @ encounter rate
- .4byte SafariZone_Southeast_LandMons
-
- .align 2
-DewfordTown_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-DewfordTown_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte DewfordTown_WaterMons
-
- .align 2
-DewfordTown_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-DewfordTown_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte DewfordTown_FishingMons
-
- .align 2
-PacifidlogTown_WaterMons:
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
-
- .align 2
-PacifidlogTown_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte PacifidlogTown_WaterMons
-
- .align 2
-PacifidlogTown_FishingMons:
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
-
- .align 2
-PacifidlogTown_FishingMonsInfo:
- .4byte 10 @ encounter rate
- .4byte PacifidlogTown_FishingMons
-
- .align 2
-Underwater1_WaterMons:
- wild_mon CLAMPERL, 20, 30
- wild_mon CHINCHOU, 20, 30
- wild_mon CLAMPERL, 30, 35
- wild_mon RELICANTH, 30, 35
- wild_mon RELICANTH, 30, 35
-
- .align 2
-Underwater1_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Underwater1_WaterMons
-
- .align 2
-Underwater2_WaterMons:
- wild_mon CLAMPERL, 20, 30
- wild_mon CHINCHOU, 20, 30
- wild_mon CLAMPERL, 30, 35
- wild_mon RELICANTH, 30, 35
- wild_mon RELICANTH, 30, 35
-
- .align 2
-Underwater2_WaterMonsInfo:
- .4byte 4 @ encounter rate
- .4byte Underwater2_WaterMons
.align 2
gWildMonHeaders::
diff --git a/graphics/intro/unknown1.pal b/graphics/intro/unknown1.pal
new file mode 100644
index 000000000..1b8ce3d6e
--- /dev/null
+++ b/graphics/intro/unknown1.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+8 57 8
+32 74 32
+57 98 57
+90 123 90
+115 139 115
+139 164 139
+172 189 172
+197 205 197
+222 230 222
+255 255 255
diff --git a/graphics/intro/unknown2.pal b/graphics/intro/unknown2.pal
new file mode 100644
index 000000000..aef9152e4
--- /dev/null
+++ b/graphics/intro/unknown2.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+156 246 0
+65 90 156
+49 115 255
+82 82 82
+98 98 98
+115 115 115
+131 131 131
+148 148 148
+164 164 164
+180 180 180
+197 197 197
+213 213 213
+230 230 230
+255 255 255
+255 255 255
diff --git a/include/asm.h b/include/asm.h
index dd1955bb2..0b0fc3006 100644
--- a/include/asm.h
+++ b/include/asm.h
@@ -30,19 +30,19 @@ struct FieldInput
struct UnknownStruct_FPA
{
- u8 unk0;
- u8 unk1;
- u8 unk2;
- s16 unk4;
- s16 unk6;
- u8 unk8;
- u8 unk9;
- u8 unkA_0:4;
- u8 unkA_4:4;
- u16 unkC;
- u16 unkE;
- u32 unk10;
- u16 unk14;
+ u8 unk0;
+ u8 unk1;
+ u8 unk2;
+ s16 unk4;
+ s16 unk6;
+ u8 unk8;
+ u8 unk9;
+ u8 unkA_0:4;
+ u8 unkA_4:4;
+ u16 unkC;
+ u16 unkE;
+ u32 unk10;
+ u16 unk14;
};
#include "asm.inc.h"
diff --git a/include/asm.inc.h b/include/asm.inc.h
index 50d983852..bee42f1b5 100644
--- a/include/asm.inc.h
+++ b/include/asm.inc.h
@@ -78,7 +78,7 @@ u8 AddCameraObject(u8);
u8 * GetFieldObjectScriptPointerByFieldObjectId(u8);
u8 FieldObjectGetBerryTreeId(u8);
void sub_805C754(struct MapObject *pObject);
-void sub_805C774(struct MapObject *, u8 );
+void sub_805C774(struct MapObject *, u8);
void sub_805C78C(u8, u8, u8);
void sub_805C7C4(int i);
u8 FieldObjectDirectionToImageAnimId(u8);
diff --git a/include/battle.h b/include/battle.h
index 4f1bc70e1..82ed5f29c 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -19,17 +19,17 @@
struct Trainer
{
- /*0x00*/ u8 partyFlags;
- /*0x01*/ u8 trainerClass;
- /*0x02*/ u8 encounterMusic:7;
- /*0x02*/ u8 gender:1;
- /*0x03*/ u8 trainerPic;
- /*0x04*/ u8 trainerName[12];
- /*0x10*/ u16 items[4];
- /*0x18*/ bool8 doubleBattle;
- /*0x1C*/ u32 aiFlags;
- /*0x20*/ u8 partySize;
- /*0x24*/ void *party;
+ /*0x00*/ u8 partyFlags;
+ /*0x01*/ u8 trainerClass;
+ /*0x02*/ u8 encounterMusic:7;
+ /*0x02*/ u8 gender:1;
+ /*0x03*/ u8 trainerPic;
+ /*0x04*/ u8 trainerName[12];
+ /*0x10*/ u16 items[4];
+ /*0x18*/ bool8 doubleBattle;
+ /*0x1C*/ u32 aiFlags;
+ /*0x20*/ u8 partySize;
+ /*0x24*/ void *party;
};
struct AI_ThinkingStruct /* 0x2016800 */
@@ -48,28 +48,28 @@ struct AI_ThinkingStruct /* 0x2016800 */
struct SmallBattleStruct1
{
- u8 unk1;
- u8 unk2;
- u8 unk3;
- u8 unk4;
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+ u8 unk4;
};
struct SmallItemStruct
{
- u8 item[2][2];
+ u8 item[2][2];
};
struct BattleStruct /* 0x2000000 */
{
- u8 filler0[0x1601C];
- struct SmallBattleStruct1 unk;
- u8 filler1[0x68]; // 0x2016020
- u8 unk88;
- u8 filler1_2[0x42];
- /* 0x160CB */ u8 linkPlayerIndex;
- struct SmallItemStruct item;
- u8 filler2[0x730];
- struct AI_ThinkingStruct ai; /* 0x2016800 */
+ u8 filler0[0x1601C];
+ struct SmallBattleStruct1 unk;
+ u8 filler1[0x68]; // 0x2016020
+ u8 unk88;
+ u8 filler1_2[0x42];
+ /* 0x160CB */ u8 linkPlayerIndex;
+ struct SmallItemStruct item;
+ u8 filler2[0x730];
+ struct AI_ThinkingStruct ai; /* 0x2016800 */
};
extern struct BattleStruct battle_2000000;
diff --git a/include/berry.h b/include/berry.h
index 152f92e38..f17799870 100644
--- a/include/berry.h
+++ b/include/berry.h
@@ -1,11 +1,21 @@
#ifndef GUARD_BERRY_H
#define GUARD_BERRY_H
+enum
+{
+ BERRY_FIRMNESS_UNKNOWN,
+ BERRY_FIRMNESS_VERY_SOFT,
+ BERRY_FIRMNESS_SOFT,
+ BERRY_FIRMNESS_HARD,
+ BERRY_FIRMNESS_VERY_HARD,
+ BERRY_FIRMNESS_SUPER_HARD,
+};
+
void ClearEnigmaBerries(void);
void SetEnigmaBerry(u8 *src);
u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry);
bool32 IsEnigmaBerryValid(void);
-struct Berry *GetBerryInfo(u8 berry);
+const struct Berry *GetBerryInfo(u8 berry);
struct BerryTree *GetBerryTreeInfo(u8 id);
bool32 FieldObjectInteractionWaterBerryTree(void);
bool32 IsPlayerFacingPlantedBerryTree(void);
diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h
index 5234e5b6c..c0874bcbb 100644
--- a/include/gba/io_reg.h
+++ b/include/gba/io_reg.h
@@ -495,12 +495,12 @@
// I/O register fields
// DISPCNT
-#define DISPCNT_MODE_0 0x0000
-#define DISPCNT_MODE_1 0x0001
-#define DISPCNT_MODE_2 0x0002
-#define DISPCNT_MODE_3 0x0003
-#define DISPCNT_MODE_4 0x0004
-#define DISPCNT_MODE_5 0x0005
+#define DISPCNT_MODE_0 0x0000 // BG0: text, BG1: text, BG2: text, BG3: text
+#define DISPCNT_MODE_1 0x0001 // BG0: text, BG1: text, BG2: affine, BG3: off
+#define DISPCNT_MODE_2 0x0002 // BG0: off, BG1: off, BG2: affine, BG3: affine
+#define DISPCNT_MODE_3 0x0003 // Bitmap mode, 240x160, BGR555 color
+#define DISPCNT_MODE_4 0x0004 // Bitmap mode, 240x160, 256 color palette
+#define DISPCNT_MODE_5 0x0005 // Bitmap mode, 160x128, BGR555 color
#define DISPCNT_OBJ_1D_MAP 0x0040
#define DISPCNT_FORCED_BLANK 0x0080
#define DISPCNT_BG0_ON 0x0100
@@ -521,6 +521,26 @@
#define DISPSTAT_HBLANK_INTR 0x0010 // H-Blank interrupt enabled
#define DISPSTAT_VCOUNT_INTR 0x0020 // V-Count interrupt enabled
+// BGCNT
+#define BGCNT_PRIORITY(n) (n) // Values 0 - 3. Lower priority BGs will be drawn on top of higher priority BGs.
+#define BGCNT_CHARBASE(n) ((n) << 2) // Values 0 - 3. Base block for tile pixel data.
+#define BGCNT_MOSAIC 0x0040
+#define BGCNT_16COLOR 0x0000 // 4 bits per pixel
+#define BGCNT_256COLOR 0x0080 // 8 bits per pixel
+#define BGCNT_SCREENBASE(n) ((n) << 8) // Values 0 - 31. Base block for tile map.
+#define BGCNT_WRAP 0x2000 // Only affects affine BGs. Text BGs wrap by default.
+#define BGCNT_TXT256x256 0x0000 // Internal screen size size of text mode BG in pixels.
+#define BGCNT_TXT512x256 0x4000
+#define BGCNT_TXT256x512 0x8000
+#define BGCNT_TXT512x512 0xC000
+#define BGCNT_AFF128x128 0x0000 // Internal screen size size of affine mode BG in pixels.
+#define BGCNT_AFF256x256 0x4000
+#define BGCNT_AFF512x512 0x8000
+#define BGCNT_AFF1024x1024 0xC000
+
+// BLDCNT
+
+
// SOUNDCNT_H
#define SOUND_CGB_MIX_QUARTER 0x0000
#define SOUND_CGB_MIX_HALF 0x0001
diff --git a/include/global.berry.h b/include/global.berry.h
index 8b98a5f58..b7938868d 100644
--- a/include/global.berry.h
+++ b/include/global.berry.h
@@ -3,13 +3,13 @@
struct Berry
{
- u8 name[7];
+ const u8 name[7];
u8 firmness;
u16 size;
u8 maxYield;
u8 minYield;
- u8 *description1;
- u8 *description2;
+ const u8 *description1;
+ const u8 *description2;
u8 stageDuration;
u8 spicy;
u8 dry;
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index 536e08cb3..d2e2b1bd0 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -14,16 +14,16 @@ enum
// map types
enum
{
- MAP_TYPE_0,
- MAP_TYPE_TOWN,
- MAP_TYPE_CITY,
- MAP_TYPE_ROUTE,
- MAP_TYPE_UNDERGROUND,
- MAP_TYPE_UNDERWATER,
- MAP_TYPE_6,
- MAP_TYPE_7,
- MAP_TYPE_INDOOR,
- MAP_TYPE_SECRET_BASE
+ MAP_TYPE_0,
+ MAP_TYPE_TOWN,
+ MAP_TYPE_CITY,
+ MAP_TYPE_ROUTE,
+ MAP_TYPE_UNDERGROUND,
+ MAP_TYPE_UNDERWATER,
+ MAP_TYPE_6,
+ MAP_TYPE_7,
+ MAP_TYPE_INDOOR,
+ MAP_TYPE_SECRET_BASE
};
// map battle scenes
@@ -343,10 +343,10 @@ struct PlayerAvatar /* 0x202E858 */
/*0x05*/ u8 mapObjectId;
/*0x06*/ u8 unk6;
/*0x07*/ u8 gender;
- u8 acroBikeState;
- u8 unk9;
- u8 bikeFrameCounter;
- u8 unkB;
+ u8 acroBikeState;
+ u8 unk9;
+ u8 bikeFrameCounter;
+ u8 unkB;
u32 unkC;
u32 unk10;
u8 unk14[8];
diff --git a/include/heal_location.h b/include/heal_location.h
index 785918bd6..94dac2417 100644
--- a/include/heal_location.h
+++ b/include/heal_location.h
@@ -5,10 +5,10 @@
struct HealLocation
{
- s8 group;
- s8 map;
- u16 x;
- u16 y;
+ s8 group;
+ s8 map;
+ u16 x;
+ u16 y;
};
u32 GetHealLocationIndexByMap(u16 mapGroup, u16 mapNum);
diff --git a/include/libgncmultiboot.h b/include/libgncmultiboot.h
index b4d1cd231..33c9f6bfa 100644
--- a/include/libgncmultiboot.h
+++ b/include/libgncmultiboot.h
@@ -3,8 +3,8 @@
struct GcmbStruct
{
- u16 gcmb_field_0;
- u8 gcmb_field_2;
+ u16 gcmb_field_0;
+ u8 gcmb_field_2;
};
void GameCubeMultiBoot_Main(struct GcmbStruct *pStruct);
diff --git a/include/map_constants.h b/include/map_constants.h
new file mode 100644
index 000000000..f525f43a3
--- /dev/null
+++ b/include/map_constants.h
@@ -0,0 +1,1098 @@
+#ifndef GUARD_MAP_CONSTANTS_H
+#define GUARD_MAP_CONSTANTS_H
+
+//--------------------------------------------------
+// Map Group 0
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_PETALBURG_CITY,
+ MAP_ID_SLATEPORT_CITY,
+ MAP_ID_MAUVILLE_CITY,
+ MAP_ID_RUSTBORO_CITY,
+ MAP_ID_FORTREE_CITY,
+ MAP_ID_LILYCOVE_CITY,
+ MAP_ID_MOSSDEEP_CITY,
+ MAP_ID_SOOTOPOLIS_CITY,
+ MAP_ID_EVER_GRANDE_CITY,
+ MAP_ID_LITTLEROOT_TOWN,
+ MAP_ID_OLDALE_TOWN,
+ MAP_ID_DEWFORD_TOWN,
+ MAP_ID_LAVARIDGE_TOWN,
+ MAP_ID_FALLARBOR_TOWN,
+ MAP_ID_VERDANTURF_TOWN,
+ MAP_ID_PACIFIDLOG_TOWN,
+ MAP_ID_ROUTE101,
+ MAP_ID_ROUTE102,
+ MAP_ID_ROUTE103,
+ MAP_ID_ROUTE104,
+ MAP_ID_ROUTE105,
+ MAP_ID_ROUTE106,
+ MAP_ID_ROUTE107,
+ MAP_ID_ROUTE108,
+ MAP_ID_ROUTE109,
+ MAP_ID_ROUTE110,
+ MAP_ID_ROUTE111,
+ MAP_ID_ROUTE112,
+ MAP_ID_ROUTE113,
+ MAP_ID_ROUTE114,
+ MAP_ID_ROUTE115,
+ MAP_ID_ROUTE116,
+ MAP_ID_ROUTE117,
+ MAP_ID_ROUTE118,
+ MAP_ID_ROUTE119,
+ MAP_ID_ROUTE120,
+ MAP_ID_ROUTE121,
+ MAP_ID_ROUTE122,
+ MAP_ID_ROUTE123,
+ MAP_ID_ROUTE124,
+ MAP_ID_ROUTE125,
+ MAP_ID_ROUTE126,
+ MAP_ID_ROUTE127,
+ MAP_ID_ROUTE128,
+ MAP_ID_ROUTE129,
+ MAP_ID_ROUTE130,
+ MAP_ID_ROUTE131,
+ MAP_ID_ROUTE132,
+ MAP_ID_ROUTE133,
+ MAP_ID_ROUTE134,
+ MAP_ID_UNDERWATER1,
+ MAP_ID_UNDERWATER2,
+ MAP_ID_UNDERWATER3,
+ MAP_ID_UNDERWATER4,
+};
+
+#define MAP_GROUP_PETALBURG_CITY 0
+#define MAP_GROUP_SLATEPORT_CITY 0
+#define MAP_GROUP_MAUVILLE_CITY 0
+#define MAP_GROUP_RUSTBORO_CITY 0
+#define MAP_GROUP_FORTREE_CITY 0
+#define MAP_GROUP_LILYCOVE_CITY 0
+#define MAP_GROUP_MOSSDEEP_CITY 0
+#define MAP_GROUP_SOOTOPOLIS_CITY 0
+#define MAP_GROUP_EVER_GRANDE_CITY 0
+#define MAP_GROUP_LITTLEROOT_TOWN 0
+#define MAP_GROUP_OLDALE_TOWN 0
+#define MAP_GROUP_DEWFORD_TOWN 0
+#define MAP_GROUP_LAVARIDGE_TOWN 0
+#define MAP_GROUP_FALLARBOR_TOWN 0
+#define MAP_GROUP_VERDANTURF_TOWN 0
+#define MAP_GROUP_PACIFIDLOG_TOWN 0
+#define MAP_GROUP_ROUTE101 0
+#define MAP_GROUP_ROUTE102 0
+#define MAP_GROUP_ROUTE103 0
+#define MAP_GROUP_ROUTE104 0
+#define MAP_GROUP_ROUTE105 0
+#define MAP_GROUP_ROUTE106 0
+#define MAP_GROUP_ROUTE107 0
+#define MAP_GROUP_ROUTE108 0
+#define MAP_GROUP_ROUTE109 0
+#define MAP_GROUP_ROUTE110 0
+#define MAP_GROUP_ROUTE111 0
+#define MAP_GROUP_ROUTE112 0
+#define MAP_GROUP_ROUTE113 0
+#define MAP_GROUP_ROUTE114 0
+#define MAP_GROUP_ROUTE115 0
+#define MAP_GROUP_ROUTE116 0
+#define MAP_GROUP_ROUTE117 0
+#define MAP_GROUP_ROUTE118 0
+#define MAP_GROUP_ROUTE119 0
+#define MAP_GROUP_ROUTE120 0
+#define MAP_GROUP_ROUTE121 0
+#define MAP_GROUP_ROUTE122 0
+#define MAP_GROUP_ROUTE123 0
+#define MAP_GROUP_ROUTE124 0
+#define MAP_GROUP_ROUTE125 0
+#define MAP_GROUP_ROUTE126 0
+#define MAP_GROUP_ROUTE127 0
+#define MAP_GROUP_ROUTE128 0
+#define MAP_GROUP_ROUTE129 0
+#define MAP_GROUP_ROUTE130 0
+#define MAP_GROUP_ROUTE131 0
+#define MAP_GROUP_ROUTE132 0
+#define MAP_GROUP_ROUTE133 0
+#define MAP_GROUP_ROUTE134 0
+#define MAP_GROUP_UNDERWATER1 0
+#define MAP_GROUP_UNDERWATER2 0
+#define MAP_GROUP_UNDERWATER3 0
+#define MAP_GROUP_UNDERWATER4 0
+
+//--------------------------------------------------
+// Map Group 1
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F,
+ MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F,
+ MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F,
+ MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_2F,
+ MAP_ID_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB,
+};
+
+#define MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F 1
+#define MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F 1
+#define MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_1F 1
+#define MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_2F 1
+#define MAP_GROUP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB 1
+
+//--------------------------------------------------
+// Map Group 2
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_OLDALE_TOWN_HOUSE1,
+ MAP_ID_OLDALE_TOWN_HOUSE2,
+ MAP_ID_OLDALE_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_OLDALE_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_OLDALE_TOWN_MART,
+};
+
+#define MAP_GROUP_OLDALE_TOWN_HOUSE1 2
+#define MAP_GROUP_OLDALE_TOWN_HOUSE2 2
+#define MAP_GROUP_OLDALE_TOWN_POKEMON_CENTER_1F 2
+#define MAP_GROUP_OLDALE_TOWN_POKEMON_CENTER_2F 2
+#define MAP_GROUP_OLDALE_TOWN_MART 2
+
+//--------------------------------------------------
+// Map Group 3
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_DEWFORD_TOWN_HOUSE1,
+ MAP_ID_DEWFORD_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_DEWFORD_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_DEWFORD_TOWN_GYM,
+ MAP_ID_DEWFORD_TOWN_HALL,
+ MAP_ID_DEWFORD_TOWN_HOUSE2,
+};
+
+#define MAP_GROUP_DEWFORD_TOWN_HOUSE1 3
+#define MAP_GROUP_DEWFORD_TOWN_POKEMON_CENTER_1F 3
+#define MAP_GROUP_DEWFORD_TOWN_POKEMON_CENTER_2F 3
+#define MAP_GROUP_DEWFORD_TOWN_GYM 3
+#define MAP_GROUP_DEWFORD_TOWN_HALL 3
+#define MAP_GROUP_DEWFORD_TOWN_HOUSE2 3
+
+//--------------------------------------------------
+// Map Group 4
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_LAVARIDGE_TOWN_HERB_SHOP,
+ MAP_ID_LAVARIDGE_TOWN_GYM_1F,
+ MAP_ID_LAVARIDGE_TOWN_GYM_B1F,
+ MAP_ID_LAVARIDGE_TOWN_HOUSE,
+ MAP_ID_LAVARIDGE_TOWN_MART,
+ MAP_ID_LAVARIDGE_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_LAVARIDGE_TOWN_POKEMON_CENTER_2F,
+};
+
+#define MAP_GROUP_LAVARIDGE_TOWN_HERB_SHOP 4
+#define MAP_GROUP_LAVARIDGE_TOWN_GYM_1F 4
+#define MAP_GROUP_LAVARIDGE_TOWN_GYM_B1F 4
+#define MAP_GROUP_LAVARIDGE_TOWN_HOUSE 4
+#define MAP_GROUP_LAVARIDGE_TOWN_MART 4
+#define MAP_GROUP_LAVARIDGE_TOWN_POKEMON_CENTER_1F 4
+#define MAP_GROUP_LAVARIDGE_TOWN_POKEMON_CENTER_2F 4
+
+//--------------------------------------------------
+// Map Group 5
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_FALLARBOR_TOWN_MART,
+ MAP_ID_FALLARBOR_TOWN_CONTEST_LOBBY,
+ MAP_ID_FALLARBOR_TOWN_CONTEST_HALL,
+ MAP_ID_FALLARBOR_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_FALLARBOR_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_FALLARBOR_TOWN_HOUSE1,
+ MAP_ID_FALLARBOR_TOWN_HOUSE2,
+};
+
+#define MAP_GROUP_FALLARBOR_TOWN_MART 5
+#define MAP_GROUP_FALLARBOR_TOWN_CONTEST_LOBBY 5
+#define MAP_GROUP_FALLARBOR_TOWN_CONTEST_HALL 5
+#define MAP_GROUP_FALLARBOR_TOWN_POKEMON_CENTER_1F 5
+#define MAP_GROUP_FALLARBOR_TOWN_POKEMON_CENTER_2F 5
+#define MAP_GROUP_FALLARBOR_TOWN_HOUSE1 5
+#define MAP_GROUP_FALLARBOR_TOWN_HOUSE2 5
+
+//--------------------------------------------------
+// Map Group 6
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_VERDANTURF_TOWN_CONTEST_LOBBY,
+ MAP_ID_VERDANTURF_TOWN_CONTEST_HALL,
+ MAP_ID_VERDANTURF_TOWN_MART,
+ MAP_ID_VERDANTURF_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_VERDANTURF_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_VERDANTURF_TOWN_WANDAS_HOUSE,
+ MAP_ID_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE,
+ MAP_ID_VERDANTURF_TOWN_HOUSE,
+};
+
+#define MAP_GROUP_VERDANTURF_TOWN_CONTEST_LOBBY 6
+#define MAP_GROUP_VERDANTURF_TOWN_CONTEST_HALL 6
+#define MAP_GROUP_VERDANTURF_TOWN_MART 6
+#define MAP_GROUP_VERDANTURF_TOWN_POKEMON_CENTER_1F 6
+#define MAP_GROUP_VERDANTURF_TOWN_POKEMON_CENTER_2F 6
+#define MAP_GROUP_VERDANTURF_TOWN_WANDAS_HOUSE 6
+#define MAP_GROUP_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE 6
+#define MAP_GROUP_VERDANTURF_TOWN_HOUSE 6
+
+//--------------------------------------------------
+// Map Group 7
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_PACIFIDLOG_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_PACIFIDLOG_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE1,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE2,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE3,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE4,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE5,
+};
+
+#define MAP_GROUP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_POKEMON_CENTER_2F 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE1 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE2 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE3 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE4 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE5 7
+
+//--------------------------------------------------
+// Map Group 8
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_PETALBURG_CITY_WALLYS_HOUSE,
+ MAP_ID_PETALBURG_CITY_GYM,
+ MAP_ID_PETALBURG_CITY_HOUSE1,
+ MAP_ID_PETALBURG_CITY_HOUSE2,
+ MAP_ID_PETALBURG_CITY_POKEMON_CENTER_1F,
+ MAP_ID_PETALBURG_CITY_POKEMON_CENTER_2F,
+ MAP_ID_PETALBURG_CITY_MART,
+};
+
+#define MAP_GROUP_PETALBURG_CITY_WALLYS_HOUSE 8
+#define MAP_GROUP_PETALBURG_CITY_GYM 8
+#define MAP_GROUP_PETALBURG_CITY_HOUSE1 8
+#define MAP_GROUP_PETALBURG_CITY_HOUSE2 8
+#define MAP_GROUP_PETALBURG_CITY_POKEMON_CENTER_1F 8
+#define MAP_GROUP_PETALBURG_CITY_POKEMON_CENTER_2F 8
+#define MAP_GROUP_PETALBURG_CITY_MART 8
+
+//--------------------------------------------------
+// Map Group 9
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_SLATEPORT_CITY_STERNS_SHIPYARD_1F,
+ MAP_ID_SLATEPORT_CITY_STERNS_SHIPYARD_2F,
+ MAP_ID_SLATEPORT_CITY_CONTEST_LOBBY,
+ MAP_ID_SLATEPORT_CITY_CONTEST_HALL,
+ MAP_ID_SLATEPORT_CITY_HOUSE1,
+ MAP_ID_SLATEPORT_CITY_POKEMON_FAN_CLUB,
+ MAP_ID_SLATEPORT_CITY_OCEANIC_MUSEUM_1F,
+ MAP_ID_SLATEPORT_CITY_OCEANIC_MUSEUM_2F,
+ MAP_ID_SLATEPORT_CITY_HARBOR,
+ MAP_ID_SLATEPORT_CITY_HOUSE2,
+ MAP_ID_SLATEPORT_CITY_POKEMON_CENTER_1F,
+ MAP_ID_SLATEPORT_CITY_POKEMON_CENTER_2F,
+ MAP_ID_SLATEPORT_CITY_MART,
+};
+
+#define MAP_GROUP_SLATEPORT_CITY_STERNS_SHIPYARD_1F 9
+#define MAP_GROUP_SLATEPORT_CITY_STERNS_SHIPYARD_2F 9
+#define MAP_GROUP_SLATEPORT_CITY_CONTEST_LOBBY 9
+#define MAP_GROUP_SLATEPORT_CITY_CONTEST_HALL 9
+#define MAP_GROUP_SLATEPORT_CITY_HOUSE1 9
+#define MAP_GROUP_SLATEPORT_CITY_POKEMON_FAN_CLUB 9
+#define MAP_GROUP_SLATEPORT_CITY_OCEANIC_MUSEUM_1F 9
+#define MAP_GROUP_SLATEPORT_CITY_OCEANIC_MUSEUM_2F 9
+#define MAP_GROUP_SLATEPORT_CITY_HARBOR 9
+#define MAP_GROUP_SLATEPORT_CITY_HOUSE2 9
+#define MAP_GROUP_SLATEPORT_CITY_POKEMON_CENTER_1F 9
+#define MAP_GROUP_SLATEPORT_CITY_POKEMON_CENTER_2F 9
+#define MAP_GROUP_SLATEPORT_CITY_MART 9
+
+//--------------------------------------------------
+// Map Group 10
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_MAUVILLE_CITY_GYM,
+ MAP_ID_MAUVILLE_CITY_BIKE_SHOP,
+ MAP_ID_MAUVILLE_CITY_HOUSE1,
+ MAP_ID_MAUVILLE_CITY_GAME_CORNER,
+ MAP_ID_MAUVILLE_CITY_HOUSE2,
+ MAP_ID_MAUVILLE_CITY_POKEMON_CENTER_1F,
+ MAP_ID_MAUVILLE_CITY_POKEMON_CENTER_2F,
+ MAP_ID_MAUVILLE_CITY_MART,
+};
+
+#define MAP_GROUP_MAUVILLE_CITY_GYM 10
+#define MAP_GROUP_MAUVILLE_CITY_BIKE_SHOP 10
+#define MAP_GROUP_MAUVILLE_CITY_HOUSE1 10
+#define MAP_GROUP_MAUVILLE_CITY_GAME_CORNER 10
+#define MAP_GROUP_MAUVILLE_CITY_HOUSE2 10
+#define MAP_GROUP_MAUVILLE_CITY_POKEMON_CENTER_1F 10
+#define MAP_GROUP_MAUVILLE_CITY_POKEMON_CENTER_2F 10
+#define MAP_GROUP_MAUVILLE_CITY_MART 10
+
+//--------------------------------------------------
+// Map Group 11
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_RUSTBORO_CITY_DEVON_CORP_1F,
+ MAP_ID_RUSTBORO_CITY_DEVON_CORP_2F,
+ MAP_ID_RUSTBORO_CITY_DEVON_CORP_3F,
+ MAP_ID_RUSTBORO_CITY_GYM,
+ MAP_ID_RUSTBORO_CITY_POKEMON_SCHOOL,
+ MAP_ID_RUSTBORO_CITY_POKEMON_CENTER_1F,
+ MAP_ID_RUSTBORO_CITY_POKEMON_CENTER_2F,
+ MAP_ID_RUSTBORO_CITY_MART,
+ MAP_ID_RUSTBORO_CITY_FLAT1_1F,
+ MAP_ID_RUSTBORO_CITY_FLAT1_2F,
+ MAP_ID_RUSTBORO_CITY_HOUSE1,
+ MAP_ID_RUSTBORO_CITY_CUTTERS_HOUSE,
+ MAP_ID_RUSTBORO_CITY_HOUSE2,
+ MAP_ID_RUSTBORO_CITY_FLAT2_1F,
+ MAP_ID_RUSTBORO_CITY_FLAT2_2F,
+ MAP_ID_RUSTBORO_CITY_FLAT2_3F,
+ MAP_ID_RUSTBORO_CITY_HOUSE3,
+};
+
+#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_1F 11
+#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_2F 11
+#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_3F 11
+#define MAP_GROUP_RUSTBORO_CITY_GYM 11
+#define MAP_GROUP_RUSTBORO_CITY_POKEMON_SCHOOL 11
+#define MAP_GROUP_RUSTBORO_CITY_POKEMON_CENTER_1F 11
+#define MAP_GROUP_RUSTBORO_CITY_POKEMON_CENTER_2F 11
+#define MAP_GROUP_RUSTBORO_CITY_MART 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT1_1F 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT1_2F 11
+#define MAP_GROUP_RUSTBORO_CITY_HOUSE1 11
+#define MAP_GROUP_RUSTBORO_CITY_CUTTERS_HOUSE 11
+#define MAP_GROUP_RUSTBORO_CITY_HOUSE2 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT2_1F 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT2_2F 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT2_3F 11
+#define MAP_GROUP_RUSTBORO_CITY_HOUSE3 11
+
+//--------------------------------------------------
+// Map Group 12
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_FORTREE_CITY_HOUSE1,
+ MAP_ID_FORTREE_CITY_GYM,
+ MAP_ID_FORTREE_CITY_POKEMON_CENTER_1F,
+ MAP_ID_FORTREE_CITY_POKEMON_CENTER_2F,
+ MAP_ID_FORTREE_CITY_MART,
+ MAP_ID_FORTREE_CITY_HOUSE2,
+ MAP_ID_FORTREE_CITY_HOUSE3,
+ MAP_ID_FORTREE_CITY_HOUSE4,
+ MAP_ID_FORTREE_CITY_HOUSE5,
+ MAP_ID_FORTREE_CITY_DECORATION_SHOP,
+};
+
+#define MAP_GROUP_FORTREE_CITY_HOUSE1 12
+#define MAP_GROUP_FORTREE_CITY_GYM 12
+#define MAP_GROUP_FORTREE_CITY_POKEMON_CENTER_1F 12
+#define MAP_GROUP_FORTREE_CITY_POKEMON_CENTER_2F 12
+#define MAP_GROUP_FORTREE_CITY_MART 12
+#define MAP_GROUP_FORTREE_CITY_HOUSE2 12
+#define MAP_GROUP_FORTREE_CITY_HOUSE3 12
+#define MAP_GROUP_FORTREE_CITY_HOUSE4 12
+#define MAP_GROUP_FORTREE_CITY_HOUSE5 12
+#define MAP_GROUP_FORTREE_CITY_DECORATION_SHOP 12
+
+//--------------------------------------------------
+// Map Group 13
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F,
+ MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_2F,
+ MAP_ID_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F,
+ MAP_ID_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F,
+ MAP_ID_LILYCOVE_CITY_CONTEST_LOBBY,
+ MAP_ID_LILYCOVE_CITY_CONTEST_HALL,
+ MAP_ID_LILYCOVE_CITY_POKEMON_CENTER_1F,
+ MAP_ID_LILYCOVE_CITY_POKEMON_CENTER_2F,
+ MAP_ID_LILYCOVE_CITY_UNUSED_MART,
+ MAP_ID_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB,
+ MAP_ID_LILYCOVE_CITY_HARBOR,
+ MAP_ID_LILYCOVE_CITY_EMPTY_MAP,
+ MAP_ID_LILYCOVE_CITY_MOVE_DELETERS_HOUSE,
+ MAP_ID_LILYCOVE_CITY_HOUSE1,
+ MAP_ID_LILYCOVE_CITY_HOUSE2,
+ MAP_ID_LILYCOVE_CITY_HOUSE3,
+ MAP_ID_LILYCOVE_CITY_HOUSE4,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_1F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_2F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_3F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_4F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_5F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR,
+};
+
+#define MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F 13
+#define MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_2F 13
+#define MAP_GROUP_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F 13
+#define MAP_GROUP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F 13
+#define MAP_GROUP_LILYCOVE_CITY_CONTEST_LOBBY 13
+#define MAP_GROUP_LILYCOVE_CITY_CONTEST_HALL 13
+#define MAP_GROUP_LILYCOVE_CITY_POKEMON_CENTER_1F 13
+#define MAP_GROUP_LILYCOVE_CITY_POKEMON_CENTER_2F 13
+#define MAP_GROUP_LILYCOVE_CITY_UNUSED_MART 13
+#define MAP_GROUP_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB 13
+#define MAP_GROUP_LILYCOVE_CITY_HARBOR 13
+#define MAP_GROUP_LILYCOVE_CITY_EMPTY_MAP 13
+#define MAP_GROUP_LILYCOVE_CITY_MOVE_DELETERS_HOUSE 13
+#define MAP_GROUP_LILYCOVE_CITY_HOUSE1 13
+#define MAP_GROUP_LILYCOVE_CITY_HOUSE2 13
+#define MAP_GROUP_LILYCOVE_CITY_HOUSE3 13
+#define MAP_GROUP_LILYCOVE_CITY_HOUSE4 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_1F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_2F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_3F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_4F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_5F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR 13
+
+//--------------------------------------------------
+// Map Group 14
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_MOSSDEEP_CITY_GYM,
+ MAP_ID_MOSSDEEP_CITY_HOUSE1,
+ MAP_ID_MOSSDEEP_CITY_HOUSE2,
+ MAP_ID_MOSSDEEP_CITY_POKEMON_CENTER_1F,
+ MAP_ID_MOSSDEEP_CITY_POKEMON_CENTER_2F,
+ MAP_ID_MOSSDEEP_CITY_MART,
+ MAP_ID_MOSSDEEP_CITY_HOUSE3,
+ MAP_ID_MOSSDEEP_CITY_STEVENS_HOUSE,
+ MAP_ID_MOSSDEEP_CITY_HOUSE4,
+ MAP_ID_MOSSDEEP_CITY_SPACE_CENTER_1F,
+ MAP_ID_MOSSDEEP_CITY_SPACE_CENTER_2F,
+ MAP_ID_MOSSDEEP_CITY_GAME_CORNER_1F,
+ MAP_ID_MOSSDEEP_CITY_GAME_CORNER_B1F,
+};
+
+#define MAP_GROUP_MOSSDEEP_CITY_GYM 14
+#define MAP_GROUP_MOSSDEEP_CITY_HOUSE1 14
+#define MAP_GROUP_MOSSDEEP_CITY_HOUSE2 14
+#define MAP_GROUP_MOSSDEEP_CITY_POKEMON_CENTER_1F 14
+#define MAP_GROUP_MOSSDEEP_CITY_POKEMON_CENTER_2F 14
+#define MAP_GROUP_MOSSDEEP_CITY_MART 14
+#define MAP_GROUP_MOSSDEEP_CITY_HOUSE3 14
+#define MAP_GROUP_MOSSDEEP_CITY_STEVENS_HOUSE 14
+#define MAP_GROUP_MOSSDEEP_CITY_HOUSE4 14
+#define MAP_GROUP_MOSSDEEP_CITY_SPACE_CENTER_1F 14
+#define MAP_GROUP_MOSSDEEP_CITY_SPACE_CENTER_2F 14
+#define MAP_GROUP_MOSSDEEP_CITY_GAME_CORNER_1F 14
+#define MAP_GROUP_MOSSDEEP_CITY_GAME_CORNER_B1F 14
+
+//--------------------------------------------------
+// Map Group 15
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_SOOTOPOLIS_CITY_GYM_1F,
+ MAP_ID_SOOTOPOLIS_CITY_GYM_B1F,
+ MAP_ID_SOOTOPOLIS_CITY_POKEMON_CENTER_1F,
+ MAP_ID_SOOTOPOLIS_CITY_POKEMON_CENTER_2F,
+ MAP_ID_SOOTOPOLIS_CITY_MART,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE1,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE2,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE3,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE4,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE5,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE6,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE7,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE8,
+};
+
+#define MAP_GROUP_SOOTOPOLIS_CITY_GYM_1F 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_GYM_B1F 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_POKEMON_CENTER_2F 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_MART 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE1 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE2 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE3 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE4 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE5 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE6 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE7 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE8 15
+
+//--------------------------------------------------
+// Map Group 16
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_EVER_GRANDE_CITY_SIDNEYS_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_PHOEBES_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_GLACIAS_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_DRAKES_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_CHAMPIONS_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR1,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR2,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR3,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR4,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR5,
+ MAP_ID_EVER_GRANDE_CITY_POKEMON_LEAGUE,
+ MAP_ID_EVER_GRANDE_CITY_HALL_OF_FAME,
+ MAP_ID_EVER_GRANDE_CITY_POKEMON_CENTER_1F,
+ MAP_ID_EVER_GRANDE_CITY_POKEMON_CENTER_2F,
+};
+
+#define MAP_GROUP_EVER_GRANDE_CITY_SIDNEYS_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_PHOEBES_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_GLACIAS_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_DRAKES_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CHAMPIONS_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR1 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR2 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR3 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR4 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR5 16
+#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_LEAGUE 16
+#define MAP_GROUP_EVER_GRANDE_CITY_HALL_OF_FAME 16
+#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_CENTER_1F 16
+#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_CENTER_2F 16
+
+//--------------------------------------------------
+// Map Group 17
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE104_MR_BRINEYS_HOUSE,
+ MAP_ID_ROUTE104_PRETTY_PETAL_FLOWER_SHOP,
+};
+
+#define MAP_GROUP_ROUTE104_MR_BRINEYS_HOUSE 17
+#define MAP_GROUP_ROUTE104_PRETTY_PETAL_FLOWER_SHOP 17
+
+//--------------------------------------------------
+// Map Group 18
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE111_WINSTRATE_FAMILYS_HOUSE,
+ MAP_ID_ROUTE111_OLD_LADYS_REST_STOP,
+};
+
+#define MAP_GROUP_ROUTE111_WINSTRATE_FAMILYS_HOUSE 18
+#define MAP_GROUP_ROUTE111_OLD_LADYS_REST_STOP 18
+
+//--------------------------------------------------
+// Map Group 19
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE112_CABLE_CAR_STATION,
+ MAP_ID_MT_CHIMNEY_CABLE_CAR_STATION,
+};
+
+#define MAP_GROUP_ROUTE112_CABLE_CAR_STATION 19
+#define MAP_GROUP_MT_CHIMNEY_CABLE_CAR_STATION 19
+
+//--------------------------------------------------
+// Map Group 20
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE114_FOSSIL_MANIACS_HOUSE,
+ MAP_ID_ROUTE114_FOSSIL_MANIACS_TUNNEL,
+ MAP_ID_ROUTE114_LANETTES_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE114_FOSSIL_MANIACS_HOUSE 20
+#define MAP_GROUP_ROUTE114_FOSSIL_MANIACS_TUNNEL 20
+#define MAP_GROUP_ROUTE114_LANETTES_HOUSE 20
+
+//--------------------------------------------------
+// Map Group 21
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE116_TUNNELERS_REST_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE116_TUNNELERS_REST_HOUSE 21
+
+//--------------------------------------------------
+// Map Group 22
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE117_POKEMON_DAY_CARE,
+};
+
+#define MAP_GROUP_ROUTE117_POKEMON_DAY_CARE 22
+
+//--------------------------------------------------
+// Map Group 23
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE121_SAFARI_ZONE_ENTRANCE,
+};
+
+#define MAP_GROUP_ROUTE121_SAFARI_ZONE_ENTRANCE 23
+
+//--------------------------------------------------
+// Map Group 24
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_METEOR_FALLS_1F_1R,
+ MAP_ID_METEOR_FALLS_1F_2R,
+ MAP_ID_METEOR_FALLS_B1F_1R,
+ MAP_ID_METEOR_FALLS_B1F_2R,
+ MAP_ID_RUSTURF_TUNNEL,
+ MAP_ID_UNDERWATER_SOOTOPOLIS_CITY,
+ MAP_ID_DESERT_RUINS,
+ MAP_ID_GRANITE_CAVE_1F,
+ MAP_ID_GRANITE_CAVE_B1F,
+ MAP_ID_GRANITE_CAVE_B2F,
+ MAP_ID_GRANITE_CAVE_STEVENS_ROOM,
+ MAP_ID_PETALBURG_WOODS,
+ MAP_ID_MT_CHIMNEY,
+ MAP_ID_JAGGED_PASS,
+ MAP_ID_FIERY_PATH,
+ MAP_ID_MT_PYRE_1F,
+ MAP_ID_MT_PYRE_2F,
+ MAP_ID_MT_PYRE_3F,
+ MAP_ID_MT_PYRE_4F,
+ MAP_ID_MT_PYRE_5F,
+ MAP_ID_MT_PYRE_6F,
+ MAP_ID_MT_PYRE_EXTERIOR,
+ MAP_ID_MT_PYRE_SUMMIT,
+ MAP_ID_AQUA_HIDEOUT_1F,
+ MAP_ID_AQUA_HIDEOUT_B1F,
+ MAP_ID_AQUA_HIDEOUT_B2F,
+ MAP_ID_UNDERWATER_SEAFLOOR_CAVERN,
+ MAP_ID_SEAFLOOR_CAVERN_ENTRANCE,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM1,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM2,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM3,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM4,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM5,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM6,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM7,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM8,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM9,
+ MAP_ID_CAVE_OF_ORIGIN_ENTRANCE,
+ MAP_ID_CAVE_OF_ORIGIN_1F,
+ MAP_ID_CAVE_OF_ORIGIN_B1F,
+ MAP_ID_CAVE_OF_ORIGIN_B2F,
+ MAP_ID_CAVE_OF_ORIGIN_B3F,
+ MAP_ID_CAVE_OF_ORIGIN_B4F,
+ MAP_ID_VICTORY_ROAD_1F,
+ MAP_ID_VICTORY_ROAD_B1F,
+ MAP_ID_VICTORY_ROAD_B2F,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_INNER_ROOM,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM,
+ MAP_ID_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM,
+ MAP_ID_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM,
+ MAP_ID_NEW_MAUVILLE_ENTRANCE,
+ MAP_ID_NEW_MAUVILLE_INSIDE,
+ MAP_ID_ABANDONED_SHIP_DECK,
+ MAP_ID_ABANDONED_SHIP_CORRIDORS_1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS_1F,
+ MAP_ID_ABANDONED_SHIP_CORRIDORS_B1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS_B1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS2_B1F,
+ MAP_ID_ABANDONED_SHIP_UNDERWATER1,
+ MAP_ID_ABANDONED_SHIP_ROOM_B1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS2_1F,
+ MAP_ID_ABANDONED_SHIP_CAPTAINS_OFFICE,
+ MAP_ID_ABANDONED_SHIP_UNDERWATER2,
+ MAP_ID_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS,
+ MAP_ID_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS,
+ MAP_ID_ISLAND_CAVE,
+ MAP_ID_ANCIENT_TOMB,
+ MAP_ID_UNDERWATER_ROUTE134,
+ MAP_ID_UNDERWATER_SEALED_CHAMBER,
+ MAP_ID_SEALED_CHAMBER_OUTER_ROOM,
+ MAP_ID_SEALED_CHAMBER_INNER_ROOM,
+ MAP_ID_SCORCHED_SLAB,
+ MAP_ID_MAGMA_HIDEOUT_1F,
+ MAP_ID_MAGMA_HIDEOUT_B1F,
+ MAP_ID_MAGMA_HIDEOUT_B2F,
+ MAP_ID_SKY_PILLAR_ENTRANCE,
+ MAP_ID_SKY_PILLAR_OUTSIDE,
+ MAP_ID_SKY_PILLAR_1F,
+ MAP_ID_SKY_PILLAR_2F,
+ MAP_ID_SKY_PILLAR_3F,
+ MAP_ID_SKY_PILLAR_4F,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_ICE_ROOM,
+ MAP_ID_SKY_PILLAR_5F,
+ MAP_ID_SKY_PILLAR_TOP,
+};
+
+#define MAP_GROUP_METEOR_FALLS_1F_1R 24
+#define MAP_GROUP_METEOR_FALLS_1F_2R 24
+#define MAP_GROUP_METEOR_FALLS_B1F_1R 24
+#define MAP_GROUP_METEOR_FALLS_B1F_2R 24
+#define MAP_GROUP_RUSTURF_TUNNEL 24
+#define MAP_GROUP_UNDERWATER_SOOTOPOLIS_CITY 24
+#define MAP_GROUP_DESERT_RUINS 24
+#define MAP_GROUP_GRANITE_CAVE_1F 24
+#define MAP_GROUP_GRANITE_CAVE_B1F 24
+#define MAP_GROUP_GRANITE_CAVE_B2F 24
+#define MAP_GROUP_GRANITE_CAVE_STEVENS_ROOM 24
+#define MAP_GROUP_PETALBURG_WOODS 24
+#define MAP_GROUP_MT_CHIMNEY 24
+#define MAP_GROUP_JAGGED_PASS 24
+#define MAP_GROUP_FIERY_PATH 24
+#define MAP_GROUP_MT_PYRE_1F 24
+#define MAP_GROUP_MT_PYRE_2F 24
+#define MAP_GROUP_MT_PYRE_3F 24
+#define MAP_GROUP_MT_PYRE_4F 24
+#define MAP_GROUP_MT_PYRE_5F 24
+#define MAP_GROUP_MT_PYRE_6F 24
+#define MAP_GROUP_MT_PYRE_EXTERIOR 24
+#define MAP_GROUP_MT_PYRE_SUMMIT 24
+#define MAP_GROUP_AQUA_HIDEOUT_1F 24
+#define MAP_GROUP_AQUA_HIDEOUT_B1F 24
+#define MAP_GROUP_AQUA_HIDEOUT_B2F 24
+#define MAP_GROUP_UNDERWATER_SEAFLOOR_CAVERN 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ENTRANCE 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM1 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM2 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM3 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM4 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM5 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM6 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM7 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM8 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM9 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_ENTRANCE 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_1F 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_B1F 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_B2F 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_B3F 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_B4F 24
+#define MAP_GROUP_VICTORY_ROAD_1F 24
+#define MAP_GROUP_VICTORY_ROAD_B1F 24
+#define MAP_GROUP_VICTORY_ROAD_B2F 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_INNER_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM 24
+#define MAP_GROUP_NEW_MAUVILLE_ENTRANCE 24
+#define MAP_GROUP_NEW_MAUVILLE_INSIDE 24
+#define MAP_GROUP_ABANDONED_SHIP_DECK 24
+#define MAP_GROUP_ABANDONED_SHIP_CORRIDORS_1F 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOMS_1F 24
+#define MAP_GROUP_ABANDONED_SHIP_CORRIDORS_B1F 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOMS_B1F 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOMS2_B1F 24
+#define MAP_GROUP_ABANDONED_SHIP_UNDERWATER1 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOM_B1F 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOMS2_1F 24
+#define MAP_GROUP_ABANDONED_SHIP_CAPTAINS_OFFICE 24
+#define MAP_GROUP_ABANDONED_SHIP_UNDERWATER2 24
+#define MAP_GROUP_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS 24
+#define MAP_GROUP_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS 24
+#define MAP_GROUP_ISLAND_CAVE 24
+#define MAP_GROUP_ANCIENT_TOMB 24
+#define MAP_GROUP_UNDERWATER_ROUTE134 24
+#define MAP_GROUP_UNDERWATER_SEALED_CHAMBER 24
+#define MAP_GROUP_SEALED_CHAMBER_OUTER_ROOM 24
+#define MAP_GROUP_SEALED_CHAMBER_INNER_ROOM 24
+#define MAP_GROUP_SCORCHED_SLAB 24
+#define MAP_GROUP_MAGMA_HIDEOUT_1F 24
+#define MAP_GROUP_MAGMA_HIDEOUT_B1F 24
+#define MAP_GROUP_MAGMA_HIDEOUT_B2F 24
+#define MAP_GROUP_SKY_PILLAR_ENTRANCE 24
+#define MAP_GROUP_SKY_PILLAR_OUTSIDE 24
+#define MAP_GROUP_SKY_PILLAR_1F 24
+#define MAP_GROUP_SKY_PILLAR_2F 24
+#define MAP_GROUP_SKY_PILLAR_3F 24
+#define MAP_GROUP_SKY_PILLAR_4F 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM 24
+#define MAP_GROUP_SKY_PILLAR_5F 24
+#define MAP_GROUP_SKY_PILLAR_TOP 24
+
+//--------------------------------------------------
+// Map Group 25
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_SECRET_BASE_RED_CAVE1,
+ MAP_ID_SECRET_BASE_BROWN_CAVE1,
+ MAP_ID_SECRET_BASE_BLUE_CAVE1,
+ MAP_ID_SECRET_BASE_YELLOW_CAVE1,
+ MAP_ID_SECRET_BASE_TREE1,
+ MAP_ID_SECRET_BASE_SHRUB1,
+ MAP_ID_SECRET_BASE_RED_CAVE2,
+ MAP_ID_SECRET_BASE_BROWN_CAVE2,
+ MAP_ID_SECRET_BASE_BLUE_CAVE2,
+ MAP_ID_SECRET_BASE_YELLOW_CAVE2,
+ MAP_ID_SECRET_BASE_TREE2,
+ MAP_ID_SECRET_BASE_SHRUB2,
+ MAP_ID_SECRET_BASE_RED_CAVE3,
+ MAP_ID_SECRET_BASE_BROWN_CAVE3,
+ MAP_ID_SECRET_BASE_BLUE_CAVE3,
+ MAP_ID_SECRET_BASE_YELLOW_CAVE3,
+ MAP_ID_SECRET_BASE_TREE3,
+ MAP_ID_SECRET_BASE_SHRUB3,
+ MAP_ID_SECRET_BASE_RED_CAVE4,
+ MAP_ID_SECRET_BASE_BROWN_CAVE4,
+ MAP_ID_SECRET_BASE_BLUE_CAVE4,
+ MAP_ID_SECRET_BASE_YELLOW_CAVE4,
+ MAP_ID_SECRET_BASE_TREE4,
+ MAP_ID_SECRET_BASE_SHRUB4,
+ MAP_ID_SINGLE_BATTLE_COLOSSEUM,
+ MAP_ID_TRADE_CENTER,
+ MAP_ID_RECORD_CORNER,
+ MAP_ID_DOUBLE_BATTLE_COLOSSEUM,
+ MAP_ID_LINK_CONTEST_ROOM1,
+ MAP_ID_UNKNOWN_MAP_25_29,
+ MAP_ID_UNKNOWN_MAP_25_30,
+ MAP_ID_UNKNOWN_MAP_25_31,
+ MAP_ID_UNKNOWN_MAP_25_32,
+ MAP_ID_UNKNOWN_MAP_25_33,
+ MAP_ID_UNKNOWN_MAP_25_34,
+ MAP_ID_LINK_CONTEST_ROOM2,
+ MAP_ID_LINK_CONTEST_ROOM3,
+ MAP_ID_LINK_CONTEST_ROOM4,
+ MAP_ID_LINK_CONTEST_ROOM5,
+ MAP_ID_LINK_CONTEST_ROOM6,
+ MAP_ID_INSIDE_OF_TRUCK,
+ MAP_ID_SS_TIDAL_CORRIDOR,
+ MAP_ID_SS_TIDAL_LOWER_DECK,
+ MAP_ID_SS_TIDAL_ROOMS,
+};
+
+#define MAP_GROUP_SECRET_BASE_RED_CAVE1 25
+#define MAP_GROUP_SECRET_BASE_BROWN_CAVE1 25
+#define MAP_GROUP_SECRET_BASE_BLUE_CAVE1 25
+#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE1 25
+#define MAP_GROUP_SECRET_BASE_TREE1 25
+#define MAP_GROUP_SECRET_BASE_SHRUB1 25
+#define MAP_GROUP_SECRET_BASE_RED_CAVE2 25
+#define MAP_GROUP_SECRET_BASE_BROWN_CAVE2 25
+#define MAP_GROUP_SECRET_BASE_BLUE_CAVE2 25
+#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE2 25
+#define MAP_GROUP_SECRET_BASE_TREE2 25
+#define MAP_GROUP_SECRET_BASE_SHRUB2 25
+#define MAP_GROUP_SECRET_BASE_RED_CAVE3 25
+#define MAP_GROUP_SECRET_BASE_BROWN_CAVE3 25
+#define MAP_GROUP_SECRET_BASE_BLUE_CAVE3 25
+#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE3 25
+#define MAP_GROUP_SECRET_BASE_TREE3 25
+#define MAP_GROUP_SECRET_BASE_SHRUB3 25
+#define MAP_GROUP_SECRET_BASE_RED_CAVE4 25
+#define MAP_GROUP_SECRET_BASE_BROWN_CAVE4 25
+#define MAP_GROUP_SECRET_BASE_BLUE_CAVE4 25
+#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE4 25
+#define MAP_GROUP_SECRET_BASE_TREE4 25
+#define MAP_GROUP_SECRET_BASE_SHRUB4 25
+#define MAP_GROUP_SINGLE_BATTLE_COLOSSEUM 25
+#define MAP_GROUP_TRADE_CENTER 25
+#define MAP_GROUP_RECORD_CORNER 25
+#define MAP_GROUP_DOUBLE_BATTLE_COLOSSEUM 25
+#define MAP_GROUP_LINK_CONTEST_ROOM1 25
+#define MAP_GROUP_UNKNOWN_MAP_25_29 25
+#define MAP_GROUP_UNKNOWN_MAP_25_30 25
+#define MAP_GROUP_UNKNOWN_MAP_25_31 25
+#define MAP_GROUP_UNKNOWN_MAP_25_32 25
+#define MAP_GROUP_UNKNOWN_MAP_25_33 25
+#define MAP_GROUP_UNKNOWN_MAP_25_34 25
+#define MAP_GROUP_LINK_CONTEST_ROOM2 25
+#define MAP_GROUP_LINK_CONTEST_ROOM3 25
+#define MAP_GROUP_LINK_CONTEST_ROOM4 25
+#define MAP_GROUP_LINK_CONTEST_ROOM5 25
+#define MAP_GROUP_LINK_CONTEST_ROOM6 25
+#define MAP_GROUP_INSIDE_OF_TRUCK 25
+#define MAP_GROUP_SS_TIDAL_CORRIDOR 25
+#define MAP_GROUP_SS_TIDAL_LOWER_DECK 25
+#define MAP_GROUP_SS_TIDAL_ROOMS 25
+
+//--------------------------------------------------
+// Map Group 26
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_SAFARI_ZONE_NORTHWEST,
+ MAP_ID_SAFARI_ZONE_NORTHEAST,
+ MAP_ID_SAFARI_ZONE_SOUTHWEST,
+ MAP_ID_SAFARI_ZONE_SOUTHEAST,
+ MAP_ID_BATTLE_TOWER_OUTSIDE,
+ MAP_ID_BATTLE_TOWER_LOBBY,
+ MAP_ID_BATTLE_TOWER_ELEVATOR,
+ MAP_ID_BATTLE_TOWER_CORRIDOR,
+ MAP_ID_BATTLE_TOWER_BATTLE_ROOM,
+ MAP_ID_SOUTHERN_ISLAND_EXTERIOR,
+ MAP_ID_SOUTHERN_ISLAND_INTERIOR,
+ MAP_ID_SAFARI_ZONE_REST_HOUSE,
+};
+
+#define MAP_GROUP_SAFARI_ZONE_NORTHWEST 26
+#define MAP_GROUP_SAFARI_ZONE_NORTHEAST 26
+#define MAP_GROUP_SAFARI_ZONE_SOUTHWEST 26
+#define MAP_GROUP_SAFARI_ZONE_SOUTHEAST 26
+#define MAP_GROUP_BATTLE_TOWER_OUTSIDE 26
+#define MAP_GROUP_BATTLE_TOWER_LOBBY 26
+#define MAP_GROUP_BATTLE_TOWER_ELEVATOR 26
+#define MAP_GROUP_BATTLE_TOWER_CORRIDOR 26
+#define MAP_GROUP_BATTLE_TOWER_BATTLE_ROOM 26
+#define MAP_GROUP_SOUTHERN_ISLAND_EXTERIOR 26
+#define MAP_GROUP_SOUTHERN_ISLAND_INTERIOR 26
+#define MAP_GROUP_SAFARI_ZONE_REST_HOUSE 26
+
+//--------------------------------------------------
+// Map Group 27
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE104_PROTOTYPE,
+ MAP_ID_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP,
+};
+
+#define MAP_GROUP_ROUTE104_PROTOTYPE 27
+#define MAP_GROUP_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP 27
+
+//--------------------------------------------------
+// Map Group 28
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE109_SEASHORE_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE109_SEASHORE_HOUSE 28
+
+//--------------------------------------------------
+// Map Group 29
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE110_TRICK_HOUSE_ENTRANCE,
+ MAP_ID_ROUTE110_TRICK_HOUSE_END,
+ MAP_ID_ROUTE110_TRICK_HOUSE_CORRIDOR,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE1,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE2,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE3,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE4,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE5,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE6,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE7,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE8,
+ MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE,
+ MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE,
+};
+
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_ENTRANCE 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_END 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_CORRIDOR 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE1 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE2 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE3 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE4 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE5 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE6 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE7 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE8 29
+#define MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE 29
+#define MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE 29
+
+//--------------------------------------------------
+// Map Group 30
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE113_GLASS_WORKSHOP,
+};
+
+#define MAP_GROUP_ROUTE113_GLASS_WORKSHOP 30
+
+//--------------------------------------------------
+// Map Group 31
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE123_BERRY_MASTERS_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE123_BERRY_MASTERS_HOUSE 31
+
+//--------------------------------------------------
+// Map Group 32
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE119_WEATHER_INSTITUTE_1F,
+ MAP_ID_ROUTE119_WEATHER_INSTITUTE_2F,
+ MAP_ID_ROUTE119_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_1F 32
+#define MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_2F 32
+#define MAP_GROUP_ROUTE119_HOUSE 32
+
+//--------------------------------------------------
+// Map Group 33
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE 33
+
+#endif // GUARD_MAP_CONSTANTS_H
diff --git a/include/menu.h b/include/menu.h
index 0e4860791..c3dcbc969 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -58,7 +58,7 @@ void sub_8072B80(u8 *, u8, u8, u8 *);
void sub_8072BD8(u8 *, u8, u8, u16);
u8 *sub_8072C14(u8 *, s32, u8, u8);
u8 *sub_8072C44(u8 *, s32, u8, u8);
-u8 *sub_8072C74(u8 *, u8 *, u8, u8);
+u8 *sub_8072C74(u8 *, const u8 *, u8, u8);
u8 sub_8072CA4(u8 *s);
u8 sub_8072CBC(void);
void sub_8072CD4(u8 *, u8 *, u8 *);
diff --git a/include/opponent_constants.h b/include/opponent_constants.h
new file mode 100644
index 000000000..1829facaa
--- /dev/null
+++ b/include/opponent_constants.h
@@ -0,0 +1,702 @@
+#ifndef GUARD_OPPONENT_CONSTANTS_H
+#define GUARD_OPPONENT_CONSTANTS_H
+
+enum
+{
+ OPPONENT_NONE,
+ OPPONENT_ARCHIE_1,
+ OPPONENT_GRUNT_1,
+ OPPONENT_GRUNT_2,
+ OPPONENT_GRUNT_3,
+ OPPONENT_GRUNT_4,
+ OPPONENT_GRUNT_5,
+ OPPONENT_GRUNT_6,
+ OPPONENT_GRUNT_7,
+ OPPONENT_GRUNT_8,
+ OPPONENT_GRUNT_9,
+ OPPONENT_GRUNT_10,
+ OPPONENT_GRUNT_11,
+ OPPONENT_GRUNT_12,
+ OPPONENT_GRUNT_13,
+ OPPONENT_GRUNT_14,
+ OPPONENT_GRUNT_15,
+ OPPONENT_GRUNT_16,
+ OPPONENT_GRUNT_17,
+ OPPONENT_GRUNT_18,
+ OPPONENT_GRUNT_19,
+ OPPONENT_GRUNT_20,
+ OPPONENT_GRUNT_21,
+ OPPONENT_GRUNT_22,
+ OPPONENT_GRUNT_23,
+ OPPONENT_GRUNT_24,
+ OPPONENT_GRUNT_25,
+ OPPONENT_GRUNT_26,
+ OPPONENT_GRUNT_27,
+ OPPONENT_ANONYMOUS_1,
+ OPPONENT_MATT_1,
+ OPPONENT_MATT_2,
+ OPPONENT_SHELLY_1,
+ OPPONENT_SHELLY_2,
+ OPPONENT_ARCHIE_2,
+ OPPONENT_ARCHIE_3,
+ OPPONENT_DAISY,
+ OPPONENT_ROSE_1,
+ OPPONENT_LILY,
+ OPPONENT_VIOLET,
+ OPPONENT_ROSE_2,
+ OPPONENT_ROSE_3,
+ OPPONENT_ROSE_4,
+ OPPONENT_ROSE_5,
+ OPPONENT_DUSTY_1,
+ OPPONENT_CHIP,
+ OPPONENT_FOSTER,
+ OPPONENT_DUSTY_2,
+ OPPONENT_DUSTY_3,
+ OPPONENT_DUSTY_4,
+ OPPONENT_DUSTY_5,
+ OPPONENT_GABBY_AND_TY_1,
+ OPPONENT_GABBY_AND_TY_2,
+ OPPONENT_GABBY_AND_TY_3,
+ OPPONENT_GABBY_AND_TY_4,
+ OPPONENT_GABBY_AND_TY_5,
+ OPPONENT_GABBY_AND_TY_6,
+ OPPONENT_LOLA_1,
+ OPPONENT_CARMEN,
+ OPPONENT_GWEN,
+ OPPONENT_LOLA_2,
+ OPPONENT_LOLA_3,
+ OPPONENT_LOLA_4,
+ OPPONENT_LOLA_5,
+ OPPONENT_RICKY_1,
+ OPPONENT_SIMON,
+ OPPONENT_CHARLIE,
+ OPPONENT_RICKY_2,
+ OPPONENT_RICKY_3,
+ OPPONENT_RICKY_4,
+ OPPONENT_RICKY_5,
+ OPPONENT_RANDALL,
+ OPPONENT_PARKER,
+ OPPONENT_GEORGE,
+ OPPONENT_BERKE,
+ OPPONENT_CLYDE,
+ OPPONENT_VINCENT,
+ OPPONENT_LEROY,
+ OPPONENT_WILTON_1,
+ OPPONENT_EDGAR,
+ OPPONENT_ALBERT,
+ OPPONENT_SAMUEL,
+ OPPONENT_VITO,
+ OPPONENT_OWEN,
+ OPPONENT_WILTON_2,
+ OPPONENT_WILTON_3,
+ OPPONENT_WILTON_4,
+ OPPONENT_WILTON_5,
+ OPPONENT_WARREN,
+ OPPONENT_MARY,
+ OPPONENT_LORI,
+ OPPONENT_JODY,
+ OPPONENT_WENDY,
+ OPPONENT_ELAINE,
+ OPPONENT_BROOKE_1,
+ OPPONENT_JENNIFER,
+ OPPONENT_HOPE,
+ OPPONENT_SHANNON,
+ OPPONENT_MICHELLE,
+ OPPONENT_CAROLINE,
+ OPPONENT_JULIE,
+ OPPONENT_BROOKE_2,
+ OPPONENT_BROOKE_3,
+ OPPONENT_BROOKE_4,
+ OPPONENT_BROOKE_5,
+ OPPONENT_PATRICIA,
+ OPPONENT_KINDRA,
+ OPPONENT_TAMMY,
+ OPPONENT_VALERIE_1,
+ OPPONENT_TASHA,
+ OPPONENT_VALERIE_2,
+ OPPONENT_VALERIE_3,
+ OPPONENT_VALERIE_4,
+ OPPONENT_VALERIE_5,
+ OPPONENT_CINDY_1,
+ OPPONENT_ANONYMOUS_2,
+ OPPONENT_BRIANNA_1,
+ OPPONENT_CINDY_2,
+ OPPONENT_BRIANNA_2,
+ OPPONENT_ANETTE,
+ OPPONENT_CINDY_3,
+ OPPONENT_CINDY_4,
+ OPPONENT_CINDY_5,
+ OPPONENT_CINDY_6,
+ OPPONENT_MELISSA,
+ OPPONENT_SHEILA,
+ OPPONENT_SHIRLEY,
+ OPPONENT_JESSICA_1,
+ OPPONENT_CONNIE,
+ OPPONENT_BRIDGET,
+ OPPONENT_OLIVIA,
+ OPPONENT_TIFFANY,
+ OPPONENT_JESSICA_2,
+ OPPONENT_JESSICA_3,
+ OPPONENT_JESSICA_4,
+ OPPONENT_JESSICA_5,
+ OPPONENT_WINSTON_1,
+ OPPONENT_ANONYMOUS_3,
+ OPPONENT_GARRET,
+ OPPONENT_WINSTON_2,
+ OPPONENT_WINSTON_3,
+ OPPONENT_WINSTON_4,
+ OPPONENT_WINSTON_5,
+ OPPONENT_STEVE_1,
+ OPPONENT_CHRIS,
+ OPPONENT_MARK,
+ OPPONENT_KENN,
+ OPPONENT_STEVE_2,
+ OPPONENT_STEVE_3,
+ OPPONENT_STEVE_4,
+ OPPONENT_STEVE_5,
+ OPPONENT_LUIS,
+ OPPONENT_AUSTIN,
+ OPPONENT_DOUGLAS,
+ OPPONENT_DARRIN,
+ OPPONENT_TONY_1,
+ OPPONENT_JEROME,
+ OPPONENT_MATTHEW,
+ OPPONENT_DAVID,
+ OPPONENT_SPENCER,
+ OPPONENT_ROLAND,
+ OPPONENT_CODY,
+ OPPONENT_STAN,
+ OPPONENT_BARRY,
+ OPPONENT_DEAN,
+ OPPONENT_RODNEY,
+ OPPONENT_RICHARD,
+ OPPONENT_HERMAN,
+ OPPONENT_ANONYMOUS_4,
+ OPPONENT_GILBERT,
+ OPPONENT_FRANKLIN,
+ OPPONENT_DANNY,
+ OPPONENT_JACK,
+ OPPONENT_DUDLEY,
+ OPPONENT_CHAD,
+ OPPONENT_TONY_2,
+ OPPONENT_TONY_3,
+ OPPONENT_TONY_4,
+ OPPONENT_TONY_5,
+ OPPONENT_HIDEKI,
+ OPPONENT_HITOSHI,
+ OPPONENT_KIYO,
+ OPPONENT_KOICHI,
+ OPPONENT_NOB_1,
+ OPPONENT_NOB_2,
+ OPPONENT_NOB_3,
+ OPPONENT_NOB_4,
+ OPPONENT_NOB_5,
+ OPPONENT_YUJI,
+ OPPONENT_DAISUKE,
+ OPPONENT_ATSUSHI,
+ OPPONENT_KIRK,
+ OPPONENT_SCOTT,
+ OPPONENT_HARVEY,
+ OPPONENT_SHAWN,
+ OPPONENT_RANDY,
+ OPPONENT_DALTON_1,
+ OPPONENT_DALTON_2,
+ OPPONENT_DALTON_3,
+ OPPONENT_DALTON_4,
+ OPPONENT_DALTON_5,
+ OPPONENT_COLE,
+ OPPONENT_FLINT,
+ OPPONENT_AXLE,
+ OPPONENT_JAKE,
+ OPPONENT_ANDY,
+ OPPONENT_BERNIE_1,
+ OPPONENT_BERNIE_2,
+ OPPONENT_BERNIE_3,
+ OPPONENT_BERNIE_4,
+ OPPONENT_BERNIE_5,
+ OPPONENT_DREW,
+ OPPONENT_CLIFF,
+ OPPONENT_LARRY,
+ OPPONENT_SHANE,
+ OPPONENT_JUSTIN,
+ OPPONENT_ETHAN_1,
+ OPPONENT_JEFF,
+ OPPONENT_TRAVIS,
+ OPPONENT_ETHAN_2,
+ OPPONENT_ETHAN_3,
+ OPPONENT_ETHAN_4,
+ OPPONENT_ETHAN_5,
+ OPPONENT_BRENT,
+ OPPONENT_DONALD,
+ OPPONENT_TAYLOR,
+ OPPONENT_BRANDON_1,
+ OPPONENT_DEREK,
+ OPPONENT_BRANDON_2,
+ OPPONENT_BRANDON_3,
+ OPPONENT_BRANDON_4,
+ OPPONENT_BRANDON_5,
+ OPPONENT_EDWARD,
+ OPPONENT_PRESTON,
+ OPPONENT_VIRGIL,
+ OPPONENT_FRITZ,
+ OPPONENT_WILLIAM,
+ OPPONENT_JOSHUA,
+ OPPONENT_CAMERON_1,
+ OPPONENT_CAMERON_2,
+ OPPONENT_CAMERON_3,
+ OPPONENT_CAMERON_4,
+ OPPONENT_CAMERON_5,
+ OPPONENT_JACLYN,
+ OPPONENT_HANNAH,
+ OPPONENT_SAMANTHA,
+ OPPONENT_MAURA,
+ OPPONENT_KAYLA,
+ OPPONENT_ALEXIS,
+ OPPONENT_JACKI_1,
+ OPPONENT_JACKI_2,
+ OPPONENT_JACKI_3,
+ OPPONENT_JACKI_4,
+ OPPONENT_JACKI_5,
+ OPPONENT_WALTER_1,
+ OPPONENT_TUCKER,
+ OPPONENT_THOMAS,
+ OPPONENT_WALTER_2,
+ OPPONENT_WALTER_3,
+ OPPONENT_WALTER_4,
+ OPPONENT_WALTER_5,
+ OPPONENT_SIDNEY,
+ OPPONENT_PHOEBE,
+ OPPONENT_GLACIA,
+ OPPONENT_DRAKE,
+ OPPONENT_ROXANNE,
+ OPPONENT_BRAWLY,
+ OPPONENT_WATTSON,
+ OPPONENT_FLANNERY,
+ OPPONENT_NORMAN,
+ OPPONENT_WINONA,
+ OPPONENT_TATE_AND_LIZA,
+ OPPONENT_WALLACE,
+ OPPONENT_JERRY_1,
+ OPPONENT_TED,
+ OPPONENT_PAUL,
+ OPPONENT_JERRY_2,
+ OPPONENT_JERRY_3,
+ OPPONENT_JERRY_4,
+ OPPONENT_JERRY_5,
+ OPPONENT_KAREN_1,
+ OPPONENT_GEORGIA,
+ OPPONENT_KAREN_2,
+ OPPONENT_KAREN_3,
+ OPPONENT_KAREN_4,
+ OPPONENT_KAREN_5,
+ OPPONENT_KATE_AND_JOY,
+ OPPONENT_ANNA_AND_MEG_1,
+ OPPONENT_ANNA_AND_MEG_2,
+ OPPONENT_ANNA_AND_MEG_3,
+ OPPONENT_ANNA_AND_MEG_4,
+ OPPONENT_ANNA_AND_MEG_5,
+ OPPONENT_VICTOR,
+ OPPONENT_MIGUEL_1,
+ OPPONENT_COLTON,
+ OPPONENT_MIGUEL_2,
+ OPPONENT_MIGUEL_3,
+ OPPONENT_MIGUEL_4,
+ OPPONENT_MIGUEL_5,
+ OPPONENT_VICTORIA,
+ OPPONENT_VANESSA,
+ OPPONENT_MARISSA,
+ OPPONENT_ISABEL_1,
+ OPPONENT_ISABEL_2,
+ OPPONENT_ISABEL_3,
+ OPPONENT_ISABEL_4,
+ OPPONENT_ISABEL_5,
+ OPPONENT_TIMOTHY_1,
+ OPPONENT_TIMOTHY_2,
+ OPPONENT_TIMOTHY_3,
+ OPPONENT_TIMOTHY_4,
+ OPPONENT_TIMOTHY_5,
+ OPPONENT_VICKY,
+ OPPONENT_SHELBY_1,
+ OPPONENT_SHELBY_2,
+ OPPONENT_SHELBY_3,
+ OPPONENT_SHELBY_4,
+ OPPONENT_SHELBY_5,
+ OPPONENT_CALVIN_1,
+ OPPONENT_BILLY,
+ OPPONENT_JOSH,
+ OPPONENT_TOMMY,
+ OPPONENT_JOEY,
+ OPPONENT_BEN,
+ OPPONENT_ANONYMOUS_5,
+ OPPONENT_KEVIN,
+ OPPONENT_NEAL,
+ OPPONENT_DILLON,
+ OPPONENT_CALVIN_2,
+ OPPONENT_CALVIN_3,
+ OPPONENT_CALVIN_4,
+ OPPONENT_CALVIN_5,
+ OPPONENT_EDDIE,
+ OPPONENT_ALLEN,
+ OPPONENT_TIMMY,
+ OPPONENT_STEVEN,
+ OPPONENT_ANDREW,
+ OPPONENT_IVAN,
+ OPPONENT_CLAUDE,
+ OPPONENT_ELLIOT_1,
+ OPPONENT_NED,
+ OPPONENT_DALE,
+ OPPONENT_NOLAN,
+ OPPONENT_BARNY,
+ OPPONENT_WADE,
+ OPPONENT_CARTER,
+ OPPONENT_ELLIOT_2,
+ OPPONENT_ELLIOT_3,
+ OPPONENT_ELLIOT_4,
+ OPPONENT_ELLIOT_5,
+ OPPONENT_RONALD,
+ OPPONENT_JACOB,
+ OPPONENT_ANTHONY,
+ OPPONENT_BENJAMIN_1,
+ OPPONENT_BENJAMIN_2,
+ OPPONENT_BENJAMIN_3,
+ OPPONENT_BENJAMIN_4,
+ OPPONENT_BENJAMIN_5,
+ OPPONENT_ABIGAIL_1,
+ OPPONENT_JASMINE,
+ OPPONENT_ABIGAIL_2,
+ OPPONENT_ABIGAIL_3,
+ OPPONENT_ABIGAIL_4,
+ OPPONENT_ABIGAIL_5,
+ OPPONENT_DYLAN_1,
+ OPPONENT_DYLAN_2,
+ OPPONENT_DYLAN_3,
+ OPPONENT_DYLAN_4,
+ OPPONENT_DYLAN_5,
+ OPPONENT_MARIA_1,
+ OPPONENT_MARIA_2,
+ OPPONENT_MARIA_3,
+ OPPONENT_MARIA_4,
+ OPPONENT_MARIA_5,
+ OPPONENT_CALEB,
+ OPPONENT_ANONYMOUS_6,
+ OPPONENT_ISAIAH_1,
+ OPPONENT_ANONYMOUS_7,
+ OPPONENT_CHASE,
+ OPPONENT_ISAIAH_2,
+ OPPONENT_ISAIAH_3,
+ OPPONENT_ISAIAH_4,
+ OPPONENT_ISAIAH_5,
+ OPPONENT_ANONYMOUS_8,
+ OPPONENT_CONNOR,
+ OPPONENT_ANONYMOUS_9,
+ OPPONENT_KATELYN_1,
+ OPPONENT_ALLISON,
+ OPPONENT_KATELYN_2,
+ OPPONENT_KATELYN_3,
+ OPPONENT_KATELYN_4,
+ OPPONENT_KATELYN_5,
+ OPPONENT_NICOLAS_1,
+ OPPONENT_NICOLAS_2,
+ OPPONENT_NICOLAS_3,
+ OPPONENT_NICOLAS_4,
+ OPPONENT_NICOLAS_5,
+ OPPONENT_AARON,
+ OPPONENT_PERRY,
+ OPPONENT_HUGH,
+ OPPONENT_PHIL,
+ OPPONENT_JARED,
+ OPPONENT_ANONYMOUS_10,
+ OPPONENT_TANNER,
+ OPPONENT_WILL,
+ OPPONENT_COLIN,
+ OPPONENT_ROBERT_1,
+ OPPONENT_BENNY,
+ OPPONENT_CHESTER,
+ OPPONENT_ROBERT_2,
+ OPPONENT_ROBERT_3,
+ OPPONENT_ROBERT_4,
+ OPPONENT_ROBERT_5,
+ OPPONENT_ALEX,
+ OPPONENT_BECK,
+ OPPONENT_YASU,
+ OPPONENT_TAKASHI,
+ OPPONENT_MAKOTO,
+ OPPONENT_HIDEO_1,
+ OPPONENT_LAO_1,
+ OPPONENT_LUNG,
+ OPPONENT_LAO_2,
+ OPPONENT_LAO_3,
+ OPPONENT_LAO_4,
+ OPPONENT_LAO_5,
+ OPPONENT_TESSA,
+ OPPONENT_LAURA,
+ OPPONENT_CYNDY_1,
+ OPPONENT_CORA,
+ OPPONENT_JILL,
+ OPPONENT_CYNDY_2,
+ OPPONENT_CYNDY_3,
+ OPPONENT_CYNDY_4,
+ OPPONENT_CYNDY_5,
+ OPPONENT_MADELINE_1,
+ OPPONENT_CLARISSA,
+ OPPONENT_ANGELICA,
+ OPPONENT_MADELINE_2,
+ OPPONENT_MADELINE_3,
+ OPPONENT_MADELINE_4,
+ OPPONENT_MADELINE_5,
+ OPPONENT_BEVERLY,
+ OPPONENT_DAWN,
+ OPPONENT_NICOLE,
+ OPPONENT_DENISE,
+ OPPONENT_BETH,
+ OPPONENT_TARA,
+ OPPONENT_MISSY,
+ OPPONENT_ALICE,
+ OPPONENT_JENNY_1,
+ OPPONENT_GRACE,
+ OPPONENT_TANYA,
+ OPPONENT_SHARON,
+ OPPONENT_NIKKI,
+ OPPONENT_BRENDA,
+ OPPONENT_KATIE,
+ OPPONENT_SUSIE,
+ OPPONENT_KARA,
+ OPPONENT_DANA,
+ OPPONENT_ERIN,
+ OPPONENT_DEBRA,
+ OPPONENT_LINDA,
+ OPPONENT_KAYLEE,
+ OPPONENT_LAUREL,
+ OPPONENT_DARCY,
+ OPPONENT_JENNY_2,
+ OPPONENT_JENNY_3,
+ OPPONENT_JENNY_4,
+ OPPONENT_JENNY_5,
+ OPPONENT_HEIDI,
+ OPPONENT_BECKY,
+ OPPONENT_CAROL,
+ OPPONENT_NANCY,
+ OPPONENT_MARTHA,
+ OPPONENT_DIANA_1,
+ OPPONENT_NINA,
+ OPPONENT_IRENE,
+ OPPONENT_DIANA_2,
+ OPPONENT_DIANA_3,
+ OPPONENT_DIANA_4,
+ OPPONENT_DIANA_5,
+ OPPONENT_AMY_AND_LIV_1,
+ OPPONENT_AMY_AND_LIV_2,
+ OPPONENT_GINA_AND_MIA_1,
+ OPPONENT_MIU_AND_YUKI,
+ OPPONENT_AMY_AND_LIV_3,
+ OPPONENT_GINA_AND_MIA_2,
+ OPPONENT_AMY_AND_LIV_4,
+ OPPONENT_AMY_AND_LIV_5,
+ OPPONENT_AMY_AND_LIV_6,
+ OPPONENT_HUEY,
+ OPPONENT_EDMOND,
+ OPPONENT_ERNEST_1,
+ OPPONENT_DWAYNE,
+ OPPONENT_PHILLIP,
+ OPPONENT_LEONARD,
+ OPPONENT_DUNCAN,
+ OPPONENT_ERNEST_2,
+ OPPONENT_ERNEST_3,
+ OPPONENT_ERNEST_4,
+ OPPONENT_ERNEST_5,
+ OPPONENT_ANONYMOUS_11,
+ OPPONENT_ANONYMOUS_12,
+ OPPONENT_ANONYMOUS_13,
+ OPPONENT_SONNY,
+ OPPONENT_DONOVAN,
+ OPPONENT_GERALD,
+ OPPONENT_KELVIN,
+ OPPONENT_KODY,
+ OPPONENT_TEVIN,
+ OPPONENT_DAMON,
+ OPPONENT_PABLO,
+ OPPONENT_EDWIN_1,
+ OPPONENT_HECTOR_1,
+ OPPONENT_HECTOR_2,
+ OPPONENT_EDWIN_2,
+ OPPONENT_EDWIN_3,
+ OPPONENT_EDWIN_4,
+ OPPONENT_EDWIN_5,
+ OPPONENT_WALLY_1,
+ OPPONENT_BRENDAN_1,
+ OPPONENT_BRENDAN_2,
+ OPPONENT_BRENDAN_3,
+ OPPONENT_BRENDAN_4,
+ OPPONENT_BRENDAN_5,
+ OPPONENT_BRENDAN_6,
+ OPPONENT_BRENDAN_7,
+ OPPONENT_BRENDAN_8,
+ OPPONENT_BRENDAN_9,
+ OPPONENT_MAY_1,
+ OPPONENT_MAY_2,
+ OPPONENT_MAY_3,
+ OPPONENT_MAY_4,
+ OPPONENT_MAY_5,
+ OPPONENT_MAY_6,
+ OPPONENT_MAY_7,
+ OPPONENT_MAY_8,
+ OPPONENT_MAY_9,
+ OPPONENT_ISAAC_1,
+ OPPONENT_RILEY,
+ OPPONENT_AIDAN,
+ OPPONENT_ISAAC_2,
+ OPPONENT_ISAAC_3,
+ OPPONENT_ISAAC_4,
+ OPPONENT_ISAAC_5,
+ OPPONENT_LYDIA_1,
+ OPPONENT_ALEXIA,
+ OPPONENT_DANIELLE,
+ OPPONENT_LYDIA_2,
+ OPPONENT_LYDIA_3,
+ OPPONENT_LYDIA_4,
+ OPPONENT_LYDIA_5,
+ OPPONENT_JACKSON_1,
+ OPPONENT_CARLOS,
+ OPPONENT_SEBASTIAN,
+ OPPONENT_JACKSON_2,
+ OPPONENT_JACKSON_3,
+ OPPONENT_JACKSON_4,
+ OPPONENT_JACKSON_5,
+ OPPONENT_CATHERINE_1,
+ OPPONENT_JENNA,
+ OPPONENT_SOPHIA,
+ OPPONENT_CATHERINE_2,
+ OPPONENT_CATHERINE_3,
+ OPPONENT_CATHERINE_4,
+ OPPONENT_CATHERINE_5,
+ OPPONENT_MAXIE_1,
+ OPPONENT_GRUNT_28,
+ OPPONENT_GRUNT_29,
+ OPPONENT_GRUNT_30,
+ OPPONENT_GRUNT_31,
+ OPPONENT_GRUNT_32,
+ OPPONENT_GRUNT_33,
+ OPPONENT_GRUNT_34,
+ OPPONENT_GRUNT_35,
+ OPPONENT_GRUNT_36,
+ OPPONENT_GRUNT_37,
+ OPPONENT_GRUNT_38,
+ OPPONENT_GRUNT_39,
+ OPPONENT_GRUNT_40,
+ OPPONENT_GRUNT_41,
+ OPPONENT_GRUNT_42,
+ OPPONENT_GRUNT_43,
+ OPPONENT_GRUNT_44,
+ OPPONENT_GRUNT_45,
+ OPPONENT_GRUNT_46,
+ OPPONENT_GRUNT_47,
+ OPPONENT_GRUNT_48,
+ OPPONENT_GRUNT_49,
+ OPPONENT_GRUNT_50,
+ OPPONENT_GRUNT_51,
+ OPPONENT_GRUNT_52,
+ OPPONENT_GRUNT_53,
+ OPPONENT_GRUNT_54,
+ OPPONENT_ANONYMOUS_14,
+ OPPONENT_ANONYMOUS_15,
+ OPPONENT_TABITHA_1,
+ OPPONENT_TABITHA_2,
+ OPPONENT_ANONYMOUS_16,
+ OPPONENT_COURTNEY_1,
+ OPPONENT_COURTNEY_2,
+ OPPONENT_MAXIE_2,
+ OPPONENT_MAXIE_3,
+ OPPONENT_TIANA,
+ OPPONENT_HALEY_1,
+ OPPONENT_JANICE,
+ OPPONENT_VIVI,
+ OPPONENT_HALEY_2,
+ OPPONENT_HALEY_3,
+ OPPONENT_HALEY_4,
+ OPPONENT_HALEY_5,
+ OPPONENT_SALLY,
+ OPPONENT_ROBIN,
+ OPPONENT_ANDREA,
+ OPPONENT_CRISSY,
+ OPPONENT_RICK,
+ OPPONENT_LYLE,
+ OPPONENT_JOSE,
+ OPPONENT_DOUG,
+ OPPONENT_GREG,
+ OPPONENT_KENT,
+ OPPONENT_JAMES_1,
+ OPPONENT_JAMES_2,
+ OPPONENT_JAMES_3,
+ OPPONENT_JAMES_4,
+ OPPONENT_JAMES_5,
+ OPPONENT_BRICE,
+ OPPONENT_TRENT_1,
+ OPPONENT_LENNY,
+ OPPONENT_LUCAS_1,
+ OPPONENT_ALAN,
+ OPPONENT_CLARK,
+ OPPONENT_ERIC,
+ OPPONENT_LUCAS_2,
+ OPPONENT_MIKE_1,
+ OPPONENT_MIKE_2,
+ OPPONENT_TRENT_2,
+ OPPONENT_TRENT_3,
+ OPPONENT_TRENT_4,
+ OPPONENT_TRENT_5,
+ OPPONENT_DEZ_AND_LUKE,
+ OPPONENT_LEA_AND_JED,
+ OPPONENT_LOIS_AND_HAL_1,
+ OPPONENT_LOIS_AND_HAL_2,
+ OPPONENT_LOIS_AND_HAL_3,
+ OPPONENT_LOIS_AND_HAL_4,
+ OPPONENT_LOIS_AND_HAL_5,
+ OPPONENT_JOHANNA,
+ OPPONENT_ZANE,
+ OPPONENT_VIVIAN,
+ OPPONENT_SADIE,
+ OPPONENT_HIDEO_2,
+ OPPONENT_KEIGO,
+ OPPONENT_TSUNAO,
+ OPPONENT_TERRELL,
+ OPPONENT_KYLEE,
+ OPPONENT_WALLY_2,
+ OPPONENT_WALLY_3,
+ OPPONENT_WALLY_4,
+ OPPONENT_WALLY_5,
+ OPPONENT_WALLY_6,
+ OPPONENT_BRENDAN_10,
+ OPPONENT_BRENDAN_11,
+ OPPONENT_BRENDAN_12,
+ OPPONENT_MAY_10,
+ OPPONENT_MAY_11,
+ OPPONENT_MAY_12,
+ OPPONENT_JONAH,
+ OPPONENT_HENRY,
+ OPPONENT_ROGER,
+ OPPONENT_ALEXA,
+ OPPONENT_RUBEN,
+ OPPONENT_KOJI,
+ OPPONENT_WAYNE,
+ OPPONENT_BYRON,
+ OPPONENT_REED,
+ OPPONENT_TISHA,
+ OPPONENT_TORI_AND_TIA,
+ OPPONENT_KIM_AND_IRIS,
+ OPPONENT_TYRA_AND_IVY,
+ OPPONENT_MEL_AND_PAUL,
+ OPPONENT_JOHN_AND_JAY_1,
+ OPPONENT_JOHN_AND_JAY_2,
+ OPPONENT_JOHN_AND_JAY_3,
+ OPPONENT_JOHN_AND_JAY_4,
+ OPPONENT_JOHN_AND_JAY_5,
+ OPPONENT_RELI_AND_IAN,
+ OPPONENT_RITA_AND_SAM_1,
+ OPPONENT_RITA_AND_SAM_2,
+ OPPONENT_RITA_AND_SAM_3,
+ OPPONENT_RITA_AND_SAM_4,
+ OPPONENT_RITA_AND_SAM_5,
+ OPPONENT_LISA_AND_RAY,
+ OPPONENT_EUGENE,
+};
+
+#endif // GUARD_OPPONENT_CONSTANTS_H
diff --git a/include/pokedex.h b/include/pokedex.h
index 1ac4e8c33..fded1ec65 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -5,54 +5,54 @@
struct PokedexListItem
{
- u16 dexNum;
- u16 seen:1;
- u16 owned:1;
+ u16 dexNum;
+ u16 seen:1;
+ u16 owned:1;
};
struct PokedexView
{
- struct PokedexListItem unk0[386];
- u16 unk608;
- u8 unk60A_1:1;
- u8 unk60A_2:1;
- u8 unk60B;
- u16 unk60C;
- u16 selectedPokemon;
- u16 unk610;
- u16 dexMode; //National or Hoenn
- u16 unk614;
- u16 dexOrder;
- u16 unk618;
- u16 unk61A;
- u16 unk61C;
- u16 unk61E[4];
- u16 unk626; //sprite id of selected Pokemon
- u16 unk628;
- u16 unk62A;
- u8 unk62C;
- u8 unk62D;
- u8 unk62E;
- u8 unk62F;
- s16 unk630;
- s16 unk632;
- u16 unk634;
- u16 unk636;
- u16 unk638;
- u16 unk63A[4];
- u8 filler642[8];
- u8 unk64A;
- u8 unk64B;
- u8 unk64C_1:1;
- u8 selectedScreen;
- u8 unk64E;
- u8 unk64F;
- u8 menuIsOpen; //menuIsOpen
- u8 unk651;
- u16 menuCursorPos; //Menu cursor position
- s16 menuY; //Menu Y position (inverted because we use REG_BG0VOFS for this)
- u8 unk656[8];
- u8 unk65E[8];
+ struct PokedexListItem unk0[386];
+ u16 unk608;
+ u8 unk60A_1:1;
+ u8 unk60A_2:1;
+ u8 unk60B;
+ u16 unk60C;
+ u16 selectedPokemon;
+ u16 unk610;
+ u16 dexMode; //National or Hoenn
+ u16 unk614;
+ u16 dexOrder;
+ u16 unk618;
+ u16 unk61A;
+ u16 unk61C;
+ u16 unk61E[4];
+ u16 unk626; //sprite id of selected Pokemon
+ u16 unk628;
+ u16 unk62A;
+ u8 unk62C;
+ u8 unk62D;
+ u8 unk62E;
+ u8 unk62F;
+ s16 unk630;
+ s16 unk632;
+ u16 unk634;
+ u16 unk636;
+ u16 unk638;
+ u16 unk63A[4];
+ u8 filler642[8];
+ u8 unk64A;
+ u8 unk64B;
+ u8 unk64C_1:1;
+ u8 selectedScreen;
+ u8 unk64E;
+ u8 unk64F;
+ u8 menuIsOpen; //menuIsOpen
+ u8 unk651;
+ u16 menuCursorPos; //Menu cursor position
+ s16 menuY; //Menu Y position (inverted because we use REG_BG0VOFS for this)
+ u8 unk656[8];
+ u8 unk65E[8];
};
void sub_808C02C(void);
diff --git a/include/save.h b/include/save.h
index 976af77c6..fe22e4ad7 100644
--- a/include/save.h
+++ b/include/save.h
@@ -3,23 +3,23 @@
struct SaveSectionLocation
{
- void *data;
- u16 size;
+ void *data;
+ u16 size;
};
struct SaveSection
{
- u8 data[0xFF4];
- u16 id;
- u16 checksum;
- u32 unknown;
- u32 counter;
+ u8 data[0xFF4];
+ u16 id;
+ u16 checksum;
+ u32 unknown;
+ u32 counter;
};
struct UnkSaveSection
{
- u8 data[0xFF4];
- u32 unknown;
+ u8 data[0xFF4];
+ u32 unknown;
};
void ClearSaveData(void);
diff --git a/include/species.h b/include/species.h
index d0cd7f664..e33481afd 100644
--- a/include/species.h
+++ b/include/species.h
@@ -2,449 +2,449 @@
#define GUARD_SPECIES_H
enum {
- SPECIES_NONE, // 0x000
- SPECIES_BULBASAUR, // 0x001
- SPECIES_IVYSAUR, // 0x002
- SPECIES_VENUSAUR, // 0x003
- SPECIES_CHARMANDER, // 0x004
- SPECIES_CHARMELEON, // 0x005
- SPECIES_CHARIZARD, // 0x006
- SPECIES_SQUIRTLE, // 0x007
- SPECIES_WARTORTLE, // 0x008
- SPECIES_BLASTOISE, // 0x009
- SPECIES_CATERPIE, // 0x00a
- SPECIES_METAPOD, // 0x00b
- SPECIES_BUTTERFREE, // 0x00c
- SPECIES_WEEDLE, // 0x00d
- SPECIES_KAKUNA, // 0x00e
- SPECIES_BEEDRILL, // 0x00f
- SPECIES_PIDGEY, // 0x010
- SPECIES_PIDGEOTTO, // 0x011
- SPECIES_PIDGEOT, // 0x012
- SPECIES_RATTATA, // 0x013
- SPECIES_RATICATE, // 0x014
- SPECIES_SPEAROW, // 0x015
- SPECIES_FEAROW, // 0x016
- SPECIES_EKANS, // 0x017
- SPECIES_ARBOK, // 0x018
- SPECIES_PIKACHU, // 0x019
- SPECIES_RAICHU, // 0x01a
- SPECIES_SANDSHREW, // 0x01b
- SPECIES_SANDSLASH, // 0x01c
- SPECIES_NIDORAN_F, // 0x01d
- SPECIES_NIDORINA, // 0x01e
- SPECIES_NIDOQUEEN, // 0x01f
- SPECIES_NIDORAN_M, // 0x020
- SPECIES_NIDORINO, // 0x021
- SPECIES_NIDOKING, // 0x022
- SPECIES_CLEFAIRY, // 0x023
- SPECIES_CLEFABLE, // 0x024
- SPECIES_VULPIX, // 0x025
- SPECIES_NINETALES, // 0x026
- SPECIES_JIGGLYPUFF, // 0x027
- SPECIES_WIGGLYTUFF, // 0x028
- SPECIES_ZUBAT, // 0x029
- SPECIES_GOLBAT, // 0x02a
- SPECIES_ODDISH, // 0x02b
- SPECIES_GLOOM, // 0x02c
- SPECIES_VILEPLUME, // 0x02d
- SPECIES_PARAS, // 0x02e
- SPECIES_PARASECT, // 0x02f
- SPECIES_VENONAT, // 0x030
- SPECIES_VENOMOTH, // 0x031
- SPECIES_DIGLETT, // 0x032
- SPECIES_DUGTRIO, // 0x033
- SPECIES_MEOWTH, // 0x034
- SPECIES_PERSIAN, // 0x035
- SPECIES_PSYDUCK, // 0x036
- SPECIES_GOLDUCK, // 0x037
- SPECIES_MANKEY, // 0x038
- SPECIES_PRIMEAPE, // 0x039
- SPECIES_GROWLITHE, // 0x03a
- SPECIES_ARCANINE, // 0x03b
- SPECIES_POLIWAG, // 0x03c
- SPECIES_POLIWHIRL, // 0x03d
- SPECIES_POLIWRATH, // 0x03e
- SPECIES_ABRA, // 0x03f
- SPECIES_KADABRA, // 0x040
- SPECIES_ALAKAZAM, // 0x041
- SPECIES_MACHOP, // 0x042
- SPECIES_MACHOKE, // 0x043
- SPECIES_MACHAMP, // 0x044
- SPECIES_BELLSPROUT, // 0x045
- SPECIES_WEEPINBELL, // 0x046
- SPECIES_VICTREEBEL, // 0x047
- SPECIES_TENTACOOL, // 0x048
- SPECIES_TENTACRUEL, // 0x049
- SPECIES_GEODUDE, // 0x04a
- SPECIES_GRAVELER, // 0x04b
- SPECIES_GOLEM, // 0x04c
- SPECIES_PONYTA, // 0x04d
- SPECIES_RAPIDASH, // 0x04e
- SPECIES_SLOWPOKE, // 0x04f
- SPECIES_SLOWBRO, // 0x050
- SPECIES_MAGNEMITE, // 0x051
- SPECIES_MAGNETON, // 0x052
- SPECIES_FARFETCHD, // 0x053
- SPECIES_DODUO, // 0x054
- SPECIES_DODRIO, // 0x055
- SPECIES_SEEL, // 0x056
- SPECIES_DEWGONG, // 0x057
- SPECIES_GRIMER, // 0x058
- SPECIES_MUK, // 0x059
- SPECIES_SHELLDER, // 0x05a
- SPECIES_CLOYSTER, // 0x05b
- SPECIES_GASTLY, // 0x05c
- SPECIES_HAUNTER, // 0x05d
- SPECIES_GENGAR, // 0x05e
- SPECIES_ONIX, // 0x05f
- SPECIES_DROWZEE, // 0x060
- SPECIES_HYPNO, // 0x061
- SPECIES_KRABBY, // 0x062
- SPECIES_KINGLER, // 0x063
- SPECIES_VOLTORB, // 0x064
- SPECIES_ELECTRODE, // 0x065
- SPECIES_EXEGGCUTE, // 0x066
- SPECIES_EXEGGUTOR, // 0x067
- SPECIES_CUBONE, // 0x068
- SPECIES_MAROWAK, // 0x069
- SPECIES_HITMONLEE, // 0x06a
- SPECIES_HITMONCHAN, // 0x06b
- SPECIES_LICKITUNG, // 0x06c
- SPECIES_KOFFING, // 0x06d
- SPECIES_WEEZING, // 0x06e
- SPECIES_RHYHORN, // 0x06f
- SPECIES_RHYDON, // 0x070
- SPECIES_CHANSEY, // 0x071
- SPECIES_TANGELA, // 0x072
- SPECIES_KANGASKHAN, // 0x073
- SPECIES_HORSEA, // 0x074
- SPECIES_SEADRA, // 0x075
- SPECIES_GOLDEEN, // 0x076
- SPECIES_SEAKING, // 0x077
- SPECIES_STARYU, // 0x078
- SPECIES_STARMIE, // 0x079
- SPECIES_MR_MIME, // 0x07a
- SPECIES_SCYTHER, // 0x07b
- SPECIES_JYNX, // 0x07c
- SPECIES_ELECTABUZZ, // 0x07d
- SPECIES_MAGMAR, // 0x07e
- SPECIES_PINSIR, // 0x07f
- SPECIES_TAUROS, // 0x080
- SPECIES_MAGIKARP, // 0x081
- SPECIES_GYARADOS, // 0x082
- SPECIES_LAPRAS, // 0x083
- SPECIES_DITTO, // 0x084
- SPECIES_EEVEE, // 0x085
- SPECIES_VAPOREON, // 0x086
- SPECIES_JOLTEON, // 0x087
- SPECIES_FLAREON, // 0x088
- SPECIES_PORYGON, // 0x089
- SPECIES_OMANYTE, // 0x08a
- SPECIES_OMASTAR, // 0x08b
- SPECIES_KABUTO, // 0x08c
- SPECIES_KABUTOPS, // 0x08d
- SPECIES_AERODACTYL, // 0x08e
- SPECIES_SNORLAX, // 0x08f
- SPECIES_ARTICUNO, // 0x090
- SPECIES_ZAPDOS, // 0x091
- SPECIES_MOLTRES, // 0x092
- SPECIES_DRATINI, // 0x093
- SPECIES_DRAGONAIR, // 0x094
- SPECIES_DRAGONITE, // 0x095
- SPECIES_MEWTWO, // 0x096
- SPECIES_MEW, // 0x097
- SPECIES_CHIKORITA, // 0x098
- SPECIES_BAYLEEF, // 0x099
- SPECIES_MEGANIUM, // 0x09a
- SPECIES_CYNDAQUIL, // 0x09b
- SPECIES_QUILAVA, // 0x09c
- SPECIES_TYPHLOSION, // 0x09d
- SPECIES_TOTODILE, // 0x09e
- SPECIES_CROCONAW, // 0x09f
- SPECIES_FERALIGATR, // 0x0a0
- SPECIES_SENTRET, // 0x0a1
- SPECIES_FURRET, // 0x0a2
- SPECIES_HOOTHOOT, // 0x0a3
- SPECIES_NOCTOWL, // 0x0a4
- SPECIES_LEDYBA, // 0x0a5
- SPECIES_LEDIAN, // 0x0a6
- SPECIES_SPINARAK, // 0x0a7
- SPECIES_ARIADOS, // 0x0a8
- SPECIES_CROBAT, // 0x0a9
- SPECIES_CHINCHOU, // 0x0aa
- SPECIES_LANTURN, // 0x0ab
- SPECIES_PICHU, // 0x0ac
- SPECIES_CLEFFA, // 0x0ad
- SPECIES_IGGLYBUFF, // 0x0ae
- SPECIES_TOGEPI, // 0x0af
- SPECIES_TOGETIC, // 0x0b0
- SPECIES_NATU, // 0x0b1
- SPECIES_XATU, // 0x0b2
- SPECIES_MAREEP, // 0x0b3
- SPECIES_FLAAFFY, // 0x0b4
- SPECIES_AMPHAROS, // 0x0b5
- SPECIES_BELLOSSOM, // 0x0b6
- SPECIES_MARILL, // 0x0b7
- SPECIES_AZUMARILL, // 0x0b8
- SPECIES_SUDOWOODO, // 0x0b9
- SPECIES_POLITOED, // 0x0ba
- SPECIES_HOPPIP, // 0x0bb
- SPECIES_SKIPLOOM, // 0x0bc
- SPECIES_JUMPLUFF, // 0x0bd
- SPECIES_AIPOM, // 0x0be
- SPECIES_SUNKERN, // 0x0bf
- SPECIES_SUNFLORA, // 0x0c0
- SPECIES_YANMA, // 0x0c1
- SPECIES_WOOPER, // 0x0c2
- SPECIES_QUAGSIRE, // 0x0c3
- SPECIES_ESPEON, // 0x0c4
- SPECIES_UMBREON, // 0x0c5
- SPECIES_MURKROW, // 0x0c6
- SPECIES_SLOWKING, // 0x0c7
- SPECIES_MISDREAVUS, // 0x0c8
- SPECIES_UNOWN, // 0x0c9
- SPECIES_WOBBUFFET, // 0x0ca
- SPECIES_GIRAFARIG, // 0x0cb
- SPECIES_PINECO, // 0x0cc
- SPECIES_FORRETRESS, // 0x0cd
- SPECIES_DUNSPARCE, // 0x0ce
- SPECIES_GLIGAR, // 0x0cf
- SPECIES_STEELIX, // 0x0d0
- SPECIES_SNUBBULL, // 0x0d1
- SPECIES_GRANBULL, // 0x0d2
- SPECIES_QWILFISH, // 0x0d3
- SPECIES_SCIZOR, // 0x0d4
- SPECIES_SHUCKLE, // 0x0d5
- SPECIES_HERACROSS, // 0x0d6
- SPECIES_SNEASEL, // 0x0d7
- SPECIES_TEDDIURSA, // 0x0d8
- SPECIES_URSARING, // 0x0d9
- SPECIES_SLUGMA, // 0x0da
- SPECIES_MAGCARGO, // 0x0db
- SPECIES_SWINUB, // 0x0dc
- SPECIES_PILOSWINE, // 0x0dd
- SPECIES_CORSOLA, // 0x0de
- SPECIES_REMORAID, // 0x0df
- SPECIES_OCTILLERY, // 0x0e0
- SPECIES_DELIBIRD, // 0x0e1
- SPECIES_MANTINE, // 0x0e2
- SPECIES_SKARMORY, // 0x0e3
- SPECIES_HOUNDOUR, // 0x0e4
- SPECIES_HOUNDOOM, // 0x0e5
- SPECIES_KINGDRA, // 0x0e6
- SPECIES_PHANPY, // 0x0e7
- SPECIES_DONPHAN, // 0x0e8
- SPECIES_PORYGON2, // 0x0e9
- SPECIES_STANTLER, // 0x0ea
- SPECIES_SMEARGLE, // 0x0eb
- SPECIES_TYROGUE, // 0x0ec
- SPECIES_HITMONTOP, // 0x0ed
- SPECIES_SMOOCHUM, // 0x0ee
- SPECIES_ELEKID, // 0x0ef
- SPECIES_MAGBY, // 0x0f0
- SPECIES_MILTANK, // 0x0f1
- SPECIES_BLISSEY, // 0x0f2
- SPECIES_RAIKOU, // 0x0f3
- SPECIES_ENTEI, // 0x0f4
- SPECIES_SUICUNE, // 0x0f5
- SPECIES_LARVITAR, // 0x0f6
- SPECIES_PUPITAR, // 0x0f7
- SPECIES_TYRANITAR, // 0x0f8
- SPECIES_LUGIA, // 0x0f9
- SPECIES_HO_OH, // 0x0fa
- SPECIES_CELEBI, // 0x0fb
+ SPECIES_NONE, // 0x000
+ SPECIES_BULBASAUR, // 0x001
+ SPECIES_IVYSAUR, // 0x002
+ SPECIES_VENUSAUR, // 0x003
+ SPECIES_CHARMANDER, // 0x004
+ SPECIES_CHARMELEON, // 0x005
+ SPECIES_CHARIZARD, // 0x006
+ SPECIES_SQUIRTLE, // 0x007
+ SPECIES_WARTORTLE, // 0x008
+ SPECIES_BLASTOISE, // 0x009
+ SPECIES_CATERPIE, // 0x00a
+ SPECIES_METAPOD, // 0x00b
+ SPECIES_BUTTERFREE, // 0x00c
+ SPECIES_WEEDLE, // 0x00d
+ SPECIES_KAKUNA, // 0x00e
+ SPECIES_BEEDRILL, // 0x00f
+ SPECIES_PIDGEY, // 0x010
+ SPECIES_PIDGEOTTO, // 0x011
+ SPECIES_PIDGEOT, // 0x012
+ SPECIES_RATTATA, // 0x013
+ SPECIES_RATICATE, // 0x014
+ SPECIES_SPEAROW, // 0x015
+ SPECIES_FEAROW, // 0x016
+ SPECIES_EKANS, // 0x017
+ SPECIES_ARBOK, // 0x018
+ SPECIES_PIKACHU, // 0x019
+ SPECIES_RAICHU, // 0x01a
+ SPECIES_SANDSHREW, // 0x01b
+ SPECIES_SANDSLASH, // 0x01c
+ SPECIES_NIDORAN_F, // 0x01d
+ SPECIES_NIDORINA, // 0x01e
+ SPECIES_NIDOQUEEN, // 0x01f
+ SPECIES_NIDORAN_M, // 0x020
+ SPECIES_NIDORINO, // 0x021
+ SPECIES_NIDOKING, // 0x022
+ SPECIES_CLEFAIRY, // 0x023
+ SPECIES_CLEFABLE, // 0x024
+ SPECIES_VULPIX, // 0x025
+ SPECIES_NINETALES, // 0x026
+ SPECIES_JIGGLYPUFF, // 0x027
+ SPECIES_WIGGLYTUFF, // 0x028
+ SPECIES_ZUBAT, // 0x029
+ SPECIES_GOLBAT, // 0x02a
+ SPECIES_ODDISH, // 0x02b
+ SPECIES_GLOOM, // 0x02c
+ SPECIES_VILEPLUME, // 0x02d
+ SPECIES_PARAS, // 0x02e
+ SPECIES_PARASECT, // 0x02f
+ SPECIES_VENONAT, // 0x030
+ SPECIES_VENOMOTH, // 0x031
+ SPECIES_DIGLETT, // 0x032
+ SPECIES_DUGTRIO, // 0x033
+ SPECIES_MEOWTH, // 0x034
+ SPECIES_PERSIAN, // 0x035
+ SPECIES_PSYDUCK, // 0x036
+ SPECIES_GOLDUCK, // 0x037
+ SPECIES_MANKEY, // 0x038
+ SPECIES_PRIMEAPE, // 0x039
+ SPECIES_GROWLITHE, // 0x03a
+ SPECIES_ARCANINE, // 0x03b
+ SPECIES_POLIWAG, // 0x03c
+ SPECIES_POLIWHIRL, // 0x03d
+ SPECIES_POLIWRATH, // 0x03e
+ SPECIES_ABRA, // 0x03f
+ SPECIES_KADABRA, // 0x040
+ SPECIES_ALAKAZAM, // 0x041
+ SPECIES_MACHOP, // 0x042
+ SPECIES_MACHOKE, // 0x043
+ SPECIES_MACHAMP, // 0x044
+ SPECIES_BELLSPROUT, // 0x045
+ SPECIES_WEEPINBELL, // 0x046
+ SPECIES_VICTREEBEL, // 0x047
+ SPECIES_TENTACOOL, // 0x048
+ SPECIES_TENTACRUEL, // 0x049
+ SPECIES_GEODUDE, // 0x04a
+ SPECIES_GRAVELER, // 0x04b
+ SPECIES_GOLEM, // 0x04c
+ SPECIES_PONYTA, // 0x04d
+ SPECIES_RAPIDASH, // 0x04e
+ SPECIES_SLOWPOKE, // 0x04f
+ SPECIES_SLOWBRO, // 0x050
+ SPECIES_MAGNEMITE, // 0x051
+ SPECIES_MAGNETON, // 0x052
+ SPECIES_FARFETCHD, // 0x053
+ SPECIES_DODUO, // 0x054
+ SPECIES_DODRIO, // 0x055
+ SPECIES_SEEL, // 0x056
+ SPECIES_DEWGONG, // 0x057
+ SPECIES_GRIMER, // 0x058
+ SPECIES_MUK, // 0x059
+ SPECIES_SHELLDER, // 0x05a
+ SPECIES_CLOYSTER, // 0x05b
+ SPECIES_GASTLY, // 0x05c
+ SPECIES_HAUNTER, // 0x05d
+ SPECIES_GENGAR, // 0x05e
+ SPECIES_ONIX, // 0x05f
+ SPECIES_DROWZEE, // 0x060
+ SPECIES_HYPNO, // 0x061
+ SPECIES_KRABBY, // 0x062
+ SPECIES_KINGLER, // 0x063
+ SPECIES_VOLTORB, // 0x064
+ SPECIES_ELECTRODE, // 0x065
+ SPECIES_EXEGGCUTE, // 0x066
+ SPECIES_EXEGGUTOR, // 0x067
+ SPECIES_CUBONE, // 0x068
+ SPECIES_MAROWAK, // 0x069
+ SPECIES_HITMONLEE, // 0x06a
+ SPECIES_HITMONCHAN, // 0x06b
+ SPECIES_LICKITUNG, // 0x06c
+ SPECIES_KOFFING, // 0x06d
+ SPECIES_WEEZING, // 0x06e
+ SPECIES_RHYHORN, // 0x06f
+ SPECIES_RHYDON, // 0x070
+ SPECIES_CHANSEY, // 0x071
+ SPECIES_TANGELA, // 0x072
+ SPECIES_KANGASKHAN, // 0x073
+ SPECIES_HORSEA, // 0x074
+ SPECIES_SEADRA, // 0x075
+ SPECIES_GOLDEEN, // 0x076
+ SPECIES_SEAKING, // 0x077
+ SPECIES_STARYU, // 0x078
+ SPECIES_STARMIE, // 0x079
+ SPECIES_MR_MIME, // 0x07a
+ SPECIES_SCYTHER, // 0x07b
+ SPECIES_JYNX, // 0x07c
+ SPECIES_ELECTABUZZ, // 0x07d
+ SPECIES_MAGMAR, // 0x07e
+ SPECIES_PINSIR, // 0x07f
+ SPECIES_TAUROS, // 0x080
+ SPECIES_MAGIKARP, // 0x081
+ SPECIES_GYARADOS, // 0x082
+ SPECIES_LAPRAS, // 0x083
+ SPECIES_DITTO, // 0x084
+ SPECIES_EEVEE, // 0x085
+ SPECIES_VAPOREON, // 0x086
+ SPECIES_JOLTEON, // 0x087
+ SPECIES_FLAREON, // 0x088
+ SPECIES_PORYGON, // 0x089
+ SPECIES_OMANYTE, // 0x08a
+ SPECIES_OMASTAR, // 0x08b
+ SPECIES_KABUTO, // 0x08c
+ SPECIES_KABUTOPS, // 0x08d
+ SPECIES_AERODACTYL, // 0x08e
+ SPECIES_SNORLAX, // 0x08f
+ SPECIES_ARTICUNO, // 0x090
+ SPECIES_ZAPDOS, // 0x091
+ SPECIES_MOLTRES, // 0x092
+ SPECIES_DRATINI, // 0x093
+ SPECIES_DRAGONAIR, // 0x094
+ SPECIES_DRAGONITE, // 0x095
+ SPECIES_MEWTWO, // 0x096
+ SPECIES_MEW, // 0x097
+ SPECIES_CHIKORITA, // 0x098
+ SPECIES_BAYLEEF, // 0x099
+ SPECIES_MEGANIUM, // 0x09a
+ SPECIES_CYNDAQUIL, // 0x09b
+ SPECIES_QUILAVA, // 0x09c
+ SPECIES_TYPHLOSION, // 0x09d
+ SPECIES_TOTODILE, // 0x09e
+ SPECIES_CROCONAW, // 0x09f
+ SPECIES_FERALIGATR, // 0x0a0
+ SPECIES_SENTRET, // 0x0a1
+ SPECIES_FURRET, // 0x0a2
+ SPECIES_HOOTHOOT, // 0x0a3
+ SPECIES_NOCTOWL, // 0x0a4
+ SPECIES_LEDYBA, // 0x0a5
+ SPECIES_LEDIAN, // 0x0a6
+ SPECIES_SPINARAK, // 0x0a7
+ SPECIES_ARIADOS, // 0x0a8
+ SPECIES_CROBAT, // 0x0a9
+ SPECIES_CHINCHOU, // 0x0aa
+ SPECIES_LANTURN, // 0x0ab
+ SPECIES_PICHU, // 0x0ac
+ SPECIES_CLEFFA, // 0x0ad
+ SPECIES_IGGLYBUFF, // 0x0ae
+ SPECIES_TOGEPI, // 0x0af
+ SPECIES_TOGETIC, // 0x0b0
+ SPECIES_NATU, // 0x0b1
+ SPECIES_XATU, // 0x0b2
+ SPECIES_MAREEP, // 0x0b3
+ SPECIES_FLAAFFY, // 0x0b4
+ SPECIES_AMPHAROS, // 0x0b5
+ SPECIES_BELLOSSOM, // 0x0b6
+ SPECIES_MARILL, // 0x0b7
+ SPECIES_AZUMARILL, // 0x0b8
+ SPECIES_SUDOWOODO, // 0x0b9
+ SPECIES_POLITOED, // 0x0ba
+ SPECIES_HOPPIP, // 0x0bb
+ SPECIES_SKIPLOOM, // 0x0bc
+ SPECIES_JUMPLUFF, // 0x0bd
+ SPECIES_AIPOM, // 0x0be
+ SPECIES_SUNKERN, // 0x0bf
+ SPECIES_SUNFLORA, // 0x0c0
+ SPECIES_YANMA, // 0x0c1
+ SPECIES_WOOPER, // 0x0c2
+ SPECIES_QUAGSIRE, // 0x0c3
+ SPECIES_ESPEON, // 0x0c4
+ SPECIES_UMBREON, // 0x0c5
+ SPECIES_MURKROW, // 0x0c6
+ SPECIES_SLOWKING, // 0x0c7
+ SPECIES_MISDREAVUS, // 0x0c8
+ SPECIES_UNOWN, // 0x0c9
+ SPECIES_WOBBUFFET, // 0x0ca
+ SPECIES_GIRAFARIG, // 0x0cb
+ SPECIES_PINECO, // 0x0cc
+ SPECIES_FORRETRESS, // 0x0cd
+ SPECIES_DUNSPARCE, // 0x0ce
+ SPECIES_GLIGAR, // 0x0cf
+ SPECIES_STEELIX, // 0x0d0
+ SPECIES_SNUBBULL, // 0x0d1
+ SPECIES_GRANBULL, // 0x0d2
+ SPECIES_QWILFISH, // 0x0d3
+ SPECIES_SCIZOR, // 0x0d4
+ SPECIES_SHUCKLE, // 0x0d5
+ SPECIES_HERACROSS, // 0x0d6
+ SPECIES_SNEASEL, // 0x0d7
+ SPECIES_TEDDIURSA, // 0x0d8
+ SPECIES_URSARING, // 0x0d9
+ SPECIES_SLUGMA, // 0x0da
+ SPECIES_MAGCARGO, // 0x0db
+ SPECIES_SWINUB, // 0x0dc
+ SPECIES_PILOSWINE, // 0x0dd
+ SPECIES_CORSOLA, // 0x0de
+ SPECIES_REMORAID, // 0x0df
+ SPECIES_OCTILLERY, // 0x0e0
+ SPECIES_DELIBIRD, // 0x0e1
+ SPECIES_MANTINE, // 0x0e2
+ SPECIES_SKARMORY, // 0x0e3
+ SPECIES_HOUNDOUR, // 0x0e4
+ SPECIES_HOUNDOOM, // 0x0e5
+ SPECIES_KINGDRA, // 0x0e6
+ SPECIES_PHANPY, // 0x0e7
+ SPECIES_DONPHAN, // 0x0e8
+ SPECIES_PORYGON2, // 0x0e9
+ SPECIES_STANTLER, // 0x0ea
+ SPECIES_SMEARGLE, // 0x0eb
+ SPECIES_TYROGUE, // 0x0ec
+ SPECIES_HITMONTOP, // 0x0ed
+ SPECIES_SMOOCHUM, // 0x0ee
+ SPECIES_ELEKID, // 0x0ef
+ SPECIES_MAGBY, // 0x0f0
+ SPECIES_MILTANK, // 0x0f1
+ SPECIES_BLISSEY, // 0x0f2
+ SPECIES_RAIKOU, // 0x0f3
+ SPECIES_ENTEI, // 0x0f4
+ SPECIES_SUICUNE, // 0x0f5
+ SPECIES_LARVITAR, // 0x0f6
+ SPECIES_PUPITAR, // 0x0f7
+ SPECIES_TYRANITAR, // 0x0f8
+ SPECIES_LUGIA, // 0x0f9
+ SPECIES_HO_OH, // 0x0fa
+ SPECIES_CELEBI, // 0x0fb
- SPECIES_OLD_UNOWN_B,
- SPECIES_OLD_UNOWN_C,
- SPECIES_OLD_UNOWN_D,
- SPECIES_OLD_UNOWN_E,
- SPECIES_OLD_UNOWN_F,
- SPECIES_OLD_UNOWN_G,
- SPECIES_OLD_UNOWN_H,
- SPECIES_OLD_UNOWN_I,
- SPECIES_OLD_UNOWN_J,
- SPECIES_OLD_UNOWN_K,
- SPECIES_OLD_UNOWN_L,
- SPECIES_OLD_UNOWN_M,
- SPECIES_OLD_UNOWN_N,
- SPECIES_OLD_UNOWN_O,
- SPECIES_OLD_UNOWN_P,
- SPECIES_OLD_UNOWN_Q,
- SPECIES_OLD_UNOWN_R,
- SPECIES_OLD_UNOWN_S,
- SPECIES_OLD_UNOWN_T,
- SPECIES_OLD_UNOWN_U,
- SPECIES_OLD_UNOWN_V,
- SPECIES_OLD_UNOWN_W,
- SPECIES_OLD_UNOWN_X,
- SPECIES_OLD_UNOWN_Y,
- SPECIES_OLD_UNOWN_Z,
+ SPECIES_OLD_UNOWN_B,
+ SPECIES_OLD_UNOWN_C,
+ SPECIES_OLD_UNOWN_D,
+ SPECIES_OLD_UNOWN_E,
+ SPECIES_OLD_UNOWN_F,
+ SPECIES_OLD_UNOWN_G,
+ SPECIES_OLD_UNOWN_H,
+ SPECIES_OLD_UNOWN_I,
+ SPECIES_OLD_UNOWN_J,
+ SPECIES_OLD_UNOWN_K,
+ SPECIES_OLD_UNOWN_L,
+ SPECIES_OLD_UNOWN_M,
+ SPECIES_OLD_UNOWN_N,
+ SPECIES_OLD_UNOWN_O,
+ SPECIES_OLD_UNOWN_P,
+ SPECIES_OLD_UNOWN_Q,
+ SPECIES_OLD_UNOWN_R,
+ SPECIES_OLD_UNOWN_S,
+ SPECIES_OLD_UNOWN_T,
+ SPECIES_OLD_UNOWN_U,
+ SPECIES_OLD_UNOWN_V,
+ SPECIES_OLD_UNOWN_W,
+ SPECIES_OLD_UNOWN_X,
+ SPECIES_OLD_UNOWN_Y,
+ SPECIES_OLD_UNOWN_Z,
- SPECIES_TREECKO, // 0x115
- SPECIES_GROVYLE, // 0x116
- SPECIES_SCEPTILE, // 0x117
- SPECIES_TORCHIC, // 0x118
- SPECIES_COMBUSKEN, // 0x119
- SPECIES_BLAZIKEN, // 0x11a
- SPECIES_MUDKIP, // 0x11b
- SPECIES_MARSHTOMP, // 0x11c
- SPECIES_SWAMPERT, // 0x11d
- SPECIES_POOCHYENA, // 0x11e
- SPECIES_MIGHTYENA, // 0x11f
- SPECIES_ZIGZAGOON, // 0x120
- SPECIES_LINOONE, // 0x121
- SPECIES_WURMPLE, // 0x122
- SPECIES_SILCOON, // 0x123
- SPECIES_BEAUTIFLY, // 0x124
- SPECIES_CASCOON, // 0x125
- SPECIES_DUSTOX, // 0x126
- SPECIES_LOTAD, // 0x127
- SPECIES_LOMBRE, // 0x128
- SPECIES_LUDICOLO, // 0x129
- SPECIES_SEEDOT, // 0x12a
- SPECIES_NUZLEAF, // 0x12b
- SPECIES_SHIFTRY, // 0x12c
- SPECIES_NINCADA, // 0x12d
- SPECIES_NINJASK, // 0x12e
- SPECIES_SHEDINJA, // 0x12f
- SPECIES_TAILLOW, // 0x130
- SPECIES_SWELLOW, // 0x131
- SPECIES_SHROOMISH, // 0x132
- SPECIES_BRELOOM, // 0x133
- SPECIES_SPINDA, // 0x134
- SPECIES_WINGULL, // 0x135
- SPECIES_PELIPPER, // 0x136
- SPECIES_SURSKIT, // 0x137
- SPECIES_MASQUERAIN, // 0x138
- SPECIES_WAILMER, // 0x139
- SPECIES_WAILORD, // 0x13a
- SPECIES_SKITTY, // 0x13b
- SPECIES_DELCATTY, // 0x13c
- SPECIES_KECLEON, // 0x13d
- SPECIES_BALTOY, // 0x13e
- SPECIES_CLAYDOL, // 0x13f
- SPECIES_NOSEPASS, // 0x140
- SPECIES_TORKOAL, // 0x141
- SPECIES_SABLEYE, // 0x142
- SPECIES_BARBOACH, // 0x143
- SPECIES_WHISCASH, // 0x144
- SPECIES_LUVDISC, // 0x145
- SPECIES_CORPHISH, // 0x146
- SPECIES_CRAWDAUNT, // 0x147
- SPECIES_FEEBAS, // 0x148
- SPECIES_MILOTIC, // 0x149
- SPECIES_CARVANHA, // 0x14a
- SPECIES_SHARPEDO, // 0x14b
- SPECIES_TRAPINCH, // 0x14c
- SPECIES_VIBRAVA, // 0x14d
- SPECIES_FLYGON, // 0x14e
- SPECIES_MAKUHITA, // 0x14f
- SPECIES_HARIYAMA, // 0x150
- SPECIES_ELECTRIKE, // 0x151
- SPECIES_MANECTRIC, // 0x152
- SPECIES_NUMEL, // 0x153
- SPECIES_CAMERUPT, // 0x154
- SPECIES_SPHEAL, // 0x155
- SPECIES_SEALEO, // 0x156
- SPECIES_WALREIN, // 0x157
- SPECIES_CACNEA, // 0x158
- SPECIES_CACTURNE, // 0x159
- SPECIES_SNORUNT, // 0x15a
- SPECIES_GLALIE, // 0x15b
- SPECIES_LUNATONE, // 0x15c
- SPECIES_SOLROCK, // 0x15d
- SPECIES_AZURILL, // 0x15e
- SPECIES_SPOINK, // 0x15f
- SPECIES_GRUMPIG, // 0x160
- SPECIES_PLUSLE, // 0x161
- SPECIES_MINUN, // 0x162
- SPECIES_MAWILE, // 0x163
- SPECIES_MEDITITE, // 0x164
- SPECIES_MEDICHAM, // 0x165
- SPECIES_SWABLU, // 0x166
- SPECIES_ALTARIA, // 0x167
- SPECIES_WYNAUT, // 0x168
- SPECIES_DUSKULL, // 0x169
- SPECIES_DUSCLOPS, // 0x16a
- SPECIES_ROSELIA, // 0x16b
- SPECIES_SLAKOTH, // 0x16c
- SPECIES_VIGOROTH, // 0x16d
- SPECIES_SLAKING, // 0x16e
- SPECIES_GULPIN, // 0x16f
- SPECIES_SWALOT, // 0x170
- SPECIES_TROPIUS, // 0x171
- SPECIES_WHISMUR, // 0x172
- SPECIES_LOUDRED, // 0x173
- SPECIES_EXPLOUD, // 0x174
- SPECIES_CLAMPERL, // 0x175
- SPECIES_HUNTAIL, // 0x176
- SPECIES_GOREBYSS, // 0x177
- SPECIES_ABSOL, // 0x178
- SPECIES_SHUPPET, // 0x179
- SPECIES_BANETTE, // 0x17a
- SPECIES_SEVIPER, // 0x17b
- SPECIES_ZANGOOSE, // 0x17c
- SPECIES_RELICANTH, // 0x17d
- SPECIES_ARON, // 0x17e
- SPECIES_LAIRON, // 0x17f
- SPECIES_AGGRON, // 0x180
- SPECIES_CASTFORM, // 0x181
- SPECIES_VOLBEAT, // 0x182
- SPECIES_ILLUMISE, // 0x183
- SPECIES_LILEEP, // 0x184
- SPECIES_CRADILY, // 0x185
- SPECIES_ANORITH, // 0x186
- SPECIES_ARMALDO, // 0x187
- SPECIES_RALTS, // 0x188
- SPECIES_KIRLIA, // 0x189
- SPECIES_GARDEVOIR, // 0x18a
- SPECIES_BAGON, // 0x18b
- SPECIES_SHELGON, // 0x18c
- SPECIES_SALAMENCE, // 0x18d
- SPECIES_BELDUM, // 0x18e
- SPECIES_METANG, // 0x18f
- SPECIES_METAGROSS, // 0x190
- SPECIES_REGIROCK, // 0x191
- SPECIES_REGICE, // 0x192
- SPECIES_REGISTEEL, // 0x193
- SPECIES_KYOGRE, // 0x194
- SPECIES_GROUDON, // 0x195
- SPECIES_RAYQUAZA, // 0x196
- SPECIES_LATIAS, // 0x197
- SPECIES_LATIOS, // 0x198
- SPECIES_JIRACHI, // 0x199
- SPECIES_DEOXYS, // 0x19a
- SPECIES_CHIMECHO, // 0x19b
- SPECIES_EGG, // 0x19c
+ SPECIES_TREECKO, // 0x115
+ SPECIES_GROVYLE, // 0x116
+ SPECIES_SCEPTILE, // 0x117
+ SPECIES_TORCHIC, // 0x118
+ SPECIES_COMBUSKEN, // 0x119
+ SPECIES_BLAZIKEN, // 0x11a
+ SPECIES_MUDKIP, // 0x11b
+ SPECIES_MARSHTOMP, // 0x11c
+ SPECIES_SWAMPERT, // 0x11d
+ SPECIES_POOCHYENA, // 0x11e
+ SPECIES_MIGHTYENA, // 0x11f
+ SPECIES_ZIGZAGOON, // 0x120
+ SPECIES_LINOONE, // 0x121
+ SPECIES_WURMPLE, // 0x122
+ SPECIES_SILCOON, // 0x123
+ SPECIES_BEAUTIFLY, // 0x124
+ SPECIES_CASCOON, // 0x125
+ SPECIES_DUSTOX, // 0x126
+ SPECIES_LOTAD, // 0x127
+ SPECIES_LOMBRE, // 0x128
+ SPECIES_LUDICOLO, // 0x129
+ SPECIES_SEEDOT, // 0x12a
+ SPECIES_NUZLEAF, // 0x12b
+ SPECIES_SHIFTRY, // 0x12c
+ SPECIES_NINCADA, // 0x12d
+ SPECIES_NINJASK, // 0x12e
+ SPECIES_SHEDINJA, // 0x12f
+ SPECIES_TAILLOW, // 0x130
+ SPECIES_SWELLOW, // 0x131
+ SPECIES_SHROOMISH, // 0x132
+ SPECIES_BRELOOM, // 0x133
+ SPECIES_SPINDA, // 0x134
+ SPECIES_WINGULL, // 0x135
+ SPECIES_PELIPPER, // 0x136
+ SPECIES_SURSKIT, // 0x137
+ SPECIES_MASQUERAIN, // 0x138
+ SPECIES_WAILMER, // 0x139
+ SPECIES_WAILORD, // 0x13a
+ SPECIES_SKITTY, // 0x13b
+ SPECIES_DELCATTY, // 0x13c
+ SPECIES_KECLEON, // 0x13d
+ SPECIES_BALTOY, // 0x13e
+ SPECIES_CLAYDOL, // 0x13f
+ SPECIES_NOSEPASS, // 0x140
+ SPECIES_TORKOAL, // 0x141
+ SPECIES_SABLEYE, // 0x142
+ SPECIES_BARBOACH, // 0x143
+ SPECIES_WHISCASH, // 0x144
+ SPECIES_LUVDISC, // 0x145
+ SPECIES_CORPHISH, // 0x146
+ SPECIES_CRAWDAUNT, // 0x147
+ SPECIES_FEEBAS, // 0x148
+ SPECIES_MILOTIC, // 0x149
+ SPECIES_CARVANHA, // 0x14a
+ SPECIES_SHARPEDO, // 0x14b
+ SPECIES_TRAPINCH, // 0x14c
+ SPECIES_VIBRAVA, // 0x14d
+ SPECIES_FLYGON, // 0x14e
+ SPECIES_MAKUHITA, // 0x14f
+ SPECIES_HARIYAMA, // 0x150
+ SPECIES_ELECTRIKE, // 0x151
+ SPECIES_MANECTRIC, // 0x152
+ SPECIES_NUMEL, // 0x153
+ SPECIES_CAMERUPT, // 0x154
+ SPECIES_SPHEAL, // 0x155
+ SPECIES_SEALEO, // 0x156
+ SPECIES_WALREIN, // 0x157
+ SPECIES_CACNEA, // 0x158
+ SPECIES_CACTURNE, // 0x159
+ SPECIES_SNORUNT, // 0x15a
+ SPECIES_GLALIE, // 0x15b
+ SPECIES_LUNATONE, // 0x15c
+ SPECIES_SOLROCK, // 0x15d
+ SPECIES_AZURILL, // 0x15e
+ SPECIES_SPOINK, // 0x15f
+ SPECIES_GRUMPIG, // 0x160
+ SPECIES_PLUSLE, // 0x161
+ SPECIES_MINUN, // 0x162
+ SPECIES_MAWILE, // 0x163
+ SPECIES_MEDITITE, // 0x164
+ SPECIES_MEDICHAM, // 0x165
+ SPECIES_SWABLU, // 0x166
+ SPECIES_ALTARIA, // 0x167
+ SPECIES_WYNAUT, // 0x168
+ SPECIES_DUSKULL, // 0x169
+ SPECIES_DUSCLOPS, // 0x16a
+ SPECIES_ROSELIA, // 0x16b
+ SPECIES_SLAKOTH, // 0x16c
+ SPECIES_VIGOROTH, // 0x16d
+ SPECIES_SLAKING, // 0x16e
+ SPECIES_GULPIN, // 0x16f
+ SPECIES_SWALOT, // 0x170
+ SPECIES_TROPIUS, // 0x171
+ SPECIES_WHISMUR, // 0x172
+ SPECIES_LOUDRED, // 0x173
+ SPECIES_EXPLOUD, // 0x174
+ SPECIES_CLAMPERL, // 0x175
+ SPECIES_HUNTAIL, // 0x176
+ SPECIES_GOREBYSS, // 0x177
+ SPECIES_ABSOL, // 0x178
+ SPECIES_SHUPPET, // 0x179
+ SPECIES_BANETTE, // 0x17a
+ SPECIES_SEVIPER, // 0x17b
+ SPECIES_ZANGOOSE, // 0x17c
+ SPECIES_RELICANTH, // 0x17d
+ SPECIES_ARON, // 0x17e
+ SPECIES_LAIRON, // 0x17f
+ SPECIES_AGGRON, // 0x180
+ SPECIES_CASTFORM, // 0x181
+ SPECIES_VOLBEAT, // 0x182
+ SPECIES_ILLUMISE, // 0x183
+ SPECIES_LILEEP, // 0x184
+ SPECIES_CRADILY, // 0x185
+ SPECIES_ANORITH, // 0x186
+ SPECIES_ARMALDO, // 0x187
+ SPECIES_RALTS, // 0x188
+ SPECIES_KIRLIA, // 0x189
+ SPECIES_GARDEVOIR, // 0x18a
+ SPECIES_BAGON, // 0x18b
+ SPECIES_SHELGON, // 0x18c
+ SPECIES_SALAMENCE, // 0x18d
+ SPECIES_BELDUM, // 0x18e
+ SPECIES_METANG, // 0x18f
+ SPECIES_METAGROSS, // 0x190
+ SPECIES_REGIROCK, // 0x191
+ SPECIES_REGICE, // 0x192
+ SPECIES_REGISTEEL, // 0x193
+ SPECIES_KYOGRE, // 0x194
+ SPECIES_GROUDON, // 0x195
+ SPECIES_RAYQUAZA, // 0x196
+ SPECIES_LATIAS, // 0x197
+ SPECIES_LATIOS, // 0x198
+ SPECIES_JIRACHI, // 0x199
+ SPECIES_DEOXYS, // 0x19a
+ SPECIES_CHIMECHO, // 0x19b
+ SPECIES_EGG, // 0x19c
- SPECIES_UNOWN_B,
- SPECIES_UNOWN_C,
- SPECIES_UNOWN_D,
- SPECIES_UNOWN_E,
- SPECIES_UNOWN_F,
- SPECIES_UNOWN_G,
- SPECIES_UNOWN_H,
- SPECIES_UNOWN_I,
- SPECIES_UNOWN_J,
- SPECIES_UNOWN_K,
- SPECIES_UNOWN_L,
- SPECIES_UNOWN_M,
- SPECIES_UNOWN_N,
- SPECIES_UNOWN_O,
- SPECIES_UNOWN_P,
- SPECIES_UNOWN_Q,
- SPECIES_UNOWN_R,
- SPECIES_UNOWN_S,
- SPECIES_UNOWN_T,
- SPECIES_UNOWN_U,
- SPECIES_UNOWN_V,
- SPECIES_UNOWN_W,
- SPECIES_UNOWN_X,
- SPECIES_UNOWN_Y,
- SPECIES_UNOWN_Z,
- SPECIES_UNOWN_EMARK,
- SPECIES_UNOWN_QMARK,
+ SPECIES_UNOWN_B,
+ SPECIES_UNOWN_C,
+ SPECIES_UNOWN_D,
+ SPECIES_UNOWN_E,
+ SPECIES_UNOWN_F,
+ SPECIES_UNOWN_G,
+ SPECIES_UNOWN_H,
+ SPECIES_UNOWN_I,
+ SPECIES_UNOWN_J,
+ SPECIES_UNOWN_K,
+ SPECIES_UNOWN_L,
+ SPECIES_UNOWN_M,
+ SPECIES_UNOWN_N,
+ SPECIES_UNOWN_O,
+ SPECIES_UNOWN_P,
+ SPECIES_UNOWN_Q,
+ SPECIES_UNOWN_R,
+ SPECIES_UNOWN_S,
+ SPECIES_UNOWN_T,
+ SPECIES_UNOWN_U,
+ SPECIES_UNOWN_V,
+ SPECIES_UNOWN_W,
+ SPECIES_UNOWN_X,
+ SPECIES_UNOWN_Y,
+ SPECIES_UNOWN_Z,
+ SPECIES_UNOWN_EMARK,
+ SPECIES_UNOWN_QMARK,
};
#define NUM_SPECIES SPECIES_EGG
diff --git a/include/sprite.h b/include/sprite.h
index 447a8decb..2725d0bab 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -5,7 +5,7 @@
struct SpriteSheet
{
- u8 *data;
+ const u8 *data;
u16 size;
u16 tag;
};
@@ -18,7 +18,7 @@ struct SpriteFrameImage
struct SpritePalette
{
- u16 *data;
+ const u16 *data;
u16 tag;
};
@@ -45,6 +45,9 @@ struct AnimJumpCmd
u32 target:6;
};
+// The first halfword of this union specifies the type of command.
+// If it -2, then it is a jump command. If it is -1, then it is the end of the script.
+// Otherwise, it is the imageValue for a frame command.
union AnimCmd
{
s16 type;
@@ -53,6 +56,13 @@ union AnimCmd
struct AnimJumpCmd jump;
};
+#define ANIMCMD_FRAME(...) \
+ {.frame = {__VA_ARGS__}}
+#define ANIMCMD_JUMP(_target) \
+ {.jump = {.type = -2, .target = _target}}
+#define ANIMCMD_END \
+ {.type = -1}
+
struct AffineAnimFrameCmd
{
s16 xScale;
@@ -81,6 +91,11 @@ union AffineAnimCmd
struct AffineAnimJumpCmd jump;
};
+#define AFFINEANIMCMD_FRAME(_xScale, _yScale, _rotation, _duration) \
+ {.frame = {.xScale = _xScale, .yScale = _yScale, .rotation = _rotation, .duration = _duration}}
+#define AFFINEANIMCMD_END \
+ {.type = 0x7FFF}
+
struct AffineAnimState
{
u8 animNum;
@@ -121,19 +136,19 @@ struct SpriteTemplate
{
u16 tileTag;
u16 paletteTag;
- struct OamData *oam;
- union AnimCmd **anims;
+ const struct OamData *oam;
+ const union AnimCmd *const *anims;
struct SpriteFrameImage *images;
- union AffineAnimCmd **affineAnims;
+ const union AffineAnimCmd *const *affineAnims;
void (*callback)(struct Sprite *);
};
struct Sprite
{
/*0x00*/ struct OamData oam;
- /*0x08*/ union AnimCmd **anims;
+ /*0x08*/ const union AnimCmd *const *anims;
/*0x0C*/ struct SpriteFrameImage *images;
- /*0x10*/ union AffineAnimCmd **affineAnims;
+ /*0x10*/ const union AffineAnimCmd *const *affineAnims;
/*0x14*/ const struct SpriteTemplate *template;
/*0x18*/ const struct SubspriteTable *subspriteTables;
/*0x1C*/ void (*callback)(struct Sprite *);
@@ -204,7 +219,7 @@ void SetOamMatrix(u8 matrixNum, u16 a, u16 b, u16 c, u16 d);
void CalcCenterToCornerVec(struct Sprite *sprite, u8 shape, u8 size, u8 affineMode);
void SpriteCallbackDummy(struct Sprite *sprite);
void ProcessSpriteCopyRequests(void);
-void RequestSpriteCopy(u8 *src, u8 *dest, u16 size);
+void RequestSpriteCopy(const u8 *src, u8 *dest, u16 size);
void FreeSpriteTiles(struct Sprite *sprite);
void FreeSpritePalette(struct Sprite *sprite);
void FreeSpriteOamMatrix(struct Sprite *sprite);
@@ -223,8 +238,8 @@ u8 AllocOamMatrix(void);
void FreeOamMatrix(u8 matrixNum);
void InitSpriteAffineAnim(struct Sprite *sprite);
void SetOamMatrixRotationScaling(u8 matrixNum, s16 xScale, s16 yScale, u16 rotation);
-u16 LoadSpriteSheet(struct SpriteSheet *sheet);
-void LoadSpriteSheets(struct SpriteSheet *sheets);
+u16 LoadSpriteSheet(const struct SpriteSheet *sheet);
+void LoadSpriteSheets(const struct SpriteSheet *sheets);
u16 AllocTilesForSpriteSheet(struct SpriteSheet *sheet);
void AllocTilesForSpriteSheets(struct SpriteSheet *sheets);
void LoadTilesForSpriteSheet(const struct SpriteSheet *sheet);
@@ -249,4 +264,6 @@ void CopyToSprites(u8 *src);
void CopyFromSprites(u8 *dest);
u8 SpriteTileAllocBitmapOp(u16 bit, u8 op);
+extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[];
+
#endif // GUARD_SPRITE_H
diff --git a/include/starter_choose.h b/include/starter_choose.h
index 4a7e0514c..008d1b14e 100644
--- a/include/starter_choose.h
+++ b/include/starter_choose.h
@@ -5,9 +5,5 @@
u16 GetStarterPokemon(u16);
void CB2_ChooseStarter(void);
-void nullsub_72(struct Sprite *sprite);
-void sub_810A62C(struct Sprite *sprite);
-void sub_810A68C(struct Sprite *sprite);
-void StarterPokemonSpriteAnimCallback(struct Sprite *sprite);
#endif // GUARD_STARTER_CHOOSE_H
diff --git a/include/text_window.h b/include/text_window.h
index 6df3f7d33..afd645540 100644
--- a/include/text_window.h
+++ b/include/text_window.h
@@ -5,8 +5,8 @@
struct FrameGraphics
{
- u8 *tiles;
- u16 *palette;
+ u8 *tiles;
+ u16 *palette;
};
u16 SetTextWindowBaseTileNum(u16 baseTileNum);
diff --git a/include/trainer_card.h b/include/trainer_card.h
index 7269c0b20..bd0c808dd 100644
--- a/include/trainer_card.h
+++ b/include/trainer_card.h
@@ -2,30 +2,30 @@
#define GUARD_TRAINER_CARD_H
struct TrainerCard {
- /*0x00*/ u8 gender;
- /*0x01*/ u8 stars;
- /*0x02*/ bool8 hasPokedex;
- /*0x03*/ bool8 var_3;
- /*0x04*/ bool8 var_4;
- /*0x05*/ u8 var_5;
- /*0x06*/ u16 firstHallOfFameA;
- /*0x08*/ u16 firstHallOfFameB;
- /*0x0A*/ u16 firstHallOfFameC;
- /*0x0C*/ u16 pokedexSeen;
- /*0x0E*/ u16 trainerId;
- /*0x10*/ u16 playTimeHours;
- /*0x12*/ u16 playTimeMinutes;
- /*0x14*/ u16 linkBattleWins;
- /*0x16*/ u16 linkBattleLosses;
- /*0x18*/ u16 battleTowerWins;
- /*0x1A*/ u16 battleTowerLosses;
- /*0x1C*/ u16 contestsWithFriends;
- /*0x1E*/ u16 pokeblocksWithFriends;
- /*0x20*/ u16 pokemonTrades;
- /*0x22*/ u16 var_22;
- /*0x24*/ u32 money;
- /*0x28*/ u16 var_28[4];
- /*0x30*/ u8 playerName[8];
+ /*0x00*/ u8 gender;
+ /*0x01*/ u8 stars;
+ /*0x02*/ bool8 hasPokedex;
+ /*0x03*/ bool8 var_3;
+ /*0x04*/ bool8 var_4;
+ /*0x05*/ u8 var_5;
+ /*0x06*/ u16 firstHallOfFameA;
+ /*0x08*/ u16 firstHallOfFameB;
+ /*0x0A*/ u16 firstHallOfFameC;
+ /*0x0C*/ u16 pokedexSeen;
+ /*0x0E*/ u16 trainerId;
+ /*0x10*/ u16 playTimeHours;
+ /*0x12*/ u16 playTimeMinutes;
+ /*0x14*/ u16 linkBattleWins;
+ /*0x16*/ u16 linkBattleLosses;
+ /*0x18*/ u16 battleTowerWins;
+ /*0x1A*/ u16 battleTowerLosses;
+ /*0x1C*/ u16 contestsWithFriends;
+ /*0x1E*/ u16 pokeblocksWithFriends;
+ /*0x20*/ u16 pokemonTrades;
+ /*0x22*/ u16 var_22;
+ /*0x24*/ u32 money;
+ /*0x28*/ u16 var_28[4];
+ /*0x30*/ u8 playerName[8];
};
void sub_8093110(void (*)(void));
diff --git a/include/wallclock.h b/include/wallclock.h
index c869e3941..794f456be 100644
--- a/include/wallclock.h
+++ b/include/wallclock.h
@@ -6,9 +6,4 @@
void CB2_StartWallClock(void);
void CB2_ViewWallClock(void);
-void sub_810B05C(struct Sprite *sprite);
-void sub_810B0F4(struct Sprite *sprite);
-void sub_810B18C(struct Sprite *sprite);
-void sub_810B230(struct Sprite *sprite);
-
#endif // GUARD_WALLCLOCK_H
diff --git a/ld_script.txt b/ld_script.txt
index 62afdd1c7..4373dd6c0 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -151,7 +151,6 @@ SECTIONS {
src/berry.o(.text);
src/script_menu.o(.text);
src/naming_screen.o(.text);
- asm/naming_screen.o(.text);
src/money.o(.text);
asm/contest_effect.o(.text);
src/record_mixing.o(.text);
@@ -339,13 +338,14 @@ SECTIONS {
data/data_8393054.o(.rodata);
data/task.o(.rodata);
data/battle_anim_807B69C.o(.rodata);
- data/title_screen.o(.rodata);
+ src/title_screen.o(.rodata);
data/weather.o(.rodata);
data/rom_8080874.o(.rodata);
- data/battle_setup.o(.rodata);
+ src/battle_setup.o(.rodata);
data/cable_club.o(.rodata);
data/mori_debug_menu.o(.rodata);
data/trainer_see.o(.rodata);
+ src/wild_encounter.o(.rodata);
data/wild_encounter.o(.rodata);
data/field_effect.o(.rodata);
data/pokemon_menu.o(.rodata);
@@ -363,7 +363,7 @@ SECTIONS {
data/matsuda_debug_menu.o(.rodata);
data/contest.o(.rodata);
data/shop.o(.rodata);
- data/berry.o(.rodata);
+ src/berry.o(.rodata);
data/script_menu.o(.rodata);
src/naming_screen.o(.rodata);
data/naming_screen.o(.rodata);
@@ -387,16 +387,16 @@ SECTIONS {
data/mauville_old_man.o(.rodata);
data/mail.o(.rodata);
data/menu_helpers.o(.rodata);
- data/heal_location.o(.rodata);
+ src/heal_location.o(.rodata);
data/region_map.o(.rodata);
data/cute_sketch.o(.rodata);
data/decoration.o(.rodata);
data/slot_machine.o(.rodata);
- data/contest_painting.o(.rodata);
+ src/contest_painting.o(.rodata);
src/battle_ai.o(.rodata);
data/trader.o(.rodata);
- data/starter_choose.o(.rodata);
- data/wallclock.o(.rodata);
+ src/starter_choose.o(.rodata);
+ src/wallclock.o(.rodata);
data/pokeblock.o(.rodata);
data/rom_810CBB4.o(.rodata);
data/pokedex_area_screen.o(.rodata);
@@ -414,9 +414,10 @@ SECTIONS {
data/contest_ai.o(.rodata);
data/rom_81258BC.o(.rodata);
data/player_pc.o(.rodata);
- data/intro.o(.rodata);
+ src/intro.o(.rodata);
data/battle_anim_813F0F4.o(.rodata);
data/hall_of_fame.o(.rodata);
+ src/credits.o(.rodata);
data/credits.o(.rodata);
src/lottery_corner.o(.rodata);
data/diploma.o(.rodata);
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 6d3e6a215..858b6cca1 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -21,6 +21,8 @@
#include "text.h"
#include "trainer.h"
#include "weather.h"
+#include "map_constants.h"
+#include "opponent_constants.h"
#define NUM_TRAINER_EYE_TRAINERS 56
#define TRAINER_REMATCH_STEPS 255
@@ -92,14 +94,11 @@ EWRAM_DATA u8 *gTrainerCannotBattleSpeech = NULL;
EWRAM_DATA u8 *gTrainerBattleScriptReturnAddress = NULL;
EWRAM_DATA u8 *gTrainerBattleEndScript = NULL;
-extern struct TrainerEyeTrainer gTrainerEyeTrainers[];
-
extern u8 gOtherText_CancelWithTerminator[];
extern u16 gBattleTypeFlags;
extern u16 gScriptLastTalked;
extern u8 gUnknown_02024D26;
-extern u16 gBadgeFlags[];
extern struct MapObject gMapObjects[];
@@ -112,14 +111,367 @@ extern u8 gUnknown_0819F8AE[];
extern u8 gUnknown_0819F80B[];
extern u8 gUnknown_081C6C02[];
-extern struct TrainerBattleSpec gTrainerBattleSpecs_0[];
-extern struct TrainerBattleSpec gTrainerBattleSpecs_1[];
-extern struct TrainerBattleSpec gTrainerBattleSpecs_2[];
-extern struct TrainerBattleSpec gTrainerBattleSpecs_3[];
-extern struct TrainerBattleSpec gTrainerBattleSpecs_4[];
-extern u8 gBattleTransitionTable_Wild[][2];
-extern u8 gBattleTransitionTable_Trainer[][2];
+static const u8 gBattleTransitionTable_Wild[][2] =
+{
+ {8, 9},
+ {5, 10},
+ {0, 10},
+ {7, 6},
+};
+static const u8 gBattleTransitionTable_Trainer[][2] =
+{
+ {4, 11},
+ {2, 3},
+ {0, 10},
+ {1, 6},
+};
+static const struct TrainerBattleSpec gTrainerBattleSpecs_0[] =
+{
+ {&gTrainerBattleMode, 0},
+ {&gTrainerBattleOpponent, 1},
+ {&gTrainerMapObjectLocalId, 1},
+ {&gTrainerIntroSpeech, 2},
+ {&gTrainerDefeatSpeech, 2},
+ {&gTrainerVictorySpeech, 5},
+ {&gTrainerCannotBattleSpeech, 5},
+ {&gTrainerBattleEndScript, 5},
+ {&gTrainerBattleScriptReturnAddress, 6},
+};
+static const struct TrainerBattleSpec gTrainerBattleSpecs_1[] =
+{
+ {&gTrainerBattleMode, 0},
+ {&gTrainerBattleOpponent, 1},
+ {&gTrainerMapObjectLocalId, 1},
+ {&gTrainerIntroSpeech, 2},
+ {&gTrainerDefeatSpeech, 2},
+ {&gTrainerVictorySpeech, 5},
+ {&gTrainerCannotBattleSpeech, 5},
+ {&gTrainerBattleEndScript, 2},
+ {&gTrainerBattleScriptReturnAddress, 6},
+};
+static const struct TrainerBattleSpec gTrainerBattleSpecs_2[] =
+{
+ {&gTrainerBattleMode, 0},
+ {&gTrainerBattleOpponent, 1},
+ {&gTrainerMapObjectLocalId, 1},
+ {&gTrainerIntroSpeech, 2},
+ {&gTrainerDefeatSpeech, 2},
+ {&gTrainerVictorySpeech, 5},
+ {&gTrainerCannotBattleSpeech, 2},
+ {&gTrainerBattleEndScript, 5},
+ {&gTrainerBattleScriptReturnAddress, 6},
+};
+static const struct TrainerBattleSpec gTrainerBattleSpecs_3[] =
+{
+ {&gTrainerBattleMode, 0},
+ {&gTrainerBattleOpponent, 1},
+ {&gTrainerMapObjectLocalId, 1},
+ {&gTrainerIntroSpeech, 5},
+ {&gTrainerDefeatSpeech, 2},
+ {&gTrainerVictorySpeech, 5},
+ {&gTrainerCannotBattleSpeech, 5},
+ {&gTrainerBattleEndScript, 5},
+ {&gTrainerBattleScriptReturnAddress, 6},
+};
+static const struct TrainerBattleSpec gTrainerBattleSpecs_4[] =
+{
+ {&gTrainerBattleMode, 0},
+ {&gTrainerBattleOpponent, 1},
+ {&gTrainerMapObjectLocalId, 1},
+ {&gTrainerIntroSpeech, 2},
+ {&gTrainerDefeatSpeech, 2},
+ {&gTrainerVictorySpeech, 5},
+ {&gTrainerCannotBattleSpeech, 2},
+ {&gTrainerBattleEndScript, 2},
+ {&gTrainerBattleScriptReturnAddress, 6},
+};
+
+const struct TrainerEyeTrainer gTrainerEyeTrainers[] =
+{
+ {
+ {OPPONENT_ROSE_1, OPPONENT_ROSE_2, OPPONENT_ROSE_3, OPPONENT_ROSE_4, OPPONENT_ROSE_5},
+ MAP_GROUP_ROUTE118,
+ MAP_ID_ROUTE118,
+ },
+ {
+ {OPPONENT_DUSTY_1, OPPONENT_DUSTY_2, OPPONENT_DUSTY_3, OPPONENT_DUSTY_4, OPPONENT_DUSTY_5},
+ MAP_GROUP_ROUTE111,
+ MAP_ID_ROUTE111,
+ },
+ {
+ {OPPONENT_LOLA_1, OPPONENT_LOLA_2, OPPONENT_LOLA_3, OPPONENT_LOLA_4, OPPONENT_LOLA_5},
+ MAP_GROUP_ROUTE109,
+ MAP_ID_ROUTE109,
+ },
+ {
+ {OPPONENT_RICKY_1, OPPONENT_RICKY_2, OPPONENT_RICKY_3, OPPONENT_RICKY_4, OPPONENT_RICKY_5},
+ MAP_GROUP_ROUTE109,
+ MAP_ID_ROUTE109,
+ },
+ {
+ {OPPONENT_RITA_AND_SAM_1, OPPONENT_RITA_AND_SAM_2, OPPONENT_RITA_AND_SAM_3, OPPONENT_RITA_AND_SAM_4, OPPONENT_RITA_AND_SAM_5},
+ MAP_GROUP_ROUTE124,
+ MAP_ID_ROUTE124,
+ },
+ {
+ {OPPONENT_BROOKE_1, OPPONENT_BROOKE_2, OPPONENT_BROOKE_3, OPPONENT_BROOKE_4, OPPONENT_BROOKE_5},
+ MAP_GROUP_ROUTE111,
+ MAP_ID_ROUTE111,
+ },
+ {
+ {OPPONENT_WILTON_1, OPPONENT_WILTON_2, OPPONENT_WILTON_3, OPPONENT_WILTON_4, OPPONENT_WILTON_5},
+ MAP_GROUP_ROUTE111,
+ MAP_ID_ROUTE111,
+ },
+ {
+ {OPPONENT_VALERIE_1, OPPONENT_VALERIE_2, OPPONENT_VALERIE_3, OPPONENT_VALERIE_4, OPPONENT_VALERIE_5},
+ MAP_GROUP_MT_PYRE_6F,
+ MAP_ID_MT_PYRE_6F,
+ },
+ {
+ {OPPONENT_CINDY_1, OPPONENT_CINDY_3, OPPONENT_CINDY_4, OPPONENT_CINDY_5, OPPONENT_CINDY_6},
+ MAP_GROUP_ROUTE104,
+ MAP_ID_ROUTE104,
+ },
+ {
+ {OPPONENT_JESSICA_1, OPPONENT_JESSICA_2, OPPONENT_JESSICA_3, OPPONENT_JESSICA_4, OPPONENT_JESSICA_5},
+ MAP_GROUP_ROUTE121,
+ MAP_ID_ROUTE121,
+ },
+ {
+ {OPPONENT_WINSTON_1, OPPONENT_WINSTON_2, OPPONENT_WINSTON_3, OPPONENT_WINSTON_4, OPPONENT_WINSTON_5},
+ MAP_GROUP_ROUTE104,
+ MAP_ID_ROUTE104,
+ },
+ {
+ {OPPONENT_STEVE_1, OPPONENT_STEVE_2, OPPONENT_STEVE_3, OPPONENT_STEVE_4, OPPONENT_STEVE_5},
+ MAP_GROUP_ROUTE114,
+ MAP_ID_ROUTE114,
+ },
+ {
+ {OPPONENT_TONY_1, OPPONENT_TONY_2, OPPONENT_TONY_3, OPPONENT_TONY_4, OPPONENT_TONY_5},
+ MAP_GROUP_ROUTE107,
+ MAP_ID_ROUTE107,
+ },
+ {
+ {OPPONENT_NOB_1, OPPONENT_NOB_2, OPPONENT_NOB_3, OPPONENT_NOB_4, OPPONENT_NOB_5},
+ MAP_GROUP_ROUTE115,
+ MAP_ID_ROUTE115,
+ },
+ {
+ {OPPONENT_DALTON_1, OPPONENT_DALTON_2, OPPONENT_DALTON_3, OPPONENT_DALTON_4, OPPONENT_DALTON_5},
+ MAP_GROUP_ROUTE118,
+ MAP_ID_ROUTE118,
+ },
+ {
+ {OPPONENT_BERNIE_1, OPPONENT_BERNIE_2, OPPONENT_BERNIE_3, OPPONENT_BERNIE_4, OPPONENT_BERNIE_5},
+ MAP_GROUP_ROUTE114,
+ MAP_ID_ROUTE114,
+ },
+ {
+ {OPPONENT_ETHAN_1, OPPONENT_ETHAN_2, OPPONENT_ETHAN_3, OPPONENT_ETHAN_4, OPPONENT_ETHAN_5},
+ MAP_GROUP_JAGGED_PASS,
+ MAP_ID_JAGGED_PASS,
+ },
+ {
+ {OPPONENT_JOHN_AND_JAY_1, OPPONENT_JOHN_AND_JAY_2, OPPONENT_JOHN_AND_JAY_3, OPPONENT_JOHN_AND_JAY_4, OPPONENT_JOHN_AND_JAY_5},
+ MAP_GROUP_METEOR_FALLS_1F_2R,
+ MAP_ID_METEOR_FALLS_1F_2R,
+ },
+ {
+ {OPPONENT_BRANDON_1, OPPONENT_BRANDON_2, OPPONENT_BRANDON_3, OPPONENT_BRANDON_4, OPPONENT_BRANDON_5},
+ MAP_GROUP_ROUTE120,
+ MAP_ID_ROUTE120,
+ },
+ {
+ {OPPONENT_CAMERON_1, OPPONENT_CAMERON_2, OPPONENT_CAMERON_3, OPPONENT_CAMERON_4, OPPONENT_CAMERON_5},
+ MAP_GROUP_ROUTE123,
+ MAP_ID_ROUTE123,
+ },
+ {
+ {OPPONENT_JACKI_1, OPPONENT_JACKI_2, OPPONENT_JACKI_3, OPPONENT_JACKI_4, OPPONENT_JACKI_5},
+ MAP_GROUP_ROUTE123,
+ MAP_ID_ROUTE123,
+ },
+ {
+ {OPPONENT_WALTER_1, OPPONENT_WALTER_2, OPPONENT_WALTER_3, OPPONENT_WALTER_4, OPPONENT_WALTER_5},
+ MAP_GROUP_ROUTE121,
+ MAP_ID_ROUTE121,
+ },
+ {
+ {OPPONENT_KAREN_1, OPPONENT_KAREN_2, OPPONENT_KAREN_3, OPPONENT_KAREN_4, OPPONENT_KAREN_5},
+ MAP_GROUP_ROUTE116,
+ MAP_ID_ROUTE116,
+ },
+ {
+ {OPPONENT_JERRY_1, OPPONENT_JERRY_2, OPPONENT_JERRY_3, OPPONENT_JERRY_4, OPPONENT_JERRY_5},
+ MAP_GROUP_ROUTE116,
+ MAP_ID_ROUTE116,
+ },
+ {
+ {OPPONENT_ANNA_AND_MEG_1, OPPONENT_ANNA_AND_MEG_2, OPPONENT_ANNA_AND_MEG_3, OPPONENT_ANNA_AND_MEG_4, OPPONENT_ANNA_AND_MEG_5},
+ MAP_GROUP_ROUTE117,
+ MAP_ID_ROUTE117,
+ },
+ {
+ {OPPONENT_ISABEL_1, OPPONENT_ISABEL_2, OPPONENT_ISABEL_3, OPPONENT_ISABEL_4, OPPONENT_ISABEL_5},
+ MAP_GROUP_ROUTE110,
+ MAP_ID_ROUTE110,
+ },
+ {
+ {OPPONENT_MIGUEL_1, OPPONENT_MIGUEL_2, OPPONENT_MIGUEL_3, OPPONENT_MIGUEL_4, OPPONENT_MIGUEL_5},
+ MAP_GROUP_ROUTE103,
+ MAP_ID_ROUTE103,
+ },
+ {
+ {OPPONENT_TIMOTHY_1, OPPONENT_TIMOTHY_2, OPPONENT_TIMOTHY_3, OPPONENT_TIMOTHY_4, OPPONENT_TIMOTHY_5},
+ MAP_GROUP_ROUTE115,
+ MAP_ID_ROUTE115,
+ },
+ {
+ {OPPONENT_SHELBY_1, OPPONENT_SHELBY_2, OPPONENT_SHELBY_3, OPPONENT_SHELBY_4, OPPONENT_SHELBY_5},
+ MAP_GROUP_MT_CHIMNEY,
+ MAP_ID_MT_CHIMNEY,
+ },
+ {
+ {OPPONENT_CALVIN_1, OPPONENT_CALVIN_2, OPPONENT_CALVIN_3, OPPONENT_CALVIN_4, OPPONENT_CALVIN_5},
+ MAP_GROUP_ROUTE102,
+ MAP_ID_ROUTE102,
+ },
+ {
+ {OPPONENT_ELLIOT_1, OPPONENT_ELLIOT_2, OPPONENT_ELLIOT_3, OPPONENT_ELLIOT_4, OPPONENT_ELLIOT_5},
+ MAP_GROUP_ROUTE106,
+ MAP_ID_ROUTE106,
+ },
+ {
+ {OPPONENT_ABIGAIL_1, OPPONENT_ABIGAIL_2, OPPONENT_ABIGAIL_3, OPPONENT_ABIGAIL_4, OPPONENT_ABIGAIL_5},
+ MAP_GROUP_ROUTE110,
+ MAP_ID_ROUTE110,
+ },
+ {
+ {OPPONENT_BENJAMIN_1, OPPONENT_BENJAMIN_2, OPPONENT_BENJAMIN_3, OPPONENT_BENJAMIN_4, OPPONENT_BENJAMIN_5},
+ MAP_GROUP_ROUTE110,
+ MAP_ID_ROUTE110,
+ },
+ {
+ {OPPONENT_ISAIAH_1, OPPONENT_ISAIAH_2, OPPONENT_ISAIAH_3, OPPONENT_ISAIAH_4, OPPONENT_ISAIAH_5},
+ MAP_GROUP_ROUTE128,
+ MAP_ID_ROUTE128,
+ },
+ {
+ {OPPONENT_KATELYN_1, OPPONENT_KATELYN_2, OPPONENT_KATELYN_3, OPPONENT_KATELYN_4, OPPONENT_KATELYN_5},
+ MAP_GROUP_ROUTE128,
+ MAP_ID_ROUTE128,
+ },
+ {
+ {OPPONENT_MARIA_1, OPPONENT_MARIA_2, OPPONENT_MARIA_3, OPPONENT_MARIA_4, OPPONENT_MARIA_5},
+ MAP_GROUP_ROUTE117,
+ MAP_ID_ROUTE117,
+ },
+ {
+ {OPPONENT_DYLAN_1, OPPONENT_DYLAN_2, OPPONENT_DYLAN_3, OPPONENT_DYLAN_4, OPPONENT_DYLAN_5},
+ MAP_GROUP_ROUTE117,
+ MAP_ID_ROUTE117,
+ },
+ {
+ {OPPONENT_NICOLAS_1, OPPONENT_NICOLAS_2, OPPONENT_NICOLAS_3, OPPONENT_NICOLAS_4, OPPONENT_NICOLAS_5},
+ MAP_GROUP_METEOR_FALLS_1F_2R,
+ MAP_ID_METEOR_FALLS_1F_2R,
+ },
+ {
+ {OPPONENT_ROBERT_1, OPPONENT_ROBERT_2, OPPONENT_ROBERT_3, OPPONENT_ROBERT_4, OPPONENT_ROBERT_5},
+ MAP_GROUP_ROUTE120,
+ MAP_ID_ROUTE120,
+ },
+ {
+ {OPPONENT_LAO_1, OPPONENT_LAO_2, OPPONENT_LAO_3, OPPONENT_LAO_4, OPPONENT_LAO_5},
+ MAP_GROUP_ROUTE113,
+ MAP_ID_ROUTE113,
+ },
+ {
+ {OPPONENT_CYNDY_1, OPPONENT_CYNDY_2, OPPONENT_CYNDY_3, OPPONENT_CYNDY_4, OPPONENT_CYNDY_5},
+ MAP_GROUP_ROUTE115,
+ MAP_ID_ROUTE115,
+ },
+ {
+ {OPPONENT_MADELINE_1, OPPONENT_MADELINE_2, OPPONENT_MADELINE_3, OPPONENT_MADELINE_4, OPPONENT_MADELINE_5},
+ MAP_GROUP_ROUTE113,
+ MAP_ID_ROUTE113,
+ },
+ {
+ {OPPONENT_JENNY_1, OPPONENT_JENNY_2, OPPONENT_JENNY_3, OPPONENT_JENNY_4, OPPONENT_JENNY_5},
+ MAP_GROUP_ROUTE124,
+ MAP_ID_ROUTE124,
+ },
+ {
+ {OPPONENT_DIANA_1, OPPONENT_DIANA_2, OPPONENT_DIANA_3, OPPONENT_DIANA_4, OPPONENT_DIANA_5},
+ MAP_GROUP_JAGGED_PASS,
+ MAP_ID_JAGGED_PASS,
+ },
+ {
+ {OPPONENT_AMY_AND_LIV_1, OPPONENT_AMY_AND_LIV_2, OPPONENT_AMY_AND_LIV_4, OPPONENT_AMY_AND_LIV_5, OPPONENT_AMY_AND_LIV_6},
+ MAP_GROUP_ROUTE103,
+ MAP_ID_ROUTE103,
+ },
+ {
+ {OPPONENT_ERNEST_1, OPPONENT_ERNEST_2, OPPONENT_ERNEST_3, OPPONENT_ERNEST_4, OPPONENT_ERNEST_5},
+ MAP_GROUP_ROUTE125,
+ MAP_ID_ROUTE125,
+ },
+ {
+ {OPPONENT_EDWIN_1, OPPONENT_EDWIN_2, OPPONENT_EDWIN_3, OPPONENT_EDWIN_4, OPPONENT_EDWIN_5},
+ MAP_GROUP_ROUTE110,
+ MAP_ID_ROUTE110,
+ },
+ {
+ {OPPONENT_LYDIA_1, OPPONENT_LYDIA_2, OPPONENT_LYDIA_3, OPPONENT_LYDIA_4, OPPONENT_LYDIA_5},
+ MAP_GROUP_ROUTE117,
+ MAP_ID_ROUTE117,
+ },
+ {
+ {OPPONENT_ISAAC_1, OPPONENT_ISAAC_2, OPPONENT_ISAAC_3, OPPONENT_ISAAC_4, OPPONENT_ISAAC_5},
+ MAP_GROUP_ROUTE117,
+ MAP_ID_ROUTE117,
+ },
+ {
+ {OPPONENT_CATHERINE_1, OPPONENT_CATHERINE_2, OPPONENT_CATHERINE_3, OPPONENT_CATHERINE_4, OPPONENT_CATHERINE_5},
+ MAP_GROUP_ROUTE119,
+ MAP_ID_ROUTE119,
+ },
+ {
+ {OPPONENT_JACKSON_1, OPPONENT_JACKSON_2, OPPONENT_JACKSON_3, OPPONENT_JACKSON_4, OPPONENT_JACKSON_5},
+ MAP_GROUP_ROUTE119,
+ MAP_ID_ROUTE119,
+ },
+ {
+ {OPPONENT_HALEY_1, OPPONENT_HALEY_2, OPPONENT_HALEY_3, OPPONENT_HALEY_4, OPPONENT_HALEY_5},
+ MAP_GROUP_ROUTE104,
+ MAP_ID_ROUTE104,
+ },
+ {
+ {OPPONENT_JAMES_1, OPPONENT_JAMES_2, OPPONENT_JAMES_3, OPPONENT_JAMES_4, OPPONENT_JAMES_5},
+ MAP_GROUP_PETALBURG_WOODS,
+ MAP_ID_PETALBURG_WOODS,
+ },
+ {
+ {OPPONENT_TRENT_1, OPPONENT_TRENT_2, OPPONENT_TRENT_3, OPPONENT_TRENT_4, OPPONENT_TRENT_5},
+ MAP_GROUP_ROUTE112,
+ MAP_ID_ROUTE112,
+ },
+ {
+ {OPPONENT_LOIS_AND_HAL_1, OPPONENT_LOIS_AND_HAL_2, OPPONENT_LOIS_AND_HAL_3, OPPONENT_LOIS_AND_HAL_4, OPPONENT_LOIS_AND_HAL_5},
+ MAP_GROUP_ABANDONED_SHIP_ROOMS2_1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS2_1F,
+ },
+ {
+ {OPPONENT_WALLY_3, OPPONENT_WALLY_4, OPPONENT_WALLY_5, OPPONENT_WALLY_6, OPPONENT_NONE},
+ MAP_GROUP_VICTORY_ROAD_1F,
+ MAP_ID_VICTORY_ROAD_1F,
+ },
+};
+
+static const u16 sBadgeFlags[] = {BADGE01_GET, BADGE02_GET, BADGE03_GET, BADGE04_GET, BADGE05_GET, BADGE06_GET, BADGE07_GET, BADGE08_GET};
void task01_battle_start(u8 taskId)
{
@@ -592,7 +944,7 @@ void sub_80822BC(void)
gTrainerBattleEndScript = 0;
}
-void TrainerBattleLoadArgs(struct TrainerBattleSpec *specs, u8 *data)
+void TrainerBattleLoadArgs(const struct TrainerBattleSpec *specs, u8 *data)
{
while (1)
{
@@ -902,7 +1254,7 @@ u8 *sub_8082880(void)
return SanitizeString(gTrainerCannotBattleSpeech);
}
-s32 sub_8082894(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+s32 sub_8082894(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 i;
@@ -914,7 +1266,7 @@ s32 sub_8082894(struct TrainerEyeTrainer *trainers, u16 trainerNum)
return -1;
}
-s32 sub_80828B8(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+s32 sub_80828B8(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 i;
s32 j;
@@ -930,7 +1282,7 @@ s32 sub_80828B8(struct TrainerEyeTrainer *trainers, u16 trainerNum)
return -1;
}
-bool32 sub_80828FC(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
+bool32 sub_80828FC(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
{
int i;
bool32 ret = FALSE;
@@ -955,7 +1307,7 @@ bool32 sub_80828FC(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
return ret;
}
-s32 sub_80829A8(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
+s32 sub_80829A8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
{
s32 i;
@@ -967,7 +1319,7 @@ s32 sub_80829A8(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
return 0;
}
-s32 sub_80829E8(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
+s32 sub_80829E8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
{
s32 i;
@@ -979,7 +1331,7 @@ s32 sub_80829E8(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
return 0;
}
-bool8 sub_8082A18(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 trainerEyeIndex = sub_8082894(trainers, trainerNum);
@@ -989,7 +1341,7 @@ bool8 sub_8082A18(struct TrainerEyeTrainer *trainers, u16 trainerNum)
return FALSE;
}
-bool8 sub_8082A54(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+bool8 sub_8082A54(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 trainerEyeIndex = sub_80828B8(trainers, trainerNum);
@@ -999,10 +1351,10 @@ bool8 sub_8082A54(struct TrainerEyeTrainer *trainers, u16 trainerNum)
return FALSE;
}
-u16 sub_8082A90(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+u16 sub_8082A90(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
int i;
- struct TrainerEyeTrainer *trainer;
+ const struct TrainerEyeTrainer *trainer;
s32 trainerEyeIndex = sub_8082894(trainers, trainerNum);
if (trainerEyeIndex == -1)
@@ -1018,7 +1370,7 @@ u16 sub_8082A90(struct TrainerEyeTrainer *trainers, u16 trainerNum)
return trainer->trainerNums[4];
}
-void sub_8082AE4(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+void sub_8082AE4(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 trainerEyeIndex = sub_80828B8(trainers, trainerNum);
@@ -1026,7 +1378,7 @@ void sub_8082AE4(struct TrainerEyeTrainer *trainers, u16 trainerNum)
gSaveBlock1.trainerRematches[trainerEyeIndex] = 0;
}
-bool8 sub_8082B10(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+bool8 sub_8082B10(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 trainerEyeIndex = sub_8082894(trainers, trainerNum);
@@ -1043,7 +1395,7 @@ bool32 sub_8082B44(void)
for (i = 0; i < 8; i++)
{
- if (FlagGet(gBadgeFlags[i]) == TRUE)
+ if (FlagGet(sBadgeFlags[i]) == TRUE)
{
badgeCount++;
if (badgeCount >= 5)
diff --git a/src/berry.c b/src/berry.c
index 2a8ce8380..7932fafea 100644
--- a/src/berry.c
+++ b/src/berry.c
@@ -10,9 +10,788 @@
#define FIRST_BERRY ITEM_CHERI_BERRY
#define LAST_BERRY ITEM_ENIGMA_BERRY
-extern struct Berry gBerries[];
+const u8 gBerryDescriptionPart1_Cheri[] = _("Blooms with delicate pretty flowers.");
+const u8 gBerryDescriptionPart2_Cheri[] = _("The bright red BERRY is very spicy.");
+const u8 gBerryDescriptionPart1_Chesto[] = _("The BERRY’s thick skin and fruit are");
+const u8 gBerryDescriptionPart2_Chesto[] = _("very tough. It is dry-tasting all over.");
+const u8 gBerryDescriptionPart1_Pecha[] = _("Very sweet and delicious.");
+const u8 gBerryDescriptionPart2_Pecha[] = _("Also very tender - handle with care.");
+const u8 gBerryDescriptionPart1_Rawst[] = _("If the leaves grow long and curly,");
+const u8 gBerryDescriptionPart2_Rawst[] = _("the BERRY seems to grow very bitter.");
+const u8 gBerryDescriptionPart1_Aspear[] = _("The hard BERRY is dense with a rich");
+const u8 gBerryDescriptionPart2_Aspear[] = _("juice. It is quite sour.");
+const u8 gBerryDescriptionPart1_Leppa[] = _("Grows slower than CHERI and others.");
+const u8 gBerryDescriptionPart2_Leppa[] = _("The smaller the BERRY, the tastier.");
+const u8 gBerryDescriptionPart1_Oran[] = _("A peculiar BERRY with a mix of flavors.");
+const u8 gBerryDescriptionPart2_Oran[] = _("BERRIES grow in half a day.");
+const u8 gBerryDescriptionPart1_Persim[] = _("Loves sunlight. The BERRY’s color");
+const u8 gBerryDescriptionPart2_Persim[] = _("grows vivid when exposed to the sun.");
+const u8 gBerryDescriptionPart1_Lum[] = _("Slow to grow. If raised with loving");
+const u8 gBerryDescriptionPart2_Lum[] = _("care, it may grow two BERRIES.");
+const u8 gBerryDescriptionPart1_Sitrus[] = _("Closely related to ORAN. The large");
+const u8 gBerryDescriptionPart2_Sitrus[] = _("BERRY has a well-rounded flavor.");
+const u8 gBerryDescriptionPart1_Figy[] = _("The BERRY, which looks chewed up,");
+const u8 gBerryDescriptionPart2_Figy[] = _("brims with spicy substances.");
+const u8 gBerryDescriptionPart1_Wiki[] = _("The BERRY is said to have grown lumpy");
+const u8 gBerryDescriptionPart2_Wiki[] = _("to help POKéMON grip it.");
+const u8 gBerryDescriptionPart1_Mago[] = _("The BERRY turns curvy as it grows.");
+const u8 gBerryDescriptionPart2_Mago[] = _("The curvier, the sweeter and tastier.");
+const u8 gBerryDescriptionPart1_Aguav[] = _("The flower is dainty. It is rare in its");
+const u8 gBerryDescriptionPart2_Aguav[] = _("ability to grow without light.");
+const u8 gBerryDescriptionPart1_Iapapa[] = _("The BERRY is very big and sour.");
+const u8 gBerryDescriptionPart2_Iapapa[] = _("It takes at least a day to grow.");
+const u8 gBerryDescriptionPart1_Razz[] = _("The red BERRY tastes slightly spicy.");
+const u8 gBerryDescriptionPart2_Razz[] = _("It grows quickly in just four hours.");
+const u8 gBerryDescriptionPart1_Bluk[] = _("The BERRY is blue on the outside, but");
+const u8 gBerryDescriptionPart2_Bluk[] = _("it blackens the mouth when eaten.");
+const u8 gBerryDescriptionPart1_Nanab[] = _("This BERRY was the seventh");
+const u8 gBerryDescriptionPart2_Nanab[] = _("discovered in the world. It is sweet.");
+const u8 gBerryDescriptionPart1_Wepear[] = _("The flower is small and white. It has a");
+const u8 gBerryDescriptionPart2_Wepear[] = _("delicate balance of bitter and sour.");
+const u8 gBerryDescriptionPart1_Pinap[] = _("Weak against wind and cold.");
+const u8 gBerryDescriptionPart2_Pinap[] = _("The fruit is spicy and the skin, sour.");
+const u8 gBerryDescriptionPart1_Pomeg[] = _("However much it is watered,");
+const u8 gBerryDescriptionPart2_Pomeg[] = _("it only grows up to six BERRIES.");
+const u8 gBerryDescriptionPart1_Kelpsy[] = _("A rare variety shaped like a root.");
+const u8 gBerryDescriptionPart2_Kelpsy[] = _("Grows a very large flower.");
+const u8 gBerryDescriptionPart1_Qualot[] = _("Loves water. Grows strong even in");
+const u8 gBerryDescriptionPart2_Qualot[] = _("locations with constant rainfall.");
+const u8 gBerryDescriptionPart1_Hondew[] = _("A BERRY that is very valuable and");
+const u8 gBerryDescriptionPart2_Hondew[] = _("rarely seen. It is very delicious.");
+const u8 gBerryDescriptionPart1_Grepa[] = _("Despite its tenderness and round");
+const u8 gBerryDescriptionPart2_Grepa[] = _("shape, the BERRY is unimaginably sour.");
+const u8 gBerryDescriptionPart1_Tamato[] = _("The BERRY is lip-bendingly spicy.");
+const u8 gBerryDescriptionPart2_Tamato[] = _("It takes time to grow.");
+const u8 gBerryDescriptionPart1_Cornn[] = _("A BERRY from an ancient era. May not");
+const u8 gBerryDescriptionPart2_Cornn[] = _("grow unless planted in quantity.");
+const u8 gBerryDescriptionPart1_Magost[] = _("A BERRY that is widely said to have");
+const u8 gBerryDescriptionPart2_Magost[] = _("a finely balanced flavor.");
+const u8 gBerryDescriptionPart1_Rabuta[] = _("A rare variety that is overgrown with");
+const u8 gBerryDescriptionPart2_Rabuta[] = _("hair. It is quite bitter.");
+const u8 gBerryDescriptionPart1_Nomel[] = _("Quite sour. Just one bite makes it");
+const u8 gBerryDescriptionPart2_Nomel[] = _("impossible to taste for three days.");
+const u8 gBerryDescriptionPart1_Spelon[] = _("The vividly red BERRY is very spicy.");
+const u8 gBerryDescriptionPart2_Spelon[] = _("Its warts secrete a spicy substance.");
+const u8 gBerryDescriptionPart1_Pamtre[] = _("Drifts on the sea from somewhere.");
+const u8 gBerryDescriptionPart2_Pamtre[] = _("It is thought to grow elsewhere.");
+const u8 gBerryDescriptionPart1_Watmel[] = _("A huge BERRY, with some over 20");
+const u8 gBerryDescriptionPart2_Watmel[] = _("inches discovered. Exceedingly sweet.");
+const u8 gBerryDescriptionPart1_Durin[] = _("Bitter to even look at. It is so");
+const u8 gBerryDescriptionPart2_Durin[] = _("bitter, no one has ever eaten it as is.");
+const u8 gBerryDescriptionPart1_Belue[] = _("It is glossy and looks delicious, but");
+const u8 gBerryDescriptionPart2_Belue[] = _("it is awfully sour. Takes time to grow.");
+const u8 gBerryDescriptionPart1_Liechi[] = _("A mysterious BERRY. It is rumored to");
+const u8 gBerryDescriptionPart2_Liechi[] = _("contain the power of the sea.");
+const u8 gBerryDescriptionPart1_Ganlon[] = _("A mysterious BERRY. It is rumored to");
+const u8 gBerryDescriptionPart2_Ganlon[] = _("contain the power of the land.");
+const u8 gBerryDescriptionPart1_Salac[] = _("A mysterious BERRY. It is rumored to");
+const u8 gBerryDescriptionPart2_Salac[] = _("contain the power of the sky.");
+const u8 gBerryDescriptionPart1_Petaya[] = _("A mysterious BERRY. It is rumored to");
+const u8 gBerryDescriptionPart2_Petaya[] = _("contain the power of all living things.");
+const u8 gBerryDescriptionPart1_Apicot[] = _("A very mystifying BERRY. No telling");
+const u8 gBerryDescriptionPart2_Apicot[] = _("what may happen or how it can be used.");
+const u8 gBerryDescriptionPart1_Lansat[] = _("Said to be a legendary BERRY.");
+const u8 gBerryDescriptionPart2_Lansat[] = _("Holding it supposedly brings joy.");
+const u8 gBerryDescriptionPart1_Starf[] = _("So strong, it was abandoned at the");
+const u8 gBerryDescriptionPart2_Starf[] = _("world’s edge. Considered a mirage.");
+const u8 gBerryDescriptionPart1_Enigma[] = _("A completely enigmatic BERRY.");
+const u8 gBerryDescriptionPart2_Enigma[] = _("Appears to have the power of stars.");
+
+const struct Berry gBerries[] =
+{
+ {
+ .name = _("CHERI"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 20,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Cheri,
+ .description2 = gBerryDescriptionPart2_Cheri,
+ .stageDuration = 3,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("CHESTO"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 80,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Chesto,
+ .description2 = gBerryDescriptionPart2_Chesto,
+ .stageDuration = 3,
+ .spicy = 0,
+ .dry = 10,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("PECHA"),
+ .firmness = BERRY_FIRMNESS_VERY_SOFT,
+ .size = 40,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Pecha,
+ .description2 = gBerryDescriptionPart2_Pecha,
+ .stageDuration = 3,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 10,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("RAWST"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 32,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Rawst,
+ .description2 = gBerryDescriptionPart2_Rawst,
+ .stageDuration = 3,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 10,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("ASPEAR"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 50,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Aspear,
+ .description2 = gBerryDescriptionPart2_Aspear,
+ .stageDuration = 3,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 10,
+ .smoothness = 25,
+ },
+ {
+ .name = _("LEPPA"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 28,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Leppa,
+ .description2 = gBerryDescriptionPart2_Leppa,
+ .stageDuration = 4,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("ORAN"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 35,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Oran,
+ .description2 = gBerryDescriptionPart2_Oran,
+ .stageDuration = 3,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("PERSIM"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 47,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Persim,
+ .description2 = gBerryDescriptionPart2_Persim,
+ .stageDuration = 3,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("LUM"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 34,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Lum,
+ .description2 = gBerryDescriptionPart2_Lum,
+ .stageDuration = 12,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("SITRUS"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 95,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Sitrus,
+ .description2 = gBerryDescriptionPart2_Sitrus,
+ .stageDuration = 6,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("FIGY"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 100,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Figy,
+ .description2 = gBerryDescriptionPart2_Figy,
+ .stageDuration = 6,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("WIKI"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 115,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Wiki,
+ .description2 = gBerryDescriptionPart2_Wiki,
+ .stageDuration = 6,
+ .spicy = 0,
+ .dry = 10,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("MAGO"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 126,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Mago,
+ .description2 = gBerryDescriptionPart2_Mago,
+ .stageDuration = 6,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 10,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("AGUAV"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 64,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Aguav,
+ .description2 = gBerryDescriptionPart2_Aguav,
+ .stageDuration = 6,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 10,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("IAPAPA"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 223,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Iapapa,
+ .description2 = gBerryDescriptionPart2_Iapapa,
+ .stageDuration = 6,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 10,
+ .smoothness = 25,
+ },
+ {
+ .name = _("RAZZ"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 120,
+ .maxYield = 6,
+ .minYield = 3,
+ .description1 = gBerryDescriptionPart1_Razz,
+ .description2 = gBerryDescriptionPart2_Razz,
+ .stageDuration = 1,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 20,
+ },
+ {
+ .name = _("BLUK"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 108,
+ .maxYield = 6,
+ .minYield = 3,
+ .description1 = gBerryDescriptionPart1_Bluk,
+ .description2 = gBerryDescriptionPart2_Bluk,
+ .stageDuration = 1,
+ .spicy = 0,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 20,
+ },
+ {
+ .name = _("NANAB"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 77,
+ .maxYield = 6,
+ .minYield = 3,
+ .description1 = gBerryDescriptionPart1_Nanab,
+ .description2 = gBerryDescriptionPart2_Nanab,
+ .stageDuration = 1,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 0,
+ .smoothness = 20,
+ },
+ {
+ .name = _("WEPEAR"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 74,
+ .maxYield = 6,
+ .minYield = 3,
+ .description1 = gBerryDescriptionPart1_Wepear,
+ .description2 = gBerryDescriptionPart2_Wepear,
+ .stageDuration = 1,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("PINAP"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 80,
+ .maxYield = 6,
+ .minYield = 3,
+ .description1 = gBerryDescriptionPart1_Pinap,
+ .description2 = gBerryDescriptionPart2_Pinap,
+ .stageDuration = 1,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("POMEG"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 135,
+ .maxYield = 6,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Pomeg,
+ .description2 = gBerryDescriptionPart2_Pomeg,
+ .stageDuration = 3,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 0,
+ .smoothness = 20,
+ },
+ {
+ .name = _("KELPSY"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 150,
+ .maxYield = 6,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Kelpsy,
+ .description2 = gBerryDescriptionPart2_Kelpsy,
+ .stageDuration = 3,
+ .spicy = 0,
+ .dry = 10,
+ .sweet = 0,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("QUALOT"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 110,
+ .maxYield = 6,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Qualot,
+ .description2 = gBerryDescriptionPart2_Qualot,
+ .stageDuration = 3,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 10,
+ .bitter = 0,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("HONDEW"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 162,
+ .maxYield = 6,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Hondew,
+ .description2 = gBerryDescriptionPart2_Hondew,
+ .stageDuration = 3,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 0,
+ .bitter = 10,
+ .sour = 0,
+ .smoothness = 20,
+ },
+ {
+ .name = _("GREPA"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 149,
+ .maxYield = 6,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Grepa,
+ .description2 = gBerryDescriptionPart2_Grepa,
+ .stageDuration = 3,
+ .spicy = 0,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 0,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("TAMATO"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 200,
+ .maxYield = 4,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Tamato,
+ .description2 = gBerryDescriptionPart2_Tamato,
+ .stageDuration = 6,
+ .spicy = 20,
+ .dry = 10,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 30,
+ },
+ {
+ .name = _("CORNN"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 75,
+ .maxYield = 4,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Cornn,
+ .description2 = gBerryDescriptionPart2_Cornn,
+ .stageDuration = 6,
+ .spicy = 0,
+ .dry = 20,
+ .sweet = 10,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 30,
+ },
+ {
+ .name = _("MAGOST"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 140,
+ .maxYield = 4,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Magost,
+ .description2 = gBerryDescriptionPart2_Magost,
+ .stageDuration = 6,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 20,
+ .bitter = 10,
+ .sour = 0,
+ .smoothness = 30,
+ },
+ {
+ .name = _("RABUTA"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 226,
+ .maxYield = 4,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Rabuta,
+ .description2 = gBerryDescriptionPart2_Rabuta,
+ .stageDuration = 6,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 20,
+ .sour = 10,
+ .smoothness = 30,
+ },
+ {
+ .name = _("NOMEL"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 285,
+ .maxYield = 4,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Nomel,
+ .description2 = gBerryDescriptionPart2_Nomel,
+ .stageDuration = 6,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 20,
+ .smoothness = 30,
+ },
+ {
+ .name = _("SPELON"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 133,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Spelon,
+ .description2 = gBerryDescriptionPart2_Spelon,
+ .stageDuration = 18,
+ .spicy = 40,
+ .dry = 10,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 70,
+ },
+ {
+ .name = _("PAMTRE"),
+ .firmness = BERRY_FIRMNESS_VERY_SOFT,
+ .size = 244,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Pamtre,
+ .description2 = gBerryDescriptionPart2_Pamtre,
+ .stageDuration = 18,
+ .spicy = 0,
+ .dry = 40,
+ .sweet = 10,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 70,
+ },
+ {
+ .name = _("WATMEL"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 250,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Watmel,
+ .description2 = gBerryDescriptionPart2_Watmel,
+ .stageDuration = 18,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 40,
+ .bitter = 10,
+ .sour = 0,
+ .smoothness = 70,
+ },
+ {
+ .name = _("DURIN"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 280,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Durin,
+ .description2 = gBerryDescriptionPart2_Durin,
+ .stageDuration = 18,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 40,
+ .sour = 10,
+ .smoothness = 70,
+ },
+ {
+ .name = _("BELUE"),
+ .firmness = BERRY_FIRMNESS_VERY_SOFT,
+ .size = 300,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Belue,
+ .description2 = gBerryDescriptionPart2_Belue,
+ .stageDuration = 18,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 40,
+ .smoothness = 70,
+ },
+ {
+ .name = _("LIECHI"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 111,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Liechi,
+ .description2 = gBerryDescriptionPart2_Liechi,
+ .stageDuration = 24,
+ .spicy = 40,
+ .dry = 0,
+ .sweet = 40,
+ .bitter = 0,
+ .sour = 10,
+ .smoothness = 80,
+ },
+ {
+ .name = _("GANLON"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 33,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Ganlon,
+ .description2 = gBerryDescriptionPart2_Ganlon,
+ .stageDuration = 24,
+ .spicy = 0,
+ .dry = 40,
+ .sweet = 0,
+ .bitter = 40,
+ .sour = 0,
+ .smoothness = 80,
+ },
+ {
+ .name = _("SALAC"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 95,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Salac,
+ .description2 = gBerryDescriptionPart2_Salac,
+ .stageDuration = 24,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 40,
+ .bitter = 0,
+ .sour = 40,
+ .smoothness = 80,
+ },
+ {
+ .name = _("PETAYA"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 237,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Petaya,
+ .description2 = gBerryDescriptionPart2_Petaya,
+ .stageDuration = 24,
+ .spicy = 40,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 40,
+ .sour = 0,
+ .smoothness = 80,
+ },
+ {
+ .name = _("APICOT"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 75,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Apicot,
+ .description2 = gBerryDescriptionPart2_Apicot,
+ .stageDuration = 24,
+ .spicy = 0,
+ .dry = 40,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 40,
+ .smoothness = 80,
+ },
+ {
+ .name = _("LANSAT"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 97,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Lansat,
+ .description2 = gBerryDescriptionPart2_Lansat,
+ .stageDuration = 24,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 30,
+ },
+ {
+ .name = _("STARF"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 153,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Starf,
+ .description2 = gBerryDescriptionPart2_Starf,
+ .stageDuration = 24,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 30,
+ },
+ {
+ .name = _("ENIGMA"),
+ .firmness = BERRY_FIRMNESS_UNKNOWN,
+ .size = 0,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Enigma,
+ .description2 = gBerryDescriptionPart2_Enigma,
+ .stageDuration = 24,
+ .spicy = 40,
+ .dry = 40,
+ .sweet = 40,
+ .bitter = 40,
+ .sour = 40,
+ .smoothness = 40,
+ },
+};
+
+const struct BerryTree gBlankBerryTree = {0};
+
extern u8 BerryTreeScript;
-extern struct BerryTree gBlankBerryTree;
extern u16 gScriptItemId;
extern u16 gScriptLastTalked;
extern u16 gSpecialVar_0x8004;
@@ -39,8 +818,8 @@ void SetEnigmaBerry(u8 *src)
u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry)
{
- u8 *description1;
- u8 *description2;
+ const u8 *description1;
+ const u8 *description2;
u32 i;
u32 checksum;
u8 *dest;
@@ -74,7 +853,7 @@ bool32 IsEnigmaBerryValid(void)
return TRUE;
}
-struct Berry *GetBerryInfo(u8 berry)
+const struct Berry *GetBerryInfo(u8 berry)
{
if (berry == 0x2B && IsEnigmaBerryValid())
return &gSaveBlock1.enigmaBerry.berry;
@@ -319,7 +1098,7 @@ u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water)
u8 CalcBerryYield(struct BerryTree *tree)
{
- struct Berry *berry = GetBerryInfo(tree->berry);
+ const struct Berry *berry = GetBerryInfo(tree->berry);
u8 min = berry->minYield;
u8 max = berry->maxYield;
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index 040b9acd1..103f0a85e 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -265,7 +265,7 @@ static void sub_8146480(u8 taskid)
static void sub_81464E4(void)
{
- struct Berry *berryInfo;
+ const struct Berry *berryInfo;
u32 size;
s32 sizeMajor;
s32 sizeMinor;
@@ -306,7 +306,7 @@ static void sub_81464E4(void)
static void sub_8146600(u8 berry)
{
- struct Berry *berryInfo;
+ const struct Berry *berryInfo;
u16 i;
berryInfo = GetBerryInfo(berry + 1);
@@ -344,98 +344,98 @@ __attribute__((naked))
static void sub_81466E8(u8 taskId, s8 direction)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- lsls r1, 24\n\
- lsrs r2, r1, 24\n\
- lsls r0, r7, 2\n\
- adds r0, r7\n\
- lsls r0, 3\n\
- ldr r1, _08146748 @ =gTasks + 0x8\n\
- adds r6, r0, r1\n\
- ldr r4, _0814674C @ =gUnknown_03005D10\n\
- movs r0, 0xC\n\
- adds r0, r4\n\
- mov r8, r0\n\
- ldrb r1, [r0, 0x1]\n\
- ldrb r0, [r4, 0xC]\n\
- adds r1, r0\n\
- cmp r1, 0\n\
- bne _08146718\n\
- lsls r0, r2, 24\n\
- cmp r0, 0\n\
- blt _0814678C\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ lsls r1, 24\n\
+ lsrs r2, r1, 24\n\
+ lsls r0, r7, 2\n\
+ adds r0, r7\n\
+ lsls r0, 3\n\
+ ldr r1, _08146748 @ =gTasks + 0x8\n\
+ adds r6, r0, r1\n\
+ ldr r4, _0814674C @ =gUnknown_03005D10\n\
+ movs r0, 0xC\n\
+ adds r0, r4\n\
+ mov r8, r0\n\
+ ldrb r1, [r0, 0x1]\n\
+ ldrb r0, [r4, 0xC]\n\
+ adds r1, r0\n\
+ cmp r1, 0\n\
+ bne _08146718\n\
+ lsls r0, r2, 24\n\
+ cmp r0, 0\n\
+ blt _0814678C\n\
_08146718:\n\
- adds r0, r1, 0x1\n\
- lsls r5, r2, 24\n\
- mov r1, r8\n\
- ldrb r1, [r1, 0x2]\n\
- cmp r0, r1\n\
- bne _08146728\n\
- cmp r5, 0\n\
- bgt _0814678C\n\
+ adds r0, r1, 0x1\n\
+ lsls r5, r2, 24\n\
+ mov r1, r8\n\
+ ldrb r1, [r1, 0x2]\n\
+ cmp r0, r1\n\
+ bne _08146728\n\
+ cmp r5, 0\n\
+ bgt _0814678C\n\
_08146728:\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- mov r2, r8\n\
- ldrb r3, [r2, 0x1]\n\
- ldrb r4, [r4, 0xC]\n\
- mov r12, r4\n\
- adds r0, r3, r4\n\
- asrs r2, r5, 24\n\
- adds r1, r0, r2\n\
- cmp r1, 0\n\
- bge _08146750\n\
- negs r0, r0\n\
- strh r0, [r6, 0x2]\n\
- b _08146766\n\
- .align 2, 0\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ mov r2, r8\n\
+ ldrb r3, [r2, 0x1]\n\
+ ldrb r4, [r4, 0xC]\n\
+ mov r12, r4\n\
+ adds r0, r3, r4\n\
+ asrs r2, r5, 24\n\
+ adds r1, r0, r2\n\
+ cmp r1, 0\n\
+ bge _08146750\n\
+ negs r0, r0\n\
+ strh r0, [r6, 0x2]\n\
+ b _08146766\n\
+ .align 2, 0\n\
_08146748: .4byte gTasks + 0x8\n\
_0814674C: .4byte gUnknown_03005D10\n\
_08146750:\n\
- mov r4, r8\n\
- ldrb r0, [r4, 0x2]\n\
- cmp r1, r0\n\
- blt _08146764\n\
- subs r0, r3\n\
- mov r1, r12\n\
- subs r0, r1\n\
- subs r0, 0x1\n\
- strh r0, [r6, 0x2]\n\
- b _08146766\n\
+ mov r4, r8\n\
+ ldrb r0, [r4, 0x2]\n\
+ cmp r1, r0\n\
+ blt _08146764\n\
+ subs r0, r3\n\
+ mov r1, r12\n\
+ subs r0, r1\n\
+ subs r0, 0x1\n\
+ strh r0, [r6, 0x2]\n\
+ b _08146766\n\
_08146764:\n\
- strh r2, [r6, 0x2]\n\
+ strh r2, [r6, 0x2]\n\
_08146766:\n\
- ldr r0, _08146780 @ =gTasks\n\
- lsls r1, r7, 2\n\
- adds r1, r7\n\
- lsls r1, 3\n\
- adds r1, r0\n\
- ldr r0, _08146784 @ =sub_8146798\n\
- str r0, [r1]\n\
- cmp r5, 0\n\
- bge _08146788\n\
- movs r2, 0x10\n\
- negs r2, r2\n\
- adds r0, r2, 0\n\
- b _0814678A\n\
- .align 2, 0\n\
+ ldr r0, _08146780 @ =gTasks\n\
+ lsls r1, r7, 2\n\
+ adds r1, r7\n\
+ lsls r1, 3\n\
+ adds r1, r0\n\
+ ldr r0, _08146784 @ =sub_8146798\n\
+ str r0, [r1]\n\
+ cmp r5, 0\n\
+ bge _08146788\n\
+ movs r2, 0x10\n\
+ negs r2, r2\n\
+ adds r0, r2, 0\n\
+ b _0814678A\n\
+ .align 2, 0\n\
_08146780: .4byte gTasks\n\
_08146784: .4byte sub_8146798\n\
_08146788:\n\
- movs r0, 0x10\n\
+ movs r0, 0x10\n\
_0814678A:\n\
- strh r0, [r6]\n\
+ strh r0, [r6]\n\
_0814678C:\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
}
void sub_8146798(u8 taskId)
@@ -461,90 +461,90 @@ __attribute__((naked))
static void sub_8146810(s8 berry)
{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- lsls r0, 24\n\
- lsrs r3, r0, 24\n\
- adds r4, r3, 0\n\
- lsls r0, r3, 24\n\
- asrs r1, r0, 24\n\
- cmp r1, 0\n\
- ble _08146848\n\
- ldr r0, _08146840 @ =gUnknown_03005D10\n\
- adds r4, r0, 0\n\
- adds r4, 0xC\n\
- ldrb r2, [r0, 0xC]\n\
- adds r1, r2, r1\n\
- adds r6, r0, 0\n\
- cmp r1, 0x7\n\
- ble _08146844\n\
- adds r0, r3, 0\n\
- adds r0, 0xF9\n\
- adds r0, r2, r0\n\
- ldrb r1, [r4, 0x1]\n\
- adds r0, r1\n\
- strb r0, [r4, 0x1]\n\
- movs r0, 0x7\n\
- b _0814686E\n\
- .align 2, 0\n\
+ push {r4-r6,lr}\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ adds r4, r3, 0\n\
+ lsls r0, r3, 24\n\
+ asrs r1, r0, 24\n\
+ cmp r1, 0\n\
+ ble _08146848\n\
+ ldr r0, _08146840 @ =gUnknown_03005D10\n\
+ adds r4, r0, 0\n\
+ adds r4, 0xC\n\
+ ldrb r2, [r0, 0xC]\n\
+ adds r1, r2, r1\n\
+ adds r6, r0, 0\n\
+ cmp r1, 0x7\n\
+ ble _08146844\n\
+ adds r0, r3, 0\n\
+ adds r0, 0xF9\n\
+ adds r0, r2, r0\n\
+ ldrb r1, [r4, 0x1]\n\
+ adds r0, r1\n\
+ strb r0, [r4, 0x1]\n\
+ movs r0, 0x7\n\
+ b _0814686E\n\
+ .align 2, 0\n\
_08146840: .4byte gUnknown_03005D10\n\
_08146844:\n\
- adds r0, r2, r3\n\
- b _0814686E\n\
+ adds r0, r2, r3\n\
+ b _0814686E\n\
_08146848:\n\
- ldr r0, _08146868 @ =gUnknown_03005D10\n\
- adds r5, r0, 0\n\
- adds r5, 0xC\n\
- ldrb r2, [r0, 0xC]\n\
- adds r1, r2, r1\n\
- adds r6, r0, 0\n\
- cmp r1, 0\n\
- bge _0814686C\n\
- adds r0, r2, r3\n\
- ldrb r1, [r5, 0x1]\n\
- adds r0, r1\n\
- movs r1, 0\n\
- strb r0, [r5, 0x1]\n\
- strb r1, [r6, 0xC]\n\
- b _08146870\n\
- .align 2, 0\n\
+ ldr r0, _08146868 @ =gUnknown_03005D10\n\
+ adds r5, r0, 0\n\
+ adds r5, 0xC\n\
+ ldrb r2, [r0, 0xC]\n\
+ adds r1, r2, r1\n\
+ adds r6, r0, 0\n\
+ cmp r1, 0\n\
+ bge _0814686C\n\
+ adds r0, r2, r3\n\
+ ldrb r1, [r5, 0x1]\n\
+ adds r0, r1\n\
+ movs r1, 0\n\
+ strb r0, [r5, 0x1]\n\
+ strb r1, [r6, 0xC]\n\
+ b _08146870\n\
+ .align 2, 0\n\
_08146868: .4byte gUnknown_03005D10\n\
_0814686C:\n\
- adds r0, r2, r4\n\
+ adds r0, r2, r4\n\
_0814686E:\n\
- strb r0, [r6, 0xC]\n\
+ strb r0, [r6, 0xC]\n\
_08146870:\n\
- ldr r2, _081468AC @ =gScriptItemId\n\
- movs r0, 0x3\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldrb r1, [r0, 0x1]\n\
- ldrb r0, [r0]\n\
- adds r1, r0\n\
- ldr r0, _081468B0 @ =gUnknown_03005D24\n\
- ldr r0, [r0]\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrh r0, [r1]\n\
- strh r0, [r2]\n\
- ldr r0, _081468B4 @ =gUnknown_0203932C\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- ldr r1, _081468B8 @ =gSprites\n\
- adds r0, r1\n\
- bl DestroySprite\n\
- bl sub_81466A0\n\
- bl sub_80A7DD4\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ ldr r2, _081468AC @ =gScriptItemId\n\
+ movs r0, 0x3\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldrb r1, [r0, 0x1]\n\
+ ldrb r0, [r0]\n\
+ adds r1, r0\n\
+ ldr r0, _081468B0 @ =gUnknown_03005D24\n\
+ ldr r0, [r0]\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrh r0, [r1]\n\
+ strh r0, [r2]\n\
+ ldr r0, _081468B4 @ =gUnknown_0203932C\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ ldr r1, _081468B8 @ =gSprites\n\
+ adds r0, r1\n\
+ bl DestroySprite\n\
+ bl sub_81466A0\n\
+ bl sub_80A7DD4\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_081468AC: .4byte gScriptItemId\n\
_081468B0: .4byte gUnknown_03005D24\n\
_081468B4: .4byte gUnknown_0203932C\n\
_081468B8: .4byte gSprites\n\
- .syntax divided\n");
+ .syntax divided\n");
}
static void sub_81468BC(void)
diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c
index 8e020829a..293e2f24d 100644
--- a/src/calculate_base_damage.c
+++ b/src/calculate_base_damage.c
@@ -292,10 +292,10 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && sub_803C348(2) == 2)
damage /= 2;
- // are effects of weather negated with cloud nine or air lock?
+ // are effects of weather negated with cloud nine or air lock?
if (!sub_8018324(0xE, 0, ABILITY_CLOUD_NINE, 0, 0) && !sub_8018324(0xE, 0, ABILITY_AIR_LOCK, 0, 0))
{
- // rain?
+ // rain?
if (gBattleWeather & 1)
{
if (type == TYPE_FIRE)
@@ -330,328 +330,328 @@ __attribute__((naked))
s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 a7, u8 a8)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x2C\n\
- adds r7, r0, 0\n\
- str r1, [sp, 0x4]\n\
- str r2, [sp, 0x8]\n\
- ldr r0, [sp, 0x4C]\n\
- ldr r1, [sp, 0x50]\n\
- ldr r2, [sp, 0x54]\n\
- ldr r4, [sp, 0x58]\n\
- lsls r3, 16\n\
- lsrs r3, 16\n\
- str r3, [sp, 0xC]\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- lsls r1, 24\n\
- lsrs r6, r1, 24\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- str r2, [sp, 0x10]\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- movs r5, 0\n\
- cmp r3, 0\n\
- bne _0803BA80\n\
- ldr r2, _0803BA78 @ =gBattleMovePower\n\
- ldr r1, _0803BA7C @ =gBattleMoves\n\
- ldr r3, [sp, 0x8]\n\
- lsls r0, r3, 1\n\
- adds r0, r3\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x1]\n\
- strh r0, [r2]\n\
- b _0803BA84\n\
- .align 2, 0\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x2C\n\
+ adds r7, r0, 0\n\
+ str r1, [sp, 0x4]\n\
+ str r2, [sp, 0x8]\n\
+ ldr r0, [sp, 0x4C]\n\
+ ldr r1, [sp, 0x50]\n\
+ ldr r2, [sp, 0x54]\n\
+ ldr r4, [sp, 0x58]\n\
+ lsls r3, 16\n\
+ lsrs r3, 16\n\
+ str r3, [sp, 0xC]\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ lsls r1, 24\n\
+ lsrs r6, r1, 24\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ str r2, [sp, 0x10]\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ movs r5, 0\n\
+ cmp r3, 0\n\
+ bne _0803BA80\n\
+ ldr r2, _0803BA78 @ =gBattleMovePower\n\
+ ldr r1, _0803BA7C @ =gBattleMoves\n\
+ ldr r3, [sp, 0x8]\n\
+ lsls r0, r3, 1\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x1]\n\
+ strh r0, [r2]\n\
+ b _0803BA84\n\
+ .align 2, 0\n\
_0803BA78: .4byte gBattleMovePower\n\
_0803BA7C: .4byte gBattleMoves\n\
_0803BA80:\n\
- ldr r0, _0803BA9C @ =gBattleMovePower\n\
- strh r3, [r0]\n\
+ ldr r0, _0803BA9C @ =gBattleMovePower\n\
+ strh r3, [r0]\n\
_0803BA84:\n\
- cmp r6, 0\n\
- bne _0803BAA4\n\
- ldr r1, _0803BAA0 @ =gBattleMoves\n\
- ldr r6, [sp, 0x8]\n\
- lsls r0, r6, 1\n\
- adds r0, r6\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x2]\n\
- mov r9, r0\n\
- b _0803BAAE\n\
- .align 2, 0\n\
+ cmp r6, 0\n\
+ bne _0803BAA4\n\
+ ldr r1, _0803BAA0 @ =gBattleMoves\n\
+ ldr r6, [sp, 0x8]\n\
+ lsls r0, r6, 1\n\
+ adds r0, r6\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x2]\n\
+ mov r9, r0\n\
+ b _0803BAAE\n\
+ .align 2, 0\n\
_0803BA9C: .4byte gBattleMovePower\n\
_0803BAA0: .4byte gBattleMoves\n\
_0803BAA4:\n\
- movs r0, 0x3F\n\
- mov r9, r0\n\
- mov r1, r9\n\
- ands r1, r6\n\
- mov r9, r1\n\
+ movs r0, 0x3F\n\
+ mov r9, r0\n\
+ mov r1, r9\n\
+ ands r1, r6\n\
+ mov r9, r1\n\
_0803BAAE:\n\
- ldrh r6, [r7, 0x2]\n\
- ldr r2, [sp, 0x4]\n\
- ldrh r2, [r2, 0x4]\n\
- str r2, [sp, 0x14]\n\
- ldrh r3, [r7, 0x8]\n\
- mov r8, r3\n\
- ldr r0, [sp, 0x4]\n\
- ldrh r0, [r0, 0xA]\n\
- str r0, [sp, 0x18]\n\
- ldrh r0, [r7, 0x2E]\n\
- cmp r0, 0xAF\n\
- bne _0803BAE0\n\
- ldr r1, _0803BADC @ =gEnigmaBerries\n\
- ldr r2, [sp, 0x10]\n\
- lsls r0, r2, 3\n\
- subs r0, r2\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r3, [r0, 0x7]\n\
- mov r10, r3\n\
- ldrb r0, [r0, 0x1A]\n\
- b _0803BAF6\n\
- .align 2, 0\n\
+ ldrh r6, [r7, 0x2]\n\
+ ldr r2, [sp, 0x4]\n\
+ ldrh r2, [r2, 0x4]\n\
+ str r2, [sp, 0x14]\n\
+ ldrh r3, [r7, 0x8]\n\
+ mov r8, r3\n\
+ ldr r0, [sp, 0x4]\n\
+ ldrh r0, [r0, 0xA]\n\
+ str r0, [sp, 0x18]\n\
+ ldrh r0, [r7, 0x2E]\n\
+ cmp r0, 0xAF\n\
+ bne _0803BAE0\n\
+ ldr r1, _0803BADC @ =gEnigmaBerries\n\
+ ldr r2, [sp, 0x10]\n\
+ lsls r0, r2, 3\n\
+ subs r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r3, [r0, 0x7]\n\
+ mov r10, r3\n\
+ ldrb r0, [r0, 0x1A]\n\
+ b _0803BAF6\n\
+ .align 2, 0\n\
_0803BADC: .4byte gEnigmaBerries\n\
_0803BAE0:\n\
- ldrh r0, [r7, 0x2E]\n\
- bl ItemId_GetHoldEffect\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- ldrh r0, [r7, 0x2E]\n\
- bl ItemId_GetHoldEffectParam\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
+ ldrh r0, [r7, 0x2E]\n\
+ bl ItemId_GetHoldEffect\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+ ldrh r0, [r7, 0x2E]\n\
+ bl ItemId_GetHoldEffectParam\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
_0803BAF6:\n\
- str r0, [sp, 0x20]\n\
- ldr r1, [sp, 0x4]\n\
- ldrh r0, [r1, 0x2E]\n\
- cmp r0, 0xAF\n\
- bne _0803BB26\n\
- ldr r1, _0803BB10 @ =gEnigmaBerries\n\
- lsls r0, r4, 3\n\
- subs r0, r4\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x7]\n\
- str r0, [sp, 0x1C]\n\
- b _0803BB3C\n\
- .align 2, 0\n\
+ str r0, [sp, 0x20]\n\
+ ldr r1, [sp, 0x4]\n\
+ ldrh r0, [r1, 0x2E]\n\
+ cmp r0, 0xAF\n\
+ bne _0803BB26\n\
+ ldr r1, _0803BB10 @ =gEnigmaBerries\n\
+ lsls r0, r4, 3\n\
+ subs r0, r4\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x7]\n\
+ str r0, [sp, 0x1C]\n\
+ b _0803BB3C\n\
+ .align 2, 0\n\
_0803BB10: .4byte gEnigmaBerries\n\
_0803BB14:\n\
- ldr r0, [sp, 0x20]\n\
- adds r0, 0x64\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- b _0803BCDC\n\
+ ldr r0, [sp, 0x20]\n\
+ adds r0, 0x64\n\
+ muls r0, r6\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
+ b _0803BCDC\n\
_0803BB26:\n\
- ldr r2, [sp, 0x4]\n\
- ldrh r0, [r2, 0x2E]\n\
- bl ItemId_GetHoldEffect\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x1C]\n\
- ldr r3, [sp, 0x4]\n\
- ldrh r0, [r3, 0x2E]\n\
- bl ItemId_GetHoldEffectParam\n\
+ ldr r2, [sp, 0x4]\n\
+ ldrh r0, [r2, 0x2E]\n\
+ bl ItemId_GetHoldEffect\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x1C]\n\
+ ldr r3, [sp, 0x4]\n\
+ ldrh r0, [r3, 0x2E]\n\
+ bl ItemId_GetHoldEffectParam\n\
_0803BB3C:\n\
- adds r0, r7, 0\n\
- adds r0, 0x20\n\
- ldrb r1, [r0]\n\
- str r0, [sp, 0x24]\n\
- cmp r1, 0x25\n\
- beq _0803BB4C\n\
- cmp r1, 0x4A\n\
- bne _0803BB50\n\
+ adds r0, r7, 0\n\
+ adds r0, 0x20\n\
+ ldrb r1, [r0]\n\
+ str r0, [sp, 0x24]\n\
+ cmp r1, 0x25\n\
+ beq _0803BB4C\n\
+ cmp r1, 0x4A\n\
+ bne _0803BB50\n\
_0803BB4C:\n\
- lsls r0, r6, 17\n\
- lsrs r6, r0, 16\n\
+ lsls r0, r6, 17\n\
+ lsrs r6, r0, 16\n\
_0803BB50:\n\
- ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0803BCBC @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BB5E\n\
- b _0803BC78\n\
+ ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _0803BCBC @ =0x00000902\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803BB5E\n\
+ b _0803BC78\n\
_0803BB5E:\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BB98\n\
- ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0803BB98\n\
- ldr r0, _0803BCC4 @ =0x00000807\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BB98\n\
- ldr r0, [sp, 0x10]\n\
- bl battle_side_get_owner\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803BB98\n\
- movs r0, 0x6E\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803BB98\n\
+ ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r1, r0\n\
+ beq _0803BB98\n\
+ ldr r0, _0803BCC4 @ =0x00000807\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BB98\n\
+ ldr r0, [sp, 0x10]\n\
+ bl battle_side_get_owner\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0803BB98\n\
+ movs r0, 0x6E\n\
+ muls r0, r6\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
_0803BB98:\n\
- ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0803BCBC @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BC78\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BBE2\n\
- ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0803BBE2\n\
- ldr r0, _0803BCC8 @ =0x0000080b\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BBE2\n\
- adds r0, r4, 0\n\
- bl battle_side_get_owner\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803BBE2\n\
- movs r0, 0x6E\n\
- ldr r1, [sp, 0x14]\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x14]\n\
+ ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _0803BCBC @ =0x00000902\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0803BC78\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803BBE2\n\
+ ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r1, r0\n\
+ beq _0803BBE2\n\
+ ldr r0, _0803BCC8 @ =0x0000080b\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BBE2\n\
+ adds r0, r4, 0\n\
+ bl battle_side_get_owner\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0803BBE2\n\
+ movs r0, 0x6E\n\
+ ldr r1, [sp, 0x14]\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x14]\n\
_0803BBE2:\n\
- ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0803BCBC @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BC78\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BC2E\n\
- ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0803BC2E\n\
- ldr r0, _0803BCCC @ =0x0000080d\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BC2E\n\
- ldr r0, [sp, 0x10]\n\
- bl battle_side_get_owner\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803BC2E\n\
- movs r0, 0x6E\n\
- mov r2, r8\n\
- muls r2, r0\n\
- adds r0, r2, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
+ ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _0803BCBC @ =0x00000902\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0803BC78\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803BC2E\n\
+ ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r1, r0\n\
+ beq _0803BC2E\n\
+ ldr r0, _0803BCCC @ =0x0000080d\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BC2E\n\
+ ldr r0, [sp, 0x10]\n\
+ bl battle_side_get_owner\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0803BC2E\n\
+ movs r0, 0x6E\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
_0803BC2E:\n\
- ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0803BCBC @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BC78\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BC78\n\
- ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0803BC78\n\
- ldr r0, _0803BCCC @ =0x0000080d\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BC78\n\
- adds r0, r4, 0\n\
- bl battle_side_get_owner\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803BC78\n\
- movs r0, 0x6E\n\
- ldr r3, [sp, 0x18]\n\
- muls r0, r3\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x18]\n\
+ ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _0803BCBC @ =0x00000902\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0803BC78\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803BC78\n\
+ ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r1, r0\n\
+ beq _0803BC78\n\
+ ldr r0, _0803BCCC @ =0x0000080d\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BC78\n\
+ adds r0, r4, 0\n\
+ bl battle_side_get_owner\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0803BC78\n\
+ movs r0, 0x6E\n\
+ ldr r3, [sp, 0x18]\n\
+ muls r0, r3\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x18]\n\
_0803BC78:\n\
- movs r2, 0\n\
- ldr r4, _0803BCD0 @ =gHoldEffectToType\n\
- ldr r0, [sp, 0x4]\n\
- adds r0, 0x20\n\
- str r0, [sp, 0x28]\n\
- adds r3, r4, 0\n\
+ movs r2, 0\n\
+ ldr r4, _0803BCD0 @ =gHoldEffectToType\n\
+ ldr r0, [sp, 0x4]\n\
+ adds r0, 0x20\n\
+ str r0, [sp, 0x28]\n\
+ adds r3, r4, 0\n\
_0803BC84:\n\
- lsls r1, r2, 1\n\
- ldrb r0, [r3]\n\
- cmp r10, r0\n\
- bne _0803BCD4\n\
- adds r0, r4, 0x1\n\
- adds r0, r1, r0\n\
- ldrb r0, [r0]\n\
- cmp r9, r0\n\
- bne _0803BCD4\n\
- mov r1, r9\n\
- cmp r1, 0x8\n\
- bhi _0803BC9E\n\
- b _0803BB14\n\
+ lsls r1, r2, 1\n\
+ ldrb r0, [r3]\n\
+ cmp r10, r0\n\
+ bne _0803BCD4\n\
+ adds r0, r4, 0x1\n\
+ adds r0, r1, r0\n\
+ ldrb r0, [r0]\n\
+ cmp r9, r0\n\
+ bne _0803BCD4\n\
+ mov r1, r9\n\
+ cmp r1, 0x8\n\
+ bhi _0803BC9E\n\
+ b _0803BB14\n\
_0803BC9E:\n\
- ldr r0, [sp, 0x20]\n\
- adds r0, 0x64\n\
- mov r2, r8\n\
- muls r2, r0\n\
- adds r0, r2, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
- b _0803BCDC\n\
- .align 2, 0\n\
+ ldr r0, [sp, 0x20]\n\
+ adds r0, 0x64\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
+ b _0803BCDC\n\
+ .align 2, 0\n\
_0803BCB8: .4byte gBattleTypeFlags\n\
_0803BCBC: .4byte 0x00000902\n\
_0803BCC0: .4byte gTrainerBattleOpponent\n\
@@ -660,398 +660,398 @@ _0803BCC8: .4byte 0x0000080b\n\
_0803BCCC: .4byte 0x0000080d\n\
_0803BCD0: .4byte gHoldEffectToType\n\
_0803BCD4:\n\
- adds r3, 0x2\n\
- adds r2, 0x1\n\
- cmp r2, 0x10\n\
- bls _0803BC84\n\
+ adds r3, 0x2\n\
+ adds r2, 0x1\n\
+ cmp r2, 0x10\n\
+ bls _0803BC84\n\
_0803BCDC:\n\
- mov r3, r10\n\
- cmp r3, 0x1D\n\
- bne _0803BCF0\n\
- movs r0, 0x96\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
+ mov r3, r10\n\
+ cmp r3, 0x1D\n\
+ bne _0803BCF0\n\
+ movs r0, 0x96\n\
+ muls r0, r6\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
_0803BCF0:\n\
- mov r0, r10\n\
- cmp r0, 0x22\n\
- bne _0803BD28\n\
- ldr r0, _0803BFDC @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BD28\n\
- ldr r1, _0803BFE0 @ =0xfffffe69\n\
- adds r0, r1, 0\n\
- ldrh r2, [r7]\n\
- adds r0, r2\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x1\n\
- bhi _0803BD28\n\
- movs r0, 0x96\n\
- mov r3, r8\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
+ mov r0, r10\n\
+ cmp r0, 0x22\n\
+ bne _0803BD28\n\
+ ldr r0, _0803BFDC @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0803BD28\n\
+ ldr r1, _0803BFE0 @ =0xfffffe69\n\
+ adds r0, r1, 0\n\
+ ldrh r2, [r7]\n\
+ adds r0, r2\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bhi _0803BD28\n\
+ movs r0, 0x96\n\
+ mov r3, r8\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
_0803BD28:\n\
- ldr r0, [sp, 0x1C]\n\
- cmp r0, 0x22\n\
- bne _0803BD60\n\
- ldr r0, _0803BFDC @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BD60\n\
- ldr r1, _0803BFE0 @ =0xfffffe69\n\
- adds r0, r1, 0\n\
- ldr r2, [sp, 0x4]\n\
- ldrh r2, [r2]\n\
- adds r0, r2\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x1\n\
- bhi _0803BD60\n\
- movs r0, 0x96\n\
- ldr r3, [sp, 0x18]\n\
- muls r0, r3\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x18]\n\
+ ldr r0, [sp, 0x1C]\n\
+ cmp r0, 0x22\n\
+ bne _0803BD60\n\
+ ldr r0, _0803BFDC @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0803BD60\n\
+ ldr r1, _0803BFE0 @ =0xfffffe69\n\
+ adds r0, r1, 0\n\
+ ldr r2, [sp, 0x4]\n\
+ ldrh r2, [r2]\n\
+ adds r0, r2\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bhi _0803BD60\n\
+ movs r0, 0x96\n\
+ ldr r3, [sp, 0x18]\n\
+ muls r0, r3\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x18]\n\
_0803BD60:\n\
- mov r0, r10\n\
- cmp r0, 0x23\n\
- bne _0803BD76\n\
- ldrh r1, [r7]\n\
- ldr r0, _0803BFE4 @ =0x00000175\n\
- cmp r1, r0\n\
- bne _0803BD76\n\
- mov r1, r8\n\
- lsls r0, r1, 17\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
+ mov r0, r10\n\
+ cmp r0, 0x23\n\
+ bne _0803BD76\n\
+ ldrh r1, [r7]\n\
+ ldr r0, _0803BFE4 @ =0x00000175\n\
+ cmp r1, r0\n\
+ bne _0803BD76\n\
+ mov r1, r8\n\
+ lsls r0, r1, 17\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
_0803BD76:\n\
- ldr r2, [sp, 0x1C]\n\
- cmp r2, 0x24\n\
- bne _0803BD8E\n\
- ldr r3, [sp, 0x4]\n\
- ldrh r1, [r3]\n\
- ldr r0, _0803BFE4 @ =0x00000175\n\
- cmp r1, r0\n\
- bne _0803BD8E\n\
- ldr r1, [sp, 0x18]\n\
- lsls r0, r1, 17\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x18]\n\
+ ldr r2, [sp, 0x1C]\n\
+ cmp r2, 0x24\n\
+ bne _0803BD8E\n\
+ ldr r3, [sp, 0x4]\n\
+ ldrh r1, [r3]\n\
+ ldr r0, _0803BFE4 @ =0x00000175\n\
+ cmp r1, r0\n\
+ bne _0803BD8E\n\
+ ldr r1, [sp, 0x18]\n\
+ lsls r0, r1, 17\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x18]\n\
_0803BD8E:\n\
- mov r2, r10\n\
- cmp r2, 0x2D\n\
- bne _0803BDA2\n\
- ldrh r0, [r7]\n\
- cmp r0, 0x19\n\
- bne _0803BDA2\n\
- mov r3, r8\n\
- lsls r0, r3, 17\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
+ mov r2, r10\n\
+ cmp r2, 0x2D\n\
+ bne _0803BDA2\n\
+ ldrh r0, [r7]\n\
+ cmp r0, 0x19\n\
+ bne _0803BDA2\n\
+ mov r3, r8\n\
+ lsls r0, r3, 17\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
_0803BDA2:\n\
- ldr r0, [sp, 0x1C]\n\
- cmp r0, 0x40\n\
- bne _0803BDB8\n\
- ldr r1, [sp, 0x4]\n\
- ldrh r0, [r1]\n\
- cmp r0, 0x84\n\
- bne _0803BDB8\n\
- ldr r2, [sp, 0x14]\n\
- lsls r0, r2, 17\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x14]\n\
+ ldr r0, [sp, 0x1C]\n\
+ cmp r0, 0x40\n\
+ bne _0803BDB8\n\
+ ldr r1, [sp, 0x4]\n\
+ ldrh r0, [r1]\n\
+ cmp r0, 0x84\n\
+ bne _0803BDB8\n\
+ ldr r2, [sp, 0x14]\n\
+ lsls r0, r2, 17\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x14]\n\
_0803BDB8:\n\
- mov r3, r10\n\
- cmp r3, 0x41\n\
- bne _0803BDCE\n\
- ldrh r0, [r7]\n\
- subs r0, 0x68\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x1\n\
- bhi _0803BDCE\n\
- lsls r0, r6, 17\n\
- lsrs r6, r0, 16\n\
+ mov r3, r10\n\
+ cmp r3, 0x41\n\
+ bne _0803BDCE\n\
+ ldrh r0, [r7]\n\
+ subs r0, 0x68\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bhi _0803BDCE\n\
+ lsls r0, r6, 17\n\
+ lsrs r6, r0, 16\n\
_0803BDCE:\n\
- ldr r1, [sp, 0x28]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x2F\n\
- bne _0803BDE6\n\
- mov r2, r9\n\
- cmp r2, 0xA\n\
- beq _0803BDE0\n\
- cmp r2, 0xF\n\
- bne _0803BDE6\n\
+ ldr r1, [sp, 0x28]\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x2F\n\
+ bne _0803BDE6\n\
+ mov r2, r9\n\
+ cmp r2, 0xA\n\
+ beq _0803BDE0\n\
+ cmp r2, 0xF\n\
+ bne _0803BDE6\n\
_0803BDE0:\n\
- mov r3, r8\n\
- lsrs r3, 1\n\
- mov r8, r3\n\
+ mov r3, r8\n\
+ lsrs r3, 1\n\
+ mov r8, r3\n\
_0803BDE6:\n\
- ldr r0, [sp, 0x24]\n\
- ldrb r4, [r0]\n\
- cmp r4, 0x37\n\
- bne _0803BDFC\n\
- movs r0, 0x96\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
+ ldr r0, [sp, 0x24]\n\
+ ldrb r4, [r0]\n\
+ cmp r4, 0x37\n\
+ bne _0803BDFC\n\
+ movs r0, 0x96\n\
+ muls r0, r6\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
_0803BDFC:\n\
- cmp r4, 0x39\n\
- bne _0803BE2A\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0x3A\n\
- movs r3, 0\n\
- bl sub_8018324\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BE2A\n\
- movs r0, 0x96\n\
- mov r1, r8\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
+ cmp r4, 0x39\n\
+ bne _0803BE2A\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0xE\n\
+ movs r1, 0\n\
+ movs r2, 0x3A\n\
+ movs r3, 0\n\
+ bl sub_8018324\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BE2A\n\
+ movs r0, 0x96\n\
+ mov r1, r8\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
_0803BE2A:\n\
- ldr r2, [sp, 0x24]\n\
- ldrb r0, [r2]\n\
- cmp r0, 0x3A\n\
- bne _0803BE5C\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0x39\n\
- movs r3, 0\n\
- bl sub_8018324\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BE5C\n\
- movs r0, 0x96\n\
- mov r3, r8\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
+ ldr r2, [sp, 0x24]\n\
+ ldrb r0, [r2]\n\
+ cmp r0, 0x3A\n\
+ bne _0803BE5C\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0xE\n\
+ movs r1, 0\n\
+ movs r2, 0x39\n\
+ movs r3, 0\n\
+ bl sub_8018324\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BE5C\n\
+ movs r0, 0x96\n\
+ mov r3, r8\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
_0803BE5C:\n\
- ldr r1, [sp, 0x24]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x3E\n\
- bne _0803BE78\n\
- ldr r0, [r7, 0x4C]\n\
- cmp r0, 0\n\
- beq _0803BE78\n\
- movs r0, 0x96\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
+ ldr r1, [sp, 0x24]\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x3E\n\
+ bne _0803BE78\n\
+ ldr r0, [r7, 0x4C]\n\
+ cmp r0, 0\n\
+ beq _0803BE78\n\
+ movs r0, 0x96\n\
+ muls r0, r6\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
_0803BE78:\n\
- ldr r2, [sp, 0x28]\n\
- ldrb r0, [r2]\n\
- cmp r0, 0x3F\n\
- bne _0803BE9A\n\
- ldr r3, [sp, 0x4]\n\
- ldr r0, [r3, 0x4C]\n\
- cmp r0, 0\n\
- beq _0803BE9A\n\
- movs r0, 0x96\n\
- ldr r1, [sp, 0x14]\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x14]\n\
+ ldr r2, [sp, 0x28]\n\
+ ldrb r0, [r2]\n\
+ cmp r0, 0x3F\n\
+ bne _0803BE9A\n\
+ ldr r3, [sp, 0x4]\n\
+ ldr r0, [r3, 0x4C]\n\
+ cmp r0, 0\n\
+ beq _0803BE9A\n\
+ movs r0, 0x96\n\
+ ldr r1, [sp, 0x14]\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x14]\n\
_0803BE9A:\n\
- mov r2, r9\n\
- cmp r2, 0xD\n\
- bne _0803BEBE\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0\n\
- movs r3, 0xFD\n\
- bl sub_8018324\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BEBE\n\
- ldr r1, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r0, [r1]\n\
- lsrs r0, 1\n\
- strh r0, [r1]\n\
+ mov r2, r9\n\
+ cmp r2, 0xD\n\
+ bne _0803BEBE\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0xE\n\
+ movs r1, 0\n\
+ movs r2, 0\n\
+ movs r3, 0xFD\n\
+ bl sub_8018324\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BEBE\n\
+ ldr r1, _0803BFE8 @ =gBattleMovePower\n\
+ ldrh r0, [r1]\n\
+ lsrs r0, 1\n\
+ strh r0, [r1]\n\
_0803BEBE:\n\
- mov r3, r9\n\
- cmp r3, 0xA\n\
- bne _0803BEE2\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0\n\
- movs r3, 0xFE\n\
- bl sub_8018324\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BEE2\n\
- ldr r1, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r0, [r1]\n\
- lsrs r0, 1\n\
- strh r0, [r1]\n\
+ mov r3, r9\n\
+ cmp r3, 0xA\n\
+ bne _0803BEE2\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0xE\n\
+ movs r1, 0\n\
+ movs r2, 0\n\
+ movs r3, 0xFE\n\
+ bl sub_8018324\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BEE2\n\
+ ldr r1, _0803BFE8 @ =gBattleMovePower\n\
+ ldrh r0, [r1]\n\
+ lsrs r0, 1\n\
+ strh r0, [r1]\n\
_0803BEE2:\n\
- mov r0, r9\n\
- cmp r0, 0xC\n\
- bne _0803BF12\n\
- ldr r1, [sp, 0x24]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x41\n\
- bne _0803BF12\n\
- ldrh r0, [r7, 0x2C]\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- ldrh r1, [r7, 0x28]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bhi _0803BF12\n\
- ldr r4, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r1, [r4]\n\
- movs r0, 0x96\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- strh r0, [r4]\n\
+ mov r0, r9\n\
+ cmp r0, 0xC\n\
+ bne _0803BF12\n\
+ ldr r1, [sp, 0x24]\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x41\n\
+ bne _0803BF12\n\
+ ldrh r0, [r7, 0x2C]\n\
+ movs r1, 0x3\n\
+ bl __udivsi3\n\
+ ldrh r1, [r7, 0x28]\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r1, r0\n\
+ bhi _0803BF12\n\
+ ldr r4, _0803BFE8 @ =gBattleMovePower\n\
+ ldrh r1, [r4]\n\
+ movs r0, 0x96\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ strh r0, [r4]\n\
_0803BF12:\n\
- mov r2, r9\n\
- cmp r2, 0xA\n\
- bne _0803BF42\n\
- ldr r3, [sp, 0x24]\n\
- ldrb r0, [r3]\n\
- cmp r0, 0x42\n\
- bne _0803BF42\n\
- ldrh r0, [r7, 0x2C]\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- ldrh r1, [r7, 0x28]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bhi _0803BF42\n\
- ldr r4, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r1, [r4]\n\
- movs r0, 0x96\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- strh r0, [r4]\n\
+ mov r2, r9\n\
+ cmp r2, 0xA\n\
+ bne _0803BF42\n\
+ ldr r3, [sp, 0x24]\n\
+ ldrb r0, [r3]\n\
+ cmp r0, 0x42\n\
+ bne _0803BF42\n\
+ ldrh r0, [r7, 0x2C]\n\
+ movs r1, 0x3\n\
+ bl __udivsi3\n\
+ ldrh r1, [r7, 0x28]\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r1, r0\n\
+ bhi _0803BF42\n\
+ ldr r4, _0803BFE8 @ =gBattleMovePower\n\
+ ldrh r1, [r4]\n\
+ movs r0, 0x96\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ strh r0, [r4]\n\
_0803BF42:\n\
- mov r0, r9\n\
- cmp r0, 0xB\n\
- bne _0803BF72\n\
- ldr r1, [sp, 0x24]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x43\n\
- bne _0803BF72\n\
- ldrh r0, [r7, 0x2C]\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- ldrh r1, [r7, 0x28]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bhi _0803BF72\n\
- ldr r4, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r1, [r4]\n\
- movs r0, 0x96\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- strh r0, [r4]\n\
+ mov r0, r9\n\
+ cmp r0, 0xB\n\
+ bne _0803BF72\n\
+ ldr r1, [sp, 0x24]\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x43\n\
+ bne _0803BF72\n\
+ ldrh r0, [r7, 0x2C]\n\
+ movs r1, 0x3\n\
+ bl __udivsi3\n\
+ ldrh r1, [r7, 0x28]\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r1, r0\n\
+ bhi _0803BF72\n\
+ ldr r4, _0803BFE8 @ =gBattleMovePower\n\
+ ldrh r1, [r4]\n\
+ movs r0, 0x96\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ strh r0, [r4]\n\
_0803BF72:\n\
- mov r2, r9\n\
- cmp r2, 0x6\n\
- bne _0803BFA2\n\
- ldr r3, [sp, 0x24]\n\
- ldrb r0, [r3]\n\
- cmp r0, 0x44\n\
- bne _0803BFA2\n\
- ldrh r0, [r7, 0x2C]\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- ldrh r1, [r7, 0x28]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bhi _0803BFA2\n\
- ldr r4, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r1, [r4]\n\
- movs r0, 0x96\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- strh r0, [r4]\n\
+ mov r2, r9\n\
+ cmp r2, 0x6\n\
+ bne _0803BFA2\n\
+ ldr r3, [sp, 0x24]\n\
+ ldrb r0, [r3]\n\
+ cmp r0, 0x44\n\
+ bne _0803BFA2\n\
+ ldrh r0, [r7, 0x2C]\n\
+ movs r1, 0x3\n\
+ bl __udivsi3\n\
+ ldrh r1, [r7, 0x28]\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r1, r0\n\
+ bhi _0803BFA2\n\
+ ldr r4, _0803BFE8 @ =gBattleMovePower\n\
+ ldrh r1, [r4]\n\
+ movs r0, 0x96\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ strh r0, [r4]\n\
_0803BFA2:\n\
- ldr r2, _0803BFEC @ =gBattleMoves\n\
- ldr r0, _0803BFF0 @ =gUnknown_02024BE6\n\
- ldrh r1, [r0]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x7\n\
- bne _0803BFBC\n\
- ldr r0, [sp, 0x14]\n\
- lsrs r0, 1\n\
- str r0, [sp, 0x14]\n\
+ ldr r2, _0803BFEC @ =gBattleMoves\n\
+ ldr r0, _0803BFF0 @ =gUnknown_02024BE6\n\
+ ldrh r1, [r0]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x7\n\
+ bne _0803BFBC\n\
+ ldr r0, [sp, 0x14]\n\
+ lsrs r0, 1\n\
+ str r0, [sp, 0x14]\n\
_0803BFBC:\n\
- mov r1, r9\n\
- cmp r1, 0x8\n\
- bls _0803BFC4\n\
- b _0803C122\n\
+ mov r1, r9\n\
+ cmp r1, 0x8\n\
+ bls _0803BFC4\n\
+ b _0803C122\n\
_0803BFC4:\n\
- ldr r0, _0803BFF4 @ =gCritMultiplier\n\
- ldrb r1, [r0]\n\
- adds r4, r0, 0\n\
- cmp r1, 0x2\n\
- bne _0803C000\n\
- movs r0, 0x19\n\
- ldrsb r0, [r7, r0]\n\
- cmp r0, 0x6\n\
- ble _0803BFFC\n\
- ldr r2, _0803BFF8 @ =gStatStageRatios\n\
- b _0803C006\n\
- .align 2, 0\n\
+ ldr r0, _0803BFF4 @ =gCritMultiplier\n\
+ ldrb r1, [r0]\n\
+ adds r4, r0, 0\n\
+ cmp r1, 0x2\n\
+ bne _0803C000\n\
+ movs r0, 0x19\n\
+ ldrsb r0, [r7, r0]\n\
+ cmp r0, 0x6\n\
+ ble _0803BFFC\n\
+ ldr r2, _0803BFF8 @ =gStatStageRatios\n\
+ b _0803C006\n\
+ .align 2, 0\n\
_0803BFDC: .4byte gBattleTypeFlags\n\
_0803BFE0: .4byte 0xfffffe69\n\
_0803BFE4: .4byte 0x00000175\n\
@@ -1061,427 +1061,427 @@ _0803BFF0: .4byte gUnknown_02024BE6\n\
_0803BFF4: .4byte gCritMultiplier\n\
_0803BFF8: .4byte gStatStageRatios\n\
_0803BFFC:\n\
- adds r5, r6, 0\n\
- b _0803C01E\n\
+ adds r5, r6, 0\n\
+ b _0803C01E\n\
_0803C000:\n\
- ldr r2, _0803C050 @ =gStatStageRatios\n\
- movs r0, 0x19\n\
- ldrsb r0, [r7, r0]\n\
+ ldr r2, _0803C050 @ =gStatStageRatios\n\
+ movs r0, 0x19\n\
+ ldrsb r0, [r7, r0]\n\
_0803C006:\n\
- lsls r0, 1\n\
- adds r1, r0, r2\n\
- ldrb r1, [r1]\n\
- adds r5, r6, 0\n\
- muls r5, r1\n\
- adds r2, 0x1\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- adds r0, r5, 0\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
+ lsls r0, 1\n\
+ adds r1, r0, r2\n\
+ ldrb r1, [r1]\n\
+ adds r5, r6, 0\n\
+ muls r5, r1\n\
+ adds r2, 0x1\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ adds r0, r5, 0\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
_0803C01E:\n\
- ldr r0, _0803C054 @ =gBattleMovePower\n\
- ldrh r0, [r0]\n\
- muls r5, r0\n\
- adds r0, r7, 0\n\
- adds r0, 0x2A\n\
- ldrb r0, [r0]\n\
- lsls r0, 1\n\
- movs r1, 0x5\n\
- bl __divsi3\n\
- adds r0, 0x2\n\
- muls r5, r0\n\
- ldrb r0, [r4]\n\
- cmp r0, 0x2\n\
- bne _0803C05C\n\
- ldr r2, [sp, 0x4]\n\
- movs r0, 0x1A\n\
- ldrsb r0, [r2, r0]\n\
- cmp r0, 0x5\n\
- bgt _0803C058\n\
- ldr r2, _0803C050 @ =gStatStageRatios\n\
- ldr r3, [sp, 0x4]\n\
- movs r0, 0x1A\n\
- ldrsb r0, [r3, r0]\n\
- b _0803C064\n\
- .align 2, 0\n\
+ ldr r0, _0803C054 @ =gBattleMovePower\n\
+ ldrh r0, [r0]\n\
+ muls r5, r0\n\
+ adds r0, r7, 0\n\
+ adds r0, 0x2A\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 1\n\
+ movs r1, 0x5\n\
+ bl __divsi3\n\
+ adds r0, 0x2\n\
+ muls r5, r0\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0x2\n\
+ bne _0803C05C\n\
+ ldr r2, [sp, 0x4]\n\
+ movs r0, 0x1A\n\
+ ldrsb r0, [r2, r0]\n\
+ cmp r0, 0x5\n\
+ bgt _0803C058\n\
+ ldr r2, _0803C050 @ =gStatStageRatios\n\
+ ldr r3, [sp, 0x4]\n\
+ movs r0, 0x1A\n\
+ ldrsb r0, [r3, r0]\n\
+ b _0803C064\n\
+ .align 2, 0\n\
_0803C050: .4byte gStatStageRatios\n\
_0803C054: .4byte gBattleMovePower\n\
_0803C058:\n\
- ldr r3, [sp, 0x14]\n\
- b _0803C07E\n\
+ ldr r3, [sp, 0x14]\n\
+ b _0803C07E\n\
_0803C05C:\n\
- ldr r2, _0803C0DC @ =gStatStageRatios\n\
- ldr r1, [sp, 0x4]\n\
- movs r0, 0x1A\n\
- ldrsb r0, [r1, r0]\n\
+ ldr r2, _0803C0DC @ =gStatStageRatios\n\
+ ldr r1, [sp, 0x4]\n\
+ movs r0, 0x1A\n\
+ ldrsb r0, [r1, r0]\n\
_0803C064:\n\
- lsls r0, 1\n\
- adds r1, r0, r2\n\
- ldrb r1, [r1]\n\
- ldr r6, [sp, 0x14]\n\
- adds r3, r6, 0\n\
- muls r3, r1\n\
- adds r2, 0x1\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- adds r0, r3, 0\n\
- bl __divsi3\n\
- adds r3, r0, 0\n\
+ lsls r0, 1\n\
+ adds r1, r0, r2\n\
+ ldrb r1, [r1]\n\
+ ldr r6, [sp, 0x14]\n\
+ adds r3, r6, 0\n\
+ muls r3, r1\n\
+ adds r2, 0x1\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ adds r0, r3, 0\n\
+ bl __divsi3\n\
+ adds r3, r0, 0\n\
_0803C07E:\n\
- adds r0, r5, 0\n\
- adds r1, r3, 0\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- movs r1, 0x32\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- ldr r0, [r7, 0x4C]\n\
- movs r1, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C0A8\n\
- ldr r1, [sp, 0x24]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x3E\n\
- beq _0803C0A8\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
+ adds r0, r5, 0\n\
+ adds r1, r3, 0\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
+ movs r1, 0x32\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
+ ldr r0, [r7, 0x4C]\n\
+ movs r1, 0x10\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803C0A8\n\
+ ldr r1, [sp, 0x24]\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x3E\n\
+ beq _0803C0A8\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
_0803C0A8:\n\
- movs r0, 0x1\n\
- ldr r2, [sp, 0xC]\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- beq _0803C0EA\n\
- ldrb r1, [r4]\n\
- cmp r1, 0x1\n\
- bne _0803C0EA\n\
- ldr r0, _0803C0E0 @ =gBattleTypeFlags\n\
- ldrh r0, [r0]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- beq _0803C0E4\n\
- movs r0, 0x2\n\
- bl sub_803C348\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0803C0E4\n\
- adds r0, r5, 0\n\
- movs r1, 0x3\n\
- bl __divsi3\n\
- lsls r5, r0, 1\n\
- b _0803C0EA\n\
- .align 2, 0\n\
+ movs r0, 0x1\n\
+ ldr r2, [sp, 0xC]\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _0803C0EA\n\
+ ldrb r1, [r4]\n\
+ cmp r1, 0x1\n\
+ bne _0803C0EA\n\
+ ldr r0, _0803C0E0 @ =gBattleTypeFlags\n\
+ ldrh r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _0803C0E4\n\
+ movs r0, 0x2\n\
+ bl sub_803C348\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x2\n\
+ bne _0803C0E4\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x3\n\
+ bl __divsi3\n\
+ lsls r5, r0, 1\n\
+ b _0803C0EA\n\
+ .align 2, 0\n\
_0803C0DC: .4byte gStatStageRatios\n\
_0803C0E0: .4byte gBattleTypeFlags\n\
_0803C0E4:\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
_0803C0EA:\n\
- ldr r0, _0803C148 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C11C\n\
- ldr r0, _0803C14C @ =gBattleMoves\n\
- ldr r3, [sp, 0x8]\n\
- lsls r1, r3, 1\n\
- adds r1, r3\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x6]\n\
- cmp r0, 0x8\n\
- bne _0803C11C\n\
- movs r0, 0x2\n\
- bl sub_803C348\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0803C11C\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
+ ldr r0, _0803C148 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803C11C\n\
+ ldr r0, _0803C14C @ =gBattleMoves\n\
+ ldr r3, [sp, 0x8]\n\
+ lsls r1, r3, 1\n\
+ adds r1, r3\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x6]\n\
+ cmp r0, 0x8\n\
+ bne _0803C11C\n\
+ movs r0, 0x2\n\
+ bl sub_803C348\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x2\n\
+ bne _0803C11C\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
_0803C11C:\n\
- cmp r5, 0\n\
- bne _0803C122\n\
- movs r5, 0x1\n\
+ cmp r5, 0\n\
+ bne _0803C122\n\
+ movs r5, 0x1\n\
_0803C122:\n\
- mov r6, r9\n\
- cmp r6, 0x9\n\
- bne _0803C12A\n\
- movs r5, 0\n\
+ mov r6, r9\n\
+ cmp r6, 0x9\n\
+ bne _0803C12A\n\
+ movs r5, 0\n\
_0803C12A:\n\
- mov r0, r9\n\
- cmp r0, 0x9\n\
- bhi _0803C132\n\
- b _0803C330\n\
+ mov r0, r9\n\
+ cmp r0, 0x9\n\
+ bhi _0803C132\n\
+ b _0803C330\n\
_0803C132:\n\
- ldr r0, _0803C150 @ =gCritMultiplier\n\
- ldrb r1, [r0]\n\
- adds r4, r0, 0\n\
- cmp r1, 0x2\n\
- bne _0803C15C\n\
- movs r0, 0x1C\n\
- ldrsb r0, [r7, r0]\n\
- cmp r0, 0x6\n\
- ble _0803C158\n\
- ldr r2, _0803C154 @ =gStatStageRatios\n\
- b _0803C162\n\
- .align 2, 0\n\
+ ldr r0, _0803C150 @ =gCritMultiplier\n\
+ ldrb r1, [r0]\n\
+ adds r4, r0, 0\n\
+ cmp r1, 0x2\n\
+ bne _0803C15C\n\
+ movs r0, 0x1C\n\
+ ldrsb r0, [r7, r0]\n\
+ cmp r0, 0x6\n\
+ ble _0803C158\n\
+ ldr r2, _0803C154 @ =gStatStageRatios\n\
+ b _0803C162\n\
+ .align 2, 0\n\
_0803C148: .4byte gBattleTypeFlags\n\
_0803C14C: .4byte gBattleMoves\n\
_0803C150: .4byte gCritMultiplier\n\
_0803C154: .4byte gStatStageRatios\n\
_0803C158:\n\
- mov r5, r8\n\
- b _0803C17A\n\
+ mov r5, r8\n\
+ b _0803C17A\n\
_0803C15C:\n\
- ldr r2, _0803C1A8 @ =gStatStageRatios\n\
- movs r0, 0x1C\n\
- ldrsb r0, [r7, r0]\n\
+ ldr r2, _0803C1A8 @ =gStatStageRatios\n\
+ movs r0, 0x1C\n\
+ ldrsb r0, [r7, r0]\n\
_0803C162:\n\
- lsls r0, 1\n\
- adds r1, r0, r2\n\
- ldrb r1, [r1]\n\
- mov r5, r8\n\
- muls r5, r1\n\
- adds r2, 0x1\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- adds r0, r5, 0\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
+ lsls r0, 1\n\
+ adds r1, r0, r2\n\
+ ldrb r1, [r1]\n\
+ mov r5, r8\n\
+ muls r5, r1\n\
+ adds r2, 0x1\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ adds r0, r5, 0\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
_0803C17A:\n\
- ldr r0, _0803C1AC @ =gBattleMovePower\n\
- ldrh r0, [r0]\n\
- muls r5, r0\n\
- adds r0, r7, 0\n\
- adds r0, 0x2A\n\
- ldrb r0, [r0]\n\
- lsls r0, 1\n\
- movs r1, 0x5\n\
- bl __divsi3\n\
- adds r0, 0x2\n\
- muls r5, r0\n\
- ldrb r0, [r4]\n\
- cmp r0, 0x2\n\
- bne _0803C1B4\n\
- ldr r1, [sp, 0x4]\n\
- movs r0, 0x1D\n\
- ldrsb r0, [r1, r0]\n\
- cmp r0, 0x5\n\
- bgt _0803C1B0\n\
- ldr r2, _0803C1A8 @ =gStatStageRatios\n\
- b _0803C1BC\n\
- .align 2, 0\n\
+ ldr r0, _0803C1AC @ =gBattleMovePower\n\
+ ldrh r0, [r0]\n\
+ muls r5, r0\n\
+ adds r0, r7, 0\n\
+ adds r0, 0x2A\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 1\n\
+ movs r1, 0x5\n\
+ bl __divsi3\n\
+ adds r0, 0x2\n\
+ muls r5, r0\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0x2\n\
+ bne _0803C1B4\n\
+ ldr r1, [sp, 0x4]\n\
+ movs r0, 0x1D\n\
+ ldrsb r0, [r1, r0]\n\
+ cmp r0, 0x5\n\
+ bgt _0803C1B0\n\
+ ldr r2, _0803C1A8 @ =gStatStageRatios\n\
+ b _0803C1BC\n\
+ .align 2, 0\n\
_0803C1A8: .4byte gStatStageRatios\n\
_0803C1AC: .4byte gBattleMovePower\n\
_0803C1B0:\n\
- ldr r3, [sp, 0x18]\n\
- b _0803C1D6\n\
+ ldr r3, [sp, 0x18]\n\
+ b _0803C1D6\n\
_0803C1B4:\n\
- ldr r2, _0803C21C @ =gStatStageRatios\n\
- ldr r1, [sp, 0x4]\n\
- movs r0, 0x1D\n\
- ldrsb r0, [r1, r0]\n\
+ ldr r2, _0803C21C @ =gStatStageRatios\n\
+ ldr r1, [sp, 0x4]\n\
+ movs r0, 0x1D\n\
+ ldrsb r0, [r1, r0]\n\
_0803C1BC:\n\
- lsls r0, 1\n\
- adds r1, r0, r2\n\
- ldrb r1, [r1]\n\
- ldr r6, [sp, 0x18]\n\
- adds r3, r6, 0\n\
- muls r3, r1\n\
- adds r2, 0x1\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- adds r0, r3, 0\n\
- bl __divsi3\n\
- adds r3, r0, 0\n\
+ lsls r0, 1\n\
+ adds r1, r0, r2\n\
+ ldrb r1, [r1]\n\
+ ldr r6, [sp, 0x18]\n\
+ adds r3, r6, 0\n\
+ muls r3, r1\n\
+ adds r2, 0x1\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ adds r0, r3, 0\n\
+ bl __divsi3\n\
+ adds r3, r0, 0\n\
_0803C1D6:\n\
- adds r0, r5, 0\n\
- adds r1, r3, 0\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- movs r1, 0x32\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- movs r0, 0x2\n\
- ldr r1, [sp, 0xC]\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C22A\n\
- ldrb r1, [r4]\n\
- cmp r1, 0x1\n\
- bne _0803C22A\n\
- ldr r0, _0803C220 @ =gBattleTypeFlags\n\
- ldrh r0, [r0]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- beq _0803C224\n\
- movs r0, 0x2\n\
- bl sub_803C348\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0803C224\n\
- adds r0, r5, 0\n\
- movs r1, 0x3\n\
- bl __divsi3\n\
- lsls r5, r0, 1\n\
- b _0803C22A\n\
- .align 2, 0\n\
+ adds r0, r5, 0\n\
+ adds r1, r3, 0\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
+ movs r1, 0x32\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
+ movs r0, 0x2\n\
+ ldr r1, [sp, 0xC]\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803C22A\n\
+ ldrb r1, [r4]\n\
+ cmp r1, 0x1\n\
+ bne _0803C22A\n\
+ ldr r0, _0803C220 @ =gBattleTypeFlags\n\
+ ldrh r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _0803C224\n\
+ movs r0, 0x2\n\
+ bl sub_803C348\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x2\n\
+ bne _0803C224\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x3\n\
+ bl __divsi3\n\
+ lsls r5, r0, 1\n\
+ b _0803C22A\n\
+ .align 2, 0\n\
_0803C21C: .4byte gStatStageRatios\n\
_0803C220: .4byte gBattleTypeFlags\n\
_0803C224:\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
_0803C22A:\n\
- ldr r0, _0803C2A4 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C25C\n\
- ldr r0, _0803C2A8 @ =gBattleMoves\n\
- ldr r2, [sp, 0x8]\n\
- lsls r1, r2, 1\n\
- adds r1, r2\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x6]\n\
- cmp r0, 0x8\n\
- bne _0803C25C\n\
- movs r0, 0x2\n\
- bl sub_803C348\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0803C25C\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
+ ldr r0, _0803C2A4 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803C25C\n\
+ ldr r0, _0803C2A8 @ =gBattleMoves\n\
+ ldr r2, [sp, 0x8]\n\
+ lsls r1, r2, 1\n\
+ adds r1, r2\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x6]\n\
+ cmp r0, 0x8\n\
+ bne _0803C25C\n\
+ movs r0, 0x2\n\
+ bl sub_803C348\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x2\n\
+ bne _0803C25C\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
_0803C25C:\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0xD\n\
- movs r3, 0\n\
- bl sub_8018324\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0\n\
- bne _0803C30C\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0x4D\n\
- movs r3, 0\n\
- bl sub_8018324\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803C30C\n\
- ldr r2, _0803C2AC @ =gBattleWeather\n\
- ldrh r1, [r2]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- adds r4, r2, 0\n\
- cmp r0, 0\n\
- beq _0803C2C4\n\
- mov r3, r9\n\
- cmp r3, 0xA\n\
- beq _0803C2B0\n\
- cmp r3, 0xB\n\
- beq _0803C2B8\n\
- b _0803C2C4\n\
- .align 2, 0\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0xE\n\
+ movs r1, 0\n\
+ movs r2, 0xD\n\
+ movs r3, 0\n\
+ bl sub_8018324\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0\n\
+ bne _0803C30C\n\
+ str r0, [sp]\n\
+ movs r0, 0xE\n\
+ movs r1, 0\n\
+ movs r2, 0x4D\n\
+ movs r3, 0\n\
+ bl sub_8018324\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0803C30C\n\
+ ldr r2, _0803C2AC @ =gBattleWeather\n\
+ ldrh r1, [r2]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ adds r4, r2, 0\n\
+ cmp r0, 0\n\
+ beq _0803C2C4\n\
+ mov r3, r9\n\
+ cmp r3, 0xA\n\
+ beq _0803C2B0\n\
+ cmp r3, 0xB\n\
+ beq _0803C2B8\n\
+ b _0803C2C4\n\
+ .align 2, 0\n\
_0803C2A4: .4byte gBattleTypeFlags\n\
_0803C2A8: .4byte gBattleMoves\n\
_0803C2AC: .4byte gBattleWeather\n\
_0803C2B0:\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
- b _0803C2C4\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
+ b _0803C2C4\n\
_0803C2B8:\n\
- lsls r0, r5, 4\n\
- subs r0, r5\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
+ lsls r0, r5, 4\n\
+ subs r0, r5\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
_0803C2C4:\n\
- ldrh r1, [r4]\n\
- movs r0, 0x9F\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C2DC\n\
- ldr r0, _0803C2F4 @ =gUnknown_02024BE6\n\
- ldrh r0, [r0]\n\
- cmp r0, 0x4C\n\
- bne _0803C2DC\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
+ ldrh r1, [r4]\n\
+ movs r0, 0x9F\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803C2DC\n\
+ ldr r0, _0803C2F4 @ =gUnknown_02024BE6\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0x4C\n\
+ bne _0803C2DC\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
_0803C2DC:\n\
- ldrh r1, [r4]\n\
- movs r0, 0x60\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C30C\n\
- mov r6, r9\n\
- cmp r6, 0xA\n\
- beq _0803C2F8\n\
- cmp r6, 0xB\n\
- beq _0803C306\n\
- b _0803C30C\n\
- .align 2, 0\n\
+ ldrh r1, [r4]\n\
+ movs r0, 0x60\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803C30C\n\
+ mov r6, r9\n\
+ cmp r6, 0xA\n\
+ beq _0803C2F8\n\
+ cmp r6, 0xB\n\
+ beq _0803C306\n\
+ b _0803C30C\n\
+ .align 2, 0\n\
_0803C2F4: .4byte gUnknown_02024BE6\n\
_0803C2F8:\n\
- lsls r0, r5, 4\n\
- subs r0, r5\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- b _0803C30C\n\
+ lsls r0, r5, 4\n\
+ subs r0, r5\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
+ b _0803C30C\n\
_0803C306:\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
_0803C30C:\n\
- ldr r1, _0803C344 @ =0x02017100\n\
- ldr r2, [sp, 0x10]\n\
- lsls r0, r2, 2\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C330\n\
- mov r3, r9\n\
- cmp r3, 0xA\n\
- bne _0803C330\n\
- lsls r0, r5, 4\n\
- subs r0, r5\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
+ ldr r1, _0803C344 @ =0x02017100\n\
+ ldr r2, [sp, 0x10]\n\
+ lsls r0, r2, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803C330\n\
+ mov r3, r9\n\
+ cmp r3, 0xA\n\
+ bne _0803C330\n\
+ lsls r0, r5, 4\n\
+ subs r0, r5\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
_0803C330:\n\
- adds r0, r5, 0x2\n\
- add sp, 0x2C\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ adds r0, r5, 0x2\n\
+ add sp, 0x2C\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_0803C344: .4byte 0x02017100\n\
- .syntax divided");
+ .syntax divided");
}
#endif
diff --git a/src/contest_painting.c b/src/contest_painting.c
index b77041f41..556456814 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -56,8 +56,8 @@ struct Unk3000756
struct LabelPair
{
- u8 (*prefix)[];
- u8 (*suffix)[];
+ const u8 *prefix;
+ const u8 *suffix;
};
struct Unk03005E20
@@ -97,32 +97,112 @@ extern const struct SpriteSheet gMonFrontPicTable[];
extern const struct MonCoords gMonFrontPicCoords[];
extern const struct SpriteSheet gMonBackPicTable[];
extern const struct MonCoords gMonBackPicCoords[];
-
extern void *gUnknown_081FAF4C[];
-
-extern u16 gPictureFramePalettes[];
-
-extern u8 gPictureFrameTiles_0[];
-extern u8 gPictureFrameTiles_1[];
-extern u8 gPictureFrameTiles_2[];
-extern u8 gPictureFrameTiles_3[];
-extern u8 gPictureFrameTiles_4[];
-extern u8 gPictureFrameTiles_5[];
-
-extern u8 gPictureFrameTilemap_0[];
-extern u8 gPictureFrameTilemap_1[];
-extern u8 gPictureFrameTilemap_2[];
-extern u8 gPictureFrameTilemap_3[];
-extern u8 gPictureFrameTilemap_4[];
-extern u8 gPictureFrameTilemap_5[];
-
-extern u8 *gUnknown_083F60AC[];
-extern struct LabelPair gUnknown_083F60C0[];
-extern struct OamData gOamData_83F6138;
-extern u16 gUnknown_083F6140[];
-
-extern u8 gContestText_ContestWinner[];
-extern u8 gOtherText_Unknown1[];
+extern const u8 OtherText_Cool[];
+extern const u8 OtherText_Beauty2[];
+extern const u8 OtherText_Cute[];
+extern const u8 OtherText_Smart[];
+extern const u8 OtherText_Tough[];
+extern const u8 OtherText_NonstopSuperCool[];
+extern const u8 OtherText_Terminator6[];
+extern const u8 OtherText_GoodLookingPoke[];
+extern const u8 OtherText_Terminator7[];
+extern const u8 OtherText_MarvelousGreat[];
+extern const u8 OtherText_Terminator8[];
+extern const u8 OtherText_CenturyLastVenus[];
+extern const u8 OtherText_Terminator9[];
+extern const u8 OtherText_Terminator10[];
+extern const u8 OtherText_DazzlingSlime[];
+extern const u8 OtherText_PokeCenterIdol[];
+extern const u8 OtherText_Terminator11[];
+extern const u8 OtherText_LovelyAndSweet[];
+extern const u8 OtherText_Terminator12[];
+extern const u8 OtherText_ThePretty[];
+extern const u8 OtherText_WinningPortrait[];
+extern const u8 OtherText_GiveUsWink[];
+extern const u8 OtherText_Terminator13[];
+extern const u8 OtherText_SmartnessMaestro[];
+extern const u8 OtherText_Terminator14[];
+extern const u8 OtherText_ChosenPokeAmong[];
+extern const u8 OtherText_Terminator15[];
+extern const u8 OtherText_TheExcellent[];
+extern const u8 OtherText_ItsMomentOfElegance[];
+extern const u8 OtherText_PowerfullyMuscular[];
+extern const u8 OtherText_Terminator16[];
+extern const u8 OtherText_StrongErEst[];
+extern const u8 OtherText_Terminator17[];
+extern const u8 OtherText_MightyTough[];
+extern const u8 OtherText_Exclamation[];
+extern const u8 gContestText_ContestWinner[];
+extern const u8 gOtherText_Unknown1[];
+
+static const u16 gPictureFramePalettes[][16] =
+{
+ INCBIN_U16("graphics/picture_frame/bg0.gbapal"),
+ INCBIN_U16("graphics/picture_frame/bg1.gbapal"),
+ INCBIN_U16("graphics/picture_frame/bg2.gbapal"),
+ INCBIN_U16("graphics/picture_frame/bg3.gbapal"),
+ INCBIN_U16("graphics/picture_frame/bg4.gbapal"),
+ INCBIN_U16("graphics/picture_frame/bg5.gbapal"),
+ {0},
+ {0},
+};
+const u8 emptySpace[8 * 32] = {0};
+const u8 gPictureFrameTiles_0[] = INCBIN_U8("graphics/picture_frame/frame0.4bpp.rl");
+const u8 gPictureFrameTiles_1[] = INCBIN_U8("graphics/picture_frame/frame1.4bpp.rl");
+const u8 gPictureFrameTiles_2[] = INCBIN_U8("graphics/picture_frame/frame2.4bpp.rl");
+const u8 gPictureFrameTiles_3[] = INCBIN_U8("graphics/picture_frame/frame3.4bpp.rl");
+const u8 gPictureFrameTiles_4[] = INCBIN_U8("graphics/picture_frame/frame4.4bpp.rl");
+const u8 gPictureFrameTiles_5[] = INCBIN_U8("graphics/picture_frame/frame5.4bpp.rl");
+const u8 gPictureFrameTilemap_0[] = INCBIN_U8("graphics/picture_frame/frame0_map.bin.rl");
+const u8 gPictureFrameTilemap_1[] = INCBIN_U8("graphics/picture_frame/frame1_map.bin.rl");
+const u8 gPictureFrameTilemap_2[] = INCBIN_U8("graphics/picture_frame/frame2_map.bin.rl");
+const u8 gPictureFrameTilemap_3[] = INCBIN_U8("graphics/picture_frame/frame3_map.bin.rl");
+const u8 gPictureFrameTilemap_4[] = INCBIN_U8("graphics/picture_frame/frame4_map.bin.rl");
+const u8 gPictureFrameTilemap_5[] = INCBIN_U8("graphics/picture_frame/frame5_map.bin.rl");
+const u8 *const gUnknown_083F60AC[] =
+{
+ OtherText_Cool,
+ OtherText_Beauty2,
+ OtherText_Cute,
+ OtherText_Smart,
+ OtherText_Tough,
+};
+const struct LabelPair gUnknown_083F60C0[] =
+{
+ {OtherText_NonstopSuperCool, OtherText_Terminator6},
+ {OtherText_GoodLookingPoke, OtherText_Terminator7},
+ {OtherText_MarvelousGreat, OtherText_Terminator8},
+ {OtherText_CenturyLastVenus, OtherText_Terminator9},
+ {OtherText_Terminator10, OtherText_DazzlingSlime},
+ {OtherText_PokeCenterIdol, OtherText_Terminator11},
+ {OtherText_LovelyAndSweet, OtherText_Terminator12},
+ {OtherText_ThePretty, OtherText_WinningPortrait},
+ {OtherText_GiveUsWink, OtherText_Terminator13},
+ {OtherText_SmartnessMaestro, OtherText_Terminator15},
+ {OtherText_ChosenPokeAmong, OtherText_Terminator15},
+ {OtherText_TheExcellent, OtherText_ItsMomentOfElegance},
+ {OtherText_PowerfullyMuscular, OtherText_Terminator16},
+ {OtherText_StrongErEst, OtherText_Terminator17},
+ {OtherText_MightyTough, OtherText_Exclamation},
+};
+const struct OamData gOamData_83F6138 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 1,
+ .bpp = 1,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+const u16 gUnknown_083F6140[] = {0, 0};
static void ShowContestPainting();
static void CB2_HoldContestPainting(void);
@@ -144,29 +224,29 @@ __attribute__((naked))
void sub_8106630(u32 arg0)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- ldr r2, _0810665C @ =0x02015de0\n\
- subs r4, r2, 0x2\n\
- subs r5, r2, 0x1\n\
- ldr r3, _08106660 @ =gSaveBlock1\n\
- subs r0, 0x1\n\
- lsls r1, r0, 5\n\
- adds r1, r3\n\
- ldr r3, _08106664 @ =0x00002dfc\n\
- adds r1, r3\n\
- ldm r1!, {r3,r6,r7}\n\
- stm r2!, {r3,r6,r7}\n\
- ldm r1!, {r3,r6,r7}\n\
- stm r2!, {r3,r6,r7}\n\
- ldm r1!, {r6,r7}\n\
- stm r2!, {r6,r7}\n\
- strb r0, [r4]\n\
- movs r0, 0\n\
- strb r0, [r5]\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ push {r4-r7,lr}\n\
+ ldr r2, _0810665C @ =0x02015de0\n\
+ subs r4, r2, 0x2\n\
+ subs r5, r2, 0x1\n\
+ ldr r3, _08106660 @ =gSaveBlock1\n\
+ subs r0, 0x1\n\
+ lsls r1, r0, 5\n\
+ adds r1, r3\n\
+ ldr r3, _08106664 @ =0x00002dfc\n\
+ adds r1, r3\n\
+ ldm r1!, {r3,r6,r7}\n\
+ stm r2!, {r3,r6,r7}\n\
+ ldm r1!, {r3,r6,r7}\n\
+ stm r2!, {r3,r6,r7}\n\
+ ldm r1!, {r6,r7}\n\
+ stm r2!, {r6,r7}\n\
+ strb r0, [r4]\n\
+ movs r0, 0\n\
+ strb r0, [r5]\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_0810665C: .4byte 0x02015de0\n\
_08106660: .4byte gSaveBlock1\n\
_08106664: .4byte 0x00002dfc\n\
@@ -312,9 +392,9 @@ static void ContestPaintingPrintCaption(u8 contestType, u8 arg1)
}
else
{
- ptr = StringCopy(ptr, *gUnknown_083F60C0[type].prefix);
+ ptr = StringCopy(ptr, gUnknown_083F60C0[type].prefix);
ptr = StringCopy10(ptr, gUnknown_03005E8C->pokemon_name);
- ptr = StringCopy(ptr, *gUnknown_083F60C0[type].suffix);
+ ptr = StringCopy(ptr, gUnknown_083F60C0[type].suffix);
xPos = 3;
yPos = 14;
@@ -419,53 +499,53 @@ __attribute__((naked))
static void sub_8106AC4(u16 arg0, u8 arg2)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- sub sp, 0xC\n\
- adds r4, r1, 0\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- ldr r7, _08106B28 @ =gUnknown_03005E8C\n\
- ldr r0, [r7]\n\
- ldr r1, [r0, 0x4]\n\
- ldr r2, [r0]\n\
- adds r0, r6, 0\n\
- bl species_and_otid_get_pal\n\
- ldr r1, _08106B2C @ =gUnknown_03005E90\n\
- mov r8, r1\n\
- ldr r1, [r1]\n\
- bl LZDecompressVram\n\
- cmp r4, 0\n\
- bne _08106B40\n\
- lsls r0, r6, 3\n\
- ldr r1, _08106B30 @ =gMonFrontPicTable\n\
- adds r0, r1\n\
- ldr r1, _08106B34 @ =gMonFrontPicCoords\n\
- lsls r2, r6, 2\n\
- adds r2, r1\n\
- ldrb r1, [r2]\n\
- ldrb r2, [r2, 0x1]\n\
- movs r3, 0x80\n\
- lsls r3, 18\n\
- ldr r4, _08106B38 @ =gUnknown_081FAF4C\n\
- ldr r5, [r4, 0x4]\n\
- str r5, [sp]\n\
- str r6, [sp, 0x4]\n\
- ldr r4, [r7]\n\
- ldr r4, [r4]\n\
- str r4, [sp, 0x8]\n\
- bl HandleLoadSpecialPokePic\n\
- mov r2, r8\n\
- ldr r1, [r2]\n\
- ldr r0, _08106B3C @ =gUnknown_03005E10\n\
- ldr r2, [r0]\n\
- adds r0, r5, 0\n\
- bl sub_8106B90\n\
- b _08106B74\n\
- .align 2, 0\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ sub sp, 0xC\n\
+ adds r4, r1, 0\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ ldr r7, _08106B28 @ =gUnknown_03005E8C\n\
+ ldr r0, [r7]\n\
+ ldr r1, [r0, 0x4]\n\
+ ldr r2, [r0]\n\
+ adds r0, r6, 0\n\
+ bl species_and_otid_get_pal\n\
+ ldr r1, _08106B2C @ =gUnknown_03005E90\n\
+ mov r8, r1\n\
+ ldr r1, [r1]\n\
+ bl LZDecompressVram\n\
+ cmp r4, 0\n\
+ bne _08106B40\n\
+ lsls r0, r6, 3\n\
+ ldr r1, _08106B30 @ =gMonFrontPicTable\n\
+ adds r0, r1\n\
+ ldr r1, _08106B34 @ =gMonFrontPicCoords\n\
+ lsls r2, r6, 2\n\
+ adds r2, r1\n\
+ ldrb r1, [r2]\n\
+ ldrb r2, [r2, 0x1]\n\
+ movs r3, 0x80\n\
+ lsls r3, 18\n\
+ ldr r4, _08106B38 @ =gUnknown_081FAF4C\n\
+ ldr r5, [r4, 0x4]\n\
+ str r5, [sp]\n\
+ str r6, [sp, 0x4]\n\
+ ldr r4, [r7]\n\
+ ldr r4, [r4]\n\
+ str r4, [sp, 0x8]\n\
+ bl HandleLoadSpecialPokePic\n\
+ mov r2, r8\n\
+ ldr r1, [r2]\n\
+ ldr r0, _08106B3C @ =gUnknown_03005E10\n\
+ ldr r2, [r0]\n\
+ adds r0, r5, 0\n\
+ bl sub_8106B90\n\
+ b _08106B74\n\
+ .align 2, 0\n\
_08106B28: .4byte gUnknown_03005E8C\n\
_08106B2C: .4byte gUnknown_03005E90\n\
_08106B30: .4byte gMonFrontPicTable\n\
@@ -473,38 +553,38 @@ _08106B34: .4byte gMonFrontPicCoords\n\
_08106B38: .4byte gUnknown_081FAF4C\n\
_08106B3C: .4byte gUnknown_03005E10\n\
_08106B40:\n\
- lsls r0, r6, 3\n\
- ldr r1, _08106B80 @ =gMonBackPicTable\n\
- adds r0, r1\n\
- ldr r1, _08106B84 @ =gMonBackPicCoords\n\
- lsls r2, r6, 2\n\
- adds r2, r1\n\
- ldrb r1, [r2]\n\
- ldrb r2, [r2, 0x1]\n\
- movs r3, 0x80\n\
- lsls r3, 18\n\
- ldr r4, _08106B88 @ =gUnknown_081FAF4C\n\
- ldr r5, [r4]\n\
- str r5, [sp]\n\
- str r6, [sp, 0x4]\n\
- ldr r4, [r7]\n\
- ldr r4, [r4]\n\
- str r4, [sp, 0x8]\n\
- bl HandleLoadSpecialPokePic\n\
- mov r0, r8\n\
- ldr r1, [r0]\n\
- ldr r0, _08106B8C @ =gUnknown_03005E10\n\
- ldr r2, [r0]\n\
- adds r0, r5, 0\n\
- bl sub_8106B90\n\
+ lsls r0, r6, 3\n\
+ ldr r1, _08106B80 @ =gMonBackPicTable\n\
+ adds r0, r1\n\
+ ldr r1, _08106B84 @ =gMonBackPicCoords\n\
+ lsls r2, r6, 2\n\
+ adds r2, r1\n\
+ ldrb r1, [r2]\n\
+ ldrb r2, [r2, 0x1]\n\
+ movs r3, 0x80\n\
+ lsls r3, 18\n\
+ ldr r4, _08106B88 @ =gUnknown_081FAF4C\n\
+ ldr r5, [r4]\n\
+ str r5, [sp]\n\
+ str r6, [sp, 0x4]\n\
+ ldr r4, [r7]\n\
+ ldr r4, [r4]\n\
+ str r4, [sp, 0x8]\n\
+ bl HandleLoadSpecialPokePic\n\
+ mov r0, r8\n\
+ ldr r1, [r0]\n\
+ ldr r0, _08106B8C @ =gUnknown_03005E10\n\
+ ldr r2, [r0]\n\
+ adds r0, r5, 0\n\
+ bl sub_8106B90\n\
_08106B74:\n\
- add sp, 0xC\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ add sp, 0xC\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08106B80: .4byte gMonBackPicTable\n\
_08106B84: .4byte gMonBackPicCoords\n\
_08106B88: .4byte gUnknown_081FAF4C\n\
@@ -552,102 +632,102 @@ __attribute__((naked))
void sub_8106B90()
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0xC\n\
- mov r10, r0\n\
- mov r9, r1\n\
- str r2, [sp]\n\
- movs r0, 0\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0xC\n\
+ mov r10, r0\n\
+ mov r9, r1\n\
+ str r2, [sp]\n\
+ movs r0, 0\n\
_08106BA4:\n\
- movs r3, 0\n\
- adds r1, r0, 0x1\n\
- str r1, [sp, 0x4]\n\
- lsls r0, 3\n\
- str r0, [sp, 0x8]\n\
+ movs r3, 0\n\
+ adds r1, r0, 0x1\n\
+ str r1, [sp, 0x4]\n\
+ lsls r0, 3\n\
+ str r0, [sp, 0x8]\n\
_08106BAE:\n\
- movs r1, 0\n\
- adds r2, r3, 0x1\n\
- mov r8, r2\n\
- ldr r7, [sp, 0x8]\n\
- adds r0, r7, r3\n\
- lsls r0, 5\n\
- mov r12, r0\n\
- lsls r4, r3, 3\n\
+ movs r1, 0\n\
+ adds r2, r3, 0x1\n\
+ mov r8, r2\n\
+ ldr r7, [sp, 0x8]\n\
+ adds r0, r7, r3\n\
+ lsls r0, 5\n\
+ mov r12, r0\n\
+ lsls r4, r3, 3\n\
_08106BBE:\n\
- movs r3, 0\n\
- lsls r0, r1, 2\n\
- adds r6, r1, 0x1\n\
- mov r2, r12\n\
- adds r5, r2, r0\n\
- ldr r7, [sp, 0x8]\n\
- adds r0, r7, r1\n\
- lsls r0, 7\n\
- ldr r1, [sp]\n\
- adds r2, r0, r1\n\
+ movs r3, 0\n\
+ lsls r0, r1, 2\n\
+ adds r6, r1, 0x1\n\
+ mov r2, r12\n\
+ adds r5, r2, r0\n\
+ ldr r7, [sp, 0x8]\n\
+ adds r0, r7, r1\n\
+ lsls r0, 7\n\
+ ldr r1, [sp]\n\
+ adds r2, r0, r1\n\
_08106BD2:\n\
- lsrs r0, r3, 1\n\
- adds r0, r5, r0\n\
- add r0, r10\n\
- ldrb r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r3\n\
- cmp r0, 0\n\
- beq _08106BE6\n\
- lsrs r1, 4\n\
- b _08106BEA\n\
+ lsrs r0, r3, 1\n\
+ adds r0, r5, r0\n\
+ add r0, r10\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r3\n\
+ cmp r0, 0\n\
+ beq _08106BE6\n\
+ lsrs r1, 4\n\
+ b _08106BEA\n\
_08106BE6:\n\
- movs r0, 0xF\n\
- ands r1, r0\n\
+ movs r0, 0xF\n\
+ ands r1, r0\n\
_08106BEA:\n\
- cmp r1, 0\n\
- bne _08106BFC\n\
- adds r0, r4, r3\n\
- lsls r0, 1\n\
- adds r0, r2\n\
- movs r7, 0x80\n\
- lsls r7, 8\n\
- adds r1, r7, 0\n\
- b _08106C08\n\
+ cmp r1, 0\n\
+ bne _08106BFC\n\
+ adds r0, r4, r3\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ movs r7, 0x80\n\
+ lsls r7, 8\n\
+ adds r1, r7, 0\n\
+ b _08106C08\n\
_08106BFC:\n\
- adds r0, r4, r3\n\
- lsls r0, 1\n\
- adds r0, r2\n\
- lsls r1, 1\n\
- add r1, r9\n\
- ldrh r1, [r1]\n\
+ adds r0, r4, r3\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ lsls r1, 1\n\
+ add r1, r9\n\
+ ldrh r1, [r1]\n\
_08106C08:\n\
- strh r1, [r0]\n\
- adds r0, r3, 0x1\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- cmp r3, 0x7\n\
- bls _08106BD2\n\
- lsls r0, r6, 16\n\
- lsrs r1, r0, 16\n\
- cmp r1, 0x7\n\
- bls _08106BBE\n\
- mov r1, r8\n\
- lsls r0, r1, 16\n\
- lsrs r3, r0, 16\n\
- cmp r3, 0x7\n\
- bls _08106BAE\n\
- ldr r2, [sp, 0x4]\n\
- lsls r0, r2, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x7\n\
- bls _08106BA4\n\
- add sp, 0xC\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
+ strh r1, [r0]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x7\n\
+ bls _08106BD2\n\
+ lsls r0, r6, 16\n\
+ lsrs r1, r0, 16\n\
+ cmp r1, 0x7\n\
+ bls _08106BBE\n\
+ mov r1, r8\n\
+ lsls r0, r1, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x7\n\
+ bls _08106BAE\n\
+ ldr r2, [sp, 0x4]\n\
+ lsls r0, r2, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x7\n\
+ bls _08106BA4\n\
+ add sp, 0xC\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
.syntax divided\n");
}
#endif
@@ -656,7 +736,7 @@ static void sub_8106C40(u8 arg0, u8 arg1)
{
u8 x, y;
- LoadPalette(gPictureFramePalettes, 0, 128 * 2);
+ LoadPalette(gPictureFramePalettes, 0, sizeof(gPictureFramePalettes));
if (arg1 == 1)
{
switch (gUnknown_03005E8C->contestType / 3)
diff --git a/src/credits.c b/src/credits.c
index eb8f45374..7685a033d 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -180,8 +180,8 @@ extern u8 gBirchHelpGfx[];
extern void *gUnknown_0840B5A0[];
// data/credits
-extern u16 gUnknown_0840B7BC[32];
-extern u16 gUnknown_0840B7FC[32];
+const u16 gUnknown_0840B7BC[] = INCBIN_U16("graphics/credits/palette_1.gbapal");
+const u8 gUnknown_0840B7FC[] = INCBIN_U8("graphics/credits/ampersand.4bpp");
extern u8 gUnknown_0840B83C[];
extern u8 gUnknown_0840B84B[];
extern u8 gUnknown_0840B85A[];
@@ -191,8 +191,8 @@ extern struct CreditsEntry *gCreditsEntryPointerTable[][5];
extern u8 gUnknown_0840CA00[][2];
extern struct SpriteSheet gUnknown_0840CAA0;
extern struct SpritePalette gUnknown_0840CAB0;
-extern union AnimCmd *gSpriteAnimTable_0840CA54[];
-extern union AnimCmd *gSpriteAnimTable_0840CA94[];
+extern const union AnimCmd *const gSpriteAnimTable_0840CA54[];
+extern const union AnimCmd *const gSpriteAnimTable_0840CA94[];
extern struct SpriteTemplate gSpriteTemplate_840CAEC;
// data/intro_credits_graphics
@@ -870,326 +870,326 @@ __attribute__((naked))
void task_c_8144664(u8 taskIdC)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- ldr r1, _0814468C @ =gTasks\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- movs r2, 0x8\n\
- ldrsh r0, [r0, r2]\n\
- adds r6, r1, 0\n\
- cmp r0, 0x32\n\
- bls _08144680\n\
- b _0814492C\n\
+ push {r4-r7,lr}\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ ldr r1, _0814468C @ =gTasks\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ movs r2, 0x8\n\
+ ldrsh r0, [r0, r2]\n\
+ adds r6, r1, 0\n\
+ cmp r0, 0x32\n\
+ bls _08144680\n\
+ b _0814492C\n\
_08144680:\n\
- lsls r0, 2\n\
- ldr r1, _08144690 @ =_08144694\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
+ lsls r0, 2\n\
+ ldr r1, _08144690 @ =_08144694\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
_0814468C: .4byte gTasks\n\
_08144690: .4byte _08144694\n\
- .align 2, 0\n\
+ .align 2, 0\n\
_08144694:\n\
- .4byte _08144760\n\
- .4byte _08144784\n\
- .4byte _081447D8\n\
- .4byte _081447F0\n\
- .4byte _0814482C\n\
- .4byte _08144850\n\
- .4byte _0814489C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _081448A8\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _081448C8\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _081448EC\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _08144920\n\
+ .4byte _08144760\n\
+ .4byte _08144784\n\
+ .4byte _081447D8\n\
+ .4byte _081447F0\n\
+ .4byte _0814482C\n\
+ .4byte _08144850\n\
+ .4byte _0814489C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _081448A8\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _081448C8\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _081448EC\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _08144920\n\
_08144760:\n\
- lsls r4, r5, 2\n\
- adds r4, r5\n\
- lsls r4, 3\n\
- adds r4, r6\n\
- ldrh r0, [r4, 0x12]\n\
- lsls r0, 16\n\
- asrs r0, 17\n\
- movs r1, 0x7F\n\
- ands r0, r1\n\
- movs r1, 0xC\n\
- bl Sin\n\
- ldr r1, _08144780 @ =gUnknown_0203935A\n\
- strh r0, [r1]\n\
- b _081447A8\n\
- .align 2, 0\n\
+ lsls r4, r5, 2\n\
+ adds r4, r5\n\
+ lsls r4, 3\n\
+ adds r4, r6\n\
+ ldrh r0, [r4, 0x12]\n\
+ lsls r0, 16\n\
+ asrs r0, 17\n\
+ movs r1, 0x7F\n\
+ ands r0, r1\n\
+ movs r1, 0xC\n\
+ bl Sin\n\
+ ldr r1, _08144780 @ =gUnknown_0203935A\n\
+ strh r0, [r1]\n\
+ b _081447A8\n\
+ .align 2, 0\n\
_08144780: .4byte gUnknown_0203935A\n\
_08144784:\n\
- ldr r7, _081447B0 @ =gUnknown_0203935A\n\
- movs r3, 0\n\
- ldrsh r4, [r7, r3]\n\
- cmp r4, 0\n\
- beq _081447B4\n\
- lsls r4, r5, 2\n\
- adds r4, r5\n\
- lsls r4, 3\n\
- adds r4, r6\n\
- ldrh r0, [r4, 0x12]\n\
- lsls r0, 16\n\
- asrs r0, 17\n\
- movs r1, 0x7F\n\
- ands r0, r1\n\
- movs r1, 0xC\n\
- bl Sin\n\
- strh r0, [r7]\n\
+ ldr r7, _081447B0 @ =gUnknown_0203935A\n\
+ movs r3, 0\n\
+ ldrsh r4, [r7, r3]\n\
+ cmp r4, 0\n\
+ beq _081447B4\n\
+ lsls r4, r5, 2\n\
+ adds r4, r5\n\
+ lsls r4, 3\n\
+ adds r4, r6\n\
+ ldrh r0, [r4, 0x12]\n\
+ lsls r0, 16\n\
+ asrs r0, 17\n\
+ movs r1, 0x7F\n\
+ ands r0, r1\n\
+ movs r1, 0xC\n\
+ bl Sin\n\
+ strh r0, [r7]\n\
_081447A8:\n\
- ldrh r0, [r4, 0x12]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x12]\n\
- b _0814492C\n\
- .align 2, 0\n\
+ ldrh r0, [r4, 0x12]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x12]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
_081447B0: .4byte gUnknown_0203935A\n\
_081447B4:\n\
- ldr r3, _081447D4 @ =gSprites\n\
- lsls r1, r5, 2\n\
- adds r1, r5\n\
- lsls r1, 3\n\
- adds r1, r6\n\
- movs r0, 0xC\n\
- ldrsh r2, [r1, r0]\n\
- lsls r0, r2, 4\n\
- adds r0, r2\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- movs r2, 0x2\n\
- strh r2, [r0, 0x2E]\n\
- strh r4, [r1, 0x12]\n\
- b _08144848\n\
- .align 2, 0\n\
+ ldr r3, _081447D4 @ =gSprites\n\
+ lsls r1, r5, 2\n\
+ adds r1, r5\n\
+ lsls r1, 3\n\
+ adds r1, r6\n\
+ movs r0, 0xC\n\
+ ldrsh r2, [r1, r0]\n\
+ lsls r0, r2, 4\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r2, 0x2\n\
+ strh r2, [r0, 0x2E]\n\
+ strh r4, [r1, 0x12]\n\
+ b _08144848\n\
+ .align 2, 0\n\
_081447D4: .4byte gSprites\n\
_081447D8:\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r1, r0, r6\n\
- ldrh r2, [r1, 0x12]\n\
- movs r3, 0x12\n\
- ldrsh r0, [r1, r3]\n\
- cmp r0, 0x3F\n\
- bgt _08144848\n\
- adds r0, r2, 0x1\n\
- strh r0, [r1, 0x12]\n\
- b _08144866\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r1, r0, r6\n\
+ ldrh r2, [r1, 0x12]\n\
+ movs r3, 0x12\n\
+ ldrsh r0, [r1, r3]\n\
+ cmp r0, 0x3F\n\
+ bgt _08144848\n\
+ adds r0, r2, 0x1\n\
+ strh r0, [r1, 0x12]\n\
+ b _08144866\n\
_081447F0:\n\
- ldr r3, _08144828 @ =gSprites\n\
- lsls r2, r5, 2\n\
- adds r2, r5\n\
- lsls r2, 3\n\
- adds r2, r6\n\
- movs r0, 0xC\n\
- ldrsh r1, [r2, r0]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- movs r1, 0x3\n\
- strh r1, [r0, 0x2E]\n\
- movs r0, 0xE\n\
- ldrsh r1, [r2, r0]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- movs r1, 0x1\n\
- strh r1, [r0, 0x2E]\n\
- movs r0, 0x78\n\
- strh r0, [r2, 0x10]\n\
- ldrh r0, [r2, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r2, 0x8]\n\
- b _0814492C\n\
- .align 2, 0\n\
+ ldr r3, _08144828 @ =gSprites\n\
+ lsls r2, r5, 2\n\
+ adds r2, r5\n\
+ lsls r2, 3\n\
+ adds r2, r6\n\
+ movs r0, 0xC\n\
+ ldrsh r1, [r2, r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r1, 0x3\n\
+ strh r1, [r0, 0x2E]\n\
+ movs r0, 0xE\n\
+ ldrsh r1, [r2, r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r1, 0x1\n\
+ strh r1, [r0, 0x2E]\n\
+ movs r0, 0x78\n\
+ strh r0, [r2, 0x10]\n\
+ ldrh r0, [r2, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r2, 0x8]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
_08144828: .4byte gSprites\n\
_0814482C:\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r1, r0, r6\n\
- ldrh r2, [r1, 0x10]\n\
- movs r3, 0x10\n\
- ldrsh r0, [r1, r3]\n\
- cmp r0, 0\n\
- beq _08144844\n\
- subs r0, r2, 0x1\n\
- strh r0, [r1, 0x10]\n\
- b _0814492C\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r1, r0, r6\n\
+ ldrh r2, [r1, 0x10]\n\
+ movs r3, 0x10\n\
+ ldrsh r0, [r1, r3]\n\
+ cmp r0, 0\n\
+ beq _08144844\n\
+ subs r0, r2, 0x1\n\
+ strh r0, [r1, 0x10]\n\
+ b _0814492C\n\
_08144844:\n\
- movs r0, 0x40\n\
- strh r0, [r1, 0x12]\n\
+ movs r0, 0x40\n\
+ strh r0, [r1, 0x12]\n\
_08144848:\n\
- ldrh r0, [r1, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r1, 0x8]\n\
- b _0814492C\n\
+ ldrh r0, [r1, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1, 0x8]\n\
+ b _0814492C\n\
_08144850:\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r4, r0, r6\n\
- ldrh r1, [r4, 0x12]\n\
- movs r2, 0x12\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0\n\
- ble _0814487C\n\
- subs r0, r1, 0x1\n\
- strh r0, [r4, 0x12]\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r4, r0, r6\n\
+ ldrh r1, [r4, 0x12]\n\
+ movs r2, 0x12\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r0, 0\n\
+ ble _0814487C\n\
+ subs r0, r1, 0x1\n\
+ strh r0, [r4, 0x12]\n\
_08144866:\n\
- movs r1, 0x7F\n\
- ands r0, r1\n\
- movs r1, 0x14\n\
- bl Sin\n\
- ldr r1, _08144878 @ =gUnknown_0203935A\n\
- strh r0, [r1]\n\
- b _0814492C\n\
- .align 2, 0\n\
+ movs r1, 0x7F\n\
+ ands r0, r1\n\
+ movs r1, 0x14\n\
+ bl Sin\n\
+ ldr r1, _08144878 @ =gUnknown_0203935A\n\
+ strh r0, [r1]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
_08144878: .4byte gUnknown_0203935A\n\
_0814487C:\n\
- ldr r2, _08144898 @ =gSprites\n\
- movs r3, 0xC\n\
- ldrsh r1, [r4, r3]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- movs r1, 0x1\n\
- strh r1, [r0, 0x2E]\n\
- ldrh r0, [r4, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x8]\n\
- b _0814492C\n\
- .align 2, 0\n\
+ ldr r2, _08144898 @ =gSprites\n\
+ movs r3, 0xC\n\
+ ldrsh r1, [r4, r3]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ movs r1, 0x1\n\
+ strh r1, [r0, 0x2E]\n\
+ ldrh r0, [r4, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x8]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
_08144898: .4byte gSprites\n\
_0814489C:\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r0, r6\n\
- movs r1, 0x32\n\
- b _0814492A\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r0, r6\n\
+ movs r1, 0x32\n\
+ b _0814492A\n\
_081448A8:\n\
- ldr r3, _081448C4 @ =gSprites\n\
- lsls r1, r5, 2\n\
- adds r1, r5\n\
- lsls r1, 3\n\
- adds r1, r6\n\
- movs r0, 0xE\n\
- ldrsh r2, [r1, r0]\n\
- lsls r0, r2, 4\n\
- adds r0, r2\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- movs r2, 0x2\n\
- b _081448E0\n\
- .align 2, 0\n\
+ ldr r3, _081448C4 @ =gSprites\n\
+ lsls r1, r5, 2\n\
+ adds r1, r5\n\
+ lsls r1, 3\n\
+ adds r1, r6\n\
+ movs r0, 0xE\n\
+ ldrsh r2, [r1, r0]\n\
+ lsls r0, r2, 4\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r2, 0x2\n\
+ b _081448E0\n\
+ .align 2, 0\n\
_081448C4: .4byte gSprites\n\
_081448C8:\n\
- ldr r3, _081448E8 @ =gSprites\n\
- lsls r1, r5, 2\n\
- adds r1, r5\n\
- lsls r1, 3\n\
- adds r1, r6\n\
- movs r0, 0xC\n\
- ldrsh r2, [r1, r0]\n\
- lsls r0, r2, 4\n\
- adds r0, r2\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- movs r2, 0x4\n\
+ ldr r3, _081448E8 @ =gSprites\n\
+ lsls r1, r5, 2\n\
+ adds r1, r5\n\
+ lsls r1, 3\n\
+ adds r1, r6\n\
+ movs r0, 0xC\n\
+ ldrsh r2, [r1, r0]\n\
+ lsls r0, r2, 4\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r2, 0x4\n\
_081448E0:\n\
- strh r2, [r0, 0x2E]\n\
- movs r0, 0x32\n\
- strh r0, [r1, 0x8]\n\
- b _0814492C\n\
- .align 2, 0\n\
+ strh r2, [r0, 0x2E]\n\
+ movs r0, 0x32\n\
+ strh r0, [r1, 0x8]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
_081448E8: .4byte gSprites\n\
_081448EC:\n\
- ldr r3, _0814491C @ =gSprites\n\
- lsls r2, r5, 2\n\
- adds r2, r5\n\
- lsls r2, 3\n\
- adds r2, r6\n\
- movs r0, 0xC\n\
- ldrsh r1, [r2, r0]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- movs r1, 0x5\n\
- strh r1, [r0, 0x2E]\n\
- movs r0, 0xE\n\
- ldrsh r1, [r2, r0]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- movs r1, 0x3\n\
- strh r1, [r0, 0x2E]\n\
- movs r0, 0x32\n\
- strh r0, [r2, 0x8]\n\
- b _0814492C\n\
- .align 2, 0\n\
+ ldr r3, _0814491C @ =gSprites\n\
+ lsls r2, r5, 2\n\
+ adds r2, r5\n\
+ lsls r2, 3\n\
+ adds r2, r6\n\
+ movs r0, 0xC\n\
+ ldrsh r1, [r2, r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r1, 0x5\n\
+ strh r1, [r0, 0x2E]\n\
+ movs r0, 0xE\n\
+ ldrsh r1, [r2, r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r1, 0x3\n\
+ strh r1, [r0, 0x2E]\n\
+ movs r0, 0x32\n\
+ strh r0, [r2, 0x8]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
_0814491C: .4byte gSprites\n\
_08144920:\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r0, r6\n\
- movs r1, 0\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r0, r6\n\
+ movs r1, 0\n\
_0814492A:\n\
- strh r1, [r0, 0x8]\n\
+ strh r1, [r0, 0x8]\n\
_0814492C:\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
.syntax divided\n");
}
@@ -1455,107 +1455,107 @@ __attribute__((naked))
void sub_8145128(u16 arg0, u16 arg1, u16 arg2)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- adds r3, r0, 0\n\
- adds r4, r2, 0\n\
- lsls r3, 16\n\
- lsrs r3, 16\n\
- lsls r1, 16\n\
- lsrs r7, r1, 16\n\
- lsls r4, 16\n\
- lsrs r5, r4, 16\n\
- ldr r0, _081451EC @ =gCreditsCopyrightEnd_Gfx\n\
- movs r6, 0xC0\n\
- lsls r6, 19\n\
- adds r3, r6\n\
- adds r1, r3, 0\n\
- bl LZ77UnCompVram\n\
- ldr r0, _081451F0 @ =gIntroCopyright_Pal\n\
- adds r1, r5, 0\n\
- movs r2, 0x20\n\
- bl LoadPalette\n\
- lsrs r4, 20\n\
- lsls r4, 28\n\
- lsrs r4, 16\n\
- movs r2, 0\n\
- adds r1, r4, 0x1\n\
- ldr r3, _081451F4 @ =0x000003ff\n\
+ push {r4-r7,lr}\n\
+ adds r3, r0, 0\n\
+ adds r4, r2, 0\n\
+ lsls r3, 16\n\
+ lsrs r3, 16\n\
+ lsls r1, 16\n\
+ lsrs r7, r1, 16\n\
+ lsls r4, 16\n\
+ lsrs r5, r4, 16\n\
+ ldr r0, _081451EC @ =gCreditsCopyrightEnd_Gfx\n\
+ movs r6, 0xC0\n\
+ lsls r6, 19\n\
+ adds r3, r6\n\
+ adds r1, r3, 0\n\
+ bl LZ77UnCompVram\n\
+ ldr r0, _081451F0 @ =gIntroCopyright_Pal\n\
+ adds r1, r5, 0\n\
+ movs r2, 0x20\n\
+ bl LoadPalette\n\
+ lsrs r4, 20\n\
+ lsls r4, 28\n\
+ lsrs r4, 16\n\
+ movs r2, 0\n\
+ adds r1, r4, 0x1\n\
+ ldr r3, _081451F4 @ =0x000003ff\n\
_0814515E:\n\
- lsls r0, r2, 1\n\
- adds r0, r7\n\
- adds r0, r6\n\
- strh r1, [r0]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, r3\n\
- bls _0814515E\n\
- movs r2, 0\n\
- adds r0, r4, 0x2\n\
- adds r6, r4, 0\n\
- adds r6, 0x17\n\
- movs r1, 0x2B\n\
- adds r1, r4\n\
- mov r12, r1\n\
- adds r4, 0x42\n\
- ldr r5, _081451F8 @ =0x060001c8\n\
- adds r3, r0, 0\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ adds r0, r6\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, r3\n\
+ bls _0814515E\n\
+ movs r2, 0\n\
+ adds r0, r4, 0x2\n\
+ adds r6, r4, 0\n\
+ adds r6, 0x17\n\
+ movs r1, 0x2B\n\
+ adds r1, r4\n\
+ mov r12, r1\n\
+ adds r4, 0x42\n\
+ ldr r5, _081451F8 @ =0x060001c8\n\
+ adds r3, r0, 0\n\
_08145184:\n\
- lsls r0, r2, 1\n\
- adds r0, r7\n\
- adds r0, r5\n\
- adds r1, r2, r3\n\
- strh r1, [r0]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, 0x14\n\
- bls _08145184\n\
- movs r2, 0\n\
- ldr r5, _081451FC @ =0x06000248\n\
- adds r3, r6, 0\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ adds r0, r5\n\
+ adds r1, r2, r3\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x14\n\
+ bls _08145184\n\
+ movs r2, 0\n\
+ ldr r5, _081451FC @ =0x06000248\n\
+ adds r3, r6, 0\n\
_0814519E:\n\
- lsls r0, r2, 1\n\
- adds r0, r7\n\
- adds r0, r5\n\
- adds r1, r2, r3\n\
- strh r1, [r0]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, 0x13\n\
- bls _0814519E\n\
- movs r2, 0\n\
- ldr r5, _08145200 @ =0x060002c8\n\
- mov r3, r12\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ adds r0, r5\n\
+ adds r1, r2, r3\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x13\n\
+ bls _0814519E\n\
+ movs r2, 0\n\
+ ldr r5, _08145200 @ =0x060002c8\n\
+ mov r3, r12\n\
_081451B8:\n\
- lsls r0, r2, 1\n\
- adds r0, r7\n\
- adds r0, r5\n\
- adds r1, r2, r3\n\
- strh r1, [r0]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, 0x16\n\
- bls _081451B8\n\
- movs r2, 0\n\
- ldr r3, _08145204 @ =0x06000348\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ adds r0, r5\n\
+ adds r1, r2, r3\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x16\n\
+ bls _081451B8\n\
+ movs r2, 0\n\
+ ldr r3, _08145204 @ =0x06000348\n\
_081451D0:\n\
- lsls r0, r2, 1\n\
- adds r0, r7\n\
- adds r0, r3\n\
- adds r1, r2, r4\n\
- strh r1, [r0]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, 0xB\n\
- bls _081451D0\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ adds r0, r3\n\
+ adds r1, r2, r4\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0xB\n\
+ bls _081451D0\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_081451EC: .4byte gCreditsCopyrightEnd_Gfx\n\
_081451F0: .4byte gIntroCopyright_Pal\n\
_081451F4: .4byte 0x000003ff\n\
@@ -1593,73 +1593,73 @@ __attribute__((naked))
void sub_814524C(void *arg0, u8 arg1, u8 arg2, u16 arg3, int arg4)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0xC\n\
- str r0, [sp]\n\
- ldr r0, [sp, 0x2C]\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- mov r10, r1\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- str r2, [sp, 0x4]\n\
- lsls r3, 16\n\
- lsrs r3, 16\n\
- str r3, [sp, 0x8]\n\
- lsls r0, 16\n\
- lsrs r0, 20\n\
- lsls r0, 28\n\
- lsrs r0, 16\n\
- mov r9, r0\n\
- movs r5, 0\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0xC\n\
+ str r0, [sp]\n\
+ ldr r0, [sp, 0x2C]\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ mov r10, r1\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ str r2, [sp, 0x4]\n\
+ lsls r3, 16\n\
+ lsrs r3, 16\n\
+ str r3, [sp, 0x8]\n\
+ lsls r0, 16\n\
+ lsrs r0, 20\n\
+ lsls r0, 28\n\
+ lsrs r0, 16\n\
+ mov r9, r0\n\
+ movs r5, 0\n\
_0814527A:\n\
- movs r4, 0\n\
- lsls r7, r5, 1\n\
- ldr r1, [sp, 0x4]\n\
- adds r0, r1, r5\n\
- adds r2, r5, 0x1\n\
- mov r8, r2\n\
- lsls r0, 6\n\
- ldr r1, [sp, 0x8]\n\
- adds r6, r0, r1\n\
+ movs r4, 0\n\
+ lsls r7, r5, 1\n\
+ ldr r1, [sp, 0x4]\n\
+ adds r0, r1, r5\n\
+ adds r2, r5, 0x1\n\
+ mov r8, r2\n\
+ lsls r0, 6\n\
+ ldr r1, [sp, 0x8]\n\
+ adds r6, r0, r1\n\
_0814528C:\n\
- adds r0, r7, r5\n\
- adds r0, r4\n\
- ldr r2, [sp]\n\
- adds r0, r2, r0\n\
- ldrb r0, [r0]\n\
- bl sub_8145208\n\
- mov r2, r10\n\
- adds r1, r2, r4\n\
- lsls r1, 1\n\
- adds r1, r6\n\
- movs r2, 0xC0\n\
- lsls r2, 19\n\
- adds r1, r2\n\
- add r0, r9\n\
- strh r0, [r1]\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, 0x2\n\
- bls _0814528C\n\
- mov r1, r8\n\
- lsls r0, r1, 24\n\
- lsrs r5, r0, 24\n\
- cmp r5, 0x4\n\
- bls _0814527A\n\
- add sp, 0xC\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
+ adds r0, r7, r5\n\
+ adds r0, r4\n\
+ ldr r2, [sp]\n\
+ adds r0, r2, r0\n\
+ ldrb r0, [r0]\n\
+ bl sub_8145208\n\
+ mov r2, r10\n\
+ adds r1, r2, r4\n\
+ lsls r1, 1\n\
+ adds r1, r6\n\
+ movs r2, 0xC0\n\
+ lsls r2, 19\n\
+ adds r1, r2\n\
+ add r0, r9\n\
+ strh r0, [r1]\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0x2\n\
+ bls _0814528C\n\
+ mov r1, r8\n\
+ lsls r0, r1, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x4\n\
+ bls _0814527A\n\
+ add sp, 0xC\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
.syntax divided\n");
}
@@ -1788,238 +1788,238 @@ __attribute__((naked))
void spritecb_81454E0(struct Sprite *sprite)
{
asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- sub sp, 0x4\n\
- adds r5, r0, 0\n\
- ldr r0, _081454F8 @ =gUnknown_0203935C\n\
- movs r1, 0\n\
- ldrsh r0, [r0, r1]\n\
- cmp r0, 0\n\
- beq _081454FC\n\
- adds r0, r5, 0\n\
- bl DestroySprite\n\
- b _081456A6\n\
- .align 2, 0\n\
+ push {r4,r5,lr}\n\
+ sub sp, 0x4\n\
+ adds r5, r0, 0\n\
+ ldr r0, _081454F8 @ =gUnknown_0203935C\n\
+ movs r1, 0\n\
+ ldrsh r0, [r0, r1]\n\
+ cmp r0, 0\n\
+ beq _081454FC\n\
+ adds r0, r5, 0\n\
+ bl DestroySprite\n\
+ b _081456A6\n\
+ .align 2, 0\n\
_081454F8: .4byte gUnknown_0203935C\n\
_081454FC:\n\
- ldrh r0, [r5, 0x3C]\n\
- adds r0, 0x1\n\
- strh r0, [r5, 0x3C]\n\
- movs r2, 0x2E\n\
- ldrsh r0, [r5, r2]\n\
- cmp r0, 0xA\n\
- bhi _08145544\n\
- lsls r0, 2\n\
- ldr r1, _08145514 @ =_08145518\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
+ ldrh r0, [r5, 0x3C]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5, 0x3C]\n\
+ movs r2, 0x2E\n\
+ ldrsh r0, [r5, r2]\n\
+ cmp r0, 0xA\n\
+ bhi _08145544\n\
+ lsls r0, 2\n\
+ ldr r1, _08145514 @ =_08145518\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
_08145514: .4byte _08145518\n\
- .align 2, 0\n\
+ .align 2, 0\n\
_08145518:\n\
- .4byte _08145544\n\
- .4byte _0814559E\n\
- .4byte _08145620\n\
- .4byte _08145660\n\
- .4byte _08145544\n\
- .4byte _08145544\n\
- .4byte _08145544\n\
- .4byte _08145544\n\
- .4byte _08145544\n\
- .4byte _08145544\n\
- .4byte _08145696\n\
+ .4byte _08145544\n\
+ .4byte _0814559E\n\
+ .4byte _08145620\n\
+ .4byte _08145660\n\
+ .4byte _08145544\n\
+ .4byte _08145544\n\
+ .4byte _08145544\n\
+ .4byte _08145544\n\
+ .4byte _08145544\n\
+ .4byte _08145544\n\
+ .4byte _08145696\n\
_08145544:\n\
- ldrb r1, [r5, 0x1]\n\
- movs r0, 0x4\n\
- negs r0, r0\n\
- ands r0, r1\n\
- movs r1, 0x1\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x1]\n\
- movs r0, 0x30\n\
- ldrsh r1, [r5, r0]\n\
- movs r0, 0x1F\n\
- ands r1, r0\n\
- lsls r1, 1\n\
- ldrb r2, [r5, 0x3]\n\
- movs r0, 0x3F\n\
- negs r0, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x3]\n\
- movs r0, 0x10\n\
- strh r0, [r5, 0x32]\n\
- ldrh r4, [r5, 0x30]\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- movs r0, 0x80\n\
- lsls r0, 9\n\
- movs r1, 0x10\n\
- bl __divsi3\n\
- adds r1, r0, 0\n\
- str r1, [sp]\n\
- adds r0, r4, 0\n\
- movs r2, 0\n\
- movs r3, 0\n\
- bl SetOamMatrix\n\
- adds r2, r5, 0\n\
- adds r2, 0x3E\n\
- ldrb r1, [r2]\n\
- movs r0, 0x5\n\
- negs r0, r0\n\
- ands r0, r1\n\
- strb r0, [r2]\n\
- movs r0, 0x1\n\
- strh r0, [r5, 0x2E]\n\
- b _081456A6\n\
+ ldrb r1, [r5, 0x1]\n\
+ movs r0, 0x4\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ movs r1, 0x1\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x1]\n\
+ movs r0, 0x30\n\
+ ldrsh r1, [r5, r0]\n\
+ movs r0, 0x1F\n\
+ ands r1, r0\n\
+ lsls r1, 1\n\
+ ldrb r2, [r5, 0x3]\n\
+ movs r0, 0x3F\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x3]\n\
+ movs r0, 0x10\n\
+ strh r0, [r5, 0x32]\n\
+ ldrh r4, [r5, 0x30]\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ movs r0, 0x80\n\
+ lsls r0, 9\n\
+ movs r1, 0x10\n\
+ bl __divsi3\n\
+ adds r1, r0, 0\n\
+ str r1, [sp]\n\
+ adds r0, r4, 0\n\
+ movs r2, 0\n\
+ movs r3, 0\n\
+ bl SetOamMatrix\n\
+ adds r2, r5, 0\n\
+ adds r2, 0x3E\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x5\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ strb r0, [r2]\n\
+ movs r0, 0x1\n\
+ strh r0, [r5, 0x2E]\n\
+ b _081456A6\n\
_0814559E:\n\
- ldrh r1, [r5, 0x32]\n\
- movs r2, 0x32\n\
- ldrsh r0, [r5, r2]\n\
- cmp r0, 0xFF\n\
- bgt _081455D4\n\
- adds r0, r1, 0\n\
- adds r0, 0x8\n\
- strh r0, [r5, 0x32]\n\
- ldrh r4, [r5, 0x30]\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- movs r0, 0x32\n\
- ldrsh r1, [r5, r0]\n\
- movs r0, 0x80\n\
- lsls r0, 9\n\
- bl __divsi3\n\
- adds r1, r0, 0\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- str r1, [sp]\n\
- adds r0, r4, 0\n\
- movs r2, 0\n\
- movs r3, 0\n\
- bl SetOamMatrix\n\
- b _081455DA\n\
+ ldrh r1, [r5, 0x32]\n\
+ movs r2, 0x32\n\
+ ldrsh r0, [r5, r2]\n\
+ cmp r0, 0xFF\n\
+ bgt _081455D4\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x8\n\
+ strh r0, [r5, 0x32]\n\
+ ldrh r4, [r5, 0x30]\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ movs r0, 0x32\n\
+ ldrsh r1, [r5, r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 9\n\
+ bl __divsi3\n\
+ adds r1, r0, 0\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ str r1, [sp]\n\
+ adds r0, r4, 0\n\
+ movs r2, 0\n\
+ movs r3, 0\n\
+ bl SetOamMatrix\n\
+ b _081455DA\n\
_081455D4:\n\
- ldrh r0, [r5, 0x2E]\n\
- adds r0, 0x1\n\
- strh r0, [r5, 0x2E]\n\
+ ldrh r0, [r5, 0x2E]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5, 0x2E]\n\
_081455DA:\n\
- movs r2, 0x30\n\
- ldrsh r1, [r5, r2]\n\
- cmp r1, 0x2\n\
- beq _081456A6\n\
- cmp r1, 0x2\n\
- bgt _081455EC\n\
- cmp r1, 0x1\n\
- beq _081455F2\n\
- b _081456A6\n\
+ movs r2, 0x30\n\
+ ldrsh r1, [r5, r2]\n\
+ cmp r1, 0x2\n\
+ beq _081456A6\n\
+ cmp r1, 0x2\n\
+ bgt _081455EC\n\
+ cmp r1, 0x1\n\
+ beq _081455F2\n\
+ b _081456A6\n\
_081455EC:\n\
- cmp r1, 0x3\n\
- beq _0814560A\n\
- b _081456A6\n\
+ cmp r1, 0x3\n\
+ beq _0814560A\n\
+ b _081456A6\n\
_081455F2:\n\
- ldrh r1, [r5, 0x3C]\n\
- movs r0, 0x3\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08145602\n\
- ldrh r0, [r5, 0x22]\n\
- adds r0, 0x1\n\
- strh r0, [r5, 0x22]\n\
+ ldrh r1, [r5, 0x3C]\n\
+ movs r0, 0x3\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08145602\n\
+ ldrh r0, [r5, 0x22]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5, 0x22]\n\
_08145602:\n\
- ldrh r0, [r5, 0x20]\n\
- subs r0, 0x2\n\
- strh r0, [r5, 0x20]\n\
- b _081456A6\n\
+ ldrh r0, [r5, 0x20]\n\
+ subs r0, 0x2\n\
+ strh r0, [r5, 0x20]\n\
+ b _081456A6\n\
_0814560A:\n\
- ldrh r0, [r5, 0x3C]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- bne _08145618\n\
- ldrh r0, [r5, 0x22]\n\
- adds r0, 0x1\n\
- strh r0, [r5, 0x22]\n\
+ ldrh r0, [r5, 0x3C]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _08145618\n\
+ ldrh r0, [r5, 0x22]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5, 0x22]\n\
_08145618:\n\
- ldrh r0, [r5, 0x20]\n\
- adds r0, 0x2\n\
- strh r0, [r5, 0x20]\n\
- b _081456A6\n\
+ ldrh r0, [r5, 0x20]\n\
+ adds r0, 0x2\n\
+ strh r0, [r5, 0x20]\n\
+ b _081456A6\n\
_08145620:\n\
- ldrh r1, [r5, 0x34]\n\
- movs r2, 0x34\n\
- ldrsh r0, [r5, r2]\n\
- cmp r0, 0\n\
- beq _08145630\n\
- subs r0, r1, 0x1\n\
- strh r0, [r5, 0x34]\n\
- b _081456A6\n\
+ ldrh r1, [r5, 0x34]\n\
+ movs r2, 0x34\n\
+ ldrsh r0, [r5, r2]\n\
+ cmp r0, 0\n\
+ beq _08145630\n\
+ subs r0, r1, 0x1\n\
+ strh r0, [r5, 0x34]\n\
+ b _081456A6\n\
_08145630:\n\
- ldr r1, _0814565C @ =REG_BLDCNT\n\
- movs r2, 0xF4\n\
- lsls r2, 4\n\
- adds r0, r2, 0\n\
- strh r0, [r1]\n\
- adds r1, 0x2\n\
- movs r0, 0x10\n\
- strh r0, [r1]\n\
- ldrb r1, [r5, 0x1]\n\
- movs r0, 0xD\n\
- negs r0, r0\n\
- ands r0, r1\n\
- movs r1, 0x4\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x1]\n\
- movs r0, 0x10\n\
- strh r0, [r5, 0x34]\n\
- ldrh r0, [r5, 0x2E]\n\
- adds r0, 0x1\n\
- strh r0, [r5, 0x2E]\n\
- b _081456A6\n\
- .align 2, 0\n\
+ ldr r1, _0814565C @ =REG_BLDCNT\n\
+ movs r2, 0xF4\n\
+ lsls r2, 4\n\
+ adds r0, r2, 0\n\
+ strh r0, [r1]\n\
+ adds r1, 0x2\n\
+ movs r0, 0x10\n\
+ strh r0, [r1]\n\
+ ldrb r1, [r5, 0x1]\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x1]\n\
+ movs r0, 0x10\n\
+ strh r0, [r5, 0x34]\n\
+ ldrh r0, [r5, 0x2E]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5, 0x2E]\n\
+ b _081456A6\n\
+ .align 2, 0\n\
_0814565C: .4byte REG_BLDCNT\n\
_08145660:\n\
- ldrh r1, [r5, 0x34]\n\
- movs r2, 0x34\n\
- ldrsh r0, [r5, r2]\n\
- cmp r0, 0\n\
- beq _08145684\n\
- subs r1, 0x1\n\
- strh r1, [r5, 0x34]\n\
- ldr r3, _08145680 @ =REG_BLDALPHA\n\
- movs r0, 0x34\n\
- ldrsh r2, [r5, r0]\n\
- movs r0, 0x10\n\
- subs r0, r2\n\
- lsls r0, 8\n\
- adds r1, r0\n\
- strh r1, [r3]\n\
- b _081456A6\n\
- .align 2, 0\n\
+ ldrh r1, [r5, 0x34]\n\
+ movs r2, 0x34\n\
+ ldrsh r0, [r5, r2]\n\
+ cmp r0, 0\n\
+ beq _08145684\n\
+ subs r1, 0x1\n\
+ strh r1, [r5, 0x34]\n\
+ ldr r3, _08145680 @ =REG_BLDALPHA\n\
+ movs r0, 0x34\n\
+ ldrsh r2, [r5, r0]\n\
+ movs r0, 0x10\n\
+ subs r0, r2\n\
+ lsls r0, 8\n\
+ adds r1, r0\n\
+ strh r1, [r3]\n\
+ b _081456A6\n\
+ .align 2, 0\n\
_08145680: .4byte REG_BLDALPHA\n\
_08145684:\n\
- adds r2, r5, 0\n\
- adds r2, 0x3E\n\
- ldrb r0, [r2]\n\
- movs r1, 0x4\n\
- orrs r0, r1\n\
- strb r0, [r2]\n\
- movs r0, 0xA\n\
- strh r0, [r5, 0x2E]\n\
- b _081456A6\n\
+ adds r2, r5, 0\n\
+ adds r2, 0x3E\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ movs r0, 0xA\n\
+ strh r0, [r5, 0x2E]\n\
+ b _081456A6\n\
_08145696:\n\
- ldr r0, _081456B0 @ =REG_BLDCNT\n\
- movs r1, 0\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, r5, 0\n\
- bl DestroySprite\n\
+ ldr r0, _081456B0 @ =REG_BLDCNT\n\
+ movs r1, 0\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, r5, 0\n\
+ bl DestroySprite\n\
_081456A6:\n\
- add sp, 0x4\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ add sp, 0x4\n\
+ pop {r4,r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_081456B0: .4byte REG_BLDCNT\n\
.syntax divided\n");
}
@@ -2083,155 +2083,155 @@ __attribute__((naked))
u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x14\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- mov r10, r1\n\
- lsls r2, 16\n\
- lsrs r2, 16\n\
- str r2, [sp, 0x10]\n\
- lsls r3, 16\n\
- lsrs r3, 16\n\
- mov r9, r3\n\
- adds r0, r6, 0\n\
- bl NationalPokedexNumToSpecies\n\
- adds r6, r0, 0\n\
- cmp r6, 0xC9\n\
- beq _081456F8\n\
- movs r0, 0x9A\n\
- lsls r0, 1\n\
- cmp r6, r0\n\
- beq _081456EE\n\
- movs r7, 0\n\
- b _081456FC\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x14\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ mov r10, r1\n\
+ lsls r2, 16\n\
+ lsrs r2, 16\n\
+ str r2, [sp, 0x10]\n\
+ lsls r3, 16\n\
+ lsrs r3, 16\n\
+ mov r9, r3\n\
+ adds r0, r6, 0\n\
+ bl NationalPokedexNumToSpecies\n\
+ adds r6, r0, 0\n\
+ cmp r6, 0xC9\n\
+ beq _081456F8\n\
+ movs r0, 0x9A\n\
+ lsls r0, 1\n\
+ cmp r6, r0\n\
+ beq _081456EE\n\
+ movs r7, 0\n\
+ b _081456FC\n\
_081456EE:\n\
- ldr r0, _081456F4 @ =gSaveBlock2\n\
- ldr r7, [r0, 0x20]\n\
- b _081456FC\n\
- .align 2, 0\n\
+ ldr r0, _081456F4 @ =gSaveBlock2\n\
+ ldr r7, [r0, 0x20]\n\
+ b _081456FC\n\
+ .align 2, 0\n\
_081456F4: .4byte gSaveBlock2\n\
_081456F8:\n\
- ldr r0, _081457E8 @ =gSaveBlock2\n\
- ldr r7, [r0, 0x1C]\n\
+ ldr r0, _081457E8 @ =gSaveBlock2\n\
+ ldr r7, [r0, 0x1C]\n\
_081456FC:\n\
- lsls r0, r6, 3\n\
- ldr r1, _081457EC @ =gMonFrontPicTable\n\
- adds r0, r1\n\
- ldr r1, _081457F0 @ =gMonFrontPicCoords\n\
- lsls r2, r6, 2\n\
- adds r2, r1\n\
- ldrb r1, [r2]\n\
- ldrb r2, [r2, 0x1]\n\
- movs r3, 0x80\n\
- lsls r3, 18\n\
- ldr r4, _081457F4 @ =gUnknown_0840B5A0\n\
- mov r8, r4\n\
- mov r5, r9\n\
- lsls r4, r5, 2\n\
- add r4, r8\n\
- ldr r4, [r4]\n\
- str r4, [sp]\n\
- str r6, [sp, 0x4]\n\
- str r7, [sp, 0x8]\n\
- movs r4, 0x1\n\
- str r4, [sp, 0xC]\n\
- bl LoadSpecialPokePic\n\
- ldr r2, _081457F8 @ =0x0000ffff\n\
- adds r0, r6, 0\n\
- movs r1, 0\n\
- bl species_and_otid_get_pal\n\
- lsls r5, 4\n\
- mov r8, r5\n\
- movs r1, 0x80\n\
- lsls r1, 1\n\
- add r1, r8\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- movs r2, 0x20\n\
- bl LoadCompressedPalette\n\
- mov r7, r9\n\
- lsls r6, r7, 24\n\
- lsrs r6, 24\n\
- mov r0, r9\n\
- adds r1, r6, 0\n\
- bl sub_8143648\n\
- ldr r0, _081457FC @ =gUnknown_02024E8C\n\
- mov r2, r10\n\
- lsls r1, r2, 16\n\
- asrs r1, 16\n\
- ldr r3, [sp, 0x10]\n\
- lsls r2, r3, 16\n\
- asrs r2, 16\n\
- movs r3, 0\n\
- bl CreateSprite\n\
- adds r4, r0, 0\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- ldr r5, _08145800 @ =gSprites\n\
- lsls r2, r4, 4\n\
- adds r2, r4\n\
- lsls r2, 2\n\
- adds r3, r2, r5\n\
- ldrb r1, [r3, 0x5]\n\
- movs r0, 0xF\n\
- ands r0, r1\n\
- mov r7, r8\n\
- orrs r0, r7\n\
- movs r1, 0xD\n\
- negs r1, r1\n\
- ands r0, r1\n\
- movs r1, 0x4\n\
- orrs r0, r1\n\
- strb r0, [r3, 0x5]\n\
- mov r0, r9\n\
- adds r0, 0x1\n\
- strh r0, [r3, 0x30]\n\
- movs r0, 0x3E\n\
- adds r0, r3\n\
- mov r8, r0\n\
- ldrb r0, [r0]\n\
- orrs r0, r1\n\
- mov r1, r8\n\
- strb r0, [r1]\n\
- adds r0, r5, 0\n\
- adds r0, 0x1C\n\
- adds r2, r0\n\
- ldr r0, _08145804 @ =spritecb_81454E0\n\
- str r0, [r2]\n\
- ldr r0, _08145808 @ =gSpriteTemplate_840CAEC\n\
- movs r2, 0x20\n\
- ldrsh r1, [r3, r2]\n\
- movs r7, 0x22\n\
- ldrsh r2, [r3, r7]\n\
- movs r3, 0x1\n\
- bl CreateSprite\n\
- adds r1, r0, 0\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r5\n\
- strh r4, [r0, 0x2E]\n\
- adds r1, r6, 0\n\
- bl StartSpriteAnimIfDifferent\n\
- adds r0, r4, 0\n\
- add sp, 0x14\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ lsls r0, r6, 3\n\
+ ldr r1, _081457EC @ =gMonFrontPicTable\n\
+ adds r0, r1\n\
+ ldr r1, _081457F0 @ =gMonFrontPicCoords\n\
+ lsls r2, r6, 2\n\
+ adds r2, r1\n\
+ ldrb r1, [r2]\n\
+ ldrb r2, [r2, 0x1]\n\
+ movs r3, 0x80\n\
+ lsls r3, 18\n\
+ ldr r4, _081457F4 @ =gUnknown_0840B5A0\n\
+ mov r8, r4\n\
+ mov r5, r9\n\
+ lsls r4, r5, 2\n\
+ add r4, r8\n\
+ ldr r4, [r4]\n\
+ str r4, [sp]\n\
+ str r6, [sp, 0x4]\n\
+ str r7, [sp, 0x8]\n\
+ movs r4, 0x1\n\
+ str r4, [sp, 0xC]\n\
+ bl LoadSpecialPokePic\n\
+ ldr r2, _081457F8 @ =0x0000ffff\n\
+ adds r0, r6, 0\n\
+ movs r1, 0\n\
+ bl species_and_otid_get_pal\n\
+ lsls r5, 4\n\
+ mov r8, r5\n\
+ movs r1, 0x80\n\
+ lsls r1, 1\n\
+ add r1, r8\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ movs r2, 0x20\n\
+ bl LoadCompressedPalette\n\
+ mov r7, r9\n\
+ lsls r6, r7, 24\n\
+ lsrs r6, 24\n\
+ mov r0, r9\n\
+ adds r1, r6, 0\n\
+ bl sub_8143648\n\
+ ldr r0, _081457FC @ =gUnknown_02024E8C\n\
+ mov r2, r10\n\
+ lsls r1, r2, 16\n\
+ asrs r1, 16\n\
+ ldr r3, [sp, 0x10]\n\
+ lsls r2, r3, 16\n\
+ asrs r2, 16\n\
+ movs r3, 0\n\
+ bl CreateSprite\n\
+ adds r4, r0, 0\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ ldr r5, _08145800 @ =gSprites\n\
+ lsls r2, r4, 4\n\
+ adds r2, r4\n\
+ lsls r2, 2\n\
+ adds r3, r2, r5\n\
+ ldrb r1, [r3, 0x5]\n\
+ movs r0, 0xF\n\
+ ands r0, r1\n\
+ mov r7, r8\n\
+ orrs r0, r7\n\
+ movs r1, 0xD\n\
+ negs r1, r1\n\
+ ands r0, r1\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ strb r0, [r3, 0x5]\n\
+ mov r0, r9\n\
+ adds r0, 0x1\n\
+ strh r0, [r3, 0x30]\n\
+ movs r0, 0x3E\n\
+ adds r0, r3\n\
+ mov r8, r0\n\
+ ldrb r0, [r0]\n\
+ orrs r0, r1\n\
+ mov r1, r8\n\
+ strb r0, [r1]\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x1C\n\
+ adds r2, r0\n\
+ ldr r0, _08145804 @ =spritecb_81454E0\n\
+ str r0, [r2]\n\
+ ldr r0, _08145808 @ =gSpriteTemplate_840CAEC\n\
+ movs r2, 0x20\n\
+ ldrsh r1, [r3, r2]\n\
+ movs r7, 0x22\n\
+ ldrsh r2, [r3, r7]\n\
+ movs r3, 0x1\n\
+ bl CreateSprite\n\
+ adds r1, r0, 0\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r5\n\
+ strh r4, [r0, 0x2E]\n\
+ adds r1, r6, 0\n\
+ bl StartSpriteAnimIfDifferent\n\
+ adds r0, r4, 0\n\
+ add sp, 0x14\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_081457E8: .4byte gSaveBlock2\n\
_081457EC: .4byte gMonFrontPicTable\n\
_081457F0: .4byte gMonFrontPicCoords\n\
@@ -2265,219 +2265,219 @@ __attribute__((naked))
void sub_81458DC(void)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x4\n\
- ldr r7, _0814597C @ =0x0201c000\n\
- ldr r0, _08145980 @ =0x00004023\n\
- bl VarGet\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- bl GetStarterPokemon\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- bl SpeciesToNationalPokedexNum\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r10, r0\n\
- movs r4, 0x1\n\
- movs r5, 0\n\
- ldr r0, _08145984 @ =0x00000181\n\
- mov r8, r0\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ ldr r7, _0814597C @ =0x0201c000\n\
+ ldr r0, _08145980 @ =0x00004023\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ bl GetStarterPokemon\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ bl SpeciesToNationalPokedexNum\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r10, r0\n\
+ movs r4, 0x1\n\
+ movs r5, 0\n\
+ ldr r0, _08145984 @ =0x00000181\n\
+ mov r8, r0\n\
_0814590E:\n\
- adds r0, r4, 0\n\
- movs r1, 0x1\n\
- bl sub_8090D90\n\
- lsls r0, 24\n\
- adds r6, r7, 0\n\
- adds r6, 0x90\n\
- cmp r0, 0\n\
- beq _0814592C\n\
- lsls r0, r5, 1\n\
- adds r0, r6, r0\n\
- strh r4, [r0]\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x1\n\
+ bl sub_8090D90\n\
+ lsls r0, 24\n\
+ adds r6, r7, 0\n\
+ adds r6, 0x90\n\
+ cmp r0, 0\n\
+ beq _0814592C\n\
+ lsls r0, r5, 1\n\
+ adds r0, r6, r0\n\
+ strh r4, [r0]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
_0814592C:\n\
- adds r0, r4, 0x1\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- cmp r4, r8\n\
- bls _0814590E\n\
- adds r4, r5, 0\n\
- ldr r0, _08145984 @ =0x00000181\n\
- lsls r1, r4, 16\n\
- mov r9, r1\n\
- movs r2, 0x8E\n\
- adds r2, r7\n\
- mov r8, r2\n\
- adds r1, r7, 0\n\
- adds r1, 0x86\n\
- str r1, [sp]\n\
- cmp r4, r0\n\
- bhi _08145964\n\
- adds r1, r6, 0\n\
- movs r3, 0\n\
- adds r2, r0, 0\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ cmp r4, r8\n\
+ bls _0814590E\n\
+ adds r4, r5, 0\n\
+ ldr r0, _08145984 @ =0x00000181\n\
+ lsls r1, r4, 16\n\
+ mov r9, r1\n\
+ movs r2, 0x8E\n\
+ adds r2, r7\n\
+ mov r8, r2\n\
+ adds r1, r7, 0\n\
+ adds r1, 0x86\n\
+ str r1, [sp]\n\
+ cmp r4, r0\n\
+ bhi _08145964\n\
+ adds r1, r6, 0\n\
+ movs r3, 0\n\
+ adds r2, r0, 0\n\
_08145954:\n\
- lsls r0, r4, 1\n\
- adds r0, r1, r0\n\
- strh r3, [r0]\n\
- adds r0, r4, 0x1\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- cmp r4, r2\n\
- bls _08145954\n\
+ lsls r0, r4, 1\n\
+ adds r0, r1, r0\n\
+ strh r3, [r0]\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ cmp r4, r2\n\
+ bls _08145954\n\
_08145964:\n\
- movs r2, 0xE5\n\
- lsls r2, 2\n\
- adds r0, r7, r2\n\
- strh r5, [r0]\n\
- mov r1, r9\n\
- lsrs r0, r1, 16\n\
- cmp r0, 0x43\n\
- bhi _08145988\n\
- mov r2, r8\n\
- strh r5, [r2]\n\
- b _0814598E\n\
- .align 2, 0\n\
+ movs r2, 0xE5\n\
+ lsls r2, 2\n\
+ adds r0, r7, r2\n\
+ strh r5, [r0]\n\
+ mov r1, r9\n\
+ lsrs r0, r1, 16\n\
+ cmp r0, 0x43\n\
+ bhi _08145988\n\
+ mov r2, r8\n\
+ strh r5, [r2]\n\
+ b _0814598E\n\
+ .align 2, 0\n\
_0814597C: .4byte 0x0201c000\n\
_08145980: .4byte 0x00004023\n\
_08145984: .4byte 0x00000181\n\
_08145988:\n\
- movs r0, 0x44\n\
- mov r1, r8\n\
- strh r0, [r1]\n\
+ movs r0, 0x44\n\
+ mov r1, r8\n\
+ strh r0, [r1]\n\
_0814598E:\n\
- movs r5, 0\n\
- movs r2, 0xE5\n\
- lsls r2, 2\n\
- adds r4, r7, r2\n\
- mov r9, r5\n\
- b _0814599E\n\
+ movs r5, 0\n\
+ movs r2, 0xE5\n\
+ lsls r2, 2\n\
+ adds r4, r7, r2\n\
+ mov r9, r5\n\
+ b _0814599E\n\
_0814599A:\n\
- cmp r5, 0x43\n\
- bhi _081459EE\n\
+ cmp r5, 0x43\n\
+ bhi _081459EE\n\
_0814599E:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- ldrh r1, [r4]\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- lsls r1, r5, 1\n\
- adds r1, r7, r1\n\
- lsls r0, r2, 1\n\
- adds r3, r6, r0\n\
- ldrh r0, [r3]\n\
- strh r0, [r1]\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- mov r0, r9\n\
- strh r0, [r3]\n\
- ldrh r0, [r4]\n\
- subs r0, 0x1\n\
- strh r0, [r4]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r2, r0\n\
- beq _081459E8\n\
- ldrh r0, [r4]\n\
- lsls r0, 1\n\
- adds r0, r6, r0\n\
- ldrh r0, [r0]\n\
- strh r0, [r3]\n\
- ldrh r0, [r4]\n\
- lsls r0, 1\n\
- adds r0, r6, r0\n\
- mov r1, r9\n\
- strh r1, [r0]\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ ldrh r1, [r4]\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ lsls r1, r5, 1\n\
+ adds r1, r7, r1\n\
+ lsls r0, r2, 1\n\
+ adds r3, r6, r0\n\
+ ldrh r0, [r3]\n\
+ strh r0, [r1]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ mov r0, r9\n\
+ strh r0, [r3]\n\
+ ldrh r0, [r4]\n\
+ subs r0, 0x1\n\
+ strh r0, [r4]\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r2, r0\n\
+ beq _081459E8\n\
+ ldrh r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r0, r6, r0\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r3]\n\
+ ldrh r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r0, r6, r0\n\
+ mov r1, r9\n\
+ strh r1, [r0]\n\
_081459E8:\n\
- ldrh r0, [r4]\n\
- cmp r0, 0\n\
- bne _0814599A\n\
+ ldrh r0, [r4]\n\
+ cmp r0, 0\n\
+ bne _0814599A\n\
_081459EE:\n\
- mov r2, r8\n\
- ldrh r0, [r2]\n\
- cmp r0, 0x43\n\
- bhi _08145A26\n\
- adds r5, r0, 0\n\
- movs r2, 0\n\
- cmp r5, 0x43\n\
- bhi _08145A5C\n\
- mov r3, r8\n\
+ mov r2, r8\n\
+ ldrh r0, [r2]\n\
+ cmp r0, 0x43\n\
+ bhi _08145A26\n\
+ adds r5, r0, 0\n\
+ movs r2, 0\n\
+ cmp r5, 0x43\n\
+ bhi _08145A5C\n\
+ mov r3, r8\n\
_08145A00:\n\
- lsls r1, r5, 1\n\
- adds r1, r7, r1\n\
- lsls r0, r2, 1\n\
- adds r0, r7, r0\n\
- ldrh r0, [r0]\n\
- strh r0, [r1]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- ldrh r0, [r3]\n\
- cmp r2, r0\n\
- bne _08145A1A\n\
- movs r2, 0\n\
+ lsls r1, r5, 1\n\
+ adds r1, r7, r1\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7, r0\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r1]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ ldrh r0, [r3]\n\
+ cmp r2, r0\n\
+ bne _08145A1A\n\
+ movs r2, 0\n\
_08145A1A:\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- cmp r5, 0x43\n\
- bls _08145A00\n\
- b _08145A5C\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ cmp r5, 0x43\n\
+ bls _08145A00\n\
+ b _08145A5C\n\
_08145A26:\n\
- movs r4, 0\n\
- ldrh r0, [r7]\n\
- cmp r0, r10\n\
- beq _08145A42\n\
+ movs r4, 0\n\
+ ldrh r0, [r7]\n\
+ cmp r0, r10\n\
+ beq _08145A42\n\
_08145A2E:\n\
- adds r0, r4, 0x1\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- lsls r0, r4, 1\n\
- adds r0, r7, r0\n\
- ldrh r0, [r0]\n\
- cmp r0, r10\n\
- beq _08145A42\n\
- cmp r4, 0x43\n\
- bls _08145A2E\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ lsls r0, r4, 1\n\
+ adds r0, r7, r0\n\
+ ldrh r0, [r0]\n\
+ cmp r0, r10\n\
+ beq _08145A42\n\
+ cmp r4, 0x43\n\
+ bls _08145A2E\n\
_08145A42:\n\
- mov r1, r8\n\
- ldrh r0, [r1]\n\
- subs r0, 0x1\n\
- cmp r4, r0\n\
- bge _08145A5C\n\
- lsls r0, r4, 1\n\
- adds r0, r7, r0\n\
- ldr r2, [sp]\n\
- ldrh r1, [r2]\n\
- strh r1, [r0]\n\
- mov r0, r10\n\
- strh r0, [r2]\n\
- b _08145A62\n\
+ mov r1, r8\n\
+ ldrh r0, [r1]\n\
+ subs r0, 0x1\n\
+ cmp r4, r0\n\
+ bge _08145A5C\n\
+ lsls r0, r4, 1\n\
+ adds r0, r7, r0\n\
+ ldr r2, [sp]\n\
+ ldrh r1, [r2]\n\
+ strh r1, [r0]\n\
+ mov r0, r10\n\
+ strh r0, [r2]\n\
+ b _08145A62\n\
_08145A5C:\n\
- mov r2, r10\n\
- ldr r1, [sp]\n\
- strh r2, [r1]\n\
+ mov r2, r10\n\
+ ldr r1, [sp]\n\
+ strh r2, [r1]\n\
_08145A62:\n\
- movs r0, 0x44\n\
- mov r1, r8\n\
- strh r0, [r1]\n\
- add sp, 0x4\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
+ movs r0, 0x44\n\
+ mov r1, r8\n\
+ strh r0, [r1]\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
.syntax divided\n");
}
diff --git a/src/decompress.c b/src/decompress.c
index 5906491c6..fb91ebd67 100644
--- a/src/decompress.c
+++ b/src/decompress.c
@@ -74,7 +74,7 @@ void HandleLoadSpecialPokePic(const struct SpriteSheet *spriteSheet, u32 b, u32
{
u32 frontOrBack;
- // gUnknown_081FAF4C appears to be a list of pointers to locations to store poke pics for back and front pic here. the first and third pointers are used for back while the others are used for front.
+ // gUnknown_081FAF4C appears to be a list of pointers to locations to store poke pics for back and front pic here. the first and third pointers are used for back while the others are used for front.
if (dest == gUnknown_081FAF4C[0] || dest == gUnknown_081FAF4C[2])
frontOrBack = 0; // backPic
else
@@ -91,7 +91,7 @@ void LoadSpecialPokePic(const struct SpriteSheet *spriteSheet, u32 b, u32 c, u32
{
u16 i = (((g & 0x3000000) >> 18) | ((g & 0x30000) >> 12) | ((g & 0x300) >> 6) | (g & 3)) % 0x1C;
- // if it is Unown A, set the index to where Unown begins, otherwise add the egg index to get the correct letter to load.
+ // if it is Unown A, set the index to where Unown begins, otherwise add the egg index to get the correct letter to load.
if (i == 0)
i = SPECIES_UNOWN;
else
diff --git a/src/dewford_trend.c b/src/dewford_trend.c
index babdea45a..751d6c416 100644
--- a/src/dewford_trend.c
+++ b/src/dewford_trend.c
@@ -107,173 +107,173 @@ __attribute__((naked))
void sub_80FA220(u16 a)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x8\n\
- lsls r0, 16\n\
- lsrs r1, r0, 16\n\
- cmp r1, 0\n\
- bne _080FA236\n\
- b _080FA34E\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x8\n\
+ lsls r0, 16\n\
+ lsrs r1, r0, 16\n\
+ cmp r1, 0\n\
+ bne _080FA236\n\
+ b _080FA34E\n\
_080FA236:\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- str r0, [sp]\n\
- movs r0, 0\n\
- mov r10, r0\n\
- movs r1, 0x7F\n\
- mov r9, r1\n\
- movs r2, 0x80\n\
- negs r2, r2\n\
- mov r8, r2\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ mov r10, r0\n\
+ movs r1, 0x7F\n\
+ mov r9, r1\n\
+ movs r2, 0x80\n\
+ negs r2, r2\n\
+ mov r8, r2\n\
_080FA24A:\n\
- ldr r2, [sp]\n\
- mov r4, r10\n\
- lsls r0, r4, 3\n\
- ldr r1, _080FA28C @ =gSaveBlock1 + 0x2DD4\n\
- adds r5, r0, r1\n\
- ldrb r6, [r5, 0x1]\n\
- movs r0, 0x40\n\
- ands r0, r6\n\
- cmp r0, 0\n\
- bne _080FA2A0\n\
- ldrb r4, [r5]\n\
- lsls r3, r4, 25\n\
- lsrs r1, r3, 25\n\
- lsls r0, r2, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bcc _080FA290\n\
- adds r0, r1, 0\n\
- subs r0, r2\n\
- mov r2, r9\n\
- ands r0, r2\n\
- mov r1, r8\n\
- ands r1, r4\n\
- orrs r1, r0\n\
- strb r1, [r5]\n\
- movs r0, 0x7F\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- bne _080FA336\n\
- movs r0, 0x40\n\
- orrs r0, r6\n\
- b _080FA334\n\
- .align 2, 0\n\
+ ldr r2, [sp]\n\
+ mov r4, r10\n\
+ lsls r0, r4, 3\n\
+ ldr r1, _080FA28C @ =gSaveBlock1 + 0x2DD4\n\
+ adds r5, r0, r1\n\
+ ldrb r6, [r5, 0x1]\n\
+ movs r0, 0x40\n\
+ ands r0, r6\n\
+ cmp r0, 0\n\
+ bne _080FA2A0\n\
+ ldrb r4, [r5]\n\
+ lsls r3, r4, 25\n\
+ lsrs r1, r3, 25\n\
+ lsls r0, r2, 16\n\
+ lsrs r0, 16\n\
+ cmp r1, r0\n\
+ bcc _080FA290\n\
+ adds r0, r1, 0\n\
+ subs r0, r2\n\
+ mov r2, r9\n\
+ ands r0, r2\n\
+ mov r1, r8\n\
+ ands r1, r4\n\
+ orrs r1, r0\n\
+ strb r1, [r5]\n\
+ movs r0, 0x7F\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _080FA336\n\
+ movs r0, 0x40\n\
+ orrs r0, r6\n\
+ b _080FA334\n\
+ .align 2, 0\n\
_080FA28C: .4byte gSaveBlock1 + 0x2DD4\n\
_080FA290:\n\
- lsrs r0, r3, 25\n\
- subs r2, r0\n\
- mov r0, r8\n\
- ands r0, r4\n\
- strb r0, [r5]\n\
- movs r0, 0x40\n\
- orrs r0, r6\n\
- strb r0, [r5, 0x1]\n\
+ lsrs r0, r3, 25\n\
+ subs r2, r0\n\
+ mov r0, r8\n\
+ ands r0, r4\n\
+ strb r0, [r5]\n\
+ movs r0, 0x40\n\
+ orrs r0, r6\n\
+ strb r0, [r5, 0x1]\n\
_080FA2A0:\n\
- ldrb r7, [r5]\n\
- lsls r0, r7, 25\n\
- lsrs r0, 25\n\
- adds r4, r0, r2\n\
- ldrh r0, [r5]\n\
- lsls r6, r0, 18\n\
- lsls r0, r4, 16\n\
- lsrs r0, 16\n\
- lsrs r1, r6, 25\n\
- cmp r0, r1\n\
- bls _080FA310\n\
- adds r0, r4, 0\n\
- bl __umodsi3\n\
- adds r3, r0, 0\n\
- lsrs r1, r6, 25\n\
- adds r0, r4, 0\n\
- str r3, [sp, 0x4]\n\
- bl __udivsi3\n\
- adds r4, r0, 0\n\
- movs r0, 0x1\n\
- eors r4, r0\n\
- ands r4, r0\n\
- lsls r2, r4, 6\n\
- ldrb r0, [r5, 0x1]\n\
- movs r4, 0x41\n\
- negs r4, r4\n\
- adds r1, r4, 0\n\
- ands r0, r1\n\
- orrs r0, r2\n\
- strb r0, [r5, 0x1]\n\
- movs r1, 0x40\n\
- ands r0, r1\n\
- ldr r3, [sp, 0x4]\n\
- cmp r0, 0\n\
- beq _080FA2FA\n\
- adds r1, r3, 0\n\
- mov r0, r9\n\
- ands r1, r0\n\
- mov r0, r8\n\
- ands r0, r7\n\
- orrs r0, r1\n\
- strb r0, [r5]\n\
- b _080FA336\n\
+ ldrb r7, [r5]\n\
+ lsls r0, r7, 25\n\
+ lsrs r0, 25\n\
+ adds r4, r0, r2\n\
+ ldrh r0, [r5]\n\
+ lsls r6, r0, 18\n\
+ lsls r0, r4, 16\n\
+ lsrs r0, 16\n\
+ lsrs r1, r6, 25\n\
+ cmp r0, r1\n\
+ bls _080FA310\n\
+ adds r0, r4, 0\n\
+ bl __umodsi3\n\
+ adds r3, r0, 0\n\
+ lsrs r1, r6, 25\n\
+ adds r0, r4, 0\n\
+ str r3, [sp, 0x4]\n\
+ bl __udivsi3\n\
+ adds r4, r0, 0\n\
+ movs r0, 0x1\n\
+ eors r4, r0\n\
+ ands r4, r0\n\
+ lsls r2, r4, 6\n\
+ ldrb r0, [r5, 0x1]\n\
+ movs r4, 0x41\n\
+ negs r4, r4\n\
+ adds r1, r4, 0\n\
+ ands r0, r1\n\
+ orrs r0, r2\n\
+ strb r0, [r5, 0x1]\n\
+ movs r1, 0x40\n\
+ ands r0, r1\n\
+ ldr r3, [sp, 0x4]\n\
+ cmp r0, 0\n\
+ beq _080FA2FA\n\
+ adds r1, r3, 0\n\
+ mov r0, r9\n\
+ ands r1, r0\n\
+ mov r0, r8\n\
+ ands r0, r7\n\
+ orrs r0, r1\n\
+ strb r0, [r5]\n\
+ b _080FA336\n\
_080FA2FA:\n\
- ldrh r0, [r5]\n\
- lsls r0, 18\n\
- lsrs r0, 25\n\
- subs r0, r3\n\
- mov r1, r9\n\
- ands r0, r1\n\
- mov r1, r8\n\
- ands r1, r7\n\
- orrs r1, r0\n\
- strb r1, [r5]\n\
- b _080FA336\n\
+ ldrh r0, [r5]\n\
+ lsls r0, 18\n\
+ lsrs r0, 25\n\
+ subs r0, r3\n\
+ mov r1, r9\n\
+ ands r0, r1\n\
+ mov r1, r8\n\
+ ands r1, r7\n\
+ orrs r1, r0\n\
+ strb r1, [r5]\n\
+ b _080FA336\n\
_080FA310:\n\
- mov r2, r9\n\
- ands r4, r2\n\
- mov r0, r8\n\
- ands r0, r7\n\
- orrs r0, r4\n\
- strb r0, [r5]\n\
- lsls r0, 25\n\
- ldrh r1, [r5]\n\
- lsls r1, 18\n\
- lsrs r0, 25\n\
- lsrs r1, 25\n\
- cmp r0, r1\n\
- bne _080FA336\n\
- ldrb r0, [r5, 0x1]\n\
- movs r4, 0x41\n\
- negs r4, r4\n\
- adds r1, r4, 0\n\
- ands r0, r1\n\
+ mov r2, r9\n\
+ ands r4, r2\n\
+ mov r0, r8\n\
+ ands r0, r7\n\
+ orrs r0, r4\n\
+ strb r0, [r5]\n\
+ lsls r0, 25\n\
+ ldrh r1, [r5]\n\
+ lsls r1, 18\n\
+ lsrs r0, 25\n\
+ lsrs r1, 25\n\
+ cmp r0, r1\n\
+ bne _080FA336\n\
+ ldrb r0, [r5, 0x1]\n\
+ movs r4, 0x41\n\
+ negs r4, r4\n\
+ adds r1, r4, 0\n\
+ ands r0, r1\n\
_080FA334:\n\
- strb r0, [r5, 0x1]\n\
+ strb r0, [r5, 0x1]\n\
_080FA336:\n\
- mov r0, r10\n\
- adds r0, 0x1\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r10, r0\n\
- cmp r0, 0x4\n\
- bls _080FA24A\n\
- ldr r0, _080FA360 @ =gSaveBlock1 + 0x2DD4\n\
- movs r1, 0x5\n\
- movs r2, 0\n\
- bl sub_80FA46C\n\
+ mov r0, r10\n\
+ adds r0, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r10, r0\n\
+ cmp r0, 0x4\n\
+ bls _080FA24A\n\
+ ldr r0, _080FA360 @ =gSaveBlock1 + 0x2DD4\n\
+ movs r1, 0x5\n\
+ movs r2, 0\n\
+ bl sub_80FA46C\n\
_080FA34E:\n\
- add sp, 0x8\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ add sp, 0x8\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080FA360: .4byte gSaveBlock1 + 0x2DD4\n\
- .syntax divided\n");
+ .syntax divided\n");
}
#endif
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index 6f36ddb0f..f05959a79 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -16,8 +16,8 @@
struct Coords32
{
- s32 x;
- s32 y;
+ s32 x;
+ s32 y;
};
extern const struct Coords32 gUnknown_0821664C[];
diff --git a/src/heal_location.c b/src/heal_location.c
index a780ee470..42bc18567 100644
--- a/src/heal_location.c
+++ b/src/heal_location.c
@@ -1,9 +1,34 @@
#include "global.h"
#include "heal_location.h"
+#include "map_constants.h"
#define NUM_HEAL_LOCATIONS 22
-extern const struct HealLocation gHealLocations[];
+static const struct HealLocation sHealLocations[] =
+{
+ {MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, 4, 2},
+ {MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_2F, MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_2F, 4, 2},
+ {MAP_GROUP_PETALBURG_CITY, MAP_ID_PETALBURG_CITY, 20, 17},
+ {MAP_GROUP_SLATEPORT_CITY, MAP_ID_SLATEPORT_CITY, 19, 20},
+ {MAP_GROUP_MAUVILLE_CITY, MAP_ID_MAUVILLE_CITY, 22, 6},
+ {MAP_GROUP_RUSTBORO_CITY, MAP_ID_RUSTBORO_CITY, 16, 39},
+ {MAP_GROUP_FORTREE_CITY, MAP_ID_FORTREE_CITY, 5, 7},
+ {MAP_GROUP_LILYCOVE_CITY, MAP_ID_LILYCOVE_CITY, 24, 15},
+ {MAP_GROUP_MOSSDEEP_CITY, MAP_ID_MOSSDEEP_CITY, 28, 17},
+ {MAP_GROUP_SOOTOPOLIS_CITY, MAP_ID_SOOTOPOLIS_CITY, 43, 32},
+ {MAP_GROUP_EVER_GRANDE_CITY, MAP_ID_EVER_GRANDE_CITY, 27, 49},
+ {MAP_GROUP_LITTLEROOT_TOWN, MAP_ID_LITTLEROOT_TOWN, 5, 9},
+ {MAP_GROUP_LITTLEROOT_TOWN, MAP_ID_LITTLEROOT_TOWN, 14, 9},
+ {MAP_GROUP_OLDALE_TOWN, MAP_ID_OLDALE_TOWN, 6, 17},
+ {MAP_GROUP_DEWFORD_TOWN, MAP_ID_DEWFORD_TOWN, 2, 11},
+ {MAP_GROUP_LAVARIDGE_TOWN, MAP_ID_LAVARIDGE_TOWN, 9, 7},
+ {MAP_GROUP_FALLARBOR_TOWN, MAP_ID_FALLARBOR_TOWN, 14, 8},
+ {MAP_GROUP_VERDANTURF_TOWN, MAP_ID_VERDANTURF_TOWN, 16, 4},
+ {MAP_GROUP_PACIFIDLOG_TOWN, MAP_ID_PACIFIDLOG_TOWN, 8, 16},
+ {MAP_GROUP_EVER_GRANDE_CITY, MAP_ID_EVER_GRANDE_CITY, 18, 6},
+ {MAP_GROUP_BATTLE_TOWER_OUTSIDE, MAP_ID_BATTLE_TOWER_OUTSIDE, 14, 9},
+ {MAP_GROUP_SOUTHERN_ISLAND_EXTERIOR, MAP_ID_SOUTHERN_ISLAND_EXTERIOR, 15, 20},
+};
u32 GetHealLocationIndexByMap(u16 mapGroup, u16 mapNum)
{
@@ -11,7 +36,7 @@ u32 GetHealLocationIndexByMap(u16 mapGroup, u16 mapNum)
for (i = 0; i < NUM_HEAL_LOCATIONS; i++)
{
- if (gHealLocations[i].group == mapGroup && gHealLocations[i].map == mapNum)
+ if (sHealLocations[i].group == mapGroup && sHealLocations[i].map == mapNum)
return i + 1;
}
return 0;
@@ -24,7 +49,7 @@ const struct HealLocation *GetHealLocationByMap(u16 mapGroup, u16 mapNum)
if (index == 0)
return NULL;
else
- return &gHealLocations[index - 1];
+ return &sHealLocations[index - 1];
}
const struct HealLocation *GetHealLocation(u32 index)
@@ -34,5 +59,5 @@ const struct HealLocation *GetHealLocation(u32 index)
else if (index > NUM_HEAL_LOCATIONS)
return NULL;
else
- return &gHealLocations[index - 1];
+ return &sHealLocations[index - 1];
}
diff --git a/src/intro.c b/src/intro.c
index e2fcf3a1c..72478b773 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -33,7 +33,6 @@ extern u16 gUnknown_02039318;
extern u16 gUnknown_0203931A;
extern u16 gUnknown_02039358;
extern u16 gUnknown_0203935A;
-
extern u32 gIntroFrameCounter;
extern struct GcmbStruct gUnknown_03005EE0;
extern u16 gSaveFileStatus;
@@ -45,64 +44,735 @@ extern struct MonCoords gMonBackPicCoords[];
extern struct SpriteSheet gTrainerBackPicTable[];
extern struct MonCoords gTrainerBackPicCoords[];
extern struct SpritePalette gTrainerBackPicPaletteTable[];
-
-extern const u16 gIntro1BGPals[];
-extern const u8 gIntro1BG0_Tilemap[];
-extern const u8 gIntro1BG1_Tilemap[];
-extern const u8 gIntro1BG2_Tilemap[];
-extern const u8 gIntro1BG3_Tilemap[];
-extern const u8 gIntro1BGLeavesGfx[];
-extern const u8 gIntro3PokeballPal[];
-extern const u8 gIntro3Pokeball_Tilemap[];
-extern const u8 gIntro3Pokeball_Gfx[];
-extern const u16 gIntro3Streaks_Pal[];
-extern const u8 gIntro3Streaks_Gfx[];
-extern const u8 gIntro3Streaks_Tilemap[];
-extern union AnimCmd *gUnknown_0840AE80[];
-extern const struct SpriteTemplate gSpriteTemplate_840AFF0;
-extern const struct SpriteSheet gUnknown_0840B008;
-extern const struct SpriteSheet gUnknown_0840B018;
-extern const struct SpritePalette gUnknown_0840B028[];
-extern const struct SpriteTemplate gSpriteTemplate_840B1F4;
-extern const struct SpriteSheet gIntro3PokeballGfx_Table;
-extern const struct SpriteSheet gIntro3MiscGfx_Table;
-extern const struct SpritePalette gInterfacePokeballPal_Table;
-extern const struct SpritePalette gIntro3MiscPal_Table[];
+extern const u8 gInterfaceGfx_PokeBall[];
+extern const u16 gInterfacePal_PokeBall[];
extern const struct SpriteSheet gIntro2BrendanSpriteSheet;
extern const struct SpriteSheet gIntro2MaySpriteSheet;
extern const struct SpriteSheet gIntro2BicycleSpriteSheet;
extern const struct SpriteSheet gIntro2LatiosSpriteSheet;
extern const struct SpriteSheet gIntro2LatiasSpriteSheet;
extern const struct SpritePalette gIntro2SpritePalettes[];
-
-extern const struct SpriteTemplate gSpriteTemplate_840AE20;
-
extern const u8 gIntroCopyright_Gfx[];
extern const u16 gIntroCopyright_Pal[];
extern const u16 gIntroCopyright_Tilemap[];
-
extern const u16 gUnknown_08393E64[];
-extern const s16 gUnknown_0840AF50[][2];
-extern const s16 gUnknown_0840AF74[][2];
-extern const struct SpriteTemplate gSpriteTemplate_840AF94;
-extern const struct SpriteTemplate gSpriteTemplate_840AFAC;
-extern const struct SpriteTemplate gSpriteTemplate_840AFC4;
-extern union AnimCmd *gUnknown_0840B064[];
-extern const struct SpriteTemplate gSpriteTemplate_840B084;
-extern const struct SpriteTemplate gSpriteTemplate_840B0B0;
-extern const struct SpriteTemplate gSpriteTemplate_840B0DC;
-extern const struct SpriteTemplate gSpriteTemplate_840B0F4;
-extern const struct SpriteTemplate gSpriteTemplate_840B124;
-extern const struct SpriteTemplate gSpriteTemplate_840B150;
-extern const u8 gUnknown_0840B168[];
-extern const struct SpriteTemplate gSpriteTemplate_840B170;
-extern const u16 gUnknown_0840B188[];
-extern const struct SpriteTemplate gSpriteTemplate_840B1B0;
-extern const struct SpriteTemplate gSpriteTemplate_840B1C8;
-extern void *gUnknown_0840B5A0[];
-
+extern void *const gUnknown_0840B5A0[];
extern const s16 gSineTable[];
+//--------------------------------------------------
+// Graphics Data
+//--------------------------------------------------
+
+static const u16 Palette_406340[] = INCBIN_U16("graphics/intro/unknown1.gbapal");
+static const u16 Palette_406360[] = INCBIN_U16("graphics/intro/unknown2.gbapal");
+static const u8 gIntroTiles[] = INCBIN_U8("graphics/intro/intro.4bpp.lz");
+static const u16 gIntro1BGPals[][16] =
+{
+ INCBIN_U16("graphics/intro/intro1_bgpal1.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal2.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal3.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal4.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal5.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal6.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal7.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal8.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal9.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal10.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal11.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal12.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal13.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal14.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal15.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal16.gbapal"),
+};
+static const u8 gIntro1BG0_Tilemap[] = INCBIN_U8("graphics/intro/intro1_bg0_map.bin.lz");
+static const u8 gIntro1BG1_Tilemap[] = INCBIN_U8("graphics/intro/intro1_bg1_map.bin.lz");
+static const u8 gIntro1BG2_Tilemap[] = INCBIN_U8("graphics/intro/intro1_bg2_map.bin.lz");
+static const u8 gIntro1BG3_Tilemap[] = INCBIN_U8("graphics/intro/intro1_bg3_map.bin.lz");
+static const u8 gIntro1BGLeavesGfx[] = INCBIN_U8("graphics/intro/introgfx.4bpp.lz");
+static const u16 gIntro3PokeballPal[] = INCBIN_U16("graphics/intro/intro3_pokeball.gbapal");
+static const u8 gIntro3Pokeball_Tilemap[] = INCBIN_U8("graphics/intro/intro3_pokeball_map.bin.lz");
+static const u8 gIntro3Pokeball_Gfx[] = INCBIN_U8("graphics/intro/intro3_pokeball.8bpp.lz");
+static const u16 gIntro3Streaks_Pal[] = INCBIN_U16("graphics/intro/intro3_streaks.gbapal");
+static const u8 gIntro3Streaks_Gfx[] = INCBIN_U8("graphics/intro/intro3_streaks.4bpp.lz");
+static const u8 gIntro3Streaks_Tilemap[] = INCBIN_U8("graphics/intro/intro3_streaks_map.bin.lz");
+static const u16 gIntro3Misc1Palette[] = INCBIN_U16("graphics/intro/intro3_misc1.gbapal");
+static const u16 gIntro3Misc2Palette[] = INCBIN_U16("graphics/intro/intro3_misc2.gbapal");
+static const u8 gIntro3MiscTiles[] = INCBIN_U8("graphics/intro/intro3_misc.4bpp.lz");
+static const u16 gIntro1EonPalette[] = INCBIN_U16("graphics/intro/intro1_eon.gbapal");
+static const u8 gIntro1EonTiles[] = INCBIN_U8("graphics/intro/intro1_eon.4bpp.lz");
+static const struct OamData gOamData_840ADE8 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840ADF0[] =
+{
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840ADF8[] =
+{
+ ANIMCMD_FRAME(24, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AE00[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AE08[] =
+{
+ ANIMCMD_FRAME(48, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840AE10[] =
+{
+ gSpriteAnim_840ADF0,
+ gSpriteAnim_840ADF8,
+ gSpriteAnim_840AE00,
+ gSpriteAnim_840AE08,
+};
+static void sub_813D208(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840AE20 =
+{
+ .tileTag = 2000,
+ .paletteTag = 2000,
+ .oam = &gOamData_840ADE8,
+ .anims = gSpriteAnimTable_840AE10,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813D208,
+};
+static const union AnimCmd Unknown_40AE38[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_FRAME(128, 4),
+ ANIMCMD_FRAME(192, 4),
+ ANIMCMD_JUMP(0),
+};
+static const union AnimCmd Unknown_40AE4C[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(64, 8),
+ ANIMCMD_FRAME(128, 8),
+ ANIMCMD_FRAME(192, 8),
+ ANIMCMD_JUMP(0),
+};
+static const union AnimCmd Unknown_40AE60[] =
+{
+ ANIMCMD_FRAME(256, 4),
+ ANIMCMD_FRAME(0x140, 4),
+ ANIMCMD_FRAME(0x180, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd Unknown_40AE70[] =
+{
+ ANIMCMD_FRAME(0x180, 16),
+ ANIMCMD_FRAME(0x140, 16),
+ ANIMCMD_FRAME(256, 16),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gUnknown_0840AE80[] =
+{
+ Unknown_40AE38,
+ Unknown_40AE4C,
+ Unknown_40AE60,
+ Unknown_40AE70,
+};
+static const struct OamData gOamData_840AE90 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const struct OamData gOamData_840AE98 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const struct OamData gOamData_840AEA0 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 2,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840AEA8[] =
+{
+ ANIMCMD_FRAME(80, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEB0[] =
+{
+ ANIMCMD_FRAME(84, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEB8[] =
+{
+ ANIMCMD_FRAME(88, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEC0[] =
+{
+ ANIMCMD_FRAME(92, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEC8[] =
+{
+ ANIMCMD_FRAME(96, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AED0[] =
+{
+ ANIMCMD_FRAME(100, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AED8[] =
+{
+ ANIMCMD_FRAME(104, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEE0[] =
+{
+ ANIMCMD_FRAME(112, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEE8[] =
+{
+ ANIMCMD_FRAME(113, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEF0[] =
+{
+ ANIMCMD_FRAME(114, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEF8[] =
+{
+ ANIMCMD_FRAME(115, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AF00[] =
+{
+ ANIMCMD_FRAME(116, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AF08[] =
+{
+ ANIMCMD_FRAME(117, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AF10[] =
+{
+ ANIMCMD_FRAME(128, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840AF18[] =
+{
+ gSpriteAnim_840AEA8,
+ gSpriteAnim_840AEB0,
+ gSpriteAnim_840AEB8,
+ gSpriteAnim_840AEC0,
+ gSpriteAnim_840AEC8,
+ gSpriteAnim_840AED0,
+ gSpriteAnim_840AED8,
+};
+static const union AnimCmd *const gSpriteAnimTable_840AF34[] =
+{
+ gSpriteAnim_840AEE0,
+ gSpriteAnim_840AEE8,
+ gSpriteAnim_840AEF0,
+ gSpriteAnim_840AEF8,
+ gSpriteAnim_840AF00,
+ gSpriteAnim_840AF08,
+};
+static const union AnimCmd *const gSpriteAnimTable_840AF4C[] =
+{
+ gSpriteAnim_840AF10,
+};
+static const s16 gUnknown_0840AF50[][2] =
+{
+ {0, -72},
+ {1, -56},
+ {2, -40},
+ {3, -24},
+ {4, 8},
+ {5, 24},
+ {3, 40},
+ {1, 56},
+ {6, 72},
+};
+static const s16 gUnknown_0840AF74[][2] =
+{
+ {0, -28},
+ {1, -20},
+ {2, -12},
+ {3, -4},
+ {2, 4},
+ {4, 12},
+ {5, 20},
+ {3, 28},
+};
+static void sub_813D908(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840AF94 =
+{
+ .tileTag = 2000,
+ .paletteTag = 2001,
+ .oam = &gOamData_840AE90,
+ .anims = gSpriteAnimTable_840AF18,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813D908,
+};
+static const struct SpriteTemplate gSpriteTemplate_840AFAC =
+{
+ .tileTag = 2000,
+ .paletteTag = 2001,
+ .oam = &gOamData_840AE98,
+ .anims = gSpriteAnimTable_840AF34,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813D908,
+};
+static const struct SpriteTemplate gSpriteTemplate_840AFC4 =
+{
+ .tileTag = 2000,
+ .paletteTag = 2001,
+ .oam = &gOamData_840AEA0,
+ .anims = gSpriteAnimTable_840AF4C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813D908,
+};
+static const struct OamData gOamData_840AFDC =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840AFE4[] =
+{
+ ANIMCMD_FRAME(0, 10),
+ ANIMCMD_JUMP(0),
+};
+static const union AnimCmd *const gSpriteAnimTable_840AFEC[] =
+{
+ gSpriteAnim_840AFE4,
+};
+static void sub_813DA64(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840AFF0 =
+{
+ .tileTag = 2002,
+ .paletteTag = 2002,
+ .oam = &gOamData_840AFDC,
+ .anims = gSpriteAnimTable_840AFEC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813DA64,
+};
+const struct SpriteSheet gUnknown_0840B008[] =
+{
+ {gIntroTiles, 0x1400, 2000},
+ {NULL},
+};
+const struct SpriteSheet gUnknown_0840B018[] =
+{
+ {gIntro1EonTiles, 0x400, 2002},
+ {NULL},
+};
+const struct SpritePalette gUnknown_0840B028[] =
+{
+ {Palette_406340, 2000},
+ {Palette_406360, 2001},
+ {gIntro1EonPalette, 2002},
+ {NULL},
+};
+static const union AnimCmd gUnknown_0840B048[] =
+{
+ ANIMCMD_FRAME(3, 0),
+ ANIMCMD_END,
+};
+static const union AnimCmd gUnknown_0840B050[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gUnknown_0840B058[] =
+{
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gUnknown_0840B064[] =
+{
+ gUnknown_0840B048,
+ gUnknown_0840B050,
+ gUnknown_0840B058,
+};
+static const struct OamData gOamData_840B070 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B078[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840B080[] =
+{
+ gSpriteAnim_840B078,
+};
+static void sub_813E30C(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B084 =
+{
+ .tileTag = 2002,
+ .paletteTag = 2002,
+ .oam = &gOamData_840B070,
+ .anims = gSpriteAnimTable_840B080,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813E30C,
+};
+static const struct OamData gOamData_840B09C =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B0A4[] =
+{
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840B0AC[] =
+{
+ gSpriteAnim_840B0A4,
+};
+static void sub_813E4B8(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B0B0 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2003,
+ .oam = &gOamData_840B09C,
+ .anims = gSpriteAnimTable_840B0AC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813E4B8,
+};
+static const struct OamData gOamData_840B0C8 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B0D0[] =
+{
+ ANIMCMD_FRAME(14, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840B0D8[] =
+{
+ gSpriteAnim_840B0D0,
+};
+static void sub_813E5E0(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B0DC =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B0C8,
+ .anims = gSpriteAnimTable_840B0D8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813E5E0,
+};
+static void sub_813E6C0(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B0F4 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B0C8,
+ .anims = gSpriteAnimTable_840B0D8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813E6C0,
+};
+static const struct OamData gOamData_840B10C =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B114[] =
+{
+ ANIMCMD_FRAME(6, 8),
+ ANIMCMD_FRAME(6, 8, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+static const union AnimCmd *const gSpriteAnimTable_840B120[] =
+{
+ gSpriteAnim_840B114,
+};
+static void sub_813E804(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B124 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B10C,
+ .anims = gSpriteAnimTable_840B120,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813E804,
+};
+static const struct OamData gOamData_840B13C =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B144[] =
+{
+ ANIMCMD_FRAME(10, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840B14C[] =
+{
+ gSpriteAnim_840B144,
+};
+static void sub_813E980(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B150 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B13C,
+ .anims = gSpriteAnimTable_840B14C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813E980,
+};
+static const u8 gUnknown_0840B168[] = {0xE6, 0xEB, 0xE4, 0xEA, 0xE5, 0xE9, 0xE7, 0xE8};
+static void sub_813EA60(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B170 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B13C,
+ .anims = gSpriteAnimTable_840B14C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813EA60,
+};
+static const u16 gUnknown_0840B188[] = {0x200, 0x1C0, 0x180, 0x140, 0x100, 0xE0, 0xC0, 0xA0, 0x80, 0x80};
+static const struct OamData gOamData_840B19C =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B1A4[] =
+{
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840B1AC[] =
+{
+ gSpriteAnim_840B1A4,
+};
+static void sub_813EBBC(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B1B0 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B19C,
+ .anims = gSpriteAnimTable_840B1AC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813EBBC,
+};
+static void sub_813EC90(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B1C8 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B19C,
+ .anims = gSpriteAnimTable_840B1AC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813EC90,
+};
+static const struct OamData gOamData_840B1E0 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B1E8[] =
+{
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840B1F0[] =
+{
+ gSpriteAnim_840B1E8,
+};
+static void sub_813EDFC(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B1F4 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2003,
+ .oam = &gOamData_840B1E0,
+ .anims = gSpriteAnimTable_840B1F0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813EDFC,
+};
+const struct SpriteSheet gIntro3PokeballGfx_Table[] =
+{
+ {gInterfaceGfx_PokeBall, 0x100, 2002},
+ {NULL},
+};
+const struct SpriteSheet gIntro3MiscGfx_Table[] =
+{
+ {gIntro3MiscTiles, 0xa00, 2003},
+ {NULL},
+};
+const struct SpritePalette gInterfacePokeballPal_Table[] =
+{
+ {gInterfacePal_PokeBall, 2002},
+ {NULL},
+};
+const struct SpritePalette gIntro3MiscPal_Table[] =
+{
+ {gIntro3Misc1Palette, 2003},
+ {gIntro3Misc2Palette, 2004},
+ {NULL},
+};
+const u32 unusedData = 0x02000000;
+
static void MainCB2_EndIntro(void);
static void Task_IntroLoadPart1Graphics(u8);
static void Task_IntroFadeIn(u8);
@@ -129,18 +799,18 @@ static void sub_813CCE8(u8);
static u16 sub_813CE88(u16, s16, s16, u16, u8);
static u8 sub_813CFA8(u16, u16, u16, u16);
static void sub_813D084(u8);
-void sub_813D220(struct Sprite *);
-void sub_813D368(struct Sprite *);
-void sub_813D414(struct Sprite *);
-void SpriteCB_WaterDropFall(struct Sprite *);
+static void sub_813D220(struct Sprite *);
+static void sub_813D368(struct Sprite *);
+static void sub_813D414(struct Sprite *);
+static void SpriteCB_WaterDropFall(struct Sprite *);
static u8 CreateWaterDrop(s16, s16, u16, u16, u16, u8);
-void sub_813D788(struct Sprite *);
-void sub_813D880(struct Sprite *);
+static void sub_813D788(struct Sprite *);
+static void sub_813D880(struct Sprite *);
static u8 CreateGameFreakLogo(s16, s16, u8);
-void sub_813DB9C(struct Sprite *);
-void sub_813DE70(struct Sprite *);
-void sub_813E10C(struct Sprite *);
-void sub_813E210(struct Sprite *);
+static void sub_813DB9C(struct Sprite *);
+static void sub_813DE70(struct Sprite *);
+static void sub_813E10C(struct Sprite *);
+static void sub_813E210(struct Sprite *);
static void sub_813E580(u16, u16);
static void sub_813E7C0(u8);
static void sub_813E930(u8);
@@ -209,7 +879,11 @@ static u8 SetUpCopyrightScreen(void)
ResetSpriteData();
FreeAllSpritePalettes();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0xFFFF);
- REG_BG0CNT = 1792;
+ REG_BG0CNT = BGCNT_PRIORITY(0)
+ | BGCNT_CHARBASE(0)
+ | BGCNT_SCREENBASE(7)
+ | BGCNT_16COLOR
+ | BGCNT_TXT256x256;
ime = REG_IME;
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
@@ -288,13 +962,13 @@ static void Task_IntroLoadPart1Graphics(u8 taskId)
DmaClear16(3, VRAM + 0xA800, 0x800);
LZ77UnCompVram(gIntro1BG3_Tilemap, (void *)(VRAM + 0xB000));
DmaClear16(3, VRAM + 0xB800, 0x800);
- LoadPalette(gIntro1BGPals, 0, 0x200);
- REG_BG3CNT = 0x9603;
- REG_BG2CNT = 0x9402;
- REG_BG1CNT = 0x9201;
- REG_BG0CNT = 0x9000;
- LoadCompressedObjectPic(&gUnknown_0840B008);
- LoadCompressedObjectPic(&gUnknown_0840B018);
+ LoadPalette(gIntro1BGPals, 0, sizeof(gIntro1BGPals));
+ REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(22) | BGCNT_16COLOR | BGCNT_TXT256x512;
+ REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(20) | BGCNT_16COLOR | BGCNT_TXT256x512;
+ REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(18) | BGCNT_16COLOR | BGCNT_TXT256x512;
+ REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(16) | BGCNT_16COLOR | BGCNT_TXT256x512;
+ LoadCompressedObjectPic(&gUnknown_0840B008[0]);
+ LoadCompressedObjectPic(&gUnknown_0840B018[0]);
LoadSpritePalettes(gUnknown_0840B028);
CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1F0, 0x20);
CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1E1, 0x1E);
@@ -509,7 +1183,7 @@ static void Task_IntroLoadPart3Graphics(u8 taskId)
ResetSpriteData();
FreeAllSpritePalettes();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0xFFFF);
- REG_BG2CNT = 0x4883;
+ REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(8) | BGCNT_256COLOR | BGCNT_AFF256x256;
REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON;
gTasks[taskId].func = Task_IntroSpinAndZoomPokeball;
gIntroFrameCounter = 0;
@@ -574,9 +1248,9 @@ static void Task_IntroLoadPart3Streaks(u8 taskId)
ResetSpriteData();
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 8;
- LoadCompressedObjectPic(&gIntro3PokeballGfx_Table);
- LoadCompressedObjectPic(&gIntro3MiscGfx_Table);
- LoadCompressedObjectPalette(&gInterfacePokeballPal_Table);
+ LoadCompressedObjectPic(&gIntro3PokeballGfx_Table[0]);
+ LoadCompressedObjectPic(&gIntro3MiscGfx_Table[0]);
+ LoadCompressedObjectPalette(&gInterfacePokeballPal_Table[0]);
LoadSpritePalettes(gIntro3MiscPal_Table);
gTasks[taskId].func = task_intro_14;
}
@@ -587,8 +1261,16 @@ static void task_intro_14(u8 taskId)
REG_WIN0V = 0xA0;
REG_WININ = 0x1C;
REG_WINOUT = 0x1D;
- REG_BG3CNT = 0x603;
- REG_BG0CNT = 0x700;
+ REG_BG3CNT = BGCNT_PRIORITY(3)
+ | BGCNT_CHARBASE(0)
+ | BGCNT_SCREENBASE(6)
+ | BGCNT_16COLOR
+ | BGCNT_TXT256x256;
+ REG_BG0CNT = BGCNT_PRIORITY(0)
+ | BGCNT_CHARBASE(0)
+ | BGCNT_SCREENBASE(7)
+ | BGCNT_16COLOR
+ | BGCNT_TXT256x256;
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON;
gTasks[taskId].data[15] = CreateTask(task_intro_20, 0);
gTasks[gTasks[taskId].data[15]].data[0] = 0;
@@ -742,18 +1424,21 @@ static void task_intro_19(u8 taskId)
static void task_intro_20(u8 taskId)
{
+#define BG2_FLAGS (BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(14) | BGCNT_16COLOR | BGCNT_TXT256x256)
+#define DISPCNT_FLAGS (DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON)
+
gTasks[taskId].data[15]++;
switch (gTasks[taskId].data[0])
{
case 0:
- REG_DISPCNT = 0x3940;
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON;
REG_BG2CNT = 0;
gTasks[taskId].data[0] = 0xFF;
break;
case 2:
BeginNormalPaletteFade(1, 0, 0x10, 0, 0xFFFF);
- REG_BG2CNT = 0x0E07;
- REG_DISPCNT = 0x3D40;
+ REG_BG2CNT = BG2_FLAGS;
+ REG_DISPCNT = DISPCNT_FLAGS;
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = 0;
gTasks[taskId].data[0] = 20;
@@ -766,8 +1451,8 @@ static void task_intro_20(u8 taskId)
break;
case 3:
BeginNormalPaletteFade(1, 0, 0x10, 0, 0xFFFF);
- REG_BG2CNT = 0x0E07;
- REG_DISPCNT = 0x3D40;
+ REG_BG2CNT = BG2_FLAGS;
+ REG_DISPCNT = DISPCNT_FLAGS;
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = 0;
gTasks[taskId].data[0] = 0x1E;
@@ -780,8 +1465,8 @@ static void task_intro_20(u8 taskId)
break;
case 4:
BeginNormalPaletteFade(1, 5, 0, 0x10, 0x37F7);
- REG_BG2CNT = 0x0E07;
- REG_DISPCNT = 0x3D40;
+ REG_BG2CNT = BG2_FLAGS;
+ REG_DISPCNT = DISPCNT_FLAGS;
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = 0;
gTasks[taskId].data[3] = 8;
@@ -798,6 +1483,9 @@ static void task_intro_20(u8 taskId)
case 0xFF: //needed to prevent jump table optimization
break;
}
+
+#undef BG2_FLAGS
+#undef DISPCNT_FLAGS
}
static void intro_reset_and_hide_bgs(void)
@@ -1147,7 +1835,7 @@ static void sub_813D084(u8 a)
gPlttBufferFaded[241] = color;
}
-void sub_813D0CC(struct Sprite *sprite)
+static void sub_813D0CC(struct Sprite *sprite)
{
u8 r0;
@@ -1174,7 +1862,7 @@ void sub_813D0CC(struct Sprite *sprite)
}
}
-void sub_813D158(struct Sprite *sprite)
+static void sub_813D158(struct Sprite *sprite)
{
if (gSprites[sprite->data7].data7 != 0)
{
@@ -1198,13 +1886,13 @@ void sub_813D158(struct Sprite *sprite)
}
}
-void sub_813D208(struct Sprite *sprite)
+static void sub_813D208(struct Sprite *sprite)
{
if (sprite->data0 != 0)
sprite->callback = sub_813D220;
}
-void sub_813D220(struct Sprite *sprite)
+static void sub_813D220(struct Sprite *sprite)
{
if (sprite->pos1.x <= 116)
{
@@ -1253,7 +1941,7 @@ void sub_813D220(struct Sprite *sprite)
}
}
-void sub_813D368(struct Sprite *sprite)
+static void sub_813D368(struct Sprite *sprite)
{
SetOamMatrix(sprite->data1, sprite->data6 + 64, 0, 0, sprite->data6 + 64);
SetOamMatrix(sprite->data1 + 1, sprite->data6 + 64, 0, 0, sprite->data6 + 64);
@@ -1274,7 +1962,7 @@ void sub_813D368(struct Sprite *sprite)
}
}
-void sub_813D414(struct Sprite *sprite)
+static void sub_813D414(struct Sprite *sprite)
{
if (sprite->data0 != 2)
{
@@ -1291,7 +1979,7 @@ void sub_813D414(struct Sprite *sprite)
}
}
-void SpriteCB_WaterDropFall(struct Sprite *sprite)
+static void SpriteCB_WaterDropFall(struct Sprite *sprite)
{
if (sprite->pos1.y < sprite->data5)
{
@@ -1314,7 +2002,7 @@ void SpriteCB_WaterDropFall(struct Sprite *sprite)
}
//Duplicate function
-void SpriteCB_WaterDropFall_2(struct Sprite *sprite)
+static void SpriteCB_WaterDropFall_2(struct Sprite *sprite)
{
if (sprite->pos1.y < sprite->data5)
{
@@ -1383,7 +2071,7 @@ static u8 CreateWaterDrop(s16 x, s16 y, u16 c, u16 d, u16 e, u8 fallImmediately)
return oldSpriteId;
}
-void sub_813D788(struct Sprite *sprite)
+static void sub_813D788(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -1435,7 +2123,7 @@ void sub_813D788(struct Sprite *sprite)
}
}
-void sub_813D880(struct Sprite *sprite)
+static void sub_813D880(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -1462,7 +2150,7 @@ void sub_813D880(struct Sprite *sprite)
sprite->data1 += 4;
}
-void sub_813D908(struct Sprite *sprite)
+static void sub_813D908(struct Sprite *sprite)
{
if (gTasks[sprite->data0].data[0] == 0)
{
@@ -1502,7 +2190,7 @@ static u8 CreateGameFreakLogo(s16 a, s16 b, u8 c)
}
#ifdef NONMATCHING
-void sub_813DA64(struct Sprite *sprite)
+static void sub_813DA64(struct Sprite *sprite)
{
sprite->data7++;
@@ -1563,178 +2251,178 @@ void sub_813DA64(struct Sprite *sprite)
}
#else
__attribute__((naked))
-void sub_813DA64(struct Sprite *sprite)
+static void sub_813DA64(struct Sprite *sprite)
{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- sub sp, 0x4\n\
- adds r4, r0, 0\n\
- ldrh r0, [r4, 0x3C]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x3C]\n\
- movs r1, 0x2E\n\
- ldrsh r0, [r4, r1]\n\
- cmp r0, 0\n\
- beq _0813DA7C\n\
- cmp r0, 0x1\n\
- beq _0813DAC0\n\
+ push {r4-r6,lr}\n\
+ sub sp, 0x4\n\
+ adds r4, r0, 0\n\
+ ldrh r0, [r4, 0x3C]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x3C]\n\
+ movs r1, 0x2E\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r0, 0\n\
+ beq _0813DA7C\n\
+ cmp r0, 0x1\n\
+ beq _0813DAC0\n\
_0813DA7C:\n\
- ldrb r0, [r4, 0x1]\n\
- movs r1, 0x3\n\
- orrs r0, r1\n\
- strb r0, [r4, 0x1]\n\
- ldrb r1, [r4, 0x3]\n\
- movs r0, 0x3F\n\
- negs r0, r0\n\
- ands r0, r1\n\
- movs r1, 0x2\n\
- orrs r0, r1\n\
- strb r0, [r4, 0x3]\n\
- adds r0, r4, 0\n\
- movs r1, 0x1\n\
- movs r2, 0x3\n\
- movs r3, 0x3\n\
- bl CalcCenterToCornerVec\n\
- adds r2, r4, 0\n\
- adds r2, 0x3E\n\
- ldrb r1, [r2]\n\
- movs r0, 0x5\n\
- negs r0, r0\n\
- ands r0, r1\n\
- strb r0, [r2]\n\
- movs r0, 0x1\n\
- strh r0, [r4, 0x2E]\n\
- movs r0, 0x80\n\
- strh r0, [r4, 0x30]\n\
- ldr r0, _0813DABC @ =0x0000ffe8\n\
- strh r0, [r4, 0x32]\n\
- movs r0, 0\n\
- b _0813DB92\n\
- .align 2, 0\n\
+ ldrb r0, [r4, 0x1]\n\
+ movs r1, 0x3\n\
+ orrs r0, r1\n\
+ strb r0, [r4, 0x1]\n\
+ ldrb r1, [r4, 0x3]\n\
+ movs r0, 0x3F\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ movs r1, 0x2\n\
+ orrs r0, r1\n\
+ strb r0, [r4, 0x3]\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x1\n\
+ movs r2, 0x3\n\
+ movs r3, 0x3\n\
+ bl CalcCenterToCornerVec\n\
+ adds r2, r4, 0\n\
+ adds r2, 0x3E\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x5\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ strb r0, [r2]\n\
+ movs r0, 0x1\n\
+ strh r0, [r4, 0x2E]\n\
+ movs r0, 0x80\n\
+ strh r0, [r4, 0x30]\n\
+ ldr r0, _0813DABC @ =0x0000ffe8\n\
+ strh r0, [r4, 0x32]\n\
+ movs r0, 0\n\
+ b _0813DB92\n\
+ .align 2, 0\n\
_0813DABC: .4byte 0x0000ffe8\n\
_0813DAC0:\n\
- ldrh r1, [r4, 0x34]\n\
- movs r2, 0x34\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0x4F\n\
- bgt _0813DAF8\n\
- lsls r0, r1, 24\n\
- lsrs r0, 24\n\
- movs r1, 0x78\n\
- bl Sin\n\
- negs r0, r0\n\
- strh r0, [r4, 0x26]\n\
- ldrh r0, [r4, 0x34]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- movs r1, 0x8C\n\
- bl Sin\n\
- negs r0, r0\n\
- strh r0, [r4, 0x24]\n\
- movs r1, 0x34\n\
- ldrsh r0, [r4, r1]\n\
- cmp r0, 0x40\n\
- ble _0813DAF8\n\
- ldrb r0, [r4, 0x5]\n\
- movs r1, 0xC\n\
- orrs r0, r1\n\
- strb r0, [r4, 0x5]\n\
+ ldrh r1, [r4, 0x34]\n\
+ movs r2, 0x34\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r0, 0x4F\n\
+ bgt _0813DAF8\n\
+ lsls r0, r1, 24\n\
+ lsrs r0, 24\n\
+ movs r1, 0x78\n\
+ bl Sin\n\
+ negs r0, r0\n\
+ strh r0, [r4, 0x26]\n\
+ ldrh r0, [r4, 0x34]\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ movs r1, 0x8C\n\
+ bl Sin\n\
+ negs r0, r0\n\
+ strh r0, [r4, 0x24]\n\
+ movs r1, 0x34\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r0, 0x40\n\
+ ble _0813DAF8\n\
+ ldrb r0, [r4, 0x5]\n\
+ movs r1, 0xC\n\
+ orrs r0, r1\n\
+ strb r0, [r4, 0x5]\n\
_0813DAF8:\n\
- ldr r2, _0813DB60 @ =gSineTable\n\
- ldrh r1, [r4, 0x32]\n\
- lsls r0, r1, 24\n\
- lsrs r0, 23\n\
- adds r0, r2\n\
- ldrh r3, [r0]\n\
- adds r1, 0x40\n\
- lsls r1, 24\n\
- lsrs r1, 23\n\
- adds r1, r2\n\
- movs r2, 0\n\
- ldrsh r0, [r1, r2]\n\
- movs r1, 0x30\n\
- ldrsh r2, [r4, r1]\n\
- adds r1, r0, 0\n\
- muls r1, r2\n\
- adds r0, r1, 0\n\
- cmp r1, 0\n\
- bge _0813DB20\n\
- adds r0, 0xFF\n\
+ ldr r2, _0813DB60 @ =gSineTable\n\
+ ldrh r1, [r4, 0x32]\n\
+ lsls r0, r1, 24\n\
+ lsrs r0, 23\n\
+ adds r0, r2\n\
+ ldrh r3, [r0]\n\
+ adds r1, 0x40\n\
+ lsls r1, 24\n\
+ lsrs r1, 23\n\
+ adds r1, r2\n\
+ movs r2, 0\n\
+ ldrsh r0, [r1, r2]\n\
+ movs r1, 0x30\n\
+ ldrsh r2, [r4, r1]\n\
+ adds r1, r0, 0\n\
+ muls r1, r2\n\
+ adds r0, r1, 0\n\
+ cmp r1, 0\n\
+ bge _0813DB20\n\
+ adds r0, 0xFF\n\
_0813DB20:\n\
- lsls r0, 8\n\
- lsrs r6, r0, 16\n\
- lsls r0, r3, 16\n\
- asrs r3, r0, 16\n\
- negs r0, r3\n\
- muls r0, r2\n\
- cmp r0, 0\n\
- bge _0813DB32\n\
- adds r0, 0xFF\n\
+ lsls r0, 8\n\
+ lsrs r6, r0, 16\n\
+ lsls r0, r3, 16\n\
+ asrs r3, r0, 16\n\
+ negs r0, r3\n\
+ muls r0, r2\n\
+ cmp r0, 0\n\
+ bge _0813DB32\n\
+ adds r0, 0xFF\n\
_0813DB32:\n\
- lsls r0, 8\n\
- lsrs r5, r0, 16\n\
- adds r0, r3, 0\n\
- muls r0, r2\n\
- cmp r0, 0\n\
- bge _0813DB40\n\
- adds r0, 0xFF\n\
+ lsls r0, 8\n\
+ lsrs r5, r0, 16\n\
+ adds r0, r3, 0\n\
+ muls r0, r2\n\
+ cmp r0, 0\n\
+ bge _0813DB40\n\
+ adds r0, 0xFF\n\
_0813DB40:\n\
- lsls r0, 8\n\
- lsrs r2, r0, 16\n\
- adds r1, r6, 0\n\
- adds r3, r5, 0\n\
- str r1, [sp]\n\
- movs r0, 0x1\n\
- bl SetOamMatrix\n\
- ldrh r1, [r4, 0x30]\n\
- movs r2, 0x30\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0xFF\n\
- bgt _0813DB64\n\
- adds r0, r1, 0\n\
- adds r0, 0x8\n\
- b _0813DB68\n\
- .align 2, 0\n\
+ lsls r0, 8\n\
+ lsrs r2, r0, 16\n\
+ adds r1, r6, 0\n\
+ adds r3, r5, 0\n\
+ str r1, [sp]\n\
+ movs r0, 0x1\n\
+ bl SetOamMatrix\n\
+ ldrh r1, [r4, 0x30]\n\
+ movs r2, 0x30\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r0, 0xFF\n\
+ bgt _0813DB64\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x8\n\
+ b _0813DB68\n\
+ .align 2, 0\n\
_0813DB60: .4byte gSineTable\n\
_0813DB64:\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x20\n\
_0813DB68:\n\
- strh r0, [r4, 0x30]\n\
- ldrh r1, [r4, 0x32]\n\
- movs r2, 0x32\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0x17\n\
- bgt _0813DB78\n\
- adds r0, r1, 0x1\n\
- strh r0, [r4, 0x32]\n\
+ strh r0, [r4, 0x30]\n\
+ ldrh r1, [r4, 0x32]\n\
+ movs r2, 0x32\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r0, 0x17\n\
+ bgt _0813DB78\n\
+ adds r0, r1, 0x1\n\
+ strh r0, [r4, 0x32]\n\
_0813DB78:\n\
- ldrh r2, [r4, 0x34]\n\
- movs r1, 0x34\n\
- ldrsh r0, [r4, r1]\n\
- cmp r0, 0x3F\n\
- bgt _0813DB86\n\
- adds r0, r2, 0x2\n\
- b _0813DB92\n\
+ ldrh r2, [r4, 0x34]\n\
+ movs r1, 0x34\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r0, 0x3F\n\
+ bgt _0813DB86\n\
+ adds r0, r2, 0x2\n\
+ b _0813DB92\n\
_0813DB86:\n\
- ldrh r1, [r4, 0x3C]\n\
- movs r0, 0x3\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0813DB94\n\
- adds r0, r2, 0x1\n\
+ ldrh r1, [r4, 0x3C]\n\
+ movs r0, 0x3\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0813DB94\n\
+ adds r0, r2, 0x1\n\
_0813DB92:\n\
- strh r0, [r4, 0x34]\n\
+ strh r0, [r4, 0x34]\n\
_0813DB94:\n\
- add sp, 0x4\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
+ add sp, 0x4\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
.syntax divided\n");
}
#endif
-void sub_813DB9C(struct Sprite *sprite)
+static void sub_813DB9C(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -1810,7 +2498,7 @@ void sub_813DB9C(struct Sprite *sprite)
}
}
-void sub_813DD58(struct Sprite *sprite)
+static void sub_813DD58(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -1853,7 +2541,7 @@ void sub_813DD58(struct Sprite *sprite)
}
}
-void sub_813DE70(struct Sprite *sprite)
+static void sub_813DE70(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -1931,7 +2619,7 @@ void sub_813DE70(struct Sprite *sprite)
}
}
-void sub_813E10C(struct Sprite *sprite)
+static void sub_813E10C(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -1999,7 +2687,7 @@ void sub_813E10C(struct Sprite *sprite)
}
}
-void sub_813E210(struct Sprite *sprite)
+static void sub_813E210(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -2067,7 +2755,7 @@ void sub_813E210(struct Sprite *sprite)
}
}
-void sub_813E30C(struct Sprite *sprite)
+static void sub_813E30C(struct Sprite *sprite)
{
u16 r4, r1;
@@ -2122,7 +2810,7 @@ void sub_813E30C(struct Sprite *sprite)
}
}
-void sub_813E4B8(struct Sprite *sprite)
+static void sub_813E4B8(struct Sprite *sprite)
{
u16 r4;
u16 r2;
@@ -2168,7 +2856,7 @@ static void sub_813E580(u16 x, u16 y)
}
}
-void sub_813E5E0(struct Sprite *sprite)
+static void sub_813E5E0(struct Sprite *sprite)
{
if (gUnknown_0203931A != 0)
{
@@ -2190,7 +2878,7 @@ void sub_813E5E0(struct Sprite *sprite)
}
}
-void sub_813E6C0(struct Sprite *sprite)
+static void sub_813E6C0(struct Sprite *sprite)
{
u8 spriteId;
u8 i;
@@ -2246,7 +2934,7 @@ static void sub_813E7C0(u8 a)
}
}
-void sub_813E804(struct Sprite *sprite)
+static void sub_813E804(struct Sprite *sprite)
{
if (gUnknown_0203931A != 0)
{
@@ -2287,7 +2975,7 @@ static void sub_813E930(u8 a)
}
}
-void sub_813E980(struct Sprite *sprite)
+static void sub_813E980(struct Sprite *sprite)
{
if (gUnknown_0203931A != 0)
{
@@ -2313,7 +3001,7 @@ void sub_813E980(struct Sprite *sprite)
}
}
-void sub_813EA60(struct Sprite *sprite)
+static void sub_813EA60(struct Sprite *sprite)
{
bool32 r6;
s16 r1, r2;
@@ -2370,7 +3058,7 @@ static void InitIntroTorchicAttackAnim(u8 a)
}
}
-void sub_813EBBC(struct Sprite *sprite)
+static void sub_813EBBC(struct Sprite *sprite)
{
if (gUnknown_0203931A != 0)
{
@@ -2390,7 +3078,7 @@ void sub_813EBBC(struct Sprite *sprite)
}
}
-void sub_813EC90(struct Sprite *sprite)
+static void sub_813EC90(struct Sprite *sprite)
{
bool32 r6;
s16 r1, r2;
@@ -2449,7 +3137,7 @@ static void InitIntroMudkipAttackAnim(u8 a)
}
}
-void sub_813EDFC(struct Sprite *sprite)
+static void sub_813EDFC(struct Sprite *sprite)
{
u16 foo;
diff --git a/src/mail.c b/src/mail.c
index 570128095..466a64c9c 100644
--- a/src/mail.c
+++ b/src/mail.c
@@ -152,144 +152,144 @@ __attribute__((naked))
void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- sub sp, 0x4\n\
- adds r4, r0, 0\n\
- adds r6, r1, 0\n\
- lsls r2, 24\n\
- lsrs r5, r2, 24\n\
- ldr r2, _080F8958 @ =0x02000000\n\
- adds r1, r2, 0\n\
- adds r1, 0xFF\n\
- movs r0, 0x2\n\
- strb r0, [r1]\n\
- adds r0, 0xFE\n\
- adds r1, r2, r0\n\
- movs r0, 0x1\n\
- strb r0, [r1]\n\
- movs r0, 0x82\n\
- lsls r0, 1\n\
- adds r1, r2, r0\n\
- ldr r0, _080F895C @ =sub_80EB3FC\n\
- str r0, [r1]\n\
- movs r0, 0x84\n\
- lsls r0, 1\n\
- adds r1, r2, r0\n\
- ldr r0, _080F8960 @ =ConvertEasyChatWordsToString\n\
- str r0, [r1]\n\
- ldrh r1, [r4, 0x20]\n\
- adds r0, r1, 0\n\
- subs r0, 0x79\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0xB\n\
- bhi _080F8964\n\
- subs r1, 0x79\n\
- adds r0, r2, 0\n\
- adds r0, 0xFA\n\
- strb r1, [r0]\n\
- b _080F896E\n\
- .align 2, 0\n\
+ push {r4-r6,lr}\n\
+ sub sp, 0x4\n\
+ adds r4, r0, 0\n\
+ adds r6, r1, 0\n\
+ lsls r2, 24\n\
+ lsrs r5, r2, 24\n\
+ ldr r2, _080F8958 @ =0x02000000\n\
+ adds r1, r2, 0\n\
+ adds r1, 0xFF\n\
+ movs r0, 0x2\n\
+ strb r0, [r1]\n\
+ adds r0, 0xFE\n\
+ adds r1, r2, r0\n\
+ movs r0, 0x1\n\
+ strb r0, [r1]\n\
+ movs r0, 0x82\n\
+ lsls r0, 1\n\
+ adds r1, r2, r0\n\
+ ldr r0, _080F895C @ =sub_80EB3FC\n\
+ str r0, [r1]\n\
+ movs r0, 0x84\n\
+ lsls r0, 1\n\
+ adds r1, r2, r0\n\
+ ldr r0, _080F8960 @ =ConvertEasyChatWordsToString\n\
+ str r0, [r1]\n\
+ ldrh r1, [r4, 0x20]\n\
+ adds r0, r1, 0\n\
+ subs r0, 0x79\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0xB\n\
+ bhi _080F8964\n\
+ subs r1, 0x79\n\
+ adds r0, r2, 0\n\
+ adds r0, 0xFA\n\
+ strb r1, [r0]\n\
+ b _080F896E\n\
+ .align 2, 0\n\
_080F8958: .4byte 0x02000000\n\
_080F895C: .4byte sub_80EB3FC\n\
_080F8960: .4byte ConvertEasyChatWordsToString\n\
_080F8964:\n\
- adds r1, r2, 0\n\
- adds r1, 0xFA\n\
- movs r0, 0\n\
- strb r0, [r1]\n\
- movs r5, 0\n\
+ adds r1, r2, 0\n\
+ adds r1, 0xFA\n\
+ movs r0, 0\n\
+ strb r0, [r1]\n\
+ movs r5, 0\n\
_080F896E:\n\
- ldr r1, _080F8994 @ =0x02000000\n\
- movs r2, 0x80\n\
- lsls r2, 1\n\
- adds r0, r1, r2\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _080F8980\n\
- cmp r0, 0x1\n\
- beq _080F899C\n\
+ ldr r1, _080F8994 @ =0x02000000\n\
+ movs r2, 0x80\n\
+ lsls r2, 1\n\
+ adds r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _080F8980\n\
+ cmp r0, 0x1\n\
+ beq _080F899C\n\
_080F8980:\n\
- movs r0, 0x86\n\
- lsls r0, 1\n\
- adds r2, r1, r0\n\
- adds r0, r1, 0\n\
- adds r0, 0xFA\n\
- ldrb r0, [r0]\n\
- lsls r0, 3\n\
- ldr r1, _080F8998 @ =gUnknown_083E5730\n\
- b _080F89AC\n\
- .align 2, 0\n\
+ movs r0, 0x86\n\
+ lsls r0, 1\n\
+ adds r2, r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r0, 0xFA\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 3\n\
+ ldr r1, _080F8998 @ =gUnknown_083E5730\n\
+ b _080F89AC\n\
+ .align 2, 0\n\
_080F8994: .4byte 0x02000000\n\
_080F8998: .4byte gUnknown_083E5730\n\
_080F899C:\n\
- movs r0, 0x86\n\
- lsls r0, 1\n\
- adds r2, r1, r0\n\
- adds r0, r1, 0\n\
- adds r0, 0xFA\n\
- ldrb r0, [r0]\n\
- lsls r0, 3\n\
- ldr r1, _080F89DC @ =gUnknown_083E57A4\n\
+ movs r0, 0x86\n\
+ lsls r0, 1\n\
+ adds r2, r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r0, 0xFA\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 3\n\
+ ldr r1, _080F89DC @ =gUnknown_083E57A4\n\
_080F89AC:\n\
- adds r0, r1\n\
- str r0, [r2]\n\
- ldrh r0, [r4, 0x1E]\n\
- mov r1, sp\n\
- bl sub_80A2D64\n\
- lsls r0, 16\n\
- ldr r1, _080F89E0 @ =0xffff0000\n\
- adds r0, r1\n\
- movs r1, 0xCD\n\
- lsls r1, 17\n\
- cmp r0, r1\n\
- bhi _080F89F8\n\
- ldr r0, _080F89E4 @ =0x02000000\n\
- adds r1, r0, 0\n\
- adds r1, 0xFA\n\
- ldrb r2, [r1]\n\
- adds r1, r0, 0\n\
- cmp r2, 0x6\n\
- beq _080F89E8\n\
- cmp r2, 0x9\n\
- beq _080F89F0\n\
- b _080F89FA\n\
- .align 2, 0\n\
+ adds r0, r1\n\
+ str r0, [r2]\n\
+ ldrh r0, [r4, 0x1E]\n\
+ mov r1, sp\n\
+ bl sub_80A2D64\n\
+ lsls r0, 16\n\
+ ldr r1, _080F89E0 @ =0xffff0000\n\
+ adds r0, r1\n\
+ movs r1, 0xCD\n\
+ lsls r1, 17\n\
+ cmp r0, r1\n\
+ bhi _080F89F8\n\
+ ldr r0, _080F89E4 @ =0x02000000\n\
+ adds r1, r0, 0\n\
+ adds r1, 0xFA\n\
+ ldrb r2, [r1]\n\
+ adds r1, r0, 0\n\
+ cmp r2, 0x6\n\
+ beq _080F89E8\n\
+ cmp r2, 0x9\n\
+ beq _080F89F0\n\
+ b _080F89FA\n\
+ .align 2, 0\n\
_080F89DC: .4byte gUnknown_083E57A4\n\
_080F89E0: .4byte 0xffff0000\n\
_080F89E4: .4byte 0x02000000\n\
_080F89E8:\n\
- adds r2, r1, 0\n\
- adds r2, 0xFB\n\
- movs r0, 0x1\n\
- b _080F8A00\n\
+ adds r2, r1, 0\n\
+ adds r2, 0xFB\n\
+ movs r0, 0x1\n\
+ b _080F8A00\n\
_080F89F0:\n\
- adds r2, r1, 0\n\
- adds r2, 0xFB\n\
- movs r0, 0x2\n\
- b _080F8A00\n\
+ adds r2, r1, 0\n\
+ adds r2, 0xFB\n\
+ movs r0, 0x2\n\
+ b _080F8A00\n\
_080F89F8:\n\
- ldr r1, _080F8A20 @ =0x02000000\n\
+ ldr r1, _080F8A20 @ =0x02000000\n\
_080F89FA:\n\
- adds r2, r1, 0\n\
- adds r2, 0xFB\n\
- movs r0, 0\n\
+ adds r2, r1, 0\n\
+ adds r2, 0xFB\n\
+ movs r0, 0\n\
_080F8A00:\n\
- strb r0, [r2]\n\
- adds r0, r1, 0\n\
- adds r0, 0xF4\n\
- str r4, [r0]\n\
- subs r0, 0x8\n\
- str r6, [r0]\n\
- adds r0, 0xC\n\
- strb r5, [r0]\n\
- ldr r0, _080F8A24 @ =sub_80F8D50\n\
- bl SetMainCallback2\n\
- add sp, 0x4\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ strb r0, [r2]\n\
+ adds r0, r1, 0\n\
+ adds r0, 0xF4\n\
+ str r4, [r0]\n\
+ subs r0, 0x8\n\
+ str r6, [r0]\n\
+ adds r0, 0xC\n\
+ strb r5, [r0]\n\
+ ldr r0, _080F8A24 @ =sub_80F8D50\n\
+ bl SetMainCallback2\n\
+ add sp, 0x4\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080F8A20: .4byte 0x02000000\n\
_080F8A24: .4byte sub_80F8D50\n\
.syntax divided\n");
@@ -514,111 +514,111 @@ __attribute__((naked))
static void sub_80F8DA0(void)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- movs r6, 0\n\
- movs r5, 0\n\
- ldr r2, _080F8E3C @ =0x02000000\n\
- movs r0, 0x86\n\
- lsls r0, 1\n\
- adds r1, r2, r0\n\
- ldr r0, [r1]\n\
- ldrb r0, [r0]\n\
- cmp r5, r0\n\
- bcs _080F8E04\n\
- mov r8, r2\n\
- adds r7, r1, 0\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ movs r6, 0\n\
+ movs r5, 0\n\
+ ldr r2, _080F8E3C @ =0x02000000\n\
+ movs r0, 0x86\n\
+ lsls r0, 1\n\
+ adds r1, r2, r0\n\
+ ldr r0, [r1]\n\
+ ldrb r0, [r0]\n\
+ cmp r5, r0\n\
+ bcs _080F8E04\n\
+ mov r8, r2\n\
+ adds r7, r1, 0\n\
_080F8DBE:\n\
- lsls r0, r5, 3\n\
- subs r0, r5\n\
- lsls r0, 2\n\
- subs r0, r5\n\
- add r0, r8\n\
- mov r1, r8\n\
- adds r1, 0xF4\n\
- lsls r2, r6, 1\n\
- ldr r1, [r1]\n\
- adds r1, r2\n\
- ldr r2, [r7]\n\
- ldr r2, [r2, 0x4]\n\
- lsls r4, r5, 2\n\
- adds r2, r4, r2\n\
- ldr r2, [r2]\n\
- lsls r2, 28\n\
- lsrs r2, 30\n\
- movs r3, 0x1\n\
- bl ConvertEasyChatWordsToString\n\
- ldr r1, [r7]\n\
- ldr r0, [r1, 0x4]\n\
- adds r4, r0\n\
- ldr r0, [r4]\n\
- lsls r0, 28\n\
- lsrs r0, 30\n\
- adds r0, r6, r0\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- ldrb r1, [r1]\n\
- cmp r5, r1\n\
- bcc _080F8DBE\n\
+ lsls r0, r5, 3\n\
+ subs r0, r5\n\
+ lsls r0, 2\n\
+ subs r0, r5\n\
+ add r0, r8\n\
+ mov r1, r8\n\
+ adds r1, 0xF4\n\
+ lsls r2, r6, 1\n\
+ ldr r1, [r1]\n\
+ adds r1, r2\n\
+ ldr r2, [r7]\n\
+ ldr r2, [r2, 0x4]\n\
+ lsls r4, r5, 2\n\
+ adds r2, r4, r2\n\
+ ldr r2, [r2]\n\
+ lsls r2, 28\n\
+ lsrs r2, 30\n\
+ movs r3, 0x1\n\
+ bl ConvertEasyChatWordsToString\n\
+ ldr r1, [r7]\n\
+ ldr r0, [r1, 0x4]\n\
+ adds r4, r0\n\
+ ldr r0, [r4]\n\
+ lsls r0, 28\n\
+ lsrs r0, 30\n\
+ adds r0, r6, r0\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ ldrb r1, [r1]\n\
+ cmp r5, r1\n\
+ bcc _080F8DBE\n\
_080F8E04:\n\
- ldr r2, _080F8E40 @ =0x020000d8\n\
- adds r4, r2, 0\n\
- subs r4, 0xD8\n\
- adds r0, r2, 0\n\
- adds r0, 0x28\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- bne _080F8E48\n\
- ldr r1, [r2, 0x1C]\n\
- adds r1, 0x12\n\
- adds r0, r2, 0\n\
- bl sub_80F8D7C\n\
- adds r2, r0, 0\n\
- ldr r1, _080F8E44 @ =gOtherText_From\n\
- bl StringCopy\n\
- ldr r0, _080F8E40 @ =0x020000d8\n\
- bl StringLength\n\
- movs r2, 0x86\n\
- lsls r2, 1\n\
- adds r1, r4, r2\n\
- ldr r1, [r1]\n\
- ldrb r1, [r1, 0x2]\n\
- subs r1, r0\n\
- b _080F8E6A\n\
- .align 2, 0\n\
+ ldr r2, _080F8E40 @ =0x020000d8\n\
+ adds r4, r2, 0\n\
+ subs r4, 0xD8\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x28\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _080F8E48\n\
+ ldr r1, [r2, 0x1C]\n\
+ adds r1, 0x12\n\
+ adds r0, r2, 0\n\
+ bl sub_80F8D7C\n\
+ adds r2, r0, 0\n\
+ ldr r1, _080F8E44 @ =gOtherText_From\n\
+ bl StringCopy\n\
+ ldr r0, _080F8E40 @ =0x020000d8\n\
+ bl StringLength\n\
+ movs r2, 0x86\n\
+ lsls r2, 1\n\
+ adds r1, r4, r2\n\
+ ldr r1, [r1]\n\
+ ldrb r1, [r1, 0x2]\n\
+ subs r1, r0\n\
+ b _080F8E6A\n\
+ .align 2, 0\n\
_080F8E3C: .4byte 0x02000000\n\
_080F8E40: .4byte 0x020000d8\n\
_080F8E44: .4byte gOtherText_From\n\
_080F8E48:\n\
- ldr r1, _080F8E7C @ =gOtherText_From\n\
- adds r0, r2, 0\n\
- bl StringCopy\n\
- adds r2, r0, 0\n\
- adds r0, r4, 0\n\
- adds r0, 0xF4\n\
- ldr r1, [r0]\n\
- adds r1, 0x12\n\
- adds r0, r2, 0\n\
- bl sub_80F8D7C\n\
- movs r1, 0x86\n\
- lsls r1, 1\n\
- adds r0, r4, r1\n\
- ldr r0, [r0]\n\
- ldrb r1, [r0, 0x2]\n\
+ ldr r1, _080F8E7C @ =gOtherText_From\n\
+ adds r0, r2, 0\n\
+ bl StringCopy\n\
+ adds r2, r0, 0\n\
+ adds r0, r4, 0\n\
+ adds r0, 0xF4\n\
+ ldr r1, [r0]\n\
+ adds r1, 0x12\n\
+ adds r0, r2, 0\n\
+ bl sub_80F8D7C\n\
+ movs r1, 0x86\n\
+ lsls r1, 1\n\
+ adds r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r0, 0x2]\n\
_080F8E6A:\n\
- adds r0, r4, 0\n\
- adds r0, 0xF9\n\
- strb r1, [r0]\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ adds r0, r4, 0\n\
+ adds r0, 0xF9\n\
+ strb r1, [r0]\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080F8E7C: .4byte gOtherText_From\n\
.syntax divided\n");
}
diff --git a/src/main_menu.c b/src/main_menu.c
index c586e2b08..f47b3bb47 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -69,7 +69,7 @@ extern const u8 gUnknown_081E7834[];
extern const u8 gUnknown_081E796C[];
extern const u8 gSystemText_NewPara[];
-extern u8 gSpriteAffineAnimTable_81E79AC[];
+extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E79AC[];
extern u8 unk_2000000[];
@@ -1256,7 +1256,7 @@ static void Task_NewGameSpeech30(u8 taskId)
spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID];
gSprites[spriteId].oam.affineMode = 1;
- gSprites[spriteId].affineAnims = (union AffineAnimCmd **)gSpriteAffineAnimTable_81E79AC;
+ gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_81E79AC;
InitSpriteAffineAnim(&gSprites[spriteId]);
StartSpriteAffineAnim(&gSprites[spriteId], 0);
gSprites[spriteId].callback = ShrinkPlayerSprite;
diff --git a/src/menu.c b/src/menu.c
index a4e5d9065..ba98ff057 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -654,7 +654,7 @@ u8 *sub_8072C44(u8 *a1, s32 a2, u8 a3, u8 a4)
return AlignInt2(gMenuWindowPtr, a1, a2, a3, a4);
}
-u8 *sub_8072C74(u8 *a1, u8 *a2, u8 a3, u8 a4)
+u8 *sub_8072C74(u8 *a1, const u8 *a2, u8 a3, u8 a4)
{
return AlignString(gMenuWindowPtr, a1, a2, a3, a4);
}
diff --git a/src/naming_screen.c b/src/naming_screen.c
index 1c718b3ca..568fdf092 100644
--- a/src/naming_screen.c
+++ b/src/naming_screen.c
@@ -11,10 +11,22 @@
#include "text.h"
#include "trig.h"
-struct UnknownStruct2
+extern u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8, u8);
+extern u8 CreateMonIcon();
+extern void sub_809D51C(void);
+extern void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8);
+
+enum
+{
+ NAMING_SCREEN_TEMPLATE_PLAYER_NAME,
+ NAMING_SCREEN_TEMPLATE_BOX_NAME,
+ NAMING_SCREEN_TEMPLATE_MON_NAME,
+};
+
+struct NamingScreenTemplate
{
u8 unk0;
- u8 unk1;
+ u8 maxChars;
u8 unk2;
u8 unk3;
u8 unk4; //mode?
@@ -24,36 +36,29 @@ struct UnknownStruct2
const u8 *title;
};
-struct UnknownStruct1
+struct NamingScreenData
{
- u8 state; //state
- u8 mode;
+ u8 state;
+ u8 templateNum;
u16 unk2;
- u16 unk4;
- u16 unk6;
+ u16 bg1vOffset;
+ u16 bg2vOffset;
u16 unk8;
u16 unkA;
u8 unkC;
u8 unkD;
- u8 currentPage; //page?
- u8 cursorSpriteId; //spriteId
+ u8 currentPage;
+ u8 cursorSpriteId;
u8 unk10;
u8 textBuffer[0x10];
u8 filler21[0x13];
- /*0x34*/ const struct UnknownStruct2 *unk34;
- /*0x38*/ u8 *nameBuffer;
+ const struct NamingScreenTemplate *template;
+ u8 *destBuffer;
u16 unk3C; //savedKeyRepeatStartDelay
u16 unk3E;
u16 unk40;
u32 unk44;
- /*0x48*/ MainCallback returnCallback;
-};
-
-enum
-{
- NAMING_SCREEN_MODE_PLAYER_NAME,
- NAMING_SCREEN_MODE_BOX_NAME,
- NAMING_SCREEN_MODE_MON_NAME,
+ MainCallback returnCallback;
};
enum
@@ -67,7 +72,7 @@ extern u16 gKeyRepeatStartDelay;
extern u8 unk_2000000[];
-#define EWRAM_000000 (*(struct UnknownStruct1 *)(unk_2000000))
+#define namingScreenData (*(struct NamingScreenData *)(unk_2000000))
const u32 gSpriteImage_83CE094[] = INCBIN_U32("graphics/naming_screen/pc_icon/0.4bpp");
const u32 gSpriteImage_83CE154[] = INCBIN_U32("graphics/naming_screen/pc_icon/1.4bpp");
@@ -75,11 +80,10 @@ const u32 gSpriteImage_83CE154[] = INCBIN_U32("graphics/naming_screen/pc_icon/1.
//Some unused pointer, perhaps.
asm(".section .rodata\n\
@ XXX: what is this?\n\
- .align 2\n\
- .4byte 0x2000000\n");
+ .align 2\n\
+ .4byte 0x2000000\n");
extern u16 *const gUnknown_083CE28C[];
-extern const struct UnknownStruct2 *const gUnknown_083CE398[];
extern const struct SubspriteTable gSubspriteTables_83CE558[];
extern const struct SubspriteTable gSubspriteTables_83CE560[];
extern const struct SubspriteTable gSubspriteTables_83CE578[];
@@ -93,92 +97,129 @@ extern const struct SpriteTemplate gSpriteTemplate_83CE640;
extern const struct SpriteTemplate gSpriteTemplate_83CE658;
extern const struct SpriteTemplate gSpriteTemplate_83CE670;
extern const struct SpriteTemplate gSpriteTemplate_83CE688;
+extern const struct SpriteSheet gUnknown_083CE6A0[];
+extern const struct SpritePalette gUnknown_083CE708[];
+extern const u8 gOtherText_SentToPC[];
+extern const u8 gNamingScreenMenu_Gfx[];
+extern u16 gMenuMessageBoxContentTileOffset;
+extern const u16 gNamingScreenPalettes[];
+extern const u16 gUnknown_083CE748[];
+extern const u16 gUnknown_083CEBF8[];
+extern const u16 gUnknown_083CF0A8[];
+extern const u16 gUnknown_08E86258[];
+extern const u8 gSpeciesNames[][11];
+extern const u8 OtherText_YourName[];
+extern const u8 OtherText_BoxName[];
+extern const u8 OtherText_PokeName[];
+
+static void C2_NamingScreen(void);
+static void sub_80B5AA0(void);
+static void StoreNamingScreenParameters(u8, u8 *, u16, u16, u32, MainCallback);
+static void NamingScreen_TurnOffScreen(void);
+static void NamingScreen_Init(void);
+static void NamingScreen_ClearVram(void);
+static void NamingScreen_ClearOam(void);
+static void NamingScreen_SetUpVideoRegs(void);
+static void NamingScreen_SetUpWindow(void);
+static void NamingScreen_ResetObjects(void);
+static void sub_80B5DFC(void);
+static void sub_80B5E20(void);
+static void sub_80B5E3C(void);
+static void NamingScreen_InitDisplayMode(void);
+static void Task_DoNothing(u8);
+static void sub_80B7558(void);
+static void sub_80B753C(void);
+static void sub_80B7680(void);
+static void sub_80B75C4(void);
+static void sub_80B7794(void);
+static void sub_80B78A8(void);
+static void sub_80B7960(void);
+static void CursorInit(void);
+static void sub_80B6A80(void);
+static void sub_80B6CA8(void);
+static void sub_80B6D04(void);
+static void sub_80B6E44(void);
+static void InputInit(void);
+static void sub_80B6438(void);
+static void sub_80B5E50(void);
+static void Task_NamingScreenMain(u8);
+static void SetInputState(u8);
+static void sub_80B68D8(u8);
+static bool8 HandleKeyboardEvent(void);
+static bool8 IsCursorAnimFinished(void);
+static void MoveCursorToOKButton(void);
+static void sub_80B6B14(void);
+static void StartPageSwapAnim(void);
+static void sub_80B6888(u8);
+static void sub_80B6460(u8, u8, u8);
+static bool8 IsPageSwapAnimNotInProgress(void);
+static void sub_80B7614(void);
+static void GetCursorPos(s16 *, s16 *);
+static void SetCursorPos(s16, s16);
+static void sub_80B77F8(void);
+static void sub_80B74B0(void);
+static void DisplaySentToPCMessage(void);
+static u8 GetKeyRoleAtCursorPos(void);
+static u8 sub_80B61C8(void);
+static void DeleteTextCharacter(void);
+static void sub_80B7090(void);
+static u8 GetInputEvent(void);
+static bool8 sub_80B7004(void);
+static void sub_80B6914(void);
+static void Task_HandlePageSwapAnim(u8);
+static void sub_80B6C48(u8, struct Sprite *, struct Sprite *);
+static u8 GetTextCaretPosition(void);
+static u8 GetCharAtKeyboardPos(s16, s16);
+static bool8 sub_80B7104(void);
+static bool8 sub_80B713C(void);
+static void AddTextCharacter(u8);
+static bool8 sub_80B7198(u8);
+static bool8 sub_80B7264(u8);
+static void sub_80B7370(u8, u8);
+static void sub_80B73CC(u8, u8);
+static bool8 sub_80B71E4(u8);
+static void sub_80B7474(u8, u8);
+static void sub_80B72A4(u8, u8);
+static bool8 sub_80B720C(u8);
+static void sub_80B7568(void);
+static void sub_80B75B0(void);
+static void sub_80B7698(u16 *, const u16 *);
+static void sub_80B76E0();
+static void nullsub_20(u8, u8);
+static void PrintKeyboardCharacters(u8);
-void C2_NamingScreen(void);
-void sub_80B5AA0(void);
-//void AddNamingScreenTask();
-void AddNamingScreenTask(u8, u8 *, u16, u16, u32, MainCallback);
-void NamingScreen_TurnOffScreen(void);
-void NamingScreen_Init(void);
-void NamingScreen_ClearVram(void);
-void NamingScreen_ClearOam(void);
-void NamingScreen_SetUpVideoRegs(void);
-void sub_80B5DC8(void);
-void NamingScreen_ResetObjects(void);
-void sub_80B5DFC(void);
-void sub_80B5E20(void);
-void sub_80B5E3C(void);
-void sub_80B5C04(void);
-void NamingScreenDummyTask(u8);
-void sub_80B7558(void);
-void sub_80B753C(void);
-void sub_80B7680(void);
-void sub_80B75C4(void);
-void sub_80B7794(void);
-void sub_80B78A8(void);
-void sub_80B7960(void);
-void sub_80B6774(void);
-void sub_80B6A80(void);
-void sub_80B6CA8(void);
-void sub_80B6D04(void);
-void sub_80B6E44(void);
-void InitInput(void);
-void sub_80B6438(void);
-void sub_80B5E50(void);
-void sub_80B5E70(u8);
-void SetInputState(u8);
-void sub_80B68D8(u8);
-u8 sub_80B60B8(void);
-bool8 sub_80B6938(void);
-void sub_80B6878(void);
-void sub_80B6B14(void);
-void sub_80B65F0(void);
-void sub_80B6888(u8);
-void sub_80B6460(u8, u8, u8);
-bool8 sub_80B6610(void);
-void sub_80B7614(void);
-void get_cursor_pos(s16 *, s16 *);
-void set_cursor_pos(s16, s16);
-void sub_80B77F8(void);
-void sub_80B74B0(void);
-void sub_80B74FC(void);
-u8 sub_80B6958(void);
-u8 sub_80B61C8(void);
-void sub_80B6FBC(void);
-void sub_80B7090(void);
-u8 GetInputPressedButton(void);
-u8 sub_80B7004(void);
-void sub_80B6914(void);
-void Task_HandleInput(u8);
-void HandleDpadMovement(struct Task *);
-void sub_80B64D4(u8);
-void sub_80B65AC(u8);
-void sub_80B65D4(struct Task *, u8, u8);
-u16 sub_80B654C(u8);
-extern void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8);
-void sub_80B6630(u8);
-void sub_80B6C48(u8, struct Sprite *, struct Sprite *);
-u8 sub_80B6F44(void);
-extern u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8, u8);
-extern u8 CreateMonIcon();
-extern void sub_809D51C(void);
-u8 sub_80B7768(s16, s16);
-u8 sub_80B7104(void);
-u8 sub_80B713C(void);
-void sub_80B7174(u8);
+enum
+{
+ MAIN_STATE_BEGIN_FADE_IN,
+ MAIN_STATE_WAIT_FADE_IN,
+ MAIN_STATE_HANDLE_INPUT,
+ MAIN_STATE_MOVE_TO_OK_BUTTON,
+ MAIN_STATE_START_PAGE_SWAP,
+ MAIN_STATE_WAIT_PAGE_SWAP,
+ MAIN_STATE_6,
+ MAIN_STATE_UPDATE_SENT_TO_PC_MESSAGE,
+ MAIN_STATE_BEGIN_FADE_OUT,
+};
-#define NAMING_SCREEN_A_BUTTON 5
-#define NAMING_SCREEN_B_BUTTON 6
-#define NAMING_SCREEN_SELECT_BUTTON 8
-#define NAMING_SCREEN_START_BUTTON 9
+enum
+{
+ INPUT_STATE_DISABLED,
+ INPUT_STATE_ENABLED,
+};
+
+#define KBEVENT_NONE 0
+#define KBEVENT_PRESSED_A 5
+#define KBEVENT_PRESSED_B 6
+#define KBEVENT_PRESSED_SELECT 8
+#define KBEVENT_PRESSED_START 9
-void DoNamingScreen(u8 mode, u8 *nameBuffer, u16 c, u16 d, u32 e, MainCallback returnCallback)
+void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 c, u16 d, u32 e, MainCallback returnCallback)
{
- AddNamingScreenTask(mode, nameBuffer, c, d, e, returnCallback);
+ StoreNamingScreenParameters(templateNum, destBuffer, c, d, e, returnCallback);
SetMainCallback2(C2_NamingScreen);
}
-void C2_NamingScreen(void)
+static void C2_NamingScreen(void)
{
switch (gMain.state)
{
@@ -200,7 +241,7 @@ void C2_NamingScreen(void)
gMain.state++;
break;
case 4:
- sub_80B5DC8();
+ NamingScreen_SetUpWindow();
gMain.state++;
break;
case 5:
@@ -214,13 +255,13 @@ void C2_NamingScreen(void)
case 7:
sub_80B5E20();
sub_80B5E3C();
- sub_80B5C04();
+ NamingScreen_InitDisplayMode();
SetMainCallback2(sub_80B5AA0);
break;
}
}
-void sub_80B5AA0(void)
+static void sub_80B5AA0(void)
{
RunTasks();
AnimateSprites();
@@ -228,65 +269,66 @@ void sub_80B5AA0(void)
UpdatePaletteFade();
}
-void sub_80B5AB8(void)
+static void VBlankCB_NamingScreen(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
- REG_BG1VOFS = EWRAM_000000.unk4;
- REG_BG2VOFS = EWRAM_000000.unk6;
+ REG_BG1VOFS = namingScreenData.bg1vOffset;
+ REG_BG2VOFS = namingScreenData.bg2vOffset;
REG_BG1CNT &= 0xFFFC;
- REG_BG1CNT |= EWRAM_000000.unk8;
+ REG_BG1CNT |= namingScreenData.unk8;
REG_BG2CNT &= 0xFFFC;
- REG_BG2CNT |= EWRAM_000000.unkA;
+ REG_BG2CNT |= namingScreenData.unkA;
}
-void AddNamingScreenTask(u8 mode, u8 *nameBuffer, u16 c, u16 d, u32 e, MainCallback returnCallback)
+static void StoreNamingScreenParameters(u8 templateNum, u8 *destBuffer, u16 c, u16 d, u32 e, MainCallback returnCallback)
{
struct Task *task;
- task = &gTasks[CreateTask(NamingScreenDummyTask, 0xFF)];
- task->data[0] = mode;
+ //Create a task that does nothing, and use it as a temporary space to store parameters
+ task = &gTasks[CreateTask(Task_DoNothing, 0xFF)];
+ task->data[0] = templateNum;
task->data[1] = c;
task->data[2] = d;
task->data[3] = e >> 16;
task->data[4] = e;
- StoreWordInTwoHalfwords(&task->data[5], (u32)nameBuffer);
+ StoreWordInTwoHalfwords(&task->data[5], (u32)destBuffer);
StoreWordInTwoHalfwords(&task->data[7], (u32)returnCallback);
}
-void GetNamingScreenParameters(void)
+static void GetNamingScreenParameters(void)
{
u8 taskId;
struct Task *task;
- taskId = FindTaskIdByFunc(NamingScreenDummyTask);
+ taskId = FindTaskIdByFunc(Task_DoNothing);
task = &gTasks[taskId];
- EWRAM_000000.mode = task->data[0];
- EWRAM_000000.unk3E = task->data[1];
- EWRAM_000000.unk40 = task->data[2];
- EWRAM_000000.unk44 = (task->data[3] << 16) | (u16)task->data[4];
- LoadWordFromTwoHalfwords(&task->data[5], (u32 *)&EWRAM_000000.nameBuffer);
- LoadWordFromTwoHalfwords(&task->data[7], (u32 *)&EWRAM_000000.returnCallback);
+ namingScreenData.templateNum = task->data[0];
+ namingScreenData.unk3E = task->data[1];
+ namingScreenData.unk40 = task->data[2];
+ namingScreenData.unk44 = (task->data[3] << 16) | (u16)task->data[4];
+ LoadWordFromTwoHalfwords(&task->data[5], (u32 *)&namingScreenData.destBuffer);
+ LoadWordFromTwoHalfwords(&task->data[7], (u32 *)&namingScreenData.returnCallback);
DestroyTask(taskId);
}
-void NamingScreenDummyTask(u8 taskId)
+static void Task_DoNothing(u8 taskId)
{
}
-void NamingScreen_TurnOffScreen(void)
+static void NamingScreen_TurnOffScreen(void)
{
SetVBlankCallback(NULL);
SetHBlankCallback(NULL);
REG_DISPCNT = 0;
}
-void sub_80B5C04(void)
+static void NamingScreen_InitDisplayMode(void)
{
u16 savedIme;
- SetVBlankCallback(sub_80B5AB8);
+ SetVBlankCallback(VBlankCB_NamingScreen);
savedIme = REG_IME;
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
@@ -295,7 +337,7 @@ void sub_80B5C04(void)
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON;
}
-void NamingScreen_ClearVram(void)
+static void NamingScreen_ClearVram(void)
{
u8 *addr = (void *)VRAM;
u32 size = 0x10000;
@@ -313,12 +355,12 @@ void NamingScreen_ClearVram(void)
}
}
-void NamingScreen_ClearOam(void)
+static void NamingScreen_ClearOam(void)
{
DmaClear16(3, (void *)OAM, 0x400);
}
-void NamingScreen_SetUpVideoRegs(void)
+static void NamingScreen_SetUpVideoRegs(void)
{
REG_BG0CNT = 0;
REG_BG1CNT = 0;
@@ -340,33 +382,35 @@ void NamingScreen_SetUpVideoRegs(void)
REG_BLDALPHA = 0x80C;
}
-void NamingScreen_Init(void)
+static const struct NamingScreenTemplate *const sNamingScreenTemplates[]; //forward declaration
+
+static void NamingScreen_Init(void)
{
GetNamingScreenParameters();
- EWRAM_000000.state = 0;
- EWRAM_000000.unk4 = 0;
- EWRAM_000000.unk6 = 0;
- EWRAM_000000.unk8 = 1;
- EWRAM_000000.unkA = 2;
- EWRAM_000000.unkC = 0;
- EWRAM_000000.unkD = 1;
- EWRAM_000000.unk34 = gUnknown_083CE398[EWRAM_000000.mode];
- EWRAM_000000.currentPage = EWRAM_000000.unk34->unk4;
- EWRAM_000000.unk2 = 14 - EWRAM_000000.unk34->unk1 / 2;
- EWRAM_000000.unk3C = gKeyRepeatStartDelay;
- memset(EWRAM_000000.textBuffer, 0xFF, 0x10);
- if (EWRAM_000000.unk34->unk0 != 0)
- StringCopy(EWRAM_000000.textBuffer, EWRAM_000000.nameBuffer);
+ namingScreenData.state = 0;
+ namingScreenData.bg1vOffset = 0;
+ namingScreenData.bg2vOffset = 0;
+ namingScreenData.unk8 = 1;
+ namingScreenData.unkA = 2;
+ namingScreenData.unkC = 0;
+ namingScreenData.unkD = 1;
+ namingScreenData.template = sNamingScreenTemplates[namingScreenData.templateNum];
+ namingScreenData.currentPage = namingScreenData.template->unk4;
+ namingScreenData.unk2 = 14 - namingScreenData.template->maxChars / 2;
+ namingScreenData.unk3C = gKeyRepeatStartDelay;
+ memset(namingScreenData.textBuffer, 0xFF, 0x10);
+ if (namingScreenData.template->unk0 != 0)
+ StringCopy(namingScreenData.textBuffer, namingScreenData.destBuffer);
gKeyRepeatStartDelay = 16;
}
-void sub_80B5DC8(void)
+static void NamingScreen_SetUpWindow(void)
{
SetUpWindowConfig(&gWindowConfig_81E6E88);
InitMenuWindow(&gWindowConfig_81E6E88);
}
-void NamingScreen_ResetObjects(void)
+static void NamingScreen_ResetObjects(void)
{
ResetPaletteFade();
ResetSpriteData();
@@ -374,7 +418,7 @@ void NamingScreen_ResetObjects(void)
ResetTasks();
}
-void sub_80B5DFC(void)
+static void sub_80B5DFC(void)
{
sub_80B7558();
sub_80B753C();
@@ -385,257 +429,272 @@ void sub_80B5DFC(void)
sub_80B7960();
}
-void sub_80B5E20(void)
+static void sub_80B5E20(void)
{
- sub_80B6774();
+ CursorInit();
sub_80B6A80();
sub_80B6CA8();
sub_80B6D04();
sub_80B6E44();
}
-void sub_80B5E3C(void)
+static void sub_80B5E3C(void)
{
- InitInput();
+ InputInit();
sub_80B6438();
sub_80B5E50();
}
-void sub_80B5E50(void)
+//--------------------------------------------------
+// Naming screen main
+//--------------------------------------------------
+
+static bool8 MainState_BeginFadeIn(struct Task *);
+static bool8 MainState_WaitFadeIn(struct Task *);
+static bool8 MainState_HandleInput(struct Task *);
+static bool8 MainState_MoveToOKButton(struct Task *);
+static bool8 MainState_StartPageSwap(struct Task *);
+static bool8 MainState_WaitPageSwap(struct Task *);
+static bool8 MainState_6(struct Task *);
+static bool8 MainState_UpdateSentToPCMessage(struct Task *);
+static bool8 MainState_BeginFadeInOut(struct Task *);
+static bool8 MainState_WaitFadeOutAndExit(struct Task *);
+
+static bool8 (*const sMainStateFuncs[])(struct Task *) =
+{
+ MainState_BeginFadeIn,
+ MainState_WaitFadeIn,
+ MainState_HandleInput,
+ MainState_MoveToOKButton,
+ MainState_StartPageSwap,
+ MainState_WaitPageSwap,
+ MainState_6,
+ MainState_UpdateSentToPCMessage,
+ MainState_BeginFadeInOut,
+ MainState_WaitFadeOutAndExit,
+};
+
+static void sub_80B5E50(void)
{
u8 taskId;
- taskId = CreateTask(sub_80B5E70, 2);
- sub_80B5E70(taskId);
+ taskId = CreateTask(Task_NamingScreenMain, 2);
+ Task_NamingScreenMain(taskId);
}
-//
-
-u8 sub_80B5EA8(struct Task *);
-u8 sub_80B5ED0(struct Task *);
-u8 sub_80B5F00(struct Task *);
-u8 sub_80B5F10(struct Task *);
-u8 sub_80B5F38(struct Task *);
-u8 sub_80B5F70(struct Task *);
-u8 pokemon_store(struct Task *);
-u8 sub_80B604C(struct Task *);
-u8 sub_80B606C(struct Task *);
-u8 sub_80B6094(struct Task *);
-
-static u8 (*const gUnknown_083CE218[])(struct Task *) =
-{
- sub_80B5EA8,
- sub_80B5ED0,
- sub_80B5F00,
- sub_80B5F10,
- sub_80B5F38,
- sub_80B5F70,
- pokemon_store,
- sub_80B604C,
- sub_80B606C,
- sub_80B6094,
-};
-
-void sub_80B5E70(u8 taskId)
+static void Task_NamingScreenMain(u8 taskId)
{
- while (gUnknown_083CE218[EWRAM_000000.state](&gTasks[taskId]) != 0)
+ while (sMainStateFuncs[namingScreenData.state](&gTasks[taskId]) != 0)
;
}
-u8 sub_80B5EA8(struct Task *task)
+static bool8 MainState_BeginFadeIn(struct Task *task)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
- EWRAM_000000.state++;
+ namingScreenData.state++;
return 0;
}
-u8 sub_80B5ED0(struct Task *task)
+static bool8 MainState_WaitFadeIn(struct Task *task)
{
if (!gPaletteFade.active)
{
- SetInputState(1);
+ SetInputState(INPUT_STATE_ENABLED);
sub_80B68D8(1);
- EWRAM_000000.state++;
+ namingScreenData.state++;
}
- return 0;
+ return FALSE;
}
-u8 sub_80B5F00(struct Task *task)
+static bool8 MainState_HandleInput(struct Task *task)
{
- return sub_80B60B8();
+ return HandleKeyboardEvent();
}
-u8 sub_80B5F10(struct Task *task)
+static bool8 MainState_MoveToOKButton(struct Task *task)
{
- if (sub_80B6938() != 0)
+ if (IsCursorAnimFinished())
{
- SetInputState(1);
- sub_80B6878();
- EWRAM_000000.state = 2;
+ SetInputState(INPUT_STATE_ENABLED);
+ MoveCursorToOKButton();
+ namingScreenData.state = MAIN_STATE_HANDLE_INPUT;
}
- return 0;
+ return FALSE;
}
-u8 sub_80B5F38(struct Task *task)
+static bool8 MainState_StartPageSwap(struct Task *task)
{
- SetInputState(0);
+ SetInputState(INPUT_STATE_DISABLED);
sub_80B6B14();
- sub_80B65F0();
+ StartPageSwapAnim();
sub_80B6888(1);
sub_80B6460(0, 0, 1);
PlaySE(SE_WIN_OPEN);
- EWRAM_000000.state = 5;
- return 0;
+ namingScreenData.state = MAIN_STATE_WAIT_PAGE_SWAP;
+ return FALSE;
}
-u8 sub_80B5F70(struct Task *task)
+static bool8 MainState_WaitPageSwap(struct Task *task)
{
s16 cursorX;
s16 cursorY;
- if (sub_80B6610())
+ if (IsPageSwapAnimNotInProgress())
{
- EWRAM_000000.state = 2;
- EWRAM_000000.currentPage++;
- EWRAM_000000.currentPage %= 3;
+ namingScreenData.state = MAIN_STATE_HANDLE_INPUT;
+ namingScreenData.currentPage++;
+ namingScreenData.currentPage %= 3;
sub_80B7614();
sub_80B77F8();
- SetInputState(1);
- get_cursor_pos(&cursorX, &cursorY);
- if (EWRAM_000000.currentPage == PAGE_OTHERS && (cursorX == 6 || cursorX == 7))
+ SetInputState(INPUT_STATE_ENABLED);
+ GetCursorPos(&cursorX, &cursorY);
+ if (namingScreenData.currentPage == PAGE_OTHERS && (cursorX == 6 || cursorX == 7))
cursorX = 5;
- set_cursor_pos(cursorX, cursorY);
+ SetCursorPos(cursorX, cursorY);
sub_80B6888(0);
}
- return 0;
+ return FALSE;
}
-u8 pokemon_store(struct Task *task)
+static bool8 MainState_6(struct Task *task)
{
sub_80B74B0();
- SetInputState(0);
+ SetInputState(INPUT_STATE_DISABLED);
sub_80B68D8(0);
sub_80B6460(3, 0, 1);
- gKeyRepeatStartDelay = EWRAM_000000.unk3C;
- if (EWRAM_000000.mode == NAMING_SCREEN_MODE_MON_NAME
- && CalculatePlayerPartyCount() > 5)
+ gKeyRepeatStartDelay = namingScreenData.unk3C;
+ if (namingScreenData.templateNum == NAMING_SCREEN_TEMPLATE_MON_NAME
+ && CalculatePlayerPartyCount() >= 6)
{
- sub_80B74FC();
- EWRAM_000000.state = 7;
- return 0;
+ DisplaySentToPCMessage();
+ namingScreenData.state = MAIN_STATE_UPDATE_SENT_TO_PC_MESSAGE;
+ return FALSE;
}
else
{
- EWRAM_000000.state = 8;
- return 1;
+ namingScreenData.state = MAIN_STATE_BEGIN_FADE_OUT;
+ return TRUE; //Exit the naming screen
}
}
-u8 sub_80B604C(struct Task *task)
+static bool8 MainState_UpdateSentToPCMessage(struct Task *task)
{
if (MenuUpdateWindowText())
- EWRAM_000000.state++;
- return 0;
+ namingScreenData.state++;
+ return FALSE;
}
-u8 sub_80B606C(struct Task *task)
+static bool8 MainState_BeginFadeInOut(struct Task *task)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- EWRAM_000000.state++;
- return 0;
+ namingScreenData.state++;
+ return FALSE;
}
-u8 sub_80B6094(struct Task *task)
+static bool8 MainState_WaitFadeOutAndExit(struct Task *task)
{
if (!gPaletteFade.active)
- SetMainCallback2(EWRAM_000000.returnCallback);
- return 0;
+ SetMainCallback2(namingScreenData.returnCallback);
+ return FALSE;
}
-u8 sub_80B6108(u8);
-u8 sub_80B6148(u8);
-u8 sub_80B6170(u8);
-u8 sub_80B6194(u8);
+//--------------------------------------------------
+// Keyboard handling
+//--------------------------------------------------
-static u8 (*const gUnknown_083CE240[])(u8) =
+enum
{
- sub_80B6108,
- sub_80B6148,
- sub_80B6170,
- sub_80B6194,
+ KEY_ROLE_CHAR,
+ KEY_ROLE_PAGE,
+ KEY_ROLE_BACKSPACE,
+ KEY_ROLE_OK,
};
-u8 sub_80B60B8(void)
+
+static bool8 KeyboardKeyHandler_Character(u8);
+static bool8 KeyboardKeyHandler_Page(u8);
+static bool8 KeyboardKeyHandler_Backspace(u8);
+static bool8 KeyboardKeyHandler_OK(u8);
+
+static bool8 (*const sKeyboardKeyHandlers[])(u8) =
{
- u8 button = GetInputPressedButton();
- u8 r0 = sub_80B6958();
+ KeyboardKeyHandler_Character,
+ KeyboardKeyHandler_Page,
+ KeyboardKeyHandler_Backspace,
+ KeyboardKeyHandler_OK,
+};
+
+static bool8 HandleKeyboardEvent(void)
+{
+ u8 event = GetInputEvent();
+ u8 keyRole = GetKeyRoleAtCursorPos();
- if (button == 8)
+ if (event == KBEVENT_PRESSED_SELECT)
return sub_80B61C8();
- else if (button == 6)
+ else if (event == KBEVENT_PRESSED_B)
{
- sub_80B6FBC();
- return 0;
+ DeleteTextCharacter();
+ return FALSE;
}
- else if (button == 7)
+ else if (event == 7)
{
sub_80B7090();
- return 0;
+ return FALSE;
}
- return gUnknown_083CE240[r0](button);
+ return sKeyboardKeyHandlers[keyRole](event);
}
-u8 sub_80B6108(u8 a)
+static bool8 KeyboardKeyHandler_Character(u8 event)
{
sub_80B6460(3, 0, 0);
- if (a == 5)
+ if (event == KBEVENT_PRESSED_A)
{
u8 var = sub_80B7004();
sub_80B6914();
- if (var != 0)
+ if (var)
{
- SetInputState(0);
- EWRAM_000000.state = 3;
+ SetInputState(INPUT_STATE_DISABLED);
+ namingScreenData.state = MAIN_STATE_MOVE_TO_OK_BUTTON;
}
}
- return 0;
+ return FALSE;
}
-u8 sub_80B6148(u8 a)
+static bool8 KeyboardKeyHandler_Page(u8 event)
{
sub_80B6460(0, 1, 0);
- if (a == 5)
+ if (event == KBEVENT_PRESSED_A)
return sub_80B61C8();
else
- return 0;
+ return FALSE;
}
-u8 sub_80B6170(u8 a)
+static bool8 KeyboardKeyHandler_Backspace(u8 event)
{
sub_80B6460(1, 1, 0);
- if (a == 5)
- sub_80B6FBC();
- return 0;
+ if (event == KBEVENT_PRESSED_A)
+ DeleteTextCharacter();
+ return FALSE;
}
-u8 sub_80B6194(u8 a)
+static bool8 KeyboardKeyHandler_OK(u8 event)
{
sub_80B6460(2, 1, 0);
- if (a == 5)
+ if (event == KBEVENT_PRESSED_A)
{
PlaySE(SE_SELECT);
- EWRAM_000000.state = 6;
- return 1;
+ namingScreenData.state = MAIN_STATE_6;
+ return TRUE;
}
else
- return 0;
+ return FALSE;
}
-u8 sub_80B61C8(void)
+static bool8 sub_80B61C8(void)
{
- EWRAM_000000.state = 4;
- return 1;
+ namingScreenData.state = MAIN_STATE_START_PAGE_SWAP;
+ return TRUE;
}
//--------------------------------------------------
@@ -650,69 +709,72 @@ enum
};
#define tState data[0]
-#define tPressedButton data[1]
+#define tKeyboardEvent data[1]
#define tKbFunctionKey data[2]
-void InitInput(void)
+static void InputState_Disabled(struct Task *);
+static void InputState_Enabled(struct Task *);
+
+static void (*const sInputStateFuncs[])(struct Task *) =
+{
+ InputState_Disabled,
+ InputState_Enabled,
+};
+
+static void Task_HandleInput(u8);
+static void HandleDpadMovement(struct Task *);
+
+static void InputInit(void)
{
CreateTask(Task_HandleInput, 1);
}
-u8 GetInputPressedButton(void)
+static u8 GetInputEvent(void)
{
u8 taskId = FindTaskIdByFunc(Task_HandleInput);
- return gTasks[taskId].tPressedButton;
+ return gTasks[taskId].tKeyboardEvent;
}
-void SetInputState(u8 state)
+static void SetInputState(u8 state)
{
u8 taskId = FindTaskIdByFunc(Task_HandleInput);
gTasks[taskId].tState = state;
}
-static void sub_80B626C(struct Task *);
-static void sub_80B6274(struct Task *);
-
-static void (*const sInputStateHandlers[])(struct Task *) =
-{
- sub_80B626C,
- sub_80B6274,
-};
-
-void Task_HandleInput(u8 taskId)
+static void Task_HandleInput(u8 taskId)
{
- sInputStateHandlers[gTasks[taskId].tState](&gTasks[taskId]);
+ sInputStateFuncs[gTasks[taskId].tState](&gTasks[taskId]);
}
-static void sub_80B626C(struct Task *task)
+static void InputState_Disabled(struct Task *task)
{
- task->tPressedButton = 0;
+ task->tKeyboardEvent = 0;
}
-static void sub_80B6274(struct Task *task)
+static void InputState_Enabled(struct Task *task)
{
- task->tPressedButton = 0;
+ task->tKeyboardEvent = 0;
if (gMain.newKeys & A_BUTTON)
{
- task->tPressedButton = 5;
+ task->tKeyboardEvent = KBEVENT_PRESSED_A;
return;
}
if (gMain.newKeys & B_BUTTON)
{
- task->tPressedButton = 6;
+ task->tKeyboardEvent = KBEVENT_PRESSED_B;
return;
}
if (gMain.newKeys & SELECT_BUTTON)
{
- task->tPressedButton = 8;
+ task->tKeyboardEvent = KBEVENT_PRESSED_SELECT;
return;
}
if (gMain.newKeys & START_BUTTON)
{
- task->tPressedButton = 9;
- sub_80B6878();
+ task->tKeyboardEvent = KBEVENT_PRESSED_START;
+ MoveCursorToOKButton();
return;
}
HandleDpadMovement(task);
@@ -739,14 +801,14 @@ static const s16 sDpadDeltaY[] =
static const s16 s4RowTo3RowTableY[] = {0, 1, 1, 2};
static const s16 gUnknown_083CE274[] = {0, 0, 3, 0};
-void HandleDpadMovement(struct Task *task)
+static void HandleDpadMovement(struct Task *task)
{
s16 cursorX;
s16 cursorY;
u16 dpadDir;
s16 prevCursorX;
- get_cursor_pos(&cursorX, &cursorY);
+ GetCursorPos(&cursorX, &cursorY);
dpadDir = 0;
if (gMain.newAndRepeatedKeys & DPAD_UP)
dpadDir = 1;
@@ -772,7 +834,7 @@ void HandleDpadMovement(struct Task *task)
if (sDpadDeltaX[dpadDir] != 0)
{
//The "others" page only has 5 columns
- if (EWRAM_000000.currentPage == PAGE_OTHERS && (cursorX == 6 || cursorX == 7))
+ if (namingScreenData.currentPage == PAGE_OTHERS && (cursorX == 6 || cursorX == 7))
{
if (sDpadDeltaX[dpadDir] > 0)
cursorX = 8;
@@ -815,28 +877,34 @@ void HandleDpadMovement(struct Task *task)
if (cursorY > 3)
cursorY = 0;
}
- set_cursor_pos(cursorX, cursorY);
+ SetCursorPos(cursorX, cursorY);
}
#undef tState
-#undef tPressedButton
+#undef tKeyboardEvent
#undef tKbFunctionKey
//--------------------------------------------------
+//
+//--------------------------------------------------
+
+static void Task_80B64D4(u8);
+static u16 sub_80B654C(u8);
+static void sub_80B65AC(u8);
+static void sub_80B65D4(struct Task *, u8, u8);
-void sub_80B6438(void)
+static void sub_80B6438(void)
{
u8 taskId;
- taskId = CreateTask(sub_80B64D4, 3);
+ taskId = CreateTask(Task_80B64D4, 3);
gTasks[taskId].data[0] = 3;
}
-void sub_80B6460(u8 a, u8 b, u8 c)
+static void sub_80B6460(u8 a, u8 b, u8 c)
{
- struct Task *task;
+ struct Task *task = &gTasks[FindTaskIdByFunc(Task_80B64D4)];
- task = &gTasks[FindTaskIdByFunc(sub_80B64D4)];
if (a == task->data[0] && c == 0)
{
task->data[1] = b;
@@ -850,7 +918,7 @@ void sub_80B6460(u8 a, u8 b, u8 c)
sub_80B65D4(task, a, b);
}
-void sub_80B64D4(u8 taskId)
+static void Task_80B64D4(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -874,7 +942,7 @@ void sub_80B64D4(u8 taskId)
}
}
-u16 sub_80B654C(u8 a)
+static u16 sub_80B654C(u8 a)
{
const u16 arr[] =
{
@@ -886,14 +954,14 @@ u16 sub_80B654C(u8 a)
return arr[a];
}
-void sub_80B65AC(u8 a)
+static void sub_80B65AC(u8 a)
{
u16 index = sub_80B654C(a);
gPlttBufferFaded[index] = gPlttBufferUnfaded[index];
}
-void sub_80B65D4(struct Task *task, u8 b, u8 c)
+static void sub_80B65D4(struct Task *task, u8 b, u8 c)
{
task->data[0] = b;
task->data[1] = c;
@@ -903,103 +971,117 @@ void sub_80B65D4(struct Task *task, u8 b, u8 c)
task->data[5] = 0;
}
-//
+//--------------------------------------------------
+// Page Swap
+//--------------------------------------------------
+
+#define tState data[0]
+#define tFrameCount data[1]
-u8 sub_80B6668(struct Task *);
-u8 sub_80B6680(struct Task *);
-u8 sub_80B66EC(struct Task *);
-u8 sub_80B6758(struct Task *);
+static bool8 PageSwapAnimState_Init(struct Task *);
+static bool8 PageSwapAnimState_1(struct Task *);
+static bool8 PageSwapAnimState_2(struct Task *);
+static bool8 PageSwapAnimState_Done(struct Task *);
-u8 (*const gUnknown_083CE27C[])(struct Task *) =
+static bool8 (*const sPageSwapAnimStateFuncs[])(struct Task *) =
{
- sub_80B6668,
- sub_80B6680,
- sub_80B66EC,
- sub_80B6758,
+ PageSwapAnimState_Init,
+ PageSwapAnimState_1,
+ PageSwapAnimState_2,
+ PageSwapAnimState_Done,
};
-void sub_80B65F0(void)
+static void StartPageSwapAnim(void)
{
u8 taskId;
- taskId = CreateTask(sub_80B6630, 0);
- sub_80B6630(taskId);
+ taskId = CreateTask(Task_HandlePageSwapAnim, 0);
+ Task_HandlePageSwapAnim(taskId);
}
-bool8 sub_80B6610(void)
+static bool8 IsPageSwapAnimNotInProgress(void)
{
- if (FindTaskIdByFunc(sub_80B6630) == 0xFF)
+ if (FindTaskIdByFunc(Task_HandlePageSwapAnim) == 0xFF)
return TRUE;
else
return FALSE;
}
-void sub_80B6630(u8 taskId)
+static void Task_HandlePageSwapAnim(u8 taskId)
{
- while (gUnknown_083CE27C[gTasks[taskId].data[0]](&gTasks[taskId]) != 0)
+ while (sPageSwapAnimStateFuncs[gTasks[taskId].tState](&gTasks[taskId]) != 0)
;
}
-u8 sub_80B6668(struct Task *task)
+static bool8 PageSwapAnimState_Init(struct Task *task)
{
- EWRAM_000000.unk4 = 0;
- EWRAM_000000.unk6 = 0;
- task->data[0]++;
+ namingScreenData.bg1vOffset = 0;
+ namingScreenData.bg2vOffset = 0;
+ task->tState++;
return 0;
}
-u8 sub_80B6680(struct Task *task)
+static bool8 PageSwapAnimState_1(struct Task *task)
{
- u16 *const arr[] = {&EWRAM_000000.unk6, &EWRAM_000000.unk4};
+ u16 *const arr[] =
+ {
+ &namingScreenData.bg2vOffset,
+ &namingScreenData.bg1vOffset
+ };
- task->data[1] += 4;
- *arr[EWRAM_000000.unkC] = Sin(task->data[1], 0x28);
- *arr[EWRAM_000000.unkD] = Sin((task->data[1] + 0x80) & 0xFF, 0x28);
- if (task->data[1] > 0x3F)
+ task->tFrameCount += 4;
+ *arr[namingScreenData.unkC] = Sin(task->tFrameCount, 40);
+ *arr[namingScreenData.unkD] = Sin((task->tFrameCount + 128) & 0xFF, 40);
+ if (task->tFrameCount >= 64)
{
- u8 temp = EWRAM_000000.unk8; //Why u8 and not u16?
+ u8 temp = namingScreenData.unk8; //Why u8 and not u16?
- EWRAM_000000.unk8 = EWRAM_000000.unkA;
- EWRAM_000000.unkA = temp;
- task->data[0]++;
+ namingScreenData.unk8 = namingScreenData.unkA;
+ namingScreenData.unkA = temp;
+ task->tState++;
}
return 0;
}
-u8 sub_80B66EC(struct Task *task)
+static bool8 PageSwapAnimState_2(struct Task *task)
{
- u16 *const arr[] = {&EWRAM_000000.unk6, &EWRAM_000000.unk4};
+ u16 *const arr[] = {&namingScreenData.bg2vOffset, &namingScreenData.bg1vOffset};
- task->data[1] += 4;
- *arr[EWRAM_000000.unkC] = Sin(task->data[1], 0x28);
- *arr[EWRAM_000000.unkD] = Sin((task->data[1] + 0x80) & 0xFF, 0x28);
- if (task->data[1] > 0x7F)
+ task->tFrameCount += 4;
+ *arr[namingScreenData.unkC] = Sin(task->tFrameCount, 40);
+ *arr[namingScreenData.unkD] = Sin((task->tFrameCount + 128) & 0xFF, 40);
+ if (task->tFrameCount >= 128)
{
- u8 temp = EWRAM_000000.unkC;
+ u8 temp = namingScreenData.unkC;
- EWRAM_000000.unkC = EWRAM_000000.unkD;
- EWRAM_000000.unkD = temp;
- task->data[0]++;
+ namingScreenData.unkC = namingScreenData.unkD;
+ namingScreenData.unkD = temp;
+ task->tState++;
}
return 0;
}
-u8 sub_80B6758(struct Task *task)
+static bool8 PageSwapAnimState_Done(struct Task *task)
{
- DestroyTask(FindTaskIdByFunc(sub_80B6630));
+ DestroyTask(FindTaskIdByFunc(Task_HandlePageSwapAnim));
return 0;
}
-//
+#undef tState
+#undef tFrameCount
+
+//--------------------------------------------------
+// Cursor
+//--------------------------------------------------
-void sub_80B6774(void)
+static void CursorInit(void)
{
- EWRAM_000000.cursorSpriteId = CreateSprite(&gSpriteTemplate_83CE640, 0, 0, 0);
- gSprites[EWRAM_000000.cursorSpriteId].oam.priority = 1;
- gSprites[EWRAM_000000.cursorSpriteId].oam.objMode = 1;
- gSprites[EWRAM_000000.cursorSpriteId].data6 = 1;
- gSprites[EWRAM_000000.cursorSpriteId].data6 = 2;
- set_cursor_pos(0, 0);
+ namingScreenData.cursorSpriteId = CreateSprite(&gSpriteTemplate_83CE640, 0, 0, 0);
+ gSprites[namingScreenData.cursorSpriteId].oam.priority = 1;
+ gSprites[namingScreenData.cursorSpriteId].oam.objMode = 1;
+ gSprites[namingScreenData.cursorSpriteId].data6 = 1;
+ gSprites[namingScreenData.cursorSpriteId].data6 = 2;
+ SetCursorPos(0, 0);
}
static const u8 sKeyboardSymbolPositions[][9] =
@@ -1009,73 +1091,72 @@ static const u8 sKeyboardSymbolPositions[][9] =
{1, 4, 7, 10, 13, 16, 16, 16, 19}, //Others page
};
-u8 sub_80B67EC(s16 x)
+static u8 CursorColToKeyboardCol(s16 x)
{
- return sKeyboardSymbolPositions[EWRAM_000000.currentPage][x];
+ return sKeyboardSymbolPositions[namingScreenData.currentPage][x];
}
-void set_cursor_pos(s16 x, s16 y)
+static void SetCursorPos(s16 x, s16 y)
{
- struct Sprite *sprite = &gSprites[EWRAM_000000.cursorSpriteId];
+ struct Sprite *cursorSprite = &gSprites[namingScreenData.cursorSpriteId];
- sprite->pos1.x = sub_80B67EC(x) * 8 + 27;
- sprite->pos1.y = y * 16 + 80;
- sprite->data2 = sprite->data0;
- sprite->data3 = sprite->data1;
- sprite->data0 = x;
- sprite->data1 = y;
+ cursorSprite->pos1.x = CursorColToKeyboardCol(x) * 8 + 27;
+ cursorSprite->pos1.y = y * 16 + 80;
+ cursorSprite->data2 = cursorSprite->data0;
+ cursorSprite->data3 = cursorSprite->data1;
+ cursorSprite->data0 = x;
+ cursorSprite->data1 = y;
}
-void get_cursor_pos(s16 *x, s16 *y)
+static void GetCursorPos(s16 *x, s16 *y)
{
- struct Sprite *sprite = &gSprites[EWRAM_000000.cursorSpriteId];
+ struct Sprite *cursorSprite = &gSprites[namingScreenData.cursorSpriteId];
- *x = sprite->data0;
- *y = sprite->data1;
+ *x = cursorSprite->data0;
+ *y = cursorSprite->data1;
}
-void sub_80B6878(void)
+static void MoveCursorToOKButton(void)
{
- set_cursor_pos(8, 2);
+ SetCursorPos(8, 2);
}
-void sub_80B6888(u8 a)
+static void sub_80B6888(u8 a)
{
- gSprites[EWRAM_000000.cursorSpriteId].data4 &= -256;
- gSprites[EWRAM_000000.cursorSpriteId].data4 |= a;
- StartSpriteAnim(&gSprites[EWRAM_000000.cursorSpriteId], 0);
+ gSprites[namingScreenData.cursorSpriteId].data4 &= -256;
+ gSprites[namingScreenData.cursorSpriteId].data4 |= a;
+ StartSpriteAnim(&gSprites[namingScreenData.cursorSpriteId], 0);
}
-void sub_80B68D8(u8 a)
+static void sub_80B68D8(u8 a)
{
- gSprites[EWRAM_000000.cursorSpriteId].data4 &= 0xFF;
- gSprites[EWRAM_000000.cursorSpriteId].data4 |= a << 8;
+ gSprites[namingScreenData.cursorSpriteId].data4 &= 0xFF;
+ gSprites[namingScreenData.cursorSpriteId].data4 |= a << 8;
}
-void sub_80B6914(void)
+static void sub_80B6914(void)
{
- StartSpriteAnim(&gSprites[EWRAM_000000.cursorSpriteId], 1);
+ StartSpriteAnim(&gSprites[namingScreenData.cursorSpriteId], 1);
}
-bool8 sub_80B6938(void)
+static bool8 IsCursorAnimFinished(void)
{
- return gSprites[EWRAM_000000.cursorSpriteId].animEnded;
+ return gSprites[namingScreenData.cursorSpriteId].animEnded;
}
-u8 sub_80B6958(void)
+static u8 GetKeyRoleAtCursorPos(void)
{
- const u8 arr[] = {1, 2, 3};
- s16 var1;
- s16 var2;
+ const u8 keyRoles[] = {KEY_ROLE_PAGE, KEY_ROLE_BACKSPACE, KEY_ROLE_OK};
+ s16 cursorX;
+ s16 cursorY;
- get_cursor_pos(&var1, &var2);
- if (var1 < 8)
- return 0;
+ GetCursorPos(&cursorX, &cursorY);
+ if (cursorX < 8)
+ return KEY_ROLE_CHAR;
else
- return arr[var2];
+ return keyRoles[cursorY];
}
-#ifdef NONMATCHING
void sub_80B6998(struct Sprite *sprite)
{
if (sprite->animEnded)
@@ -1098,156 +1179,24 @@ void sub_80B6998(struct Sprite *sprite)
sprite->data6 = -sprite->data6;
sprite->data7 = 2;
}
- //_080B6A3E
if ((sprite->data4 & 0xFF00) != 0)
{
- //Can't get this part to match
- u16 var = sprite->data5;
- s8 r5 = var;
- s16 var2 = var / 2;
- s8 r4 = var2;
+ s8 gb = sprite->data5;
+ s8 r = sprite->data5 >> 1;
u16 index = IndexOfSpritePaletteTag(5) * 16 + 0x0101;
- MultiplyInvertedPaletteRGBComponents(index, r4, r5, r5);
+ MultiplyInvertedPaletteRGBComponents(index, r, gb, gb);
}
}
-#else
-__attribute__((naked))
-void sub_80B6998(struct Sprite *sprite)
-{
- asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- adds r4, r0, 0\n\
- adds r0, 0x3F\n\
- ldrb r1, [r0]\n\
- movs r0, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080B69B0\n\
- adds r0, r4, 0\n\
- movs r1, 0\n\
- bl StartSpriteAnim\n\
-_080B69B0:\n\
- ldrh r1, [r4, 0x36]\n\
- movs r0, 0xFF\n\
- ands r0, r1\n\
- adds r3, r4, 0\n\
- adds r3, 0x3E\n\
- movs r1, 0x1\n\
- ands r0, r1\n\
- lsls r0, 2\n\
- ldrb r1, [r3]\n\
- movs r2, 0x5\n\
- negs r2, r2\n\
- ands r2, r1\n\
- orrs r2, r0\n\
- strb r2, [r3]\n\
- movs r1, 0x2E\n\
- ldrsh r0, [r4, r1]\n\
- cmp r0, 0x8\n\
- bne _080B69DA\n\
- movs r0, 0x4\n\
- orrs r2, r0\n\
- strb r2, [r3]\n\
-_080B69DA:\n\
- ldrb r1, [r3]\n\
- movs r0, 0x4\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080B6A0A\n\
- movs r2, 0x36\n\
- ldrsh r0, [r4, r2]\n\
- movs r1, 0xFF\n\
- lsls r1, 8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080B6A0A\n\
- movs r0, 0x2E\n\
- ldrsh r1, [r4, r0]\n\
- movs r2, 0x32\n\
- ldrsh r0, [r4, r2]\n\
- cmp r1, r0\n\
- bne _080B6A0A\n\
- movs r0, 0x30\n\
- ldrsh r1, [r4, r0]\n\
- movs r2, 0x34\n\
- ldrsh r0, [r4, r2]\n\
- cmp r1, r0\n\
- beq _080B6A16\n\
-_080B6A0A:\n\
- movs r0, 0\n\
- strh r0, [r4, 0x38]\n\
- movs r0, 0x1\n\
- strh r0, [r4, 0x3A]\n\
- movs r0, 0x2\n\
- strh r0, [r4, 0x3C]\n\
-_080B6A16:\n\
- ldrh r0, [r4, 0x3C]\n\
- subs r0, 0x1\n\
- strh r0, [r4, 0x3C]\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- bne _080B6A3E\n\
- ldrh r1, [r4, 0x3A]\n\
- ldrh r2, [r4, 0x38]\n\
- adds r0, r1, r2\n\
- strh r0, [r4, 0x38]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x10\n\
- beq _080B6A36\n\
- cmp r0, 0\n\
- bne _080B6A3A\n\
-_080B6A36:\n\
- negs r0, r1\n\
- strh r0, [r4, 0x3A]\n\
-_080B6A3A:\n\
- movs r0, 0x2\n\
- strh r0, [r4, 0x3C]\n\
-_080B6A3E:\n\
- movs r1, 0x36\n\
- ldrsh r0, [r4, r1]\n\
- movs r1, 0xFF\n\
- lsls r1, 8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080B6A74\n\
- ldrh r4, [r4, 0x38]\n\
- lsls r5, r4, 24\n\
- lsrs r5, 24\n\
- lsls r4, 16\n\
- asrs r4, 17\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- movs r0, 0x5\n\
- bl IndexOfSpritePaletteTag\n\
- lsls r0, 24\n\
- lsrs r0, 4\n\
- ldr r2, _080B6A7C @ =0x01010000\n\
- adds r0, r2\n\
- lsrs r0, 16\n\
- adds r1, r4, 0\n\
- adds r2, r5, 0\n\
- adds r3, r5, 0\n\
- bl MultiplyInvertedPaletteRGBComponents\n\
-_080B6A74:\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080B6A7C: .4byte 0x01010000\n\
- .syntax divided\n");
-}
-#endif
-
-void sub_80B6A80(void)
+
+static void sub_80B6A80(void)
{
u8 spriteId1;
u8 spriteId2;
u8 spriteId3;
spriteId1 = CreateSprite(&gSpriteTemplate_83CE5C8, 0xCC, 0x50, 0);
- EWRAM_000000.unk10 = spriteId1;
+ namingScreenData.unk10 = spriteId1;
SetSubspriteTables(&gSprites[spriteId1], gSubspriteTables_83CE558);
spriteId2 = CreateSprite(&gSpriteTemplate_83CE5F8, 0xCC, 0x4C, 1);
@@ -1259,18 +1208,18 @@ void sub_80B6A80(void)
gSprites[spriteId1].data7 = spriteId3;
}
-void sub_80B6B14(void)
+static void sub_80B6B14(void)
{
- struct Sprite *sprite = &gSprites[EWRAM_000000.unk10];
+ struct Sprite *sprite = &gSprites[namingScreenData.unk10];
sprite->data0 = 2;
- sprite->data1 = EWRAM_000000.currentPage;
+ sprite->data1 = namingScreenData.currentPage;
}
-u8 sub_80B6B5C(struct Sprite *);
-u8 sub_80B6B98(struct Sprite *);
-u8 sub_80B6B9C(struct Sprite *);
-u8 sub_80B6C08(struct Sprite *);
+static u8 sub_80B6B5C(struct Sprite *);
+static u8 sub_80B6B98(struct Sprite *);
+static u8 sub_80B6B9C(struct Sprite *);
+static u8 sub_80B6C08(struct Sprite *);
static u8 (*const gUnknown_083CE2B4[])(struct Sprite *) =
{
@@ -1286,22 +1235,22 @@ void sub_80B6B34(struct Sprite *sprite)
;
}
-u8 sub_80B6B5C(struct Sprite *sprite)
+static u8 sub_80B6B5C(struct Sprite *sprite)
{
struct Sprite *sprite1 = &gSprites[sprite->data6];
struct Sprite *sprite2 = &gSprites[sprite->data7];
- sub_80B6C48(EWRAM_000000.currentPage, sprite1, sprite2);
+ sub_80B6C48(namingScreenData.currentPage, sprite1, sprite2);
sprite->data0++;
return 0;
}
-u8 sub_80B6B98(struct Sprite *sprite)
+static u8 sub_80B6B98(struct Sprite *sprite)
{
return 0;
}
-u8 sub_80B6B9C(struct Sprite *sprite)
+static u8 sub_80B6B9C(struct Sprite *sprite)
{
struct Sprite *r4 = &gSprites[sprite->data6];
struct Sprite *r5 = &gSprites[sprite->data7];
@@ -1317,7 +1266,7 @@ u8 sub_80B6B9C(struct Sprite *sprite)
return 0;
}
-u8 sub_80B6C08(struct Sprite *sprite)
+static u8 sub_80B6C08(struct Sprite *sprite)
{
struct Sprite *r2 = &gSprites[sprite->data6];
@@ -1334,7 +1283,7 @@ u8 sub_80B6C08(struct Sprite *sprite)
static const u16 gUnknown_083CE2C4[] = {1, 3, 2};
static const u16 gUnknown_083CE2CA[] = {4, 6, 5};
-void sub_80B6C48(u8 a, struct Sprite *b, struct Sprite *c)
+static void sub_80B6C48(u8 a, struct Sprite *b, struct Sprite *c)
{
c->oam.paletteNum = IndexOfSpritePaletteTag(gUnknown_083CE2C4[a]);
b->sheetTileStart = GetSpriteTileStartByTag(gUnknown_083CE2CA[a]);
@@ -1343,7 +1292,7 @@ void sub_80B6C48(u8 a, struct Sprite *b, struct Sprite *c)
//
-void sub_80B6CA8(void)
+static void sub_80B6CA8(void)
{
u8 spriteId;
@@ -1354,17 +1303,17 @@ void sub_80B6CA8(void)
SetSubspriteTables(&gSprites[spriteId], gSubspriteTables_83CE578);
}
-void sub_80B6D04(void)
+static void sub_80B6D04(void)
{
u8 spriteId;
s16 r1;
u8 i;
- r1 = (EWRAM_000000.unk2 - 1) * 8 + 4;
+ r1 = (namingScreenData.unk2 - 1) * 8 + 4;
spriteId = CreateSprite(&gSpriteTemplate_83CE658, r1, 0x28, 0);
gSprites[spriteId].oam.priority = 3;
- r1 = EWRAM_000000.unk2 * 8 + 4;
- for (i = 0; i < EWRAM_000000.unk34->unk1; i++, r1 += 8)
+ r1 = namingScreenData.unk2 * 8 + 4;
+ for (i = 0; i < namingScreenData.template->maxChars; i++, r1 += 8)
{
spriteId = CreateSprite(&gSpriteTemplate_83CE670, r1, 0x2C, 0);
gSprites[spriteId].oam.priority = 3;
@@ -1389,7 +1338,7 @@ void sub_80B6DE8(struct Sprite *sprite)
const s16 arr[] = {2, 3, 2, 1};
u8 var;
- var = sub_80B6F44();
+ var = GetTextCaretPosition();
if (var != (u8)sprite->data0)
{
sprite->pos2.y = 0;
@@ -1410,10 +1359,10 @@ void sub_80B6DE8(struct Sprite *sprite)
//
-void nullsub_40(void);
-void sub_80B6E68(void);
-void sub_80B6EBC(void);
-void sub_80B6EFC(void);
+static void nullsub_40(void);
+static void sub_80B6E68(void);
+static void sub_80B6EBC(void);
+static void sub_80B6EFC(void);
static void (*const gUnknown_083CE2E0[])(void) =
{
@@ -1423,27 +1372,27 @@ static void (*const gUnknown_083CE2E0[])(void) =
sub_80B6EFC,
};
-void sub_80B6E44(void)
+static void sub_80B6E44(void)
{
- gUnknown_083CE2E0[EWRAM_000000.unk34->unk2]();
+ gUnknown_083CE2E0[namingScreenData.template->unk2]();
}
-void nullsub_40(void)
+static void nullsub_40(void)
{
}
-void sub_80B6E68(void)
+static void sub_80B6E68(void)
{
u8 rivalGfxId;
u8 spriteId;
- rivalGfxId = GetRivalAvatarGraphicsIdByStateIdAndGender(0, EWRAM_000000.unk3E);
+ rivalGfxId = GetRivalAvatarGraphicsIdByStateIdAndGender(0, namingScreenData.unk3E);
spriteId = AddPseudoFieldObject(rivalGfxId, SpriteCallbackDummy, 0x38, 0x18, 0);
gSprites[spriteId].oam.priority = 3;
StartSpriteAnim(&gSprites[spriteId], 4);
}
-void sub_80B6EBC(void)
+static void sub_80B6EBC(void)
{
u8 spriteId;
@@ -1452,77 +1401,684 @@ void sub_80B6EBC(void)
gSprites[spriteId].oam.priority = 3;
}
-void sub_80B6EFC(void)
+static void sub_80B6EFC(void)
{
u8 spriteId;
sub_809D51C();
- spriteId = CreateMonIcon(EWRAM_000000.unk3E, SpriteCallbackDummy, 0x34, 0x18, 0, EWRAM_000000.unk44);
+ spriteId = CreateMonIcon(namingScreenData.unk3E, SpriteCallbackDummy, 0x34, 0x18, 0, namingScreenData.unk44);
gSprites[spriteId].oam.priority = 3;
}
-u8 sub_80B6F44(void)
+static u8 GetTextCaretPosition(void)
{
u8 i;
- for (i = 0; i < EWRAM_000000.unk34->unk1; i++)
+ for (i = 0; i < namingScreenData.template->maxChars; i++)
{
- if (EWRAM_000000.textBuffer[i] == 0xFF)
+ if (namingScreenData.textBuffer[i] == EOS)
return i;
}
- return EWRAM_000000.unk34->unk1 - 1;
+ return namingScreenData.template->maxChars - 1;
}
-u8 sub_80B6F84(void)
+static u8 GetPreviousTextCaretPosition(void)
{
s8 i;
- for (i = EWRAM_000000.unk34->unk1 - 1; i > 0; i--)
+ for (i = namingScreenData.template->maxChars - 1; i > 0; i--)
{
- if (EWRAM_000000.textBuffer[i] != 0xFF)
+ if (namingScreenData.textBuffer[i] != EOS)
return i;
}
return 0;
}
-void sub_80B6FBC(void)
+static void DeleteTextCharacter(void)
{
- u8 var;
+ u8 index;
u8 var2;
- var = sub_80B6F84();
- EWRAM_000000.textBuffer[var] = 0;
+ index = GetPreviousTextCaretPosition();
+ namingScreenData.textBuffer[index] = 0;
sub_80B7960();
- EWRAM_000000.textBuffer[var] = 0xFF;
- var2 = sub_80B6958();
+ namingScreenData.textBuffer[index] = EOS;
+ var2 = GetKeyRoleAtCursorPos();
if (var2 == 0 || var2 == 2)
sub_80B6460(1, 0, 1);
PlaySE(SE_BOWA);
}
-u8 sub_80B7004(void)
+static bool8 sub_80B7004(void)
{
s16 x;
s16 y;
- u8 var;
- u8 r4;
+ u8 ch;
+ bool8 r4;
- get_cursor_pos(&x, &y);
- x = sub_80B67EC(x);
- var = sub_80B7768(x, y);
+ GetCursorPos(&x, &y);
+ x = CursorColToKeyboardCol(x);
+ ch = GetCharAtKeyboardPos(x, y);
r4 = 1;
- if (var == 0xFF)
+ if (ch == 0xFF)
r4 = sub_80B7104();
- else if (var == 0xFE)
+ else if (ch == 0xFE)
r4 = sub_80B713C();
else
- sub_80B7174(var);
+ AddTextCharacter(ch);
sub_80B7960();
PlaySE(SE_SELECT);
- if (r4 != 0)
+ if (r4)
{
- if (sub_80B6F84() == EWRAM_000000.unk34->unk1 - 1)
- return 1;
+ if (GetPreviousTextCaretPosition() == namingScreenData.template->maxChars - 1)
+ return TRUE;
}
- return 0;
+ return FALSE;
+}
+
+static void sub_80B7090(void)
+{
+ u8 r5;
+ u8 r4;
+
+ r5 = GetPreviousTextCaretPosition();
+ r4 = namingScreenData.textBuffer[r5];
+ if (sub_80B7198(r4))
+ {
+ if (sub_80B7264(r4))
+ sub_80B7370(r4, r5);
+ else
+ sub_80B73CC(r4, r5);
+ }
+ else
+ {
+ if (sub_80B71E4(r4))
+ sub_80B7474(r4, r5);
+ else
+ sub_80B72A4(r4, r5);
+ }
+ sub_80B7960();
+ PlaySE(SE_SELECT);
+}
+
+static bool8 sub_80B7104(void)
+{
+ u8 r5;
+ u8 r4;
+
+ r5 = GetPreviousTextCaretPosition();
+ r4 = namingScreenData.textBuffer[r5];
+ if (sub_80B720C(r4))
+ {
+ sub_80B72A4(r4, r5);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 sub_80B713C(void)
+{
+ u8 r5;
+ u8 r4;
+
+ r5 = GetPreviousTextCaretPosition();
+ r4 = namingScreenData.textBuffer[r5];
+ if (sub_80B7264(r4))
+ {
+ sub_80B7370(r4, r5);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void AddTextCharacter(u8 ch)
+{
+ u8 index = GetTextCaretPosition();
+
+ namingScreenData.textBuffer[index] = ch;
}
+
+static bool8 sub_80B7198(u8 a)
+{
+ if ((a >= 55 && a <= 74)
+ || (a >= 135 && a <= 139)
+ || (a >= 140 && a <= 144)
+ || (a >= 145 && a <= 149)
+ || (a >= 150 && a <= 154))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static bool8 sub_80B71E4(u8 a)
+{
+ if ((a >= 75 && a <= 79)
+ || (a >= 155 && a <= 159))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static bool8 sub_80B720C(u8 a)
+{
+ if ((a >= 6 && a <= 20)
+ || (a >= 26 && a <= 30)
+ || (a >= 75 && a <= 79)
+ || (a >= 86 && a <= 100)
+ || (a >= 106 && a <= 110)
+ || (a >= 155 && a <= 159))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static bool8 sub_80B7264(u8 a)
+{
+ if ((a >= 26 && a <= 30)
+ || (a >= 70 && a <= 74)
+ || (a >= 106 && a <= 110)
+ || (a >= 150 && a <= 154))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void sub_80B72A4(u8 a, u8 b)
+{
+ u8 chr = a;
+
+ if (a >= 6 && a <= 10)
+ chr = a + 0x31;
+ else if (a >= 11 && a <= 15)
+ chr = a + 0x31;
+ else if (a >= 16 && a <= 20)
+ chr = a + 0x31;
+ else if (a >= 26 && a <= 30)
+ chr = a + 0x2C;
+ else if (a >= 75 && a <= 79)
+ chr = a + 0xFB;
+ else if (a >= 86 && a <= 90)
+ chr = a + 0x31;
+ else if (a >= 91 && a <= 95)
+ chr = a + 0x31;
+ else if (a >= 96 && a <= 100)
+ chr = a + 0x31;
+ else if (a >= 106 && a <= 110)
+ chr = a + 0x2C;
+ else if (a >= 155 && a <= 159)
+ chr = a + 0xFB;
+ namingScreenData.textBuffer[b] = chr;
+}
+
+static void sub_80B7370(u8 a, u8 b)
+{
+ u8 chr = a;
+
+ if (a >= 26 && a <= 30)
+ chr = a + 0x31;
+ else if (a >= 70 && a <= 74)
+ chr = a + 5;
+ else if (a >= 106 && a <= 110)
+ chr = a + 0x31;
+ else if (a >= 150 && a <= 154)
+ chr = a + 5;
+ namingScreenData.textBuffer[b] = chr;
+}
+
+static void sub_80B73CC(u8 a, u8 b)
+{
+ u8 chr = a;
+
+ if (a >= 55 && a <= 59)
+ chr = a + 0xCF;
+ else if (a >= 60 && a <= 64)
+ chr = a + 0xCF;
+ else if (a >= 65 && a <= 69)
+ chr = a + 0xCF;
+ else if (a >= 70 && a <= 74)
+ chr = a + 0xD4;
+ else if (a >= 135 && a <= 139)
+ chr = a + 0xCF;
+ else if (a >= 140 && a <= 144)
+ chr = a + 0xCF;
+ else if (a >= 145 && a <= 149)
+ chr = a + 0xCF;
+ else if (a >= 150 && a <= 154)
+ chr = a + 0xD4;
+ namingScreenData.textBuffer[b] = chr;
+}
+
+static void sub_80B7474(u8 a, u8 b)
+{
+ u8 chr = a;
+
+ if (a >= 75 && a <= 79)
+ chr = a + 0xCF;
+ else if (a >= 155 && a <= 159)
+ chr = a + 0xCF;
+ namingScreenData.textBuffer[b] = chr;
+}
+
+static void sub_80B74B0(void)
+{
+ u8 i;
+
+ for (i = 0; i < namingScreenData.template->maxChars; i++)
+ {
+ if (namingScreenData.textBuffer[i] != 0 && namingScreenData.textBuffer[i] != 0xFF)
+ {
+ StringCopyN(namingScreenData.destBuffer, namingScreenData.textBuffer, namingScreenData.template->maxChars + 1);
+ break;
+ }
+ }
+}
+
+static void DisplaySentToPCMessage(void)
+{
+ StringCopy(gStringVar1, namingScreenData.destBuffer);
+ StringExpandPlaceholders(gStringVar4, gOtherText_SentToPC);
+ BasicInitMenuWindow(&gWindowConfig_81E6E88);
+ MenuDisplayMessageBox();
+ sub_8072044(gStringVar4);
+}
+
+static void sub_80B753C(void)
+{
+ LoadSpriteSheets(gUnknown_083CE6A0);
+ LoadSpritePalettes(gUnknown_083CE708);
+}
+
+static void sub_80B7558(void)
+{
+ sub_80B7568();
+ sub_80B75B0();
+}
+
+static void sub_80B7568(void)
+{
+ const void *src;
+ void *dst;
+
+ src = gNamingScreenMenu_Gfx;
+ dst = (void *)(VRAM + gMenuMessageBoxContentTileOffset * 32);
+ DmaCopy16(3, src, dst, 0x800);
+
+ src = gNamingScreenMenu_Gfx;
+ dst = (void *)(VRAM + 0x8000 + gMenuMessageBoxContentTileOffset * 32);
+ DmaCopy16(3, src, dst, 0x800);
+}
+
+static void sub_80B75B0(void)
+{
+ LoadPalette(gNamingScreenPalettes, 0, 0x80);
+}
+
+static void sub_80B7650(u16 *);
+static void sub_80B7660(u16 *);
+static void sub_80B7670(u16 *);
+
+static void (*const gUnknown_083CE2F0[][2])(u16 *) =
+{
+ {sub_80B7660, sub_80B7650},
+ {sub_80B7650, sub_80B7670},
+ {sub_80B7670, sub_80B7660},
+};
+
+static void sub_80B75C4(void)
+{
+ u16 *const arr[] =
+ {
+ (u16 *)(VRAM + 0xE000),
+ (u16 *)(VRAM + 0xE800),
+ };
+
+ gUnknown_083CE2F0[namingScreenData.currentPage][0](arr[namingScreenData.unkC]);
+ gUnknown_083CE2F0[namingScreenData.currentPage][1](arr[namingScreenData.unkD]);
+}
+
+static void sub_80B7614(void)
+{
+ u16 *const arr[] =
+ {
+ (u16 *)(VRAM + 0xE000),
+ (u16 *)(VRAM + 0xE800),
+ };
+
+ gUnknown_083CE2F0[namingScreenData.currentPage][1](arr[namingScreenData.unkD]);
+}
+
+static void sub_80B7650(u16 *vramBuffer)
+{
+ sub_80B7698(vramBuffer, gUnknown_083CE748);
+}
+
+static void sub_80B7660(u16 *vramBuffer)
+{
+ sub_80B7698(vramBuffer, gUnknown_083CEBF8);
+}
+
+static void sub_80B7670(u16 *vramBuffer)
+{
+ sub_80B7698(vramBuffer, gUnknown_083CF0A8);
+}
+
+static void sub_80B7680(void)
+{
+ sub_80B76E0(VRAM + 0xF000, gUnknown_08E86258);
+}
+
+static void sub_80B7698(u16 *vramBuffer, const u16 *src)
+{
+ s16 i;
+ s16 j;
+
+ for (i = 0; i < 20; i++)
+ {
+ for (j = 0; j < 30; j++, src++)
+ {
+ vramBuffer[i * 32 + j] = *src + gMenuMessageBoxContentTileOffset;
+ }
+ }
+}
+
+static void sub_80B76E0(u16 *vramBuffer, const u16 *src)
+{
+ s16 i;
+ s16 j;
+
+ for (i = 0; i < 20; i++)
+ {
+ for (j = 0; j < 30; j++, src++)
+ {
+ vramBuffer[i * 32 + j] = *src + gMenuMessageBoxContentTileOffset;
+ }
+ src += 2;
+ }
+}
+
+static void sub_80B772C(void)
+{
+ nullsub_20(namingScreenData.currentPage, namingScreenData.unkC);
+}
+
+static void sub_80B7740(void)
+{
+ nullsub_20((namingScreenData.currentPage + 1) % 3, namingScreenData.unkD);
+}
+
+static void nullsub_20(u8 a, u8 b)
+{
+}
+
+static void sub_80B7838(void);
+static void sub_80B7844(void);
+static void sub_80B7850(void);
+
+static void (*const gUnknown_083CE310[][2])(void) =
+{
+ sub_80B7844,
+ sub_80B7838,
+ sub_80B7838,
+ sub_80B7850,
+ sub_80B7850,
+ sub_80B7844,
+};
+
+static const struct WindowConfig *const gUnknown_083CE328[][2][2] =
+{
+ {
+ {&gWindowConfig_81E6EDC, &gWindowConfig_81E6EF8},
+ {&gWindowConfig_81E6EA4, &gWindowConfig_81E6EC0},
+ },
+ {
+ {&gWindowConfig_81E6EA4, &gWindowConfig_81E6EC0},
+ {&gWindowConfig_81E6F14, &gWindowConfig_81E6F30},
+ },
+ {
+ {&gWindowConfig_81E6F14, &gWindowConfig_81E6F30},
+ {&gWindowConfig_81E6EDC, &gWindowConfig_81E6EF8},
+ },
+};
+
+static void nullsub_61(void);
+static void sub_80B78F8(void);
+
+static void (*const gUnknown_083CE358[])(void) =
+{
+ nullsub_61,
+ nullsub_61,
+ sub_80B78F8,
+ sub_80B78F8,
+};
+
+static void nullsub_62(void);
+static void sub_80B7924(void);
+
+static void (*const gUnknown_083CE368[])(void) =
+{
+ nullsub_62,
+ sub_80B7924,
+};
+
+static const u8 sKeyboardCharacters[][4][20]; //forward declaration
+
+static u8 GetCharAtKeyboardPos(s16 a, s16 b)
+{
+ return sKeyboardCharacters[namingScreenData.currentPage][b][a];
+}
+
+static void sub_80B7794(void)
+{
+ BasicInitMenuWindow(gUnknown_083CE328[namingScreenData.currentPage][0][namingScreenData.unkC]);
+ gUnknown_083CE310[namingScreenData.currentPage][0]();
+ BasicInitMenuWindow(gUnknown_083CE328[namingScreenData.currentPage][1][namingScreenData.unkD]);
+ gUnknown_083CE310[namingScreenData.currentPage][1]();
+ sub_80B772C();
+ sub_80B7740();
+}
+
+static void sub_80B77F8(void)
+{
+ BasicInitMenuWindow(gUnknown_083CE328[namingScreenData.currentPage][1][namingScreenData.unkD]);
+ gUnknown_083CE310[namingScreenData.currentPage][1]();
+ sub_80B7740();
+}
+
+static void sub_80B7838(void)
+{
+ PrintKeyboardCharacters(1);
+}
+
+static void sub_80B7844(void)
+{
+ PrintKeyboardCharacters(0);
+}
+
+static void sub_80B7850(void)
+{
+ PrintKeyboardCharacters(2);
+}
+
+static void PrintKeyboardCharacters(u8 page) //print letters on page
+{
+ s16 i;
+ s16 r5;
+
+ for (i = 0, r5 = 9; i < 4; i++, r5 += 2)
+ MenuPrint(sKeyboardCharacters[page][i], 3, r5);
+}
+
+static void sub_80B78A8(void)
+{
+ BasicInitMenuWindow(&gWindowConfig_81E6F4C);
+ gUnknown_083CE358[namingScreenData.templateNum]();
+ gUnknown_083CE368[namingScreenData.template->unk3]();
+ MenuPrint(namingScreenData.template->title, 9, 2);
+}
+
+static void nullsub_61(void)
+{
+}
+
+static void sub_80B78F8(void)
+{
+ StringCopy(gStringVar1, gSpeciesNames[(s16)namingScreenData.unk3E]);
+}
+
+static void nullsub_62(void)
+{
+}
+
+static void sub_80B7924(void)
+{
+ u8 genderSymbol[2] = _("♂");
+
+ if ((s16)namingScreenData.unk40 != MON_GENDERLESS)
+ {
+ if ((s16)namingScreenData.unk40 == MON_FEMALE)
+ genderSymbol[0] = 0xB6; //female symbol
+ MenuPrint(genderSymbol, 0x14, 4);
+ }
+}
+
+static void sub_80B7960(void)
+{
+ u8 *string = gStringVar1;
+
+ string[0] = 0xFC;
+ string[1] = 0x14;
+ string[2] = 8;
+ string[3] = 0xFC;
+ string[4] = 0x11;
+ string[5] = 1;
+ string += 6;
+ StringCopy(string, namingScreenData.textBuffer);
+ BasicInitMenuWindow(&gWindowConfig_81E6F4C);
+ MenuPrint(gStringVar1, namingScreenData.unk2, 4);
+}
+
+//--------------------------------------------------
+// Forward-declared variables
+//--------------------------------------------------
+
+static const struct NamingScreenTemplate playerNamingScreenTemplate =
+{
+ .unk0 = 0,
+ .maxChars = 7,
+ .unk2 = 1,
+ .unk3 = 0,
+ .unk4 = 0,
+ .unk5 = 0,
+ .unk6 = 0,
+ .unk7 = 0,
+ .title = OtherText_YourName,
+};
+
+static const struct NamingScreenTemplate pcBoxNamingTemplate =
+{
+ .unk0 = 0,
+ .maxChars = 8,
+ .unk2 = 2,
+ .unk3 = 0,
+ .unk4 = 0,
+ .unk5 = 0,
+ .unk6 = 0,
+ .unk7 = 0,
+ .title = OtherText_BoxName,
+};
+
+static const struct NamingScreenTemplate monNamingScreenTemplate =
+{
+ .unk0 = 0,
+ .maxChars = 10,
+ .unk2 = 3,
+ .unk3 = 1,
+ .unk4 = 0,
+ .unk5 = 0,
+ .unk6 = 0,
+ .unk7 = 0,
+ .title = OtherText_PokeName,
+};
+
+static const struct NamingScreenTemplate *const sNamingScreenTemplates[] =
+{
+ &playerNamingScreenTemplate,
+ &pcBoxNamingTemplate,
+ &monNamingScreenTemplate,
+ &monNamingScreenTemplate,
+};
+
+static const u8 sKeyboardCharacters[][4][20] =
+{
+ {
+ _(" A B C D E F . "),
+ _(" G H I J K L , "),
+ _(" M N O P Q R S "),
+ _(" T U V W X Y Z "),
+ },
+ {
+ _(" a b c d e f . "),
+ _(" g h i j k l , "),
+ _(" m n o p q r s "),
+ _(" t u v w x y z "),
+ },
+ {
+ _(" 0 1 2 3 4 "),
+ _(" 5 6 7 8 9 "),
+ _(" ! ? ♂ ♀ / - "),
+ _(" … “ ” ‘ ’ "),
+ },
+};
+
+const struct OamData gOamData_83CE498 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+const struct OamData gOamData_83CE4A0 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+const struct OamData gOamData_83CE4A8 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+//TODO: dump sprite data
diff --git a/src/party_menu.c b/src/party_menu.c
index 25d36bf87..d473eae6d 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -128,149 +128,149 @@ __attribute__((naked))
void sub_8070088(void)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x4\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- ldr r1, _08070120 @ =gTasks\n\
- mov r10, r1\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r1, 3\n\
- mov r2, r10\n\
- adds r7, r1, r2\n\
- ldr r5, _08070124 @ =TaskDummy\n\
- str r5, [r7]\n\
- ldr r4, _08070128 @ =0x0201c000\n\
- ldrb r0, [r4, 0x5]\n\
- movs r1, 0x64\n\
- mov r9, r1\n\
- mov r2, r9\n\
- muls r2, r0\n\
- adds r0, r2, 0\n\
- ldr r1, _0807012C @ =gPlayerParty\n\
- mov r8, r1\n\
- add r0, r8\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _08070118\n\
- adds r0, r5, 0\n\
- movs r1, 0x5\n\
- bl CreateTask\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- str r0, [sp]\n\
- mov r0, r10\n\
- adds r0, 0x8\n\
- ldr r2, [sp]\n\
- adds r6, r2, r0\n\
- ldrb r0, [r4, 0x5]\n\
- mov r1, r9\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- add r0, r8\n\
- str r0, [r4]\n\
- movs r1, 0x3A\n\
- bl GetMonData\n\
- strh r0, [r6, 0x14]\n\
- ldr r0, [r4]\n\
- movs r1, 0x39\n\
- bl GetMonData\n\
- strh r0, [r6, 0x16]\n\
- ldrb r0, [r4, 0x5]\n\
- ldrh r1, [r4, 0x6]\n\
- movs r2, 0\n\
- bl ExecuteTableBasedItemEffect__\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _08070134\n\
- adds r0, r5, 0\n\
- bl DestroyTask\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldr r1, _08070120 @ =gTasks\n\
+ mov r10, r1\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 3\n\
+ mov r2, r10\n\
+ adds r7, r1, r2\n\
+ ldr r5, _08070124 @ =TaskDummy\n\
+ str r5, [r7]\n\
+ ldr r4, _08070128 @ =0x0201c000\n\
+ ldrb r0, [r4, 0x5]\n\
+ movs r1, 0x64\n\
+ mov r9, r1\n\
+ mov r2, r9\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ ldr r1, _0807012C @ =gPlayerParty\n\
+ mov r8, r1\n\
+ add r0, r8\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _08070118\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x5\n\
+ bl CreateTask\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ str r0, [sp]\n\
+ mov r0, r10\n\
+ adds r0, 0x8\n\
+ ldr r2, [sp]\n\
+ adds r6, r2, r0\n\
+ ldrb r0, [r4, 0x5]\n\
+ mov r1, r9\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ add r0, r8\n\
+ str r0, [r4]\n\
+ movs r1, 0x3A\n\
+ bl GetMonData\n\
+ strh r0, [r6, 0x14]\n\
+ ldr r0, [r4]\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ strh r0, [r6, 0x16]\n\
+ ldrb r0, [r4, 0x5]\n\
+ ldrh r1, [r4, 0x6]\n\
+ movs r2, 0\n\
+ bl ExecuteTableBasedItemEffect__\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08070134\n\
+ adds r0, r5, 0\n\
+ bl DestroyTask\n\
_08070118:\n\
- ldr r0, _08070130 @ =sub_80701DC\n\
- str r0, [r7]\n\
- b _080701B0\n\
- .align 2, 0\n\
+ ldr r0, _08070130 @ =sub_80701DC\n\
+ str r0, [r7]\n\
+ b _080701B0\n\
+ .align 2, 0\n\
_08070120: .4byte gTasks\n\
_08070124: .4byte TaskDummy\n\
_08070128: .4byte 0x0201c000\n\
_0807012C: .4byte gPlayerParty\n\
_08070130: .4byte sub_80701DC\n\
_08070134:\n\
- ldr r1, _080701C0 @ =gUnknown_0202E8F4\n\
- movs r0, 0x1\n\
- strb r0, [r1]\n\
- movs r0, 0x3\n\
- movs r1, 0xE\n\
- movs r2, 0x1A\n\
- movs r3, 0x13\n\
- bl MenuZeroFillWindowRect\n\
- movs r0, 0x1\n\
- bl PlaySE\n\
- ldr r0, [r4]\n\
- ldrb r1, [r4, 0x5]\n\
- bl PartyMenuUpdateLevelOrStatus\n\
- bl IsDoubleBattle\n\
- adds r1, r0, 0\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- ldrb r1, [r4, 0x5]\n\
- lsls r1, 1\n\
- adds r0, r1\n\
- ldr r1, _080701C4 @ =gUnknown_083769A8\n\
- adds r0, r1\n\
- movs r1, 0x9\n\
- bl task_pc_turn_off\n\
- ldr r2, _080701C8 @ =0xfffff261\n\
- adds r1, r4, r2\n\
- movs r0, 0x2\n\
- strb r0, [r1]\n\
- ldr r0, [r4]\n\
- movs r1, 0x39\n\
- bl GetMonData\n\
- ldrh r1, [r6, 0x16]\n\
- subs r0, r1\n\
- strh r0, [r6, 0x18]\n\
- movs r0, 0x1\n\
- strh r0, [r6, 0x1C]\n\
- ldr r1, _080701CC @ =0xfffff27e\n\
- adds r0, r4, r1\n\
- movs r1, 0x1\n\
- strh r1, [r0]\n\
- ldr r2, _080701D0 @ =0xfffff280\n\
- adds r0, r4, r2\n\
- strh r1, [r0]\n\
- ldrh r1, [r6, 0x16]\n\
- adds r2, 0x2\n\
- adds r0, r4, r2\n\
- strh r1, [r0]\n\
- ldr r0, _080701D4 @ =0xffff8000\n\
- str r0, [r4, 0xC]\n\
- ldr r1, [sp]\n\
- add r1, r10\n\
- ldr r0, _080701D8 @ =sub_806F8AC\n\
- str r0, [r1]\n\
+ ldr r1, _080701C0 @ =gUnknown_0202E8F4\n\
+ movs r0, 0x1\n\
+ strb r0, [r1]\n\
+ movs r0, 0x3\n\
+ movs r1, 0xE\n\
+ movs r2, 0x1A\n\
+ movs r3, 0x13\n\
+ bl MenuZeroFillWindowRect\n\
+ movs r0, 0x1\n\
+ bl PlaySE\n\
+ ldr r0, [r4]\n\
+ ldrb r1, [r4, 0x5]\n\
+ bl PartyMenuUpdateLevelOrStatus\n\
+ bl IsDoubleBattle\n\
+ adds r1, r0, 0\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ ldrb r1, [r4, 0x5]\n\
+ lsls r1, 1\n\
+ adds r0, r1\n\
+ ldr r1, _080701C4 @ =gUnknown_083769A8\n\
+ adds r0, r1\n\
+ movs r1, 0x9\n\
+ bl task_pc_turn_off\n\
+ ldr r2, _080701C8 @ =0xfffff261\n\
+ adds r1, r4, r2\n\
+ movs r0, 0x2\n\
+ strb r0, [r1]\n\
+ ldr r0, [r4]\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ ldrh r1, [r6, 0x16]\n\
+ subs r0, r1\n\
+ strh r0, [r6, 0x18]\n\
+ movs r0, 0x1\n\
+ strh r0, [r6, 0x1C]\n\
+ ldr r1, _080701CC @ =0xfffff27e\n\
+ adds r0, r4, r1\n\
+ movs r1, 0x1\n\
+ strh r1, [r0]\n\
+ ldr r2, _080701D0 @ =0xfffff280\n\
+ adds r0, r4, r2\n\
+ strh r1, [r0]\n\
+ ldrh r1, [r6, 0x16]\n\
+ adds r2, 0x2\n\
+ adds r0, r4, r2\n\
+ strh r1, [r0]\n\
+ ldr r0, _080701D4 @ =0xffff8000\n\
+ str r0, [r4, 0xC]\n\
+ ldr r1, [sp]\n\
+ add r1, r10\n\
+ ldr r0, _080701D8 @ =sub_806F8AC\n\
+ str r0, [r1]\n\
_080701B0:\n\
- add sp, 0x4\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080701C0: .4byte gUnknown_0202E8F4\n\
_080701C4: .4byte gUnknown_083769A8\n\
_080701C8: .4byte 0xfffff261\n\
diff --git a/src/pokemon_2.c b/src/pokemon_2.c
index 87d95e1fa..c4d99e3bf 100644
--- a/src/pokemon_2.c
+++ b/src/pokemon_2.c
@@ -39,10 +39,11 @@ extern u32 gBitTable[];
extern struct BaseStats gBaseStats[];
extern u8 gSpeciesNames[][11];
extern struct BattleMove gBattleMoves[];
-extern struct SpriteTemplate gSpriteTemplate_8208288[];
-extern union AmimCmd *gSpriteAnimTable_81E7C64[];
-extern union AnimCmd **gUnknown_081EC2A4[];
-extern union AnimCmd **gUnknown_081ECACC[];
+extern const struct SpriteTemplate gSpriteTemplate_8208288[];
+extern const union AmimCmd *const gSpriteAnimTable_81E7C64[];
+//array of pointers to arrays of pointers to union AnimCmd (We probably need to typedef this.)
+extern const union AnimCmd *const *const gUnknown_081EC2A4[];
+extern const union AnimCmd *const *const gUnknown_081ECACC[];
extern u8 gTrainerClassToPicIndex[];
extern u8 gTrainerClassToNameIndex[];
extern u8 gSecretBaseTrainerClasses[];
@@ -136,70 +137,70 @@ __attribute__((naked))
u8 sub_803C434(u8 a1)
{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- bl battle_get_per_side_status\n\
- movs r1, 0x1\n\
- movs r6, 0x1\n\
- adds r4, r6, 0\n\
- ands r4, r0\n\
- eors r4, r1\n\
- adds r5, r4, 0\n\
- ldr r0, _0803C45C\n\
- ldrh r1, [r0]\n\
- adds r0, r6, 0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803C460\n\
- adds r0, r4, 0\n\
- b _0803C4AA\n\
- .align 2, 0\n\
+ push {r4-r6,lr}\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ bl battle_get_per_side_status\n\
+ movs r1, 0x1\n\
+ movs r6, 0x1\n\
+ adds r4, r6, 0\n\
+ ands r4, r0\n\
+ eors r4, r1\n\
+ adds r5, r4, 0\n\
+ ldr r0, _0803C45C\n\
+ ldrh r1, [r0]\n\
+ adds r0, r6, 0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0803C460\n\
+ adds r0, r4, 0\n\
+ b _0803C4AA\n\
+ .align 2, 0\n\
_0803C45C: .4byte gBattleTypeFlags\n\
_0803C460:\n\
- movs r0, 0\n\
- bl sub_803C348\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- bls _0803C484\n\
- bl Random\n\
- adds r1, r6, 0\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- bne _0803C480\n\
- movs r0, 0x2\n\
- eors r0, r4\n\
- b _0803C4AA\n\
+ movs r0, 0\n\
+ bl sub_803C348\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bls _0803C484\n\
+ bl Random\n\
+ adds r1, r6, 0\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _0803C480\n\
+ movs r0, 0x2\n\
+ eors r0, r4\n\
+ b _0803C4AA\n\
_0803C480:\n\
- adds r0, r4, 0\n\
- b _0803C4AA\n\
+ adds r0, r4, 0\n\
+ b _0803C4AA\n\
_0803C484:\n\
- ldr r0, _0803C49C\n\
- ldrb r1, [r0]\n\
- ldr r2, _0803C4A0\n\
- lsls r0, r4, 2\n\
- adds r0, r2\n\
- ldr r0, [r0]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- bne _0803C4A4\n\
- adds r0, r4, 0\n\
- b _0803C4AA\n\
- .align 2, 0\n\
+ ldr r0, _0803C49C\n\
+ ldrb r1, [r0]\n\
+ ldr r2, _0803C4A0\n\
+ lsls r0, r4, 2\n\
+ adds r0, r2\n\
+ ldr r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _0803C4A4\n\
+ adds r0, r4, 0\n\
+ b _0803C4AA\n\
+ .align 2, 0\n\
_0803C49C: .4byte gUnknown_02024C0C\n\
_0803C4A0: .4byte gBitTable\n\
_0803C4A4:\n\
- movs r0, 0x2\n\
- eors r5, r0\n\
- adds r0, r5, 0\n\
+ movs r0, 0x2\n\
+ eors r5, r0\n\
+ adds r0, r5, 0\n\
_0803C4AA:\n\
- bl battle_get_side_with_given_state\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- pop {r4-r6}\n\
- pop {r1}\n\
- bx r1\n\
+ bl battle_get_side_with_given_state\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ pop {r4-r6}\n\
+ pop {r1}\n\
+ bx r1\n\
.syntax divided\n");
}
#endif
@@ -248,7 +249,8 @@ void GetMonSpriteTemplate_803C56C(u16 species, u8 a2)
{
gUnknown_02024E8C = gSpriteTemplate_8208288[a2];
gUnknown_02024E8C.paletteTag = species;
- gUnknown_02024E8C.anims = (union AnimCmd **)gSpriteAnimTable_81E7C64;
+ //Don't know why the compiler says this is incompatible
+ gUnknown_02024E8C.anims = (const union AnimCmd *const *)gSpriteAnimTable_81E7C64;
}
void GetMonSpriteTemplate_803C5A0(u16 species, u8 a2)
diff --git a/src/record_mixing.c b/src/record_mixing.c
index 7263bd323..b148fa644 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -80,84 +80,84 @@ void sub_80B92AC(void)
{
asm(".syntax unified\n\
push {r4-r6,lr}\n\
- bl sub_80BC300\n\
- bl sub_80C045C\n\
- ldr r6, _080B9364 @ =0x02018000\n\
- ldr r0, _080B9368 @ =recordMixingSecretBases\n\
- ldr r1, [r0]\n\
- movs r2, 0xC8\n\
- lsls r2, 4\n\
- adds r0, r6, 0\n\
- bl memcpy\n\
- movs r1, 0xC8\n\
- lsls r1, 4\n\
- adds r0, r6, r1\n\
- ldr r1, _080B936C @ =recordMixingTvShows\n\
- ldr r1, [r1]\n\
- movs r2, 0xE1\n\
- lsls r2, 2\n\
- bl memcpy\n\
- ldr r2, _080B9370 @ =0x00001004\n\
- adds r0, r6, r2\n\
- ldr r1, _080B9374 @ =gUnknown_083D0274\n\
- ldr r1, [r1]\n\
- movs r2, 0x40\n\
- bl memcpy\n\
- ldr r1, _080B9378 @ =0x00001044\n\
- adds r0, r6, r1\n\
- ldr r1, _080B937C @ =gUnknown_083D0278\n\
- ldr r1, [r1]\n\
- movs r2, 0x40\n\
- bl memcpy\n\
- ldr r2, _080B9380 @ =0x00001084\n\
- adds r0, r6, r2\n\
- ldr r1, _080B9384 @ =recordMixingEasyChatPairs\n\
- ldr r1, [r1]\n\
- movs r2, 0x28\n\
- bl memcpy\n\
- ldr r5, _080B9388 @ =gUnknown_02038738\n\
- ldr r4, _080B938C @ =gSaveBlock1\n\
- ldr r0, _080B9390 @ =0x0000303c\n\
- adds r1, r4, r0\n\
- adds r0, r5, 0\n\
- movs r2, 0x38\n\
- bl memcpy\n\
- ldr r2, _080B9394 @ =0x00003074\n\
- adds r1, r4, r2\n\
- adds r0, r5, 0\n\
- adds r0, 0x38\n\
- movs r2, 0x38\n\
- bl memcpy\n\
- ldr r0, _080B9398 @ =0x00002f9c\n\
- adds r4, r0\n\
- adds r0, r4, 0\n\
- adds r1, r5, 0\n\
- bl sub_8041324\n\
- ldr r1, _080B939C @ =0x000010ac\n\
- adds r0, r6, r1\n\
- ldr r1, _080B93A0 @ =gUnknown_083D0280\n\
- ldr r1, [r1]\n\
- movs r2, 0x78\n\
- bl memcpy\n\
- ldr r2, _080B93A4 @ =0x00001124\n\
- adds r0, r6, r2\n\
- ldr r1, _080B93A8 @ =gUnknown_083D0284\n\
- ldr r1, [r1]\n\
- movs r2, 0xA4\n\
- bl memcpy\n\
- bl GetMultiplayerId\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _080B935C\n\
- bl sub_8126338\n\
- ldr r2, _080B93AC @ =0x000011c8\n\
- adds r1, r6, r2\n\
- strh r0, [r1]\n\
+ bl sub_80BC300\n\
+ bl sub_80C045C\n\
+ ldr r6, _080B9364 @ =0x02018000\n\
+ ldr r0, _080B9368 @ =recordMixingSecretBases\n\
+ ldr r1, [r0]\n\
+ movs r2, 0xC8\n\
+ lsls r2, 4\n\
+ adds r0, r6, 0\n\
+ bl memcpy\n\
+ movs r1, 0xC8\n\
+ lsls r1, 4\n\
+ adds r0, r6, r1\n\
+ ldr r1, _080B936C @ =recordMixingTvShows\n\
+ ldr r1, [r1]\n\
+ movs r2, 0xE1\n\
+ lsls r2, 2\n\
+ bl memcpy\n\
+ ldr r2, _080B9370 @ =0x00001004\n\
+ adds r0, r6, r2\n\
+ ldr r1, _080B9374 @ =gUnknown_083D0274\n\
+ ldr r1, [r1]\n\
+ movs r2, 0x40\n\
+ bl memcpy\n\
+ ldr r1, _080B9378 @ =0x00001044\n\
+ adds r0, r6, r1\n\
+ ldr r1, _080B937C @ =gUnknown_083D0278\n\
+ ldr r1, [r1]\n\
+ movs r2, 0x40\n\
+ bl memcpy\n\
+ ldr r2, _080B9380 @ =0x00001084\n\
+ adds r0, r6, r2\n\
+ ldr r1, _080B9384 @ =recordMixingEasyChatPairs\n\
+ ldr r1, [r1]\n\
+ movs r2, 0x28\n\
+ bl memcpy\n\
+ ldr r5, _080B9388 @ =gUnknown_02038738\n\
+ ldr r4, _080B938C @ =gSaveBlock1\n\
+ ldr r0, _080B9390 @ =0x0000303c\n\
+ adds r1, r4, r0\n\
+ adds r0, r5, 0\n\
+ movs r2, 0x38\n\
+ bl memcpy\n\
+ ldr r2, _080B9394 @ =0x00003074\n\
+ adds r1, r4, r2\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x38\n\
+ movs r2, 0x38\n\
+ bl memcpy\n\
+ ldr r0, _080B9398 @ =0x00002f9c\n\
+ adds r4, r0\n\
+ adds r0, r4, 0\n\
+ adds r1, r5, 0\n\
+ bl sub_8041324\n\
+ ldr r1, _080B939C @ =0x000010ac\n\
+ adds r0, r6, r1\n\
+ ldr r1, _080B93A0 @ =gUnknown_083D0280\n\
+ ldr r1, [r1]\n\
+ movs r2, 0x78\n\
+ bl memcpy\n\
+ ldr r2, _080B93A4 @ =0x00001124\n\
+ adds r0, r6, r2\n\
+ ldr r1, _080B93A8 @ =gUnknown_083D0284\n\
+ ldr r1, [r1]\n\
+ movs r2, 0xA4\n\
+ bl memcpy\n\
+ bl GetMultiplayerId\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _080B935C\n\
+ bl sub_8126338\n\
+ ldr r2, _080B93AC @ =0x000011c8\n\
+ adds r1, r6, r2\n\
+ strh r0, [r1]\n\
_080B935C:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080B9364: .4byte 0x02018000\n\
_080B9368: .4byte recordMixingSecretBases\n\
_080B936C: .4byte recordMixingTvShows\n\
@@ -551,70 +551,70 @@ void sub_80B9BC4(u32 a, u32 b, u32 c, u32 d)
{
asm(".syntax unified\n\
push {r4-r6,lr}\n\
- mov r6, r10\n\
- mov r5, r9\n\
- mov r4, r8\n\
- push {r4-r6}\n\
- sub sp, 0x38\n\
- mov r8, r0\n\
- mov r10, r1\n\
- mov r9, r2\n\
- adds r4, r3, 0\n\
- ldr r5, [sp, 0x54]\n\
- lsls r4, 24\n\
- lsls r5, 24\n\
- lsrs r5, 24\n\
- lsrs r4, 23\n\
- add r4, r9\n\
- ldrb r0, [r4]\n\
- mov r6, r10\n\
- muls r6, r0\n\
- add r6, r8\n\
- ldrb r0, [r4, 0x1]\n\
- lsls r1, r0, 3\n\
- subs r1, r0\n\
- lsls r1, 3\n\
- adds r1, r6, r1\n\
- mov r0, sp\n\
- movs r2, 0x38\n\
- bl memcpy\n\
- lsls r5, 1\n\
- add r5, r9\n\
- ldrb r0, [r5]\n\
- mov r1, r10\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- add r8, r0\n\
- ldrb r1, [r4, 0x1]\n\
- lsls r0, r1, 3\n\
- subs r0, r1\n\
- lsls r0, 3\n\
- adds r6, r0\n\
- ldrb r0, [r5, 0x1]\n\
- lsls r1, r0, 3\n\
- subs r1, r0\n\
- lsls r1, 3\n\
- add r1, r8\n\
- adds r0, r6, 0\n\
- movs r2, 0x38\n\
- bl memcpy\n\
- ldrb r1, [r5, 0x1]\n\
- lsls r0, r1, 3\n\
- subs r0, r1\n\
- lsls r0, 3\n\
- add r8, r0\n\
- mov r0, r8\n\
- mov r1, sp\n\
- movs r2, 0x38\n\
- bl memcpy\n\
- add sp, 0x38\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
+ mov r6, r10\n\
+ mov r5, r9\n\
+ mov r4, r8\n\
+ push {r4-r6}\n\
+ sub sp, 0x38\n\
+ mov r8, r0\n\
+ mov r10, r1\n\
+ mov r9, r2\n\
+ adds r4, r3, 0\n\
+ ldr r5, [sp, 0x54]\n\
+ lsls r4, 24\n\
+ lsls r5, 24\n\
+ lsrs r5, 24\n\
+ lsrs r4, 23\n\
+ add r4, r9\n\
+ ldrb r0, [r4]\n\
+ mov r6, r10\n\
+ muls r6, r0\n\
+ add r6, r8\n\
+ ldrb r0, [r4, 0x1]\n\
+ lsls r1, r0, 3\n\
+ subs r1, r0\n\
+ lsls r1, 3\n\
+ adds r1, r6, r1\n\
+ mov r0, sp\n\
+ movs r2, 0x38\n\
+ bl memcpy\n\
+ lsls r5, 1\n\
+ add r5, r9\n\
+ ldrb r0, [r5]\n\
+ mov r1, r10\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ add r8, r0\n\
+ ldrb r1, [r4, 0x1]\n\
+ lsls r0, r1, 3\n\
+ subs r0, r1\n\
+ lsls r0, 3\n\
+ adds r6, r0\n\
+ ldrb r0, [r5, 0x1]\n\
+ lsls r1, r0, 3\n\
+ subs r1, r0\n\
+ lsls r1, 3\n\
+ add r1, r8\n\
+ adds r0, r6, 0\n\
+ movs r2, 0x38\n\
+ bl memcpy\n\
+ ldrb r1, [r5, 0x1]\n\
+ lsls r0, r1, 3\n\
+ subs r0, r1\n\
+ lsls r0, 3\n\
+ add r8, r0\n\
+ mov r0, r8\n\
+ mov r1, sp\n\
+ movs r2, 0x38\n\
+ bl memcpy\n\
+ add sp, 0x38\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
.syntax divided\n");
}
#endif
diff --git a/src/rom4.c b/src/rom4.c
index bc9af5c66..05396cfc3 100644
--- a/src/rom4.c
+++ b/src/rom4.c
@@ -2162,8 +2162,8 @@ u8 *sub_805568C(struct UnkStruct_8054FF8 *a1)
return TradeRoom_TooBusyToNotice;
if (!sub_8083BF4(linkPlayerId))
return TradeRoom_ReadTrainerCard1;
- else
- return TradeRoom_ReadTrainerCard2;
+ else
+ return TradeRoom_ReadTrainerCard2;
}
return sub_80682A8(&unkStruct, a1->field_C, a1->d);
diff --git a/src/sprite.c b/src/sprite.c
index fd8a5aaac..987f2a812 100644
--- a/src/sprite.c
+++ b/src/sprite.c
@@ -36,7 +36,7 @@ struct OamMatrix
struct SpriteCopyRequest
{
- u8 *src;
+ const u8 *src;
u8 *dest;
u16 size;
};
@@ -95,7 +95,7 @@ static void ApplyAffineAnimFrame(u8 matrixNum, struct AffineAnimFrameCmd *frameC
static void ResetAffineAnimData(void);
static u8 IndexOfSpriteTileTag(u16 tag);
static void AllocSpriteTileRange(u16 tag, u16 start, u16 count);
-static void DoLoadSpritePalette(u16 *src, u16 paletteOffset);
+static void DoLoadSpritePalette(const u16 *src, u16 paletteOffset);
typedef void (*AnimFunc)(struct Sprite *);
typedef void (*AnimCmdFunc)(struct Sprite *);
@@ -171,51 +171,51 @@ static const u8 sCenterToCornerVecTable[3][4][2] =
static const struct Sprite sDummySprite =
{
- DUMMY_OAM_DATA,
- (union AnimCmd **)gDummySpriteAnimTable,
- NULL,
- (union AffineAnimCmd **)gDummySpriteAffineAnimTable,
- (struct SpriteTemplate *)&gDummySpriteTemplate,
- NULL,
- SpriteCallbackDummy,
- { 304, 160 },
- { 0, 0 },
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0xFF
+ .oam = DUMMY_OAM_DATA,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .template = &gDummySpriteTemplate,
+ .subspriteTables = NULL,
+ .callback = SpriteCallbackDummy,
+ .pos1 = { 304, 160 },
+ .pos2 = { 0, 0 },
+ .centerToCornerVecX = 0,
+ .centerToCornerVecY = 0,
+ .animNum = 0,
+ .animCmdIndex = 0,
+ .animDelayCounter = 0,
+ .animPaused = 0,
+ .affineAnimPaused = 0,
+ .animLoopCounter = 0,
+ .data0 = 0,
+ .data1 = 0,
+ .data2 = 0,
+ .data3 = 0,
+ .data4 = 0,
+ .data5 = 0,
+ .data6 = 0,
+ .data7 = 0,
+ .inUse = 0,
+ .coordOffsetEnabled = 0,
+ .invisible = 0,
+ .flags_3 = 0,
+ .flags_4 = 0,
+ .flags_5 = 0,
+ .flags_6 = 0,
+ .flags_7 = 0,
+ .hFlip = 0,
+ .vFlip = 0,
+ .animBeginning = 0,
+ .affineAnimBeginning = 0,
+ .animEnded = 0,
+ .affineAnimEnded = 0,
+ .usingSheet = 0,
+ .flags_f = 0,
+ .sheetTileStart = 0,
+ .subspriteTableNum = 0,
+ .subspriteMode = 0,
+ .subpriority = 0xFF
};
const struct OamData gDummyOamData = DUMMY_OAM_DATA;
@@ -230,13 +230,13 @@ const union AffineAnimCmd * const gDummySpriteAffineAnimTable[] = { &sDummyAffin
const struct SpriteTemplate gDummySpriteTemplate =
{
- 0,
- 0xFFFF,
- (struct OamData *)&gDummyOamData,
- (union AnimCmd **)gDummySpriteAnimTable,
- NULL,
- (union AffineAnimCmd **)gDummySpriteAffineAnimTable,
- SpriteCallbackDummy
+ .tileTag = 0,
+ .paletteTag = 0xFFFF,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
};
// TODO: Find out what these are used for.
@@ -840,7 +840,7 @@ static void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, struct SpriteFra
}
}
-void RequestSpriteCopy(u8 *src, u8 *dest, u16 size)
+void RequestSpriteCopy(const u8 *src, u8 *dest, u16 size)
{
if (gSpriteCopyRequestCount < MAX_SPRITE_COPY_REQUESTS)
{
@@ -1468,7 +1468,7 @@ void SetOamMatrixRotationScaling(u8 matrixNum, s16 xScale, s16 yScale, u16 rotat
CopyOamMatrix(matrixNum, &matrix);
}
-u16 LoadSpriteSheet(struct SpriteSheet *sheet)
+u16 LoadSpriteSheet(const struct SpriteSheet *sheet)
{
s16 tileStart = AllocSpriteTiles(sheet->size / TILE_SIZE_4BPP);
@@ -1484,7 +1484,7 @@ u16 LoadSpriteSheet(struct SpriteSheet *sheet)
}
}
-void LoadSpriteSheets(struct SpriteSheet *sheets)
+void LoadSpriteSheets(const struct SpriteSheet *sheets)
{
u8 i;
for (i = 0; sheets[i].data != NULL; i++)
@@ -1515,7 +1515,7 @@ void AllocTilesForSpriteSheets(struct SpriteSheet *sheets)
void LoadTilesForSpriteSheet(const struct SpriteSheet *sheet)
{
- u8 *data = sheet->data;
+ const u8 *data = sheet->data;
u16 tileStart = GetSpriteTileStartByTag(sheet->tag);
CpuCopy16(data, (u8 *)OBJ_VRAM0 + TILE_SIZE_4BPP * tileStart, sheet->size);
}
@@ -1601,7 +1601,7 @@ static void AllocSpriteTileRange(u16 tag, u16 start, u16 count)
void RequestSpriteSheetCopy(const struct SpriteSheet *sheet)
{
- u8 *data = sheet->data;
+ const u8 *data = sheet->data;
u16 tileStart = GetSpriteTileStartByTag(sheet->tag);
RequestSpriteCopy(data, (u8 *)OBJ_VRAM0 + tileStart * TILE_SIZE_4BPP, sheet->size);
}
@@ -1659,7 +1659,7 @@ void LoadSpritePalettes(const struct SpritePalette *palettes)
break;
}
-static void DoLoadSpritePalette(u16 *src, u16 paletteOffset)
+static void DoLoadSpritePalette(const u16 *src, u16 paletteOffset)
{
LoadPalette(src, paletteOffset + 0x100, 32);
}
diff --git a/src/start_menu.c b/src/start_menu.c
index 8a56b6c33..9c10c4cae 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -283,7 +283,7 @@ void CreateStartMenuTask(void (*func)(u8))
void sub_80712B4(u8 taskId)
{
- struct Task *task = &gTasks[taskId];
+ struct Task *task = &gTasks[taskId];
switch (task->data[0])
{
diff --git a/src/starter_choose.c b/src/starter_choose.c
index 4a6fb11eb..63d153ebd 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -8,6 +8,7 @@
#include "pokedex.h"
#include "songs.h"
#include "sound.h"
+#include "species.h"
#include "sprite.h"
#include "string_util.h"
#include "task.h"
@@ -19,32 +20,219 @@ struct MonCoords
};
extern void * const gUnknown_081FAF4C[];
-extern const u8 gStarterChoose_PokeballCoords[][2];
-extern u8 gBirchHelpGfx[];
-extern u8 gBirchBagTilemap[];
-extern u8 gBirchGrassTilemap[];
-extern struct SpriteSheet gUnknown_083F7794;
-extern struct SpriteSheet gUnknown_083F77A4;
-extern u8 gBirchBagGrassPal[];
-extern const u8 gStarterChoose_LabelCoords[][2];
-extern u16 gStarterMons[];
-extern union AffineAnimCmd *gSpriteAffineAnimTable_83F778C[];
-extern u8 gOtherText_DoYouChoosePoke[];
+extern const u8 gOtherText_DoYouChoosePoke[];
extern u16 gScriptResult;
-extern u8 gSpeciesNames[][11];
-extern u8 gOtherText_Poke[];
+extern const u8 gSpeciesNames[][11];
+extern const u8 gOtherText_Poke[];
extern const struct SpriteSheet gMonFrontPicTable[];
extern const struct MonCoords gMonFrontPicCoords[];
extern const struct SpritePalette gMonPaletteTable[];
-extern u8 gUnknown_083F76E4[][2];
-extern u8 gOtherText_BirchInTrouble[];
-
-extern struct SpriteTemplate gSpriteTemplate_83F77E4;
-extern struct SpriteTemplate gSpriteTemplate_83F77CC;
-extern struct SpritePalette gUnknown_083F77B4[];
-extern struct SpriteTemplate gSpriteTemplate_83F77FC;
+extern const u8 gOtherText_BirchInTrouble[];
extern struct SpriteTemplate gUnknown_02024E8C;
+//--------------------------------------------------
+// Graphics Data
+//--------------------------------------------------
+
+const u16 gBirchBagGrassPal[][16] =
+{
+ INCBIN_U16("graphics/misc/birch_bag.gbapal"),
+ INCBIN_U16("graphics/misc/birch_grass.gbapal"),
+};
+static const u16 gBirchBallarrow_Pal[] = INCBIN_U16("graphics/misc/birch_ballarrow.gbapal");
+static const u16 gBirchCircle_Pal[] = INCBIN_U16("graphics/misc/birch_circle.gbapal");
+const u8 gBirchBagTilemap[] = INCBIN_U8("graphics/misc/birch_bag_map.bin.lz");
+const u8 gBirchGrassTilemap[] = INCBIN_U8("graphics/misc/birch_grass_map.bin.lz");
+const u8 gBirchHelpGfx[] = INCBIN_U8("graphics/misc/birch_help.4bpp.lz");
+static const u8 gBirchBallarrow_Gfx[] = INCBIN_U8("graphics/misc/birch_ballarrow.4bpp.lz");
+static const u8 gBirchCircle_Gfx[] = INCBIN_U8("graphics/misc/birch_circle.4bpp.lz");
+static const u8 gStarterChoose_PokeballCoords[][2] =
+{
+ {60, 64},
+ {120, 88},
+ {180, 64},
+};
+static const u8 gStarterChoose_LabelCoords[][2] =
+{
+ {0, 9},
+ {16, 10},
+ {8, 4},
+};
+static const u16 sStarterMons[] = {SPECIES_TREECKO, SPECIES_TORCHIC, SPECIES_MUDKIP};
+static const struct OamData gOamData_83F76CC =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const struct OamData gOamData_83F76D4 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const struct OamData gOamData_83F76DC =
+{
+ .y = 160,
+ .affineMode = 3,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const u8 gUnknown_083F76E4[][2] =
+{
+ {60, 32},
+ {120, 56},
+ {180, 32},
+ {0, 0},
+};
+static const union AnimCmd gSpriteAnim_83F76EC[] =
+{
+ ANIMCMD_FRAME(48, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_83F76F4[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_83F76FC[] =
+{
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(0, 32),
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(32, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(32, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_JUMP(0),
+};
+static const union AnimCmd gSpriteAnim_83F7744[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_83F774C[] =
+{
+ gSpriteAnim_83F76EC,
+};
+static const union AnimCmd *const gSpriteAnimTable_83F7750[] =
+{
+ gSpriteAnim_83F76F4,
+ gSpriteAnim_83F76FC,
+};
+static const union AnimCmd *const gSpriteAnimTable_83F7758[] =
+{
+ gSpriteAnim_83F7744,
+};
+static const union AffineAnimCmd gSpriteAffineAnim_83F775C[] =
+{
+ AFFINEANIMCMD_FRAME(16, 16, 0, 0),
+ AFFINEANIMCMD_FRAME(16, 16, 0, 15),
+ AFFINEANIMCMD_END,
+};
+static const union AffineAnimCmd gSpriteAffineAnim_83F7774[] =
+{
+ AFFINEANIMCMD_FRAME(20, 20, 0, 0),
+ AFFINEANIMCMD_FRAME(20, 20, 0, 15),
+ AFFINEANIMCMD_END,
+};
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_83F778C[] =
+{
+ gSpriteAffineAnim_83F775C,
+};
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_83F7790[] =
+{
+ gSpriteAffineAnim_83F7774,
+};
+static const struct SpriteSheet gUnknown_083F7794[] =
+{
+ {gBirchBallarrow_Gfx, 0x0800, 0x1000},
+ {NULL},
+};
+static const struct SpriteSheet gUnknown_083F77A4[] =
+{
+ {gBirchCircle_Gfx, 0x0800, 0x1001},
+ {NULL},
+};
+const struct SpritePalette gUnknown_083F77B4[] =
+{
+ {gBirchBallarrow_Pal, 0x1000},
+ {gBirchCircle_Pal, 0x1001},
+ {NULL},
+};
+static void sub_810A62C(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F77CC =
+{
+ .tileTag = 4096,
+ .paletteTag = 4096,
+ .oam = &gOamData_83F76CC,
+ .anims = gSpriteAnimTable_83F774C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810A62C,
+};
+static void sub_810A68C(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F77E4 =
+{
+ .tileTag = 4096,
+ .paletteTag = 4096,
+ .oam = &gOamData_83F76D4,
+ .anims = gSpriteAnimTable_83F7750,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810A68C,
+};
+static void StarterPokemonSpriteAnimCallback(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F77FC =
+{
+ .tileTag = 4097,
+ .paletteTag = 4097,
+ .oam = &gOamData_83F76DC,
+ .anims = gSpriteAnimTable_83F7758,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83F7790,
+ .callback = StarterPokemonSpriteAnimCallback,
+};
+
static void MainCallback2(void);
static void Task_StarterChoose1(u8 taskId);
static void Task_StarterChoose2(u8 taskId);
@@ -60,19 +248,12 @@ static u8 CreatePokemonFrontSprite(u16, u8, u8);
#define STARTER_PKMN_POS_X 120
#define STARTER_PKMN_POS_Y 64
-//Task data
-enum {
- TD_STARTERSELECTION,
- TD_PKMN_SPRITE_ID,
- TD_CIRCLE_SPRITE_ID,
-};
-
//Retrieves one of the available starter Pokemon
u16 GetStarterPokemon(u16 n)
{
if (n > 3)
n = 0;
- return gStarterMons[n];
+ return sStarterMons[n];
}
static void VblankCallback(void)
@@ -82,6 +263,10 @@ static void VblankCallback(void)
TransferPlttBuffer();
}
+#define tStarterSelection data[0]
+#define tPkmnSpriteId data[1]
+#define tCircleSpriteId data[2]
+
void CB2_ChooseStarter(void)
{
u16 savedIme;
@@ -116,9 +301,9 @@ void CB2_ChooseStarter(void)
ResetSpriteData();
ResetPaletteFade();
FreeAllSpritePalettes();
- LoadPalette(gBirchBagGrassPal, 0, 0x40);
- LoadCompressedObjectPic(&gUnknown_083F7794);
- LoadCompressedObjectPic(&gUnknown_083F77A4);
+ LoadPalette(gBirchBagGrassPal, 0, sizeof(gBirchBagGrassPal));
+ LoadCompressedObjectPic(&gUnknown_083F7794[0]);
+ LoadCompressedObjectPic(&gUnknown_083F77A4[0]);
LoadSpritePalettes(gUnknown_083F77B4);
SetUpWindowConfig(&gWindowConfig_81E6C3C);
InitMenuWindow(&gWindowConfig_81E6CE4);
@@ -146,7 +331,7 @@ void CB2_ChooseStarter(void)
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON;
taskId = CreateTask(Task_StarterChoose1, 0);
- gTasks[taskId].data[TD_STARTERSELECTION] = 1;
+ gTasks[taskId].tStarterSelection = 1;
//Create hand sprite
spriteId = CreateSprite(&gSpriteTemplate_83F77CC, 120, 56, 2);
@@ -180,7 +365,7 @@ static void MainCallback2(void)
static void Task_StarterChoose1(u8 taskId)
{
- CreateStarterPokemonLabel(0xFF, gTasks[taskId].data[TD_STARTERSELECTION]);
+ CreateStarterPokemonLabel(0xFF, gTasks[taskId].tStarterSelection);
MenuDrawTextWindow(2, 14, 27, 19);
MenuPrint(gOtherText_BirchInTrouble, 3, 15);
gTasks[taskId].func = Task_StarterChoose2;
@@ -188,7 +373,7 @@ static void Task_StarterChoose1(u8 taskId)
static void Task_StarterChoose2(u8 taskId)
{
- u8 selection = gTasks[taskId].data[TD_STARTERSELECTION];
+ u8 selection = gTasks[taskId].tStarterSelection;
if (gMain.newKeys & A_BUTTON)
{
@@ -209,16 +394,16 @@ static void Task_StarterChoose2(u8 taskId)
gStarterChoose_PokeballCoords[selection][0],
gStarterChoose_PokeballCoords[selection][1],
1);
- gTasks[taskId].data[TD_CIRCLE_SPRITE_ID] = spriteId;
+ gTasks[taskId].tCircleSpriteId = spriteId;
//Create Pokemon sprite
spriteId = CreatePokemonFrontSprite(
- GetStarterPokemon(gTasks[taskId].data[TD_STARTERSELECTION]),
+ GetStarterPokemon(gTasks[taskId].tStarterSelection),
gStarterChoose_PokeballCoords[selection][0],
gStarterChoose_PokeballCoords[selection][1]);
gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_83F778C;
gSprites[spriteId].callback = StarterPokemonSpriteAnimCallback;
- gTasks[taskId].data[TD_PKMN_SPRITE_ID] = spriteId;
+ gTasks[taskId].tPkmnSpriteId = spriteId;
gTasks[taskId].func = Task_StarterChoose3;
}
@@ -226,22 +411,22 @@ static void Task_StarterChoose2(u8 taskId)
{
if ((gMain.newKeys & DPAD_LEFT) && selection > 0)
{
- gTasks[taskId].data[TD_STARTERSELECTION]--;
- CreateStarterPokemonLabel(selection, gTasks[taskId].data[TD_STARTERSELECTION]);
+ gTasks[taskId].tStarterSelection--;
+ CreateStarterPokemonLabel(selection, gTasks[taskId].tStarterSelection);
}
else if ((gMain.newKeys & DPAD_RIGHT) && selection < 2)
{
- gTasks[taskId].data[TD_STARTERSELECTION]++;
- CreateStarterPokemonLabel(selection, gTasks[taskId].data[TD_STARTERSELECTION]);
+ gTasks[taskId].tStarterSelection++;
+ CreateStarterPokemonLabel(selection, gTasks[taskId].tStarterSelection);
}
}
}
static void Task_StarterChoose3(u8 taskId)
{
- if (gSprites[gTasks[taskId].data[TD_CIRCLE_SPRITE_ID]].affineAnimEnded &&
- gSprites[gTasks[taskId].data[TD_CIRCLE_SPRITE_ID]].pos1.x == STARTER_PKMN_POS_X &&
- gSprites[gTasks[taskId].data[TD_CIRCLE_SPRITE_ID]].pos1.y == STARTER_PKMN_POS_Y)
+ if (gSprites[gTasks[taskId].tCircleSpriteId].affineAnimEnded &&
+ gSprites[gTasks[taskId].tCircleSpriteId].pos1.x == STARTER_PKMN_POS_X &&
+ gSprites[gTasks[taskId].tCircleSpriteId].pos1.y == STARTER_PKMN_POS_Y)
{
gTasks[taskId].func = Task_StarterChoose4;
}
@@ -249,7 +434,7 @@ static void Task_StarterChoose3(u8 taskId)
static void Task_StarterChoose4(u8 taskId)
{
- PlayCry1(GetStarterPokemon(gTasks[taskId].data[TD_STARTERSELECTION]), 0);
+ PlayCry1(GetStarterPokemon(gTasks[taskId].tStarterSelection), 0);
MenuDrawTextWindow(2, 14, 27, 19);
//"Do you choose this POKEMON?"
MenuPrint(gOtherText_DoYouChoosePoke, 3, 15);
@@ -263,22 +448,22 @@ static void Task_StarterChoose5(u8 taskId)
switch (ProcessMenuInputNoWrap_())
{
- case 0: //YES
+ case 0: // YES
//Return the starter choice and exit.
- gScriptResult = gTasks[taskId].data[TD_STARTERSELECTION];
+ gScriptResult = gTasks[taskId].tStarterSelection;
SetMainCallback2(gMain.savedCallback);
break;
- case 1: //NO
- case -1: //B button
+ case 1: // NO
+ case -1: // B button
PlaySE(SE_SELECT);
MenuZeroFillWindowRect(21, 7, 27, 12);
- spriteId = gTasks[taskId].data[TD_PKMN_SPRITE_ID];
+ spriteId = gTasks[taskId].tPkmnSpriteId;
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteId].oam.paletteNum));
FreeOamMatrix(gSprites[spriteId].oam.matrixNum);
DestroySprite(&gSprites[spriteId]);
- spriteId = gTasks[taskId].data[TD_CIRCLE_SPRITE_ID];
+ spriteId = gTasks[taskId].tCircleSpriteId;
FreeOamMatrix(gSprites[spriteId].oam.matrixNum);
DestroySprite(&gSprites[spriteId]);
gTasks[taskId].func = Task_StarterChoose6;
@@ -372,9 +557,8 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection)
REG_WIN0V = WIN_RANGE(labelTop, labelBottom);
}
-void nullsub_72(struct Sprite *sprite)
+static void nullsub_72(struct Sprite *sprite)
{
-
}
static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y)
@@ -395,25 +579,25 @@ static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y)
}
//Sprite callback
-void sub_810A62C(struct Sprite *sprite)
+static void sub_810A62C(struct Sprite *sprite)
{
- sprite->pos1.x = gUnknown_083F76E4[gTasks[sprite->data0].data[TD_STARTERSELECTION]][0];
- sprite->pos1.y = gUnknown_083F76E4[gTasks[sprite->data0].data[TD_STARTERSELECTION]][1];
+ sprite->pos1.x = gUnknown_083F76E4[gTasks[sprite->data0].tStarterSelection][0];
+ sprite->pos1.y = gUnknown_083F76E4[gTasks[sprite->data0].tStarterSelection][1];
sprite->pos2.y = Sin(sprite->data1, 8);
sprite->data1 = (u8)sprite->data1 + 4;
}
//Sprite callback
-void sub_810A68C(struct Sprite *sprite)
+static void sub_810A68C(struct Sprite *sprite)
{
- if (gTasks[sprite->data0].data[TD_STARTERSELECTION] == sprite->data1)
+ if (gTasks[sprite->data0].tStarterSelection == sprite->data1)
StartSpriteAnimIfDifferent(sprite, 1);
else
StartSpriteAnimIfDifferent(sprite, 0);
}
//Sprite callback
-void StarterPokemonSpriteAnimCallback(struct Sprite *sprite)
+static void StarterPokemonSpriteAnimCallback(struct Sprite *sprite)
{
//Move sprite to upper center of screen
if (sprite->pos1.x > STARTER_PKMN_POS_X)
diff --git a/src/title_screen.c b/src/title_screen.c
index 35f3d049c..1565abf62 100644
--- a/src/title_screen.c
+++ b/src/title_screen.c
@@ -19,32 +19,270 @@ extern struct MusicPlayerInfo gMPlay_BGM;
extern u8 gUnknown_0202F7E4;
extern u16 gUnknown_030041B4;
extern u16 gUnknown_030042C0;
-extern u8 gUnknown_08393210[];
-extern u8 gUnknown_08393250[];
-extern u8 gUnknown_083939EC[];
-extern u8 gUnknown_08393BF8[];
-extern u16 gUnknown_08393E64[];
-extern struct SpriteTemplate gSpriteTemplate_8393ECC;
-extern struct SpriteTemplate gSpriteTemplate_8393EE4;
-extern struct SpriteSheet gUnknown_08393EFC;
-extern struct SpriteTemplate gSpriteTemplate_8393F74;
-extern struct SpriteSheet gUnknown_08393F8C;
-extern const struct SpritePalette gUnknown_08393F9C[];
-extern struct SpriteTemplate gSpriteTemplate_8393FC0;
-extern struct SpriteSheet gUnknown_08393FD8;
-extern u8 gUnknown_08E9D8CC[];
-extern u8 gUnknown_08E9F624[];
-extern u8 gUnknown_08E9F7E4[];
+extern const u8 gUnknown_08E9D8CC[];
+extern const u16 gUnknown_08E9F624[];
+extern const u8 gUnknown_08E9F7E4[];
+extern const u8 gVersionTiles[];
+extern const u8 gTitleScreenPressStart_Gfx[];
+extern const u16 gTitleScreenLogoShinePalette[];
-static void MainCB2(void);
-static void Task_TitleScreenPhase1(u8);
-static void Task_TitleScreenPhase2(u8);
-static void Task_TitleScreenPhase3(u8);
-static void CB2_GoToMainMenu(void);
-static void CB2_GoToClearSaveDataScreen(void);
-static void CB2_GoToResetRtcScreen(void);
-static void CB2_GoToCopyrightScreen(void);
-static void UpdateLegendaryMarkingColor(u8);
+#ifdef SAPPHIRE
+static const u16 sLegendaryMonPalettes[][16] =
+{
+ INCBIN_U16("graphics/title_screen/kyogre_dark.gbapal"),
+ INCBIN_U16("graphics/title_screen/kyogre_glow.gbapal"),
+};
+static const u8 sLegendaryMonPixelData[] = INCBIN_U8("graphics/title_screen/kyogre.4bpp.lz");
+static const u8 sLegendaryMonTilemap[] = INCBIN_U8("graphics/title_screen/kyogre_map.bin.lz");
+static const u8 sBackdropTilemap[] = INCBIN_U8("graphics/title_screen/water_map.bin.lz");
+#else
+static const u16 sLegendaryMonPalettes[][16] =
+{
+ INCBIN_U16("graphics/title_screen/groudon_dark.gbapal"),
+ INCBIN_U16("graphics/title_screen/groudon_glow.gbapal"),
+};
+static const u8 sLegendaryMonPixelData[] = INCBIN_U8("graphics/title_screen/groudon.4bpp.lz");
+static const u8 sLegendaryMonTilemap[] = INCBIN_U8("graphics/title_screen/groudon_map.bin.lz");
+static const u8 sBackdropTilemap[] = INCBIN_U8("graphics/title_screen/lava_map.bin.lz");
+#endif
+static const u8 sLogoShineTiles[] = INCBIN_U8("graphics/title_screen/logo_shine.4bpp.lz");
+const u16 gUnknown_08393E64[] =
+{
+ 0x10,
+ 0x110,
+ 0x210,
+ 0x310,
+ 0x410,
+ 0x510,
+ 0x610,
+ 0x710,
+ 0x810,
+ 0x910,
+ 0xA10,
+ 0xB10,
+ 0xC10,
+ 0xD10,
+ 0xE10,
+ 0xF10,
+ 0x100F,
+ 0x100E,
+ 0x100D,
+ 0x100C,
+ 0x100B,
+ 0x100A,
+ 0x1009,
+ 0x1008,
+ 0x1007,
+ 0x1006,
+ 0x1005,
+ 0x1004,
+ 0x1003,
+ 0x1002,
+ 0x1001,
+ 0x1000,
+};
+static const struct OamData sVersionBannerLeftOamData =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 1,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const struct OamData sVersionBannerRightOamData =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 1,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd sVersionBannerLeftAnimSequence[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd sVersionBannerRightAnimSequence[] =
+{
+ ANIMCMD_FRAME(64, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const sVersionBannerLeftAnimTable[] =
+{
+ sVersionBannerLeftAnimSequence,
+};
+static const union AnimCmd *const sVersionBannerRightAnimTable[] =
+{
+ sVersionBannerRightAnimSequence,
+};
+static const struct SpriteTemplate sVersionBannerLeftSpriteTemplate =
+{
+ .tileTag = 1000,
+ .paletteTag = 1000,
+ .oam = &sVersionBannerLeftOamData,
+ .anims = sVersionBannerLeftAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallback_VersionBannerLeft,
+};
+static const struct SpriteTemplate sVersionBannerRightSpriteTemplate =
+{
+ .tileTag = 1000,
+ .paletteTag = 1000,
+ .oam = &sVersionBannerRightOamData,
+ .anims = sVersionBannerRightAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallback_VersionBannerRight,
+};
+static const struct SpriteSheet gUnknown_08393EFC[] =
+{
+ {gVersionTiles, 0x1000, 1000},
+ {NULL},
+};
+static const struct OamData gOamData_8393F0C =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_8393F14[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_8393F1C[] =
+{
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_8393F24[] =
+{
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_8393F2C[] =
+{
+ ANIMCMD_FRAME(12, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_8393F34[] =
+{
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_8393F3C[] =
+{
+ ANIMCMD_FRAME(20, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_8393F44[] =
+{
+ ANIMCMD_FRAME(24, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_8393F4C[] =
+{
+ ANIMCMD_FRAME(28, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const sStartCopyrightBannerAnimTable[] =
+{
+ gSpriteAnim_8393F14,
+ gSpriteAnim_8393F1C,
+ gSpriteAnim_8393F24,
+ gSpriteAnim_8393F2C,
+ gSpriteAnim_8393F34,
+ gSpriteAnim_8393F3C,
+ gSpriteAnim_8393F44,
+ gSpriteAnim_8393F4C,
+};
+static const struct SpriteTemplate sStartCopyrightBannerSpriteTemplate =
+{
+ .tileTag = 1001,
+ .paletteTag = 1001,
+ .oam = &gOamData_8393F0C,
+ .anims = sStartCopyrightBannerAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallback_PressStartCopyrightBanner,
+};
+static const struct SpriteSheet gUnknown_08393F8C[] =
+{
+ {gTitleScreenPressStart_Gfx, 0x520, 1001},
+ {NULL},
+};
+const struct SpritePalette sPokemonLogoShinePalette[] =
+{
+ {gTitleScreenLogoShinePalette, 1001},
+ {NULL},
+};
+static const struct OamData sPokemonLogoShineOamData =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd sPokemonLogoShineAnimSequence[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const sPokemonLogoShineAnimTable[] =
+{
+ sPokemonLogoShineAnimSequence,
+};
+static const struct SpriteTemplate sPokemonLogoShineSpriteTemplate =
+{
+ .tileTag = 1002,
+ .paletteTag = 1001,
+ .oam = &sPokemonLogoShineOamData,
+ .anims = sPokemonLogoShineAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallback_PokemonLogoShine,
+};
+static const struct SpriteSheet sPokemonLogoShineSpriteSheet[] =
+{
+ {sLogoShineTiles, 0x800, 1002},
+ {NULL},
+};
#define _RGB(r, g, b) ((((b) & 31) << 10) + (((g) & 31) << 5) + ((r) & 31))
@@ -66,6 +304,16 @@ static void UpdateLegendaryMarkingColor(u8);
#define RESET_RTC_BUTTON_COMBO (B_BUTTON | SELECT_BUTTON | DPAD_LEFT)
#define A_B_START_SELECT (A_BUTTON | B_BUTTON | START_BUTTON | SELECT_BUTTON)
+static void MainCB2(void);
+static void Task_TitleScreenPhase1(u8);
+static void Task_TitleScreenPhase2(u8);
+static void Task_TitleScreenPhase3(u8);
+static void CB2_GoToMainMenu(void);
+static void CB2_GoToClearSaveDataScreen(void);
+static void CB2_GoToResetRtcScreen(void);
+static void CB2_GoToCopyrightScreen(void);
+static void UpdateLegendaryMarkingColor(u8);
+
void SpriteCallback_VersionBannerLeft(struct Sprite *sprite)
{
struct Task *task = &gTasks[sprite->data1];
@@ -134,7 +382,7 @@ static void CreatePressStartBanner(s16 x, s16 y)
x -= 32;
for (i = 0; i < 3; i++, x += 32)
{
- spriteId = CreateSprite(&gSpriteTemplate_8393F74, x, y, 0);
+ spriteId = CreateSprite(&sStartCopyrightBannerSpriteTemplate, x, y, 0);
StartSpriteAnim(&gSprites[spriteId], i);
gSprites[spriteId].data0 = 1;
}
@@ -148,7 +396,7 @@ static void CreateCopyrightBanner(s16 x, s16 y)
x -= 64;
for (i = 0; i < 5; i++, x += 32)
{
- spriteId = CreateSprite(&gSpriteTemplate_8393F74, x, y, 0);
+ spriteId = CreateSprite(&sStartCopyrightBannerSpriteTemplate, x, y, 0);
StartSpriteAnim(&gSprites[spriteId], i + 3);
}
}
@@ -193,7 +441,7 @@ void SpriteCallback_PokemonLogoShine(struct Sprite *sprite)
static void StartPokemonLogoShine(bool8 flashBackground)
{
- u8 spriteId = CreateSprite(&gSpriteTemplate_8393FC0, 0, 68, 0);
+ u8 spriteId = CreateSprite(&sPokemonLogoShineSpriteTemplate, 0, 68, 0);
gSprites[spriteId].oam.objMode = 2;
gSprites[spriteId].data0 = flashBackground;
@@ -208,11 +456,9 @@ static void VBlankCB(void)
REG_BG1VOFS = gUnknown_030041B4;
}
-enum
-{
- TD_COUNTER,
- TD_SKIP,
-};
+
+#define tCounter data[0]
+#define tSkipToNext data[1]
void CB2_InitTitleScreen(void)
{
@@ -245,28 +491,28 @@ void CB2_InitTitleScreen(void)
LZ77UnCompVram(gUnknown_08E9D8CC, (void *)VRAM);
LZ77UnCompVram(gUnknown_08E9F7E4, (void *)(VRAM + 0x4800));
LoadPalette(gUnknown_08E9F624, 0, 0x1C0);
- LZ77UnCompVram(gUnknown_08393250, (void *)(VRAM + 0x8000));
- LZ77UnCompVram(gUnknown_083939EC, (void *)(VRAM + 0xC000));
- LZ77UnCompVram(gUnknown_08393BF8, (void *)(VRAM + 0xC800));
- LoadPalette(gUnknown_08393210, 0xE0, 0x40);
+ LZ77UnCompVram(sLegendaryMonPixelData, (void *)(VRAM + 0x8000));
+ LZ77UnCompVram(sLegendaryMonTilemap, (void *)(VRAM + 0xC000));
+ LZ77UnCompVram(sBackdropTilemap, (void *)(VRAM + 0xC800));
+ LoadPalette(sLegendaryMonPalettes, 0xE0, sizeof(sLegendaryMonPalettes));
remove_some_task();
ResetTasks();
ResetSpriteData();
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 14;
- LoadCompressedObjectPic(&gUnknown_08393EFC);
- LoadCompressedObjectPic(&gUnknown_08393F8C);
- LoadCompressedObjectPic(&gUnknown_08393FD8);
+ LoadCompressedObjectPic(&gUnknown_08393EFC[0]);
+ LoadCompressedObjectPic(&gUnknown_08393F8C[0]);
+ LoadCompressedObjectPic(&sPokemonLogoShineSpriteSheet[0]);
LoadPalette(gUnknown_08E9F624, 0x100, 0x1C0);
- LoadSpritePalette(&gUnknown_08393F9C[0]);
+ LoadSpritePalette(&sPokemonLogoShinePalette[0]);
gMain.state = 2;
break;
case 2:
{
u8 taskId = CreateTask(Task_TitleScreenPhase1, 0);
- gTasks[taskId].data[TD_COUNTER] = 0x100;
- gTasks[taskId].data[TD_SKIP] = FALSE;
+ gTasks[taskId].tCounter = 256;
+ gTasks[taskId].tSkipToNext = FALSE;
gTasks[taskId].data[2] = -16;
gTasks[taskId].data[3] = -32;
gUnknown_0202F7E4 = taskId;
@@ -294,9 +540,9 @@ void CB2_InitTitleScreen(void)
REG_BLDCNT = 0x84;
REG_BLDALPHA = 0;
REG_BLDY = 0x8;
- REG_BG0CNT = 0x180B;
- REG_BG1CNT = 0x190A;
- REG_BG2CNT = 0x4981;
+ REG_BG0CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(24) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(25) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_BG2CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(9) | BGCNT_256COLOR | BGCNT_AFF256x256;
savedIme = REG_IME;
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
@@ -337,17 +583,17 @@ static void Task_TitleScreenPhase1(u8 taskId)
//Skip to next phase when A, B, Start, or Select is pressed
if ((gMain.newKeys & A_B_START_SELECT) || gTasks[taskId].data[1] != 0)
{
- gTasks[taskId].data[TD_SKIP] = TRUE;
- gTasks[taskId].data[TD_COUNTER] = 0;
+ gTasks[taskId].tSkipToNext = TRUE;
+ gTasks[taskId].tCounter = 0;
}
- if (gTasks[taskId].data[TD_COUNTER] != 0)
+ if (gTasks[taskId].tCounter != 0)
{
- u16 frameNum = gTasks[taskId].data[TD_COUNTER];
+ u16 frameNum = gTasks[taskId].tCounter;
if (frameNum == 160 || frameNum == 64)
StartPokemonLogoShine(TRUE);
- gTasks[taskId].data[TD_COUNTER]--;
+ gTasks[taskId].tCounter--;
}
else
{
@@ -361,17 +607,17 @@ static void Task_TitleScreenPhase1(u8 taskId)
REG_BLDY = 0;
//Create left side of version banner
- spriteId = CreateSprite(&gSpriteTemplate_8393ECC, 0x62, 0x1A, 0);
+ spriteId = CreateSprite(&sVersionBannerLeftSpriteTemplate, 0x62, 0x1A, 0);
gSprites[spriteId].invisible = TRUE;
gSprites[spriteId].data1 = taskId;
//Create right side of version banner
- spriteId = CreateSprite(&gSpriteTemplate_8393EE4, 0xA2, 0x1A, 0);
+ spriteId = CreateSprite(&sVersionBannerRightSpriteTemplate, 0xA2, 0x1A, 0);
gSprites[spriteId].invisible = TRUE;
gSprites[spriteId].data1 = taskId;
gTasks[taskId].data[5] = 88;
- gTasks[taskId].data[TD_COUNTER] = 144;
+ gTasks[taskId].tCounter = 144;
gTasks[taskId].func = Task_TitleScreenPhase2;
}
}
@@ -380,17 +626,17 @@ static void Task_TitleScreenPhase1(u8 taskId)
static void Task_TitleScreenPhase2(u8 taskId)
{
//Skip to next phase when A, B, Start, or Select is pressed
- if ((gMain.newKeys & A_B_START_SELECT) || gTasks[taskId].data[TD_SKIP])
+ if ((gMain.newKeys & A_B_START_SELECT) || gTasks[taskId].tSkipToNext)
{
- gTasks[taskId].data[TD_SKIP] = TRUE;
- gTasks[taskId].data[TD_COUNTER] = 0;
+ gTasks[taskId].tSkipToNext = TRUE;
+ gTasks[taskId].tCounter = 0;
}
- if (gTasks[taskId].data[TD_COUNTER] != 0)
- gTasks[taskId].data[TD_COUNTER]--;
+ if (gTasks[taskId].tCounter != 0)
+ gTasks[taskId].tCounter--;
else
{
- gTasks[taskId].data[TD_SKIP] = TRUE;
+ gTasks[taskId].tSkipToNext = TRUE;
REG_DISPCNT = DISPCNT_MODE_1
| DISPCNT_OBJ_1D_MAP
| DISPCNT_BG0_ON
@@ -403,7 +649,7 @@ static void Task_TitleScreenPhase2(u8 taskId)
gTasks[taskId].func = Task_TitleScreenPhase3;
}
- if (!(gTasks[taskId].data[TD_COUNTER] & 1) && gTasks[taskId].data[3] != 0)
+ if (!(gTasks[taskId].tCounter & 1) && gTasks[taskId].data[3] != 0)
gTasks[taskId].data[3]++;
//Slide Pokemon logo up
@@ -437,14 +683,14 @@ static void Task_TitleScreenPhase3(u8 taskId)
else
{
REG_BG2Y = 0;
- gTasks[taskId].data[TD_COUNTER]++;
- if (gTasks[taskId].data[TD_COUNTER] & 1)
+ gTasks[taskId].tCounter++;
+ if (gTasks[taskId].tCounter & 1)
{
gTasks[taskId].data[4]++;
gUnknown_030041B4 = gTasks[taskId].data[4];
gUnknown_030042C0 = 0;
}
- UpdateLegendaryMarkingColor(gTasks[taskId].data[TD_COUNTER]);
+ UpdateLegendaryMarkingColor(gTasks[taskId].tCounter);
if ((gMPlay_BGM.status & 0xFFFF) == 0)
{
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0xFFFF);
diff --git a/src/trainer_card.c b/src/trainer_card.c
index 3b40fa6e7..5239c6c90 100644
--- a/src/trainer_card.c
+++ b/src/trainer_card.c
@@ -432,46 +432,46 @@ __attribute__((naked))
void sub_8093598()
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- sub sp, 0x4\n\
- movs r2, 0xC0\n\
- lsls r2, 19\n\
- movs r3, 0x80\n\
- lsls r3, 9\n\
- mov r4, sp\n\
- movs r6, 0\n\
- ldr r1, _080935E4 @ =0x040000d4\n\
- movs r5, 0x80\n\
- lsls r5, 5\n\
- ldr r7, _080935E8 @ =0x81000800\n\
- movs r0, 0x81\n\
- lsls r0, 24\n\
- mov r12, r0\n\
+ push {r4-r7,lr}\n\
+ sub sp, 0x4\n\
+ movs r2, 0xC0\n\
+ lsls r2, 19\n\
+ movs r3, 0x80\n\
+ lsls r3, 9\n\
+ mov r4, sp\n\
+ movs r6, 0\n\
+ ldr r1, _080935E4 @ =0x040000d4\n\
+ movs r5, 0x80\n\
+ lsls r5, 5\n\
+ ldr r7, _080935E8 @ =0x81000800\n\
+ movs r0, 0x81\n\
+ lsls r0, 24\n\
+ mov r12, r0\n\
_080935B6:\n\
- strh r6, [r4]\n\
- mov r0, sp\n\
- str r0, [r1]\n\
- str r2, [r1, 0x4]\n\
- str r7, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- adds r2, r5\n\
- subs r3, r5\n\
- cmp r3, r5\n\
- bhi _080935B6\n\
- strh r6, [r4]\n\
- mov r0, sp\n\
- str r0, [r1]\n\
- str r2, [r1, 0x4]\n\
- lsrs r0, r3, 1\n\
- mov r2, r12\n\
- orrs r0, r2\n\
- str r0, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- add sp, 0x4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ strh r6, [r4]\n\
+ mov r0, sp\n\
+ str r0, [r1]\n\
+ str r2, [r1, 0x4]\n\
+ str r7, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ adds r2, r5\n\
+ subs r3, r5\n\
+ cmp r3, r5\n\
+ bhi _080935B6\n\
+ strh r6, [r4]\n\
+ mov r0, sp\n\
+ str r0, [r1]\n\
+ str r2, [r1, 0x4]\n\
+ lsrs r0, r3, 1\n\
+ mov r2, r12\n\
+ orrs r0, r2\n\
+ str r0, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ add sp, 0x4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080935E4: .4byte 0x040000d4\n\
_080935E8: .4byte 0x81000800\n\
.syntax divided\n");
@@ -481,21 +481,21 @@ __attribute__((naked))
void sub_80935EC()
{
asm(".syntax unified\n\
- sub sp, 0x4\n\
- movs r2, 0xE0\n\
- lsls r2, 19\n\
- mov r1, sp\n\
- movs r0, 0\n\
- strh r0, [r1]\n\
- ldr r0, _08093608 @ =0x040000d4\n\
- str r1, [r0]\n\
- str r2, [r0, 0x4]\n\
- ldr r1, _0809360C @ =0x81000200\n\
- str r1, [r0, 0x8]\n\
- ldr r0, [r0, 0x8]\n\
- add sp, 0x4\n\
- bx lr\n\
- .align 2, 0\n\
+ sub sp, 0x4\n\
+ movs r2, 0xE0\n\
+ lsls r2, 19\n\
+ mov r1, sp\n\
+ movs r0, 0\n\
+ strh r0, [r1]\n\
+ ldr r0, _08093608 @ =0x040000d4\n\
+ str r1, [r0]\n\
+ str r2, [r0, 0x4]\n\
+ ldr r1, _0809360C @ =0x81000200\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ add sp, 0x4\n\
+ bx lr\n\
+ .align 2, 0\n\
_08093608: .4byte 0x040000d4\n\
_0809360C: .4byte 0x81000200\n\
.syntax divided\n");
@@ -505,48 +505,48 @@ __attribute__((naked))
void sub_8093610()
{
asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- ldr r5, _08093664 @ =REG_BG0CNT\n\
- movs r1, 0\n\
- strh r1, [r5]\n\
- ldr r2, _08093668 @ =REG_BG1CNT\n\
- strh r1, [r2]\n\
- ldr r3, _0809366C @ =REG_BG2CNT\n\
- strh r1, [r3]\n\
- ldr r4, _08093670 @ =REG_BG3CNT\n\
- strh r1, [r4]\n\
- ldr r0, _08093674 @ =REG_BG0HOFS\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- ldr r1, _08093678 @ =0x00001e08\n\
- adds r0, r1, 0\n\
- strh r0, [r5]\n\
- ldr r1, _0809367C @ =0x00000801\n\
- adds r0, r1, 0\n\
- strh r0, [r2]\n\
- ldr r1, _08093680 @ =0x00000902\n\
- adds r0, r1, 0\n\
- strh r0, [r3]\n\
- ldr r1, _08093684 @ =0x00000a03\n\
- adds r0, r1, 0\n\
- strh r0, [r4]\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ push {r4,r5,lr}\n\
+ ldr r5, _08093664 @ =REG_BG0CNT\n\
+ movs r1, 0\n\
+ strh r1, [r5]\n\
+ ldr r2, _08093668 @ =REG_BG1CNT\n\
+ strh r1, [r2]\n\
+ ldr r3, _0809366C @ =REG_BG2CNT\n\
+ strh r1, [r3]\n\
+ ldr r4, _08093670 @ =REG_BG3CNT\n\
+ strh r1, [r4]\n\
+ ldr r0, _08093674 @ =REG_BG0HOFS\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ ldr r1, _08093678 @ =0x00001e08\n\
+ adds r0, r1, 0\n\
+ strh r0, [r5]\n\
+ ldr r1, _0809367C @ =0x00000801\n\
+ adds r0, r1, 0\n\
+ strh r0, [r2]\n\
+ ldr r1, _08093680 @ =0x00000902\n\
+ adds r0, r1, 0\n\
+ strh r0, [r3]\n\
+ ldr r1, _08093684 @ =0x00000a03\n\
+ adds r0, r1, 0\n\
+ strh r0, [r4]\n\
+ pop {r4,r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08093664: .4byte 0x4000008 @ REG_BG0CNT\n\
_08093668: .4byte 0x400000A @ REG_BG1CNT\n\
_0809366C: .4byte 0x400000C @ REG_BG2CNT\n\
@@ -589,41 +589,41 @@ __attribute__((naked))
static void sub_8093688(void)
{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- bl sub_8093324\n\
- ldr r2, _080936D0 @ =0x02000000\n\
- movs r1, 0\n\
- strb r1, [r2]\n\
- strb r1, [r2, 0x3]\n\
- strb r1, [r2, 0x4]\n\
- adds r0, r2, 0\n\
- adds r0, 0x65\n\
- ldrb r0, [r0]\n\
- strb r0, [r2, 0x2]\n\
- strb r1, [r2, 0x5]\n\
- strb r1, [r2, 0x6]\n\
- movs r4, 0\n\
- adds r6, r2, 0\n\
- adds r6, 0x20\n\
- adds r5, r2, 0\n\
- adds r5, 0x8C\n\
+ push {r4-r6,lr}\n\
+ bl sub_8093324\n\
+ ldr r2, _080936D0 @ =0x02000000\n\
+ movs r1, 0\n\
+ strb r1, [r2]\n\
+ strb r1, [r2, 0x3]\n\
+ strb r1, [r2, 0x4]\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x65\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r2, 0x2]\n\
+ strb r1, [r2, 0x5]\n\
+ strb r1, [r2, 0x6]\n\
+ movs r4, 0\n\
+ adds r6, r2, 0\n\
+ adds r6, 0x20\n\
+ adds r5, r2, 0\n\
+ adds r5, 0x8C\n\
_080936AE:\n\
- lsls r0, r4, 4\n\
- adds r0, r6\n\
- lsls r1, r4, 1\n\
- adds r1, r5, r1\n\
- ldrh r1, [r1]\n\
- bl sub_80EB3FC\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, 0x3\n\
- bls _080936AE\n\
- bl sub_80936D4\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ lsls r0, r4, 4\n\
+ adds r0, r6\n\
+ lsls r1, r4, 1\n\
+ adds r1, r5, r1\n\
+ ldrh r1, [r1]\n\
+ bl sub_80EB3FC\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0x3\n\
+ bls _080936AE\n\
+ bl sub_80936D4\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080936D0: .4byte 0x02000000\n\
.syntax divided\n");
}
@@ -750,29 +750,29 @@ __attribute__((naked))
static void sub_809382C(u8 taskId)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- ldr r7, _08093858 @ =gUnknown_083B5EBC\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r4, r1, 3\n\
- ldr r6, _0809385C @ =0x02000000\n\
- ldr r5, _08093860 @ =gTasks\n\
+ push {r4-r7,lr}\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldr r7, _08093858 @ =gUnknown_083B5EBC\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r4, r1, 3\n\
+ ldr r6, _0809385C @ =0x02000000\n\
+ ldr r5, _08093860 @ =gTasks\n\
_0809383E:\n\
- ldrb r0, [r6]\n\
- lsls r0, 2\n\
- adds r0, r7\n\
- ldr r1, [r0]\n\
- adds r0, r4, r5\n\
- bl _call_via_r1\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0809383E\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ ldrb r0, [r6]\n\
+ lsls r0, 2\n\
+ adds r0, r7\n\
+ ldr r1, [r0]\n\
+ adds r0, r4, r5\n\
+ bl _call_via_r1\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0809383E\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08093858: .4byte gUnknown_083B5EBC\n\
_0809385C: .4byte 0x02000000\n\
_08093860: .4byte gTasks\n\
@@ -783,34 +783,34 @@ __attribute__((naked))
bool8 sub_8093864()
{
asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- sub sp, 0x4\n\
- ldr r4, _080938A0 @ =0x02000000\n\
- ldr r2, _080938A4 @ =gSaveBlock2\n\
- ldrb r1, [r2, 0x11]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- movs r5, 0\n\
- strb r0, [r4, 0x5]\n\
- ldrb r0, [r2, 0x12]\n\
- strb r0, [r4, 0x6]\n\
- bl sub_80939A4\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- str r5, [sp]\n\
- movs r1, 0\n\
- movs r2, 0x10\n\
- movs r3, 0\n\
- bl BeginNormalPaletteFade\n\
- ldrb r0, [r4]\n\
- adds r0, 0x1\n\
- strb r0, [r4]\n\
- movs r0, 0\n\
- add sp, 0x4\n\
- pop {r4,r5}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ push {r4,r5,lr}\n\
+ sub sp, 0x4\n\
+ ldr r4, _080938A0 @ =0x02000000\n\
+ ldr r2, _080938A4 @ =gSaveBlock2\n\
+ ldrb r1, [r2, 0x11]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ movs r5, 0\n\
+ strb r0, [r4, 0x5]\n\
+ ldrb r0, [r2, 0x12]\n\
+ strb r0, [r4, 0x6]\n\
+ bl sub_80939A4\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ str r5, [sp]\n\
+ movs r1, 0\n\
+ movs r2, 0x10\n\
+ movs r3, 0\n\
+ bl BeginNormalPaletteFade\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ movs r0, 0\n\
+ add sp, 0x4\n\
+ pop {r4,r5}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_080938A0: .4byte 0x02000000\n\
_080938A4: .4byte gSaveBlock2\n\
.syntax divided\n");
@@ -820,22 +820,22 @@ __attribute__((naked))
bool8 sub_80938A8()
{
asm(".syntax unified\n\
- push {lr}\n\
- ldr r0, _080938C4 @ =gPaletteFade\n\
- ldrb r1, [r0, 0x7]\n\
- movs r0, 0x80\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080938BE\n\
- ldr r1, _080938C8 @ =0x02000000\n\
- ldrb r0, [r1]\n\
- adds r0, 0x1\n\
- strb r0, [r1]\n\
+ push {lr}\n\
+ ldr r0, _080938C4 @ =gPaletteFade\n\
+ ldrb r1, [r0, 0x7]\n\
+ movs r0, 0x80\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080938BE\n\
+ ldr r1, _080938C8 @ =0x02000000\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
_080938BE:\n\
- movs r0, 0\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ movs r0, 0\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_080938C4: .4byte gPaletteFade\n\
_080938C8: .4byte 0x02000000\n\
.syntax divided\n");
@@ -845,48 +845,48 @@ __attribute__((naked))
bool8 sub_80938CC()
{
asm(".syntax unified\n\
- push {lr}\n\
- ldr r0, _080938E4 @ =gMain\n\
- ldrh r1, [r0, 0x2E]\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080938EC\n\
- ldr r1, _080938E8 @ =0x02000000\n\
- movs r0, 0x5\n\
- strb r0, [r1]\n\
- movs r0, 0x1\n\
- b _08093914\n\
- .align 2, 0\n\
+ push {lr}\n\
+ ldr r0, _080938E4 @ =gMain\n\
+ ldrh r1, [r0, 0x2E]\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080938EC\n\
+ ldr r1, _080938E8 @ =0x02000000\n\
+ movs r0, 0x5\n\
+ strb r0, [r1]\n\
+ movs r0, 0x1\n\
+ b _08093914\n\
+ .align 2, 0\n\
_080938E4: .4byte gMain\n\
_080938E8: .4byte 0x02000000\n\
_080938EC:\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08093912\n\
- ldr r2, _08093900 @ =0x02000000\n\
- ldrb r1, [r2, 0x3]\n\
- cmp r1, 0\n\
- beq _08093904\n\
- movs r0, 0x5\n\
- b _0809390C\n\
- .align 2, 0\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08093912\n\
+ ldr r2, _08093900 @ =0x02000000\n\
+ ldrb r1, [r2, 0x3]\n\
+ cmp r1, 0\n\
+ beq _08093904\n\
+ movs r0, 0x5\n\
+ b _0809390C\n\
+ .align 2, 0\n\
_08093900: .4byte 0x02000000\n\
_08093904:\n\
- movs r0, 0x1\n\
- eors r0, r1\n\
- strb r0, [r2, 0x3]\n\
- movs r0, 0x3\n\
+ movs r0, 0x1\n\
+ eors r0, r1\n\
+ strb r0, [r2, 0x3]\n\
+ movs r0, 0x3\n\
_0809390C:\n\
- strb r0, [r2]\n\
- movs r0, 0x1\n\
- b _08093914\n\
+ strb r0, [r2]\n\
+ movs r0, 0x1\n\
+ b _08093914\n\
_08093912:\n\
- movs r0, 0\n\
+ movs r0, 0\n\
_08093914:\n\
- pop {r1}\n\
- bx r1\n\
+ pop {r1}\n\
+ bx r1\n\
.syntax divided\n");
}
@@ -914,25 +914,25 @@ __attribute__((naked))
bool8 sub_8093954()
{
asm(".syntax unified\n\
- push {lr}\n\
- sub sp, 0x4\n\
- bl sub_80939C0\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- movs r1, 0\n\
- str r1, [sp]\n\
- movs r2, 0\n\
- movs r3, 0x10\n\
- bl BeginNormalPaletteFade\n\
- ldr r1, _0809397C @ =0x02000000\n\
- ldrb r0, [r1]\n\
- adds r0, 0x1\n\
- strb r0, [r1]\n\
- movs r0, 0\n\
- add sp, 0x4\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ push {lr}\n\
+ sub sp, 0x4\n\
+ bl sub_80939C0\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ movs r1, 0\n\
+ str r1, [sp]\n\
+ movs r2, 0\n\
+ movs r3, 0x10\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r1, _0809397C @ =0x02000000\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ movs r0, 0\n\
+ add sp, 0x4\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_0809397C: .4byte 0x02000000\n\
.syntax divided\n");
}
@@ -993,22 +993,22 @@ __attribute__((naked))
static u8 sub_8093A48()
{
asm(".syntax unified\n\
- push {lr}\n\
- ldr r0, _08093A5C @ =sub_8093A68\n\
- bl FindTaskIdByFunc\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0xFF\n\
- beq _08093A60\n\
- movs r0, 0\n\
- b _08093A62\n\
- .align 2, 0\n\
+ push {lr}\n\
+ ldr r0, _08093A5C @ =sub_8093A68\n\
+ bl FindTaskIdByFunc\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0xFF\n\
+ beq _08093A60\n\
+ movs r0, 0\n\
+ b _08093A62\n\
+ .align 2, 0\n\
_08093A5C: .4byte sub_8093A68\n\
_08093A60:\n\
- movs r0, 0x1\n\
+ movs r0, 0x1\n\
_08093A62:\n\
- pop {r1}\n\
- bx r1\n\
+ pop {r1}\n\
+ bx r1\n\
.syntax divided\n");
}
@@ -1016,30 +1016,30 @@ __attribute__((naked))
static void sub_8093A68(u8 taskId)
{
asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- ldr r5, _08093A98 @ =gUnknown_083B5ED8\n\
- ldr r2, _08093A9C @ =gTasks\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r1, 3\n\
- adds r4, r1, r2\n\
+ push {r4,r5,lr}\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldr r5, _08093A98 @ =gUnknown_083B5ED8\n\
+ ldr r2, _08093A9C @ =gTasks\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 3\n\
+ adds r4, r1, r2\n\
_08093A7A:\n\
- movs r1, 0x8\n\
- ldrsh r0, [r4, r1]\n\
- lsls r0, 2\n\
- adds r0, r5\n\
- ldr r1, [r0]\n\
- adds r0, r4, 0\n\
- bl _call_via_r1\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _08093A7A\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ movs r1, 0x8\n\
+ ldrsh r0, [r4, r1]\n\
+ lsls r0, 2\n\
+ adds r0, r5\n\
+ ldr r1, [r0]\n\
+ adds r0, r4, 0\n\
+ bl _call_via_r1\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08093A7A\n\
+ pop {r4,r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08093A98: .4byte gUnknown_083B5ED8\n\
_08093A9C: .4byte gTasks\n\
.syntax divided\n");
@@ -1049,37 +1049,37 @@ __attribute__((naked))
bool8 sub_8093AA0()
{
asm(".syntax unified\n\
- push {r4,lr}\n\
- adds r4, r0, 0\n\
- ldr r0, _08093AE0 @ =0x02000000\n\
- movs r1, 0\n\
- strb r1, [r0, 0x4]\n\
- bl dp12_8087EA4\n\
- movs r1, 0\n\
- ldr r0, _08093AE4 @ =gUnknown_03004DE0\n\
- ldr r2, _08093AE8 @ =0x0000fffc\n\
- movs r3, 0xF0\n\
- lsls r3, 3\n\
- adds r0, r3\n\
+ push {r4,lr}\n\
+ adds r4, r0, 0\n\
+ ldr r0, _08093AE0 @ =0x02000000\n\
+ movs r1, 0\n\
+ strb r1, [r0, 0x4]\n\
+ bl dp12_8087EA4\n\
+ movs r1, 0\n\
+ ldr r0, _08093AE4 @ =gUnknown_03004DE0\n\
+ ldr r2, _08093AE8 @ =0x0000fffc\n\
+ movs r3, 0xF0\n\
+ lsls r3, 3\n\
+ adds r0, r3\n\
_08093ABA:\n\
- strh r2, [r0]\n\
- adds r0, 0x2\n\
- adds r1, 0x1\n\
- cmp r1, 0x9F\n\
- bls _08093ABA\n\
- ldr r0, _08093AEC @ =sub_8093D7C\n\
- bl SetHBlankCallback\n\
- ldr r1, _08093AE0 @ =0x02000000\n\
- movs r0, 0x1\n\
- strb r0, [r1, 0x4]\n\
- ldrh r0, [r4, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x8]\n\
- movs r0, 0\n\
- pop {r4}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ strh r2, [r0]\n\
+ adds r0, 0x2\n\
+ adds r1, 0x1\n\
+ cmp r1, 0x9F\n\
+ bls _08093ABA\n\
+ ldr r0, _08093AEC @ =sub_8093D7C\n\
+ bl SetHBlankCallback\n\
+ ldr r1, _08093AE0 @ =0x02000000\n\
+ movs r0, 0x1\n\
+ strb r0, [r1, 0x4]\n\
+ ldrh r0, [r4, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x8]\n\
+ movs r0, 0\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_08093AE0: .4byte 0x02000000\n\
_08093AE4: .4byte gUnknown_03004DE0\n\
_08093AE8: .4byte 0x0000fffc\n\
@@ -1091,147 +1091,147 @@ __attribute__((naked))
bool8 sub_8093AF0()
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x4\n\
- mov r8, r0\n\
- ldr r1, _08093BFC @ =0x02000000\n\
- movs r0, 0\n\
- strb r0, [r1, 0x4]\n\
- mov r2, r8\n\
- ldrh r0, [r2, 0xA]\n\
- adds r0, 0x3\n\
- strh r0, [r2, 0xA]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x4F\n\
- ble _08093B18\n\
- movs r0, 0x4F\n\
- strh r0, [r2, 0xA]\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ mov r8, r0\n\
+ ldr r1, _08093BFC @ =0x02000000\n\
+ movs r0, 0\n\
+ strb r0, [r1, 0x4]\n\
+ mov r2, r8\n\
+ ldrh r0, [r2, 0xA]\n\
+ adds r0, 0x3\n\
+ strh r0, [r2, 0xA]\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x4F\n\
+ ble _08093B18\n\
+ movs r0, 0x4F\n\
+ strh r0, [r2, 0xA]\n\
_08093B18:\n\
- mov r4, r8\n\
- movs r0, 0xA\n\
- ldrsh r7, [r4, r0]\n\
- movs r0, 0xA0\n\
- subs r0, r7\n\
- mov r9, r0\n\
- subs r4, r0, r7\n\
- negs r0, r7\n\
- lsls r6, r0, 16\n\
- movs r0, 0xA0\n\
- lsls r0, 16\n\
- adds r1, r4, 0\n\
- bl __udivsi3\n\
- adds r5, r0, 0\n\
- ldr r1, _08093C00 @ =0xffff0000\n\
- adds r5, r1\n\
- adds r0, r5, 0\n\
- muls r0, r4\n\
- adds r0, r6\n\
- mov r10, r0\n\
- adds r0, r5, 0\n\
- adds r1, r4, 0\n\
- bl __udivsi3\n\
- str r0, [sp]\n\
- lsls r5, 1\n\
- movs r3, 0\n\
- cmp r3, r7\n\
- bcs _08093B74\n\
- ldr r2, _08093C04 @ =gUnknown_03004DE0\n\
- mov r12, r2\n\
- ldr r0, _08093C08 @ =0x0000fffc\n\
- adds r4, r0, 0\n\
+ mov r4, r8\n\
+ movs r0, 0xA\n\
+ ldrsh r7, [r4, r0]\n\
+ movs r0, 0xA0\n\
+ subs r0, r7\n\
+ mov r9, r0\n\
+ subs r4, r0, r7\n\
+ negs r0, r7\n\
+ lsls r6, r0, 16\n\
+ movs r0, 0xA0\n\
+ lsls r0, 16\n\
+ adds r1, r4, 0\n\
+ bl __udivsi3\n\
+ adds r5, r0, 0\n\
+ ldr r1, _08093C00 @ =0xffff0000\n\
+ adds r5, r1\n\
+ adds r0, r5, 0\n\
+ muls r0, r4\n\
+ adds r0, r6\n\
+ mov r10, r0\n\
+ adds r0, r5, 0\n\
+ adds r1, r4, 0\n\
+ bl __udivsi3\n\
+ str r0, [sp]\n\
+ lsls r5, 1\n\
+ movs r3, 0\n\
+ cmp r3, r7\n\
+ bcs _08093B74\n\
+ ldr r2, _08093C04 @ =gUnknown_03004DE0\n\
+ mov r12, r2\n\
+ ldr r0, _08093C08 @ =0x0000fffc\n\
+ adds r4, r0, 0\n\
_08093B5C:\n\
- lsls r0, r3, 16\n\
- asrs r0, 16\n\
- lsls r1, r0, 1\n\
- add r1, r12\n\
- subs r2, r4, r0\n\
- strh r2, [r1]\n\
- adds r0, 0x1\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- asrs r0, 16\n\
- cmp r0, r7\n\
- bcc _08093B5C\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 16\n\
+ lsls r1, r0, 1\n\
+ add r1, r12\n\
+ subs r2, r4, r0\n\
+ strh r2, [r1]\n\
+ adds r0, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, r7\n\
+ bcc _08093B5C\n\
_08093B74:\n\
- lsls r2, r3, 16\n\
- mov r1, r9\n\
- lsls r0, r1, 16\n\
- asrs r1, r0, 16\n\
- mov r4, r10\n\
- lsrs r7, r4, 16\n\
- cmp r2, r0\n\
- bge _08093BAE\n\
- ldr r0, _08093C04 @ =gUnknown_03004DE0\n\
- mov r9, r0\n\
- ldr r4, _08093C08 @ =0x0000fffc\n\
- mov r12, r4\n\
- adds r4, r1, 0\n\
+ lsls r2, r3, 16\n\
+ mov r1, r9\n\
+ lsls r0, r1, 16\n\
+ asrs r1, r0, 16\n\
+ mov r4, r10\n\
+ lsrs r7, r4, 16\n\
+ cmp r2, r0\n\
+ bge _08093BAE\n\
+ ldr r0, _08093C04 @ =gUnknown_03004DE0\n\
+ mov r9, r0\n\
+ ldr r4, _08093C08 @ =0x0000fffc\n\
+ mov r12, r4\n\
+ adds r4, r1, 0\n\
_08093B8E:\n\
- lsrs r1, r6, 16\n\
- adds r6, r5\n\
- ldr r0, [sp]\n\
- subs r5, r0\n\
- asrs r2, 16\n\
- lsls r0, r2, 1\n\
- add r0, r9\n\
- add r1, r12\n\
- strh r1, [r0]\n\
- adds r2, 0x1\n\
- lsls r2, 16\n\
- lsrs r3, r2, 16\n\
- lsls r2, r3, 16\n\
- asrs r0, r2, 16\n\
- cmp r0, r4\n\
- blt _08093B8E\n\
+ lsrs r1, r6, 16\n\
+ adds r6, r5\n\
+ ldr r0, [sp]\n\
+ subs r5, r0\n\
+ asrs r2, 16\n\
+ lsls r0, r2, 1\n\
+ add r0, r9\n\
+ add r1, r12\n\
+ strh r1, [r0]\n\
+ adds r2, 0x1\n\
+ lsls r2, 16\n\
+ lsrs r3, r2, 16\n\
+ lsls r2, r3, 16\n\
+ asrs r0, r2, 16\n\
+ cmp r0, r4\n\
+ blt _08093B8E\n\
_08093BAE:\n\
- adds r1, r7, 0\n\
- lsls r0, r3, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x9F\n\
- bgt _08093BD4\n\
- ldr r4, _08093C04 @ =gUnknown_03004DE0\n\
- ldr r0, _08093C08 @ =0x0000fffc\n\
- adds r2, r1, r0\n\
+ adds r1, r7, 0\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x9F\n\
+ bgt _08093BD4\n\
+ ldr r4, _08093C04 @ =gUnknown_03004DE0\n\
+ ldr r0, _08093C08 @ =0x0000fffc\n\
+ adds r2, r1, r0\n\
_08093BBE:\n\
- lsls r1, r3, 16\n\
- asrs r1, 16\n\
- lsls r0, r1, 1\n\
- adds r0, r4\n\
- strh r2, [r0]\n\
- adds r1, 0x1\n\
- lsls r1, 16\n\
- lsrs r3, r1, 16\n\
- asrs r1, 16\n\
- cmp r1, 0x9F\n\
- ble _08093BBE\n\
+ lsls r1, r3, 16\n\
+ asrs r1, 16\n\
+ lsls r0, r1, 1\n\
+ adds r0, r4\n\
+ strh r2, [r0]\n\
+ adds r1, 0x1\n\
+ lsls r1, 16\n\
+ lsrs r3, r1, 16\n\
+ asrs r1, 16\n\
+ cmp r1, 0x9F\n\
+ ble _08093BBE\n\
_08093BD4:\n\
- movs r0, 0x1\n\
- ldr r1, _08093BFC @ =0x02000000\n\
- strb r0, [r1, 0x4]\n\
- mov r2, r8\n\
- movs r4, 0xA\n\
- ldrsh r0, [r2, r4]\n\
- cmp r0, 0x4A\n\
- ble _08093BEA\n\
- ldrh r0, [r2, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r2, 0x8]\n\
+ movs r0, 0x1\n\
+ ldr r1, _08093BFC @ =0x02000000\n\
+ strb r0, [r1, 0x4]\n\
+ mov r2, r8\n\
+ movs r4, 0xA\n\
+ ldrsh r0, [r2, r4]\n\
+ cmp r0, 0x4A\n\
+ ble _08093BEA\n\
+ ldrh r0, [r2, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r2, 0x8]\n\
_08093BEA:\n\
- movs r0, 0\n\
- add sp, 0x4\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ movs r0, 0\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_08093BFC: .4byte 0x02000000\n\
_08093C00: .4byte 0xffff0000\n\
_08093C04: .4byte gUnknown_03004DE0\n\
@@ -1258,145 +1258,145 @@ __attribute__((naked))
bool8 sub_8093C38()
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x4\n\
- mov r8, r0\n\
- ldr r1, _08093D40 @ =0x02000000\n\
- movs r2, 0\n\
- strb r2, [r1, 0x4]\n\
- ldrh r0, [r0, 0xA]\n\
- subs r0, 0x3\n\
- mov r3, r8\n\
- strh r0, [r3, 0xA]\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- bgt _08093C5C\n\
- strh r2, [r3, 0xA]\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ mov r8, r0\n\
+ ldr r1, _08093D40 @ =0x02000000\n\
+ movs r2, 0\n\
+ strb r2, [r1, 0x4]\n\
+ ldrh r0, [r0, 0xA]\n\
+ subs r0, 0x3\n\
+ mov r3, r8\n\
+ strh r0, [r3, 0xA]\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ bgt _08093C5C\n\
+ strh r2, [r3, 0xA]\n\
_08093C5C:\n\
- mov r4, r8\n\
- movs r0, 0xA\n\
- ldrsh r7, [r4, r0]\n\
- movs r0, 0xA0\n\
- subs r0, r7\n\
- mov r9, r0\n\
- subs r4, r0, r7\n\
- negs r0, r7\n\
- lsls r6, r0, 16\n\
- movs r0, 0xA0\n\
- lsls r0, 16\n\
- adds r1, r4, 0\n\
- bl __udivsi3\n\
- adds r5, r0, 0\n\
- ldr r1, _08093D44 @ =0xffff0000\n\
- adds r5, r1\n\
- adds r0, r5, 0\n\
- muls r0, r4\n\
- adds r0, r6\n\
- mov r10, r0\n\
- adds r0, r5, 0\n\
- adds r1, r4, 0\n\
- bl __udivsi3\n\
- str r0, [sp]\n\
- lsrs r5, 1\n\
- movs r3, 0\n\
- cmp r3, r7\n\
- bcs _08093CB8\n\
- ldr r2, _08093D48 @ =gUnknown_03004DE0\n\
- mov r12, r2\n\
- ldr r0, _08093D4C @ =0x0000fffc\n\
- adds r4, r0, 0\n\
+ mov r4, r8\n\
+ movs r0, 0xA\n\
+ ldrsh r7, [r4, r0]\n\
+ movs r0, 0xA0\n\
+ subs r0, r7\n\
+ mov r9, r0\n\
+ subs r4, r0, r7\n\
+ negs r0, r7\n\
+ lsls r6, r0, 16\n\
+ movs r0, 0xA0\n\
+ lsls r0, 16\n\
+ adds r1, r4, 0\n\
+ bl __udivsi3\n\
+ adds r5, r0, 0\n\
+ ldr r1, _08093D44 @ =0xffff0000\n\
+ adds r5, r1\n\
+ adds r0, r5, 0\n\
+ muls r0, r4\n\
+ adds r0, r6\n\
+ mov r10, r0\n\
+ adds r0, r5, 0\n\
+ adds r1, r4, 0\n\
+ bl __udivsi3\n\
+ str r0, [sp]\n\
+ lsrs r5, 1\n\
+ movs r3, 0\n\
+ cmp r3, r7\n\
+ bcs _08093CB8\n\
+ ldr r2, _08093D48 @ =gUnknown_03004DE0\n\
+ mov r12, r2\n\
+ ldr r0, _08093D4C @ =0x0000fffc\n\
+ adds r4, r0, 0\n\
_08093CA0:\n\
- lsls r0, r3, 16\n\
- asrs r0, 16\n\
- lsls r1, r0, 1\n\
- add r1, r12\n\
- subs r2, r4, r0\n\
- strh r2, [r1]\n\
- adds r0, 0x1\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- asrs r0, 16\n\
- cmp r0, r7\n\
- bcc _08093CA0\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 16\n\
+ lsls r1, r0, 1\n\
+ add r1, r12\n\
+ subs r2, r4, r0\n\
+ strh r2, [r1]\n\
+ adds r0, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, r7\n\
+ bcc _08093CA0\n\
_08093CB8:\n\
- lsls r2, r3, 16\n\
- mov r1, r9\n\
- lsls r0, r1, 16\n\
- asrs r1, r0, 16\n\
- mov r4, r10\n\
- lsrs r7, r4, 16\n\
- cmp r2, r0\n\
- bge _08093CF2\n\
- ldr r0, _08093D48 @ =gUnknown_03004DE0\n\
- mov r9, r0\n\
- ldr r3, _08093D4C @ =0x0000fffc\n\
- mov r12, r3\n\
- adds r4, r1, 0\n\
+ lsls r2, r3, 16\n\
+ mov r1, r9\n\
+ lsls r0, r1, 16\n\
+ asrs r1, r0, 16\n\
+ mov r4, r10\n\
+ lsrs r7, r4, 16\n\
+ cmp r2, r0\n\
+ bge _08093CF2\n\
+ ldr r0, _08093D48 @ =gUnknown_03004DE0\n\
+ mov r9, r0\n\
+ ldr r3, _08093D4C @ =0x0000fffc\n\
+ mov r12, r3\n\
+ adds r4, r1, 0\n\
_08093CD2:\n\
- lsrs r1, r6, 16\n\
- adds r6, r5\n\
- ldr r0, [sp]\n\
- adds r5, r0\n\
- asrs r2, 16\n\
- lsls r0, r2, 1\n\
- add r0, r9\n\
- add r1, r12\n\
- strh r1, [r0]\n\
- adds r2, 0x1\n\
- lsls r2, 16\n\
- lsrs r3, r2, 16\n\
- lsls r2, r3, 16\n\
- asrs r0, r2, 16\n\
- cmp r0, r4\n\
- blt _08093CD2\n\
+ lsrs r1, r6, 16\n\
+ adds r6, r5\n\
+ ldr r0, [sp]\n\
+ adds r5, r0\n\
+ asrs r2, 16\n\
+ lsls r0, r2, 1\n\
+ add r0, r9\n\
+ add r1, r12\n\
+ strh r1, [r0]\n\
+ adds r2, 0x1\n\
+ lsls r2, 16\n\
+ lsrs r3, r2, 16\n\
+ lsls r2, r3, 16\n\
+ asrs r0, r2, 16\n\
+ cmp r0, r4\n\
+ blt _08093CD2\n\
_08093CF2:\n\
- adds r1, r7, 0\n\
- lsls r0, r3, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x9F\n\
- bgt _08093D18\n\
- ldr r4, _08093D48 @ =gUnknown_03004DE0\n\
- ldr r0, _08093D4C @ =0x0000fffc\n\
- adds r2, r1, r0\n\
+ adds r1, r7, 0\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x9F\n\
+ bgt _08093D18\n\
+ ldr r4, _08093D48 @ =gUnknown_03004DE0\n\
+ ldr r0, _08093D4C @ =0x0000fffc\n\
+ adds r2, r1, r0\n\
_08093D02:\n\
- lsls r1, r3, 16\n\
- asrs r1, 16\n\
- lsls r0, r1, 1\n\
- adds r0, r4\n\
- strh r2, [r0]\n\
- adds r1, 0x1\n\
- lsls r1, 16\n\
- lsrs r3, r1, 16\n\
- asrs r1, 16\n\
- cmp r1, 0x9F\n\
- ble _08093D02\n\
+ lsls r1, r3, 16\n\
+ asrs r1, 16\n\
+ lsls r0, r1, 1\n\
+ adds r0, r4\n\
+ strh r2, [r0]\n\
+ adds r1, 0x1\n\
+ lsls r1, 16\n\
+ lsrs r3, r1, 16\n\
+ asrs r1, 16\n\
+ cmp r1, 0x9F\n\
+ ble _08093D02\n\
_08093D18:\n\
- movs r0, 0x1\n\
- ldr r1, _08093D40 @ =0x02000000\n\
- strb r0, [r1, 0x4]\n\
- mov r2, r8\n\
- movs r3, 0xA\n\
- ldrsh r0, [r2, r3]\n\
- cmp r0, 0\n\
- bgt _08093D2E\n\
- ldrh r0, [r2, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r2, 0x8]\n\
+ movs r0, 0x1\n\
+ ldr r1, _08093D40 @ =0x02000000\n\
+ strb r0, [r1, 0x4]\n\
+ mov r2, r8\n\
+ movs r3, 0xA\n\
+ ldrsh r0, [r2, r3]\n\
+ cmp r0, 0\n\
+ bgt _08093D2E\n\
+ ldrh r0, [r2, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r2, 0x8]\n\
_08093D2E:\n\
- movs r0, 0\n\
- add sp, 0x4\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ movs r0, 0\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_08093D40: .4byte 0x02000000\n\
_08093D44: .4byte 0xffff0000\n\
_08093D48: .4byte gUnknown_03004DE0\n\
@@ -1422,25 +1422,25 @@ __attribute__((naked))
void sub_8093D7C(void)
{
asm(".syntax unified\n\
- ldr r1, _08093DA0 @ =gUnknown_03004DE0\n\
- ldr r0, _08093DA4 @ =REG_VCOUNT\n\
- ldrh r2, [r0]\n\
- movs r0, 0xFF\n\
- ands r0, r2\n\
- lsls r0, 1\n\
- movs r2, 0xF0\n\
- lsls r2, 3\n\
- adds r1, r2\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- ldr r0, _08093DA8 @ =REG_BG0VOFS\n\
- strh r1, [r0]\n\
- adds r0, 0x4\n\
- strh r1, [r0]\n\
- adds r0, 0x4\n\
- strh r1, [r0]\n\
- bx lr\n\
- .align 2, 0\n\
+ ldr r1, _08093DA0 @ =gUnknown_03004DE0\n\
+ ldr r0, _08093DA4 @ =REG_VCOUNT\n\
+ ldrh r2, [r0]\n\
+ movs r0, 0xFF\n\
+ ands r0, r2\n\
+ lsls r0, 1\n\
+ movs r2, 0xF0\n\
+ lsls r2, 3\n\
+ adds r1, r2\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _08093DA8 @ =REG_BG0VOFS\n\
+ strh r1, [r0]\n\
+ adds r0, 0x4\n\
+ strh r1, [r0]\n\
+ adds r0, 0x4\n\
+ strh r1, [r0]\n\
+ bx lr\n\
+ .align 2, 0\n\
_08093DA0: .4byte gUnknown_03004DE0\n\
_08093DA4: .4byte 0x4000006 @ REG_VCOUNT\n\
_08093DA8: .4byte 0x4000012 @ REG_BG0VOFS\n\
@@ -1482,21 +1482,21 @@ __attribute__((naked))
static void sub_8093E04()
{
asm(".syntax unified\n\
- ldr r0, _08093E20 @ =REG_BG0VOFS\n\
- ldr r2, _08093E24 @ =0x0000fffc\n\
- adds r1, r2, 0\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- movs r2, 0\n\
- strh r2, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r2, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- bx lr\n\
- .align 2, 0\n\
+ ldr r0, _08093E20 @ =REG_BG0VOFS\n\
+ ldr r2, _08093E24 @ =0x0000fffc\n\
+ adds r1, r2, 0\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ movs r2, 0\n\
+ strh r2, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r2, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ bx lr\n\
+ .align 2, 0\n\
_08093E20: .4byte 0x4000012 @ REG_BG0VOFS\n\
_08093E24: .4byte 0x0000fffc\n\
.syntax divided\n");
@@ -1506,51 +1506,51 @@ __attribute__((naked))
static void sub_8093E28(void)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- bl sub_8093EA0\n\
- ldr r0, _08093E84 @ =gUnknown_083B5F6C\n\
- movs r1, 0xE0\n\
- movs r2, 0x20\n\
- bl LoadPalette\n\
- ldr r3, _08093E88 @ =gMenuTrainerCard_Gfx\n\
- movs r4, 0xC0\n\
- lsls r4, 19\n\
- movs r5, 0xA4\n\
- lsls r5, 5\n\
- ldr r1, _08093E8C @ =0x040000d4\n\
- ldr r6, _08093E90 @ =0x80000800\n\
- movs r2, 0x80\n\
- lsls r2, 5\n\
- movs r7, 0x80\n\
- lsls r7, 24\n\
+ push {r4-r7,lr}\n\
+ bl sub_8093EA0\n\
+ ldr r0, _08093E84 @ =gUnknown_083B5F6C\n\
+ movs r1, 0xE0\n\
+ movs r2, 0x20\n\
+ bl LoadPalette\n\
+ ldr r3, _08093E88 @ =gMenuTrainerCard_Gfx\n\
+ movs r4, 0xC0\n\
+ lsls r4, 19\n\
+ movs r5, 0xA4\n\
+ lsls r5, 5\n\
+ ldr r1, _08093E8C @ =0x040000d4\n\
+ ldr r6, _08093E90 @ =0x80000800\n\
+ movs r2, 0x80\n\
+ lsls r2, 5\n\
+ movs r7, 0x80\n\
+ lsls r7, 24\n\
_08093E4E:\n\
- str r3, [r1]\n\
- str r4, [r1, 0x4]\n\
- str r6, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- adds r3, r2\n\
- adds r4, r2\n\
- subs r5, r2\n\
- cmp r5, r2\n\
- bhi _08093E4E\n\
- str r3, [r1]\n\
- str r4, [r1, 0x4]\n\
- lsrs r0, r5, 1\n\
- orrs r0, r7\n\
- str r0, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- ldr r1, _08093E94 @ =gBadgesTiles\n\
- ldr r2, _08093E98 @ =0x06001480\n\
- ldr r0, _08093E8C @ =0x040000d4\n\
- str r1, [r0]\n\
- str r2, [r0, 0x4]\n\
- ldr r1, _08093E9C @ =0x80000200\n\
- str r1, [r0, 0x8]\n\
- ldr r0, [r0, 0x8]\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ str r3, [r1]\n\
+ str r4, [r1, 0x4]\n\
+ str r6, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ adds r3, r2\n\
+ adds r4, r2\n\
+ subs r5, r2\n\
+ cmp r5, r2\n\
+ bhi _08093E4E\n\
+ str r3, [r1]\n\
+ str r4, [r1, 0x4]\n\
+ lsrs r0, r5, 1\n\
+ orrs r0, r7\n\
+ str r0, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ ldr r1, _08093E94 @ =gBadgesTiles\n\
+ ldr r2, _08093E98 @ =0x06001480\n\
+ ldr r0, _08093E8C @ =0x040000d4\n\
+ str r1, [r0]\n\
+ str r2, [r0, 0x4]\n\
+ ldr r1, _08093E9C @ =0x80000200\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08093E84: .4byte gUnknown_083B5F6C\n\
_08093E88: .4byte gMenuTrainerCard_Gfx\n\
_08093E8C: .4byte 0x040000d4\n\
@@ -1582,26 +1582,26 @@ __attribute__((naked))
static void sub_8093F14(void)
{
asm(".syntax unified\n\
- push {lr}\n\
- sub sp, 0x8\n\
- ldr r0, _08093F3C @ =gUnknown_083B5EEC\n\
- ldr r1, [r0, 0x4]\n\
- ldr r0, [r0]\n\
- str r0, [sp]\n\
- str r1, [sp, 0x4]\n\
- ldr r0, _08093F40 @ =0x02000000\n\
- ldrb r0, [r0, 0x1]\n\
- lsls r0, 2\n\
- add r0, sp\n\
- ldr r0, [r0]\n\
- ldr r1, _08093F44 @ =0x06004800\n\
- movs r2, 0xA0\n\
- lsls r2, 1\n\
- bl CpuFastSet\n\
- add sp, 0x8\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ push {lr}\n\
+ sub sp, 0x8\n\
+ ldr r0, _08093F3C @ =gUnknown_083B5EEC\n\
+ ldr r1, [r0, 0x4]\n\
+ ldr r0, [r0]\n\
+ str r0, [sp]\n\
+ str r1, [sp, 0x4]\n\
+ ldr r0, _08093F40 @ =0x02000000\n\
+ ldrb r0, [r0, 0x1]\n\
+ lsls r0, 2\n\
+ add r0, sp\n\
+ ldr r0, [r0]\n\
+ ldr r1, _08093F44 @ =0x06004800\n\
+ movs r2, 0xA0\n\
+ lsls r2, 1\n\
+ bl CpuFastSet\n\
+ add sp, 0x8\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08093F3C: .4byte gUnknown_083B5EEC\n\
_08093F40: .4byte 0x02000000\n\
_08093F44: .4byte 0x06004800\n\
@@ -1622,46 +1622,46 @@ __attribute__((naked))
static void sub_8093F80(void)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- movs r5, 0xC4\n\
- ldr r7, _08093FCC @ =0x06004000\n\
- movs r1, 0x5\n\
- movs r0, 0xA0\n\
- lsls r0, 7\n\
- adds r6, r0, 0\n\
+ push {r4-r7,lr}\n\
+ movs r5, 0xC4\n\
+ ldr r7, _08093FCC @ =0x06004000\n\
+ movs r1, 0x5\n\
+ movs r0, 0xA0\n\
+ lsls r0, 7\n\
+ adds r6, r0, 0\n\
_08093F8E:\n\
- movs r0, 0x13\n\
- lsls r3, r1, 16\n\
- asrs r4, r3, 11\n\
+ movs r0, 0x13\n\
+ lsls r3, r1, 16\n\
+ asrs r4, r3, 11\n\
_08093F94:\n\
- lsls r2, r0, 16\n\
- asrs r2, 16\n\
- adds r1, r4, r2\n\
- lsls r1, 1\n\
- adds r1, r7\n\
- adds r0, r5, 0\n\
- orrs r0, r6\n\
- strh r0, [r1]\n\
- adds r2, 0x1\n\
- lsls r2, 16\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- lsrs r0, r2, 16\n\
- asrs r2, 16\n\
- cmp r2, 0x1A\n\
- ble _08093F94\n\
- movs r1, 0x80\n\
- lsls r1, 9\n\
- adds r0, r3, r1\n\
- lsrs r1, r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0xC\n\
- ble _08093F8E\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ lsls r2, r0, 16\n\
+ asrs r2, 16\n\
+ adds r1, r4, r2\n\
+ lsls r1, 1\n\
+ adds r1, r7\n\
+ adds r0, r5, 0\n\
+ orrs r0, r6\n\
+ strh r0, [r1]\n\
+ adds r2, 0x1\n\
+ lsls r2, 16\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ lsrs r0, r2, 16\n\
+ asrs r2, 16\n\
+ cmp r2, 0x1A\n\
+ ble _08093F94\n\
+ movs r1, 0x80\n\
+ lsls r1, 9\n\
+ adds r0, r3, r1\n\
+ lsrs r1, r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0xC\n\
+ ble _08093F8E\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08093FCC: .4byte 0x06004000\n\
.syntax divided\n");
}
@@ -1670,56 +1670,56 @@ __attribute__((naked))
static void sub_8093FD0(void)
{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- ldr r4, _0809402C @ =0x06004000\n\
- movs r2, 0xF\n\
- ldr r0, _08094030 @ =0x02000000\n\
- ldrb r0, [r0, 0x2]\n\
- adds r0, 0xF\n\
- cmp r2, r0\n\
- bge _08094002\n\
- movs r6, 0xC0\n\
- lsls r6, 1\n\
- ldr r1, _08094034 @ =0x0000408f\n\
- adds r5, r1, 0\n\
- adds r3, r0, 0\n\
+ push {r4-r6,lr}\n\
+ ldr r4, _0809402C @ =0x06004000\n\
+ movs r2, 0xF\n\
+ ldr r0, _08094030 @ =0x02000000\n\
+ ldrb r0, [r0, 0x2]\n\
+ adds r0, 0xF\n\
+ cmp r2, r0\n\
+ bge _08094002\n\
+ movs r6, 0xC0\n\
+ lsls r6, 1\n\
+ ldr r1, _08094034 @ =0x0000408f\n\
+ adds r5, r1, 0\n\
+ adds r3, r0, 0\n\
_08093FEA:\n\
- lsls r1, r2, 16\n\
- asrs r1, 16\n\
- lsls r0, r1, 1\n\
- adds r0, r4\n\
- adds r0, r6\n\
- strh r5, [r0]\n\
- adds r1, 0x1\n\
- lsls r1, 16\n\
- lsrs r2, r1, 16\n\
- asrs r1, 16\n\
- cmp r1, r3\n\
- blt _08093FEA\n\
+ lsls r1, r2, 16\n\
+ asrs r1, 16\n\
+ lsls r0, r1, 1\n\
+ adds r0, r4\n\
+ adds r0, r6\n\
+ strh r5, [r0]\n\
+ adds r1, 0x1\n\
+ lsls r1, 16\n\
+ lsrs r2, r1, 16\n\
+ asrs r1, 16\n\
+ cmp r1, r3\n\
+ blt _08093FEA\n\
_08094002:\n\
- lsls r1, r2, 16\n\
- asrs r0, r1, 16\n\
- cmp r0, 0x12\n\
- bgt _08094024\n\
- movs r3, 0xC0\n\
- lsls r3, 1\n\
- movs r2, 0\n\
+ lsls r1, r2, 16\n\
+ asrs r0, r1, 16\n\
+ cmp r0, 0x12\n\
+ bgt _08094024\n\
+ movs r3, 0xC0\n\
+ lsls r3, 1\n\
+ movs r2, 0\n\
_08094010:\n\
- asrs r0, r1, 16\n\
- lsls r1, r0, 1\n\
- adds r1, r4\n\
- adds r1, r3\n\
- strh r2, [r1]\n\
- adds r0, 0x1\n\
- lsls r1, r0, 16\n\
- asrs r0, r1, 16\n\
- cmp r0, 0x12\n\
- ble _08094010\n\
+ asrs r0, r1, 16\n\
+ lsls r1, r0, 1\n\
+ adds r1, r4\n\
+ adds r1, r3\n\
+ strh r2, [r1]\n\
+ adds r0, 0x1\n\
+ lsls r1, r0, 16\n\
+ asrs r0, r1, 16\n\
+ cmp r0, 0x12\n\
+ ble _08094010\n\
_08094024:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_0809402C: .4byte 0x06004000\n\
_08094030: .4byte 0x02000000\n\
_08094034: .4byte 0x0000408f\n\
@@ -1730,85 +1730,85 @@ __attribute__((naked))
static void sub_8094038(void)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- ldr r1, _080940D0 @ =0x02000000\n\
- ldrb r0, [r1, 0x1]\n\
- cmp r0, 0\n\
- bne _080940C2\n\
- ldr r0, _080940D4 @ =0x06004000\n\
- mov r9, r0\n\
- movs r0, 0\n\
- movs r2, 0x4\n\
- adds r1, 0xE\n\
- mov r8, r1\n\
- ldr r7, _080940D8 @ =gUnknown_083B5F8C\n\
- movs r1, 0xC0\n\
- lsls r1, 6\n\
- adds r6, r1, 0\n\
- adds r1, r7, 0x6\n\
- mov r12, r1\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ ldr r1, _080940D0 @ =0x02000000\n\
+ ldrb r0, [r1, 0x1]\n\
+ cmp r0, 0\n\
+ bne _080940C2\n\
+ ldr r0, _080940D4 @ =0x06004000\n\
+ mov r9, r0\n\
+ movs r0, 0\n\
+ movs r2, 0x4\n\
+ adds r1, 0xE\n\
+ mov r8, r1\n\
+ ldr r7, _080940D8 @ =gUnknown_083B5F8C\n\
+ movs r1, 0xC0\n\
+ lsls r1, 6\n\
+ adds r6, r1, 0\n\
+ adds r1, r7, 0x6\n\
+ mov r12, r1\n\
_08094060:\n\
- lsls r0, 16\n\
- asrs r4, r0, 16\n\
- mov r1, r8\n\
- adds r0, r4, r1\n\
- ldrb r0, [r0]\n\
- lsls r5, r2, 16\n\
- cmp r0, 0\n\
- beq _080940AE\n\
- asrs r1, r5, 15\n\
- add r1, r9\n\
- movs r2, 0xF0\n\
- lsls r2, 2\n\
- adds r3, r1, r2\n\
- lsls r2, r4, 3\n\
- adds r0, r2, r7\n\
- ldrh r0, [r0]\n\
- orrs r0, r6\n\
- strh r0, [r3]\n\
- ldr r0, _080940DC @ =0x000003c2\n\
- adds r3, r1, r0\n\
- adds r0, r7, 0x2\n\
- adds r0, r2, r0\n\
- ldrh r0, [r0]\n\
- orrs r0, r6\n\
- strh r0, [r3]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- adds r3, r1, r0\n\
- adds r0, r7, 0x4\n\
- adds r0, r2, r0\n\
- ldrh r0, [r0]\n\
- orrs r0, r6\n\
- strh r0, [r3]\n\
- ldr r0, _080940E0 @ =0x00000402\n\
- adds r1, r0\n\
- add r2, r12\n\
- ldrh r0, [r2]\n\
- orrs r0, r6\n\
- strh r0, [r1]\n\
+ lsls r0, 16\n\
+ asrs r4, r0, 16\n\
+ mov r1, r8\n\
+ adds r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ lsls r5, r2, 16\n\
+ cmp r0, 0\n\
+ beq _080940AE\n\
+ asrs r1, r5, 15\n\
+ add r1, r9\n\
+ movs r2, 0xF0\n\
+ lsls r2, 2\n\
+ adds r3, r1, r2\n\
+ lsls r2, r4, 3\n\
+ adds r0, r2, r7\n\
+ ldrh r0, [r0]\n\
+ orrs r0, r6\n\
+ strh r0, [r3]\n\
+ ldr r0, _080940DC @ =0x000003c2\n\
+ adds r3, r1, r0\n\
+ adds r0, r7, 0x2\n\
+ adds r0, r2, r0\n\
+ ldrh r0, [r0]\n\
+ orrs r0, r6\n\
+ strh r0, [r3]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ adds r3, r1, r0\n\
+ adds r0, r7, 0x4\n\
+ adds r0, r2, r0\n\
+ ldrh r0, [r0]\n\
+ orrs r0, r6\n\
+ strh r0, [r3]\n\
+ ldr r0, _080940E0 @ =0x00000402\n\
+ adds r1, r0\n\
+ add r2, r12\n\
+ ldrh r0, [r2]\n\
+ orrs r0, r6\n\
+ strh r0, [r1]\n\
_080940AE:\n\
- adds r1, r4, 0x1\n\
- lsls r1, 16\n\
- movs r2, 0xC0\n\
- lsls r2, 10\n\
- adds r0, r5, r2\n\
- lsrs r2, r0, 16\n\
- lsrs r0, r1, 16\n\
- asrs r1, 16\n\
- cmp r1, 0x7\n\
- ble _08094060\n\
+ adds r1, r4, 0x1\n\
+ lsls r1, 16\n\
+ movs r2, 0xC0\n\
+ lsls r2, 10\n\
+ adds r0, r5, r2\n\
+ lsrs r2, r0, 16\n\
+ lsrs r0, r1, 16\n\
+ asrs r1, 16\n\
+ cmp r1, 0x7\n\
+ ble _08094060\n\
_080940C2:\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080940D0: .4byte 0x02000000\n\
_080940D4: .4byte 0x06004000\n\
_080940D8: .4byte gUnknown_083B5F8C\n\
@@ -1821,26 +1821,26 @@ __attribute__((naked))
static void sub_80940E4()
{
asm(".syntax unified\n\
- push {r4,lr}\n\
- movs r2, 0\n\
- ldr r1, _08094108 @ =0x06004000\n\
- movs r4, 0\n\
- ldr r3, _0809410C @ =0x000003ff\n\
+ push {r4,lr}\n\
+ movs r2, 0\n\
+ ldr r1, _08094108 @ =0x06004000\n\
+ movs r4, 0\n\
+ ldr r3, _0809410C @ =0x000003ff\n\
_080940EE:\n\
- strh r4, [r1]\n\
- lsls r0, r2, 16\n\
- movs r2, 0x80\n\
- lsls r2, 9\n\
- adds r0, r2\n\
- adds r1, 0x2\n\
- lsrs r2, r0, 16\n\
- asrs r0, 16\n\
- cmp r0, r3\n\
- ble _080940EE\n\
- pop {r4}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ strh r4, [r1]\n\
+ lsls r0, r2, 16\n\
+ movs r2, 0x80\n\
+ lsls r2, 9\n\
+ adds r0, r2\n\
+ adds r1, 0x2\n\
+ lsrs r2, r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, r3\n\
+ ble _080940EE\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08094108: .4byte 0x06004000\n\
_0809410C: .4byte 0x000003ff\n\
.syntax divided\n");
@@ -1850,30 +1850,30 @@ __attribute__((naked))
static void sub_8094110()
{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- ldr r6, _0809413C @ =0x06004800\n\
- movs r2, 0x3\n\
- movs r5, 0xA0\n\
- lsls r5, 2\n\
- movs r3, 0x1\n\
- movs r4, 0xB0\n\
- lsls r4, 2\n\
+ push {r4-r6,lr}\n\
+ ldr r6, _0809413C @ =0x06004800\n\
+ movs r2, 0x3\n\
+ movs r5, 0xA0\n\
+ lsls r5, 2\n\
+ movs r3, 0x1\n\
+ movs r4, 0xB0\n\
+ lsls r4, 2\n\
_08094120:\n\
- lsls r0, r2, 1\n\
- adds r0, r6\n\
- adds r1, r0, r5\n\
- strh r3, [r1]\n\
- adds r0, r4\n\
- strh r3, [r0]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, 0x10\n\
- bls _08094120\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ lsls r0, r2, 1\n\
+ adds r0, r6\n\
+ adds r1, r0, r5\n\
+ strh r3, [r1]\n\
+ adds r0, r4\n\
+ strh r3, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x10\n\
+ bls _08094120\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_0809413C: .4byte 0x06004800\n\
.syntax divided\n");
}
diff --git a/src/wallclock.c b/src/wallclock.c
index dc9d871e7..2f4d694a6 100644
--- a/src/wallclock.c
+++ b/src/wallclock.c
@@ -12,21 +12,142 @@
#include "trig.h"
extern u16 gSpecialVar_0x8004;
-extern u16 gMiscClockMale_Pal[];
-extern u16 gMiscClockFemale_Pal[];
extern u8 gMiscClock_Gfx[];
-extern struct SpriteSheet gUnknown_083F7A90;
-extern struct SpritePalette gUnknown_083F7AA0;
extern u8 gUnknown_08E95774[];
extern u8 gUnknown_08E954B0[];
extern u8 gOtherText_CorrectTimePrompt[];
extern const struct MenuAction gMenuYesNoItems[];
-extern s8 gClockHandCoords[][2];
+extern u16 gMiscClockMale_Pal[];
+extern u16 gMiscClockFemale_Pal[];
+
+//--------------------------------------------------
+// Graphics Data
+//--------------------------------------------------
-extern struct SpriteTemplate gSpriteTemplate_83F7AD8;
-extern struct SpriteTemplate gSpriteTemplate_83F7AF0;
-extern struct SpriteTemplate gSpriteTemplate_83F7B28;
-extern struct SpriteTemplate gSpriteTemplate_83F7B40;
+static const u8 ClockGfx_Misc[] = INCBIN_U8("graphics/misc/clock_misc.4bpp.lz");
+static const struct SpriteSheet gUnknown_083F7A90[] =
+{
+ {ClockGfx_Misc, 0x2000, 0x1000},
+ {NULL},
+};
+static const struct SpritePalette gUnknown_083F7AA0[] =
+{
+ {gMiscClockMale_Pal, 0x1000},
+ {gMiscClockFemale_Pal, 0x1001},
+ {NULL},
+};
+static const struct OamData gOamData_83F7AB8 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_83F7AC0[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_83F7AC8[] =
+{
+ ANIMCMD_FRAME(64, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_83F7AD0[] =
+{
+ gSpriteAnim_83F7AC0,
+};
+static const union AnimCmd *const gSpriteAnimTable_83F7AD4[] =
+{
+ gSpriteAnim_83F7AC8,
+};
+static void sub_810B05C(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F7AD8 =
+{
+ .tileTag = 0x1000,
+ .paletteTag = 0x1000,
+ .oam = &gOamData_83F7AB8,
+ .anims = gSpriteAnimTable_83F7AD0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810B05C,
+};
+static void sub_810B0F4(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F7AF0 =
+{
+ .tileTag = 0x1000,
+ .paletteTag = 0x1000,
+ .oam = &gOamData_83F7AB8,
+ .anims = gSpriteAnimTable_83F7AD4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810B0F4,
+};
+static const struct OamData gOamData_83F7B08 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_83F7B10[] =
+{
+ ANIMCMD_FRAME(132, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_83F7B18[] =
+{
+ ANIMCMD_FRAME(128, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_83F7B20[] =
+{
+ gSpriteAnim_83F7B10,
+};
+static const union AnimCmd *const gSpriteAnimTable_83F7B24[] =
+{
+ gSpriteAnim_83F7B18,
+};
+static void sub_810B18C(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F7B28 =
+{
+ .tileTag = 0x1000,
+ .paletteTag = 0x1000,
+ .oam = &gOamData_83F7B08,
+ .anims = gSpriteAnimTable_83F7B20,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810B18C,
+};
+static void sub_810B230(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F7B40 =
+{
+ .tileTag = 0x1000,
+ .paletteTag = 0x1000,
+ .oam = &gOamData_83F7B08,
+ .anims = gSpriteAnimTable_83F7B24,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810B230,
+};
static void WallClockVblankCallback(void);
static void LoadWallClockGraphics(void);
@@ -48,25 +169,17 @@ static u8 AdvanceClock(u8 taskId, u8 direction);
static void UpdateClockPeriod(u8 taskId, u8 direction);
static void InitClockWithRtc(u8 taskId);
-//Task data
-enum {
- TD_MHAND_ANGLE,
- TD_HHAND_ANGLE,
- TD_HOURS,
- TD_MINUTES,
- TD_SETDIRECTION, //Movement direction when setting the clock
- TD_PERIOD, //Whether the time is AM or PM
- TD_SETSPEED, //Movement speed when setting the clock
-};
-
-enum {
- AM,
- PM
+enum
+{
+ PERIOD_AM,
+ PERIOD_PM,
};
-enum {
- BACKWARD = 1,
- FORWARD
+enum
+{
+ MVMT_NONE,
+ MVMT_BACKWARD,
+ MVMT_FORWARD,
};
static void WallClockVblankCallback(void)
@@ -122,8 +235,8 @@ static void LoadWallClockGraphics(void)
ResetSpriteData();
ResetPaletteFade();
FreeAllSpritePalettes();
- LoadCompressedObjectPic(&gUnknown_083F7A90);
- LoadSpritePalettes(&gUnknown_083F7AA0);
+ LoadCompressedObjectPic(&gUnknown_083F7A90[0]);
+ LoadSpritePalettes(gUnknown_083F7AA0);
SetUpWindowConfig(&gWindowConfig_81E6C3C);
InitMenuWindow(&gWindowConfig_81E6CE4);
}
@@ -149,6 +262,14 @@ static void WallClockInit(void)
DISPCNT_BG3_ON | DISPCNT_OBJ_ON;
}
+#define tMinuteHandAngle data[0]
+#define tHourHandAngle data[1]
+#define tHours data[2]
+#define tMinutes data[3]
+#define tMvmtDir data[4]
+#define tPeriod data[5]
+#define tMvmtSpeed data[6]
+
//Allow player to set the clock
void CB2_StartWallClock(void)
{
@@ -159,29 +280,29 @@ void CB2_StartWallClock(void)
LZ77UnCompVram(&gUnknown_08E954B0, (void *)(VRAM + 0x3800));
taskId = CreateTask(Task_SetClock1, 0);
- gTasks[taskId].data[TD_HOURS] = 10;
- gTasks[taskId].data[TD_MINUTES] = 0;
- gTasks[taskId].data[TD_SETDIRECTION] = 0;
- gTasks[taskId].data[TD_PERIOD] = AM;
- gTasks[taskId].data[TD_SETSPEED] = 0;
- gTasks[taskId].data[TD_MHAND_ANGLE] = 0;
- gTasks[taskId].data[TD_HHAND_ANGLE] = 300;
-
- spriteId = CreateSprite(&gSpriteTemplate_83F7AD8, 0x78, 0x50, 1);
+ gTasks[taskId].tHours = 10;
+ gTasks[taskId].tMinutes = 0;
+ gTasks[taskId].tMvmtDir = MVMT_NONE;
+ gTasks[taskId].tPeriod = PERIOD_AM;
+ gTasks[taskId].tMvmtSpeed = 0;
+ gTasks[taskId].tMinuteHandAngle = 0;
+ gTasks[taskId].tHourHandAngle = 300;
+
+ spriteId = CreateSprite(&gSpriteTemplate_83F7AD8, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, 1);
gSprites[spriteId].data0 = taskId;
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 0;
- spriteId = CreateSprite(&gSpriteTemplate_83F7AF0, 0x78, 0x50, 0);
+ spriteId = CreateSprite(&gSpriteTemplate_83F7AF0, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, 0);
gSprites[spriteId].data0 = taskId;
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 1;
- spriteId = CreateSprite(&gSpriteTemplate_83F7B28, 0x78, 0x50, 2);
+ spriteId = CreateSprite(&gSpriteTemplate_83F7B28, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, 2);
gSprites[spriteId].data0 = taskId;
gSprites[spriteId].data1 = 45;
- spriteId = CreateSprite(&gSpriteTemplate_83F7B40, 0x78, 0x50, 2);
+ spriteId = CreateSprite(&gSpriteTemplate_83F7B40, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, 2);
gSprites[spriteId].data0 = taskId;
gSprites[spriteId].data1 = 90;
@@ -201,7 +322,7 @@ void CB2_ViewWallClock(void)
taskId = CreateTask(Task_ViewClock1, 0);
InitClockWithRtc(taskId);
- if (gTasks[taskId].data[TD_PERIOD] == 0)
+ if (gTasks[taskId].tPeriod == PERIOD_AM)
{
angle1 = 45;
angle2 = 90;
@@ -250,17 +371,17 @@ static void Task_SetClock1(u8 taskId)
//Handle keypresses when setting clock
static void Task_SetClock2(u8 taskId)
{
- if (gTasks[taskId].data[TD_MHAND_ANGLE] % 6)
+ if (gTasks[taskId].tMinuteHandAngle % 6)
{
- gTasks[taskId].data[TD_MHAND_ANGLE] = CalcNewMinHandAngle(
- gTasks[taskId].data[TD_MHAND_ANGLE],
- gTasks[taskId].data[TD_SETDIRECTION],
- gTasks[taskId].data[TD_SETSPEED]);
+ gTasks[taskId].tMinuteHandAngle = CalcNewMinHandAngle(
+ gTasks[taskId].tMinuteHandAngle,
+ gTasks[taskId].tMvmtDir,
+ gTasks[taskId].tMvmtSpeed);
}
else
{
- gTasks[taskId].data[TD_MHAND_ANGLE] = gTasks[taskId].data[TD_MINUTES] * 6;
- gTasks[taskId].data[TD_HHAND_ANGLE] = (gTasks[taskId].data[TD_HOURS] % 12) * 30 + (gTasks[taskId].data[TD_MINUTES] / 10) * 5;
+ gTasks[taskId].tMinuteHandAngle = gTasks[taskId].tMinutes * 6;
+ gTasks[taskId].tHourHandAngle = (gTasks[taskId].tHours % 12) * 30 + (gTasks[taskId].tMinutes / 10) * 5;
if (gMain.newKeys & A_BUTTON)
{
gTasks[taskId].func = Task_SetClock3;
@@ -268,24 +389,24 @@ static void Task_SetClock2(u8 taskId)
}
else
{
- gTasks[taskId].data[TD_SETDIRECTION] = gMain.newKeys & A_BUTTON;
+ gTasks[taskId].tMvmtDir = gMain.newKeys & A_BUTTON;
if (gMain.heldKeys & DPAD_LEFT)
- gTasks[taskId].data[TD_SETDIRECTION] = BACKWARD;
+ gTasks[taskId].tMvmtDir = MVMT_BACKWARD;
if (gMain.heldKeys & DPAD_RIGHT)
- gTasks[taskId].data[TD_SETDIRECTION] = FORWARD;
- if (gTasks[taskId].data[TD_SETDIRECTION])
+ gTasks[taskId].tMvmtDir = MVMT_FORWARD;
+ if (gTasks[taskId].tMvmtDir)
{
- if (gTasks[taskId].data[TD_SETSPEED] <= 0xFE)
- gTasks[taskId].data[TD_SETSPEED]++;
- gTasks[taskId].data[TD_MHAND_ANGLE] = CalcNewMinHandAngle(
- gTasks[taskId].data[TD_MHAND_ANGLE],
- gTasks[taskId].data[TD_SETDIRECTION],
- gTasks[taskId].data[TD_SETSPEED]);
- AdvanceClock(taskId, gTasks[taskId].data[TD_SETDIRECTION]);
+ if (gTasks[taskId].tMvmtSpeed < 0xFF)
+ gTasks[taskId].tMvmtSpeed++;
+ gTasks[taskId].tMinuteHandAngle = CalcNewMinHandAngle(
+ gTasks[taskId].tMinuteHandAngle,
+ gTasks[taskId].tMvmtDir,
+ gTasks[taskId].tMvmtSpeed);
+ AdvanceClock(taskId, gTasks[taskId].tMvmtDir);
}
else
{
- gTasks[taskId].data[TD_SETSPEED] = 0;
+ gTasks[taskId].tMvmtSpeed = 0;
}
}
}
@@ -324,7 +445,7 @@ static void Task_SetClock4(u8 taskId)
//Set the time offset based on the wall clock's time
static void Task_SetClock5(u8 taskId)
{
- RtcInitLocalTimeOffset(gTasks[taskId].data[TD_HOURS], gTasks[taskId].data[TD_MINUTES]);
+ RtcInitLocalTimeOffset(gTasks[taskId].tHours, gTasks[taskId].tMinutes);
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
gTasks[taskId].func = Task_SetClock6;
}
@@ -373,20 +494,20 @@ static u8 CalcMinHandDelta(u16 speed)
return 1;
}
-//Calculates the new position of the minute hand when setting the clock
+//Calculates the new angle of the minute hand when setting the clock
static u16 CalcNewMinHandAngle(u16 angle, u8 direction, u8 speed)
{
u8 delta = CalcMinHandDelta(speed);
switch (direction)
{
- case BACKWARD:
+ case MVMT_BACKWARD:
if (angle)
angle = angle - delta;
else
angle = 360 - delta;
break;
- case FORWARD:
+ case MVMT_FORWARD:
if (angle < 360 - delta)
angle = angle + delta;
else
@@ -401,29 +522,29 @@ static u8 AdvanceClock(u8 taskId, u8 direction)
{
switch (direction)
{
- case BACKWARD:
- if (gTasks[taskId].data[TD_MINUTES] > 0)
- gTasks[taskId].data[TD_MINUTES]--;
+ case MVMT_BACKWARD:
+ if (gTasks[taskId].tMinutes > 0)
+ gTasks[taskId].tMinutes--;
else
{
- gTasks[taskId].data[TD_MINUTES] = 59;
- if (gTasks[taskId].data[TD_HOURS] > 0)
- gTasks[taskId].data[TD_HOURS]--;
+ gTasks[taskId].tMinutes = 59;
+ if (gTasks[taskId].tHours > 0)
+ gTasks[taskId].tHours--;
else
- gTasks[taskId].data[TD_HOURS] = 23;
+ gTasks[taskId].tHours = 23;
UpdateClockPeriod(taskId, direction);
}
break;
- case FORWARD:
- if (gTasks[taskId].data[TD_MINUTES] <= 58)
- gTasks[taskId].data[TD_MINUTES]++;
+ case MVMT_FORWARD:
+ if (gTasks[taskId].tMinutes < 59)
+ gTasks[taskId].tMinutes++;
else
{
- gTasks[taskId].data[TD_MINUTES] = 0;
- if (gTasks[taskId].data[TD_HOURS] <= 22)
- gTasks[taskId].data[TD_HOURS]++;
+ gTasks[taskId].tMinutes = 0;
+ if (gTasks[taskId].tHours < 23)
+ gTasks[taskId].tHours++;
else
- gTasks[taskId].data[TD_HOURS] = 0;
+ gTasks[taskId].tHours = 0;
UpdateClockPeriod(taskId, direction);
}
break;
@@ -434,29 +555,29 @@ static u8 AdvanceClock(u8 taskId, u8 direction)
//Updates the clock period (AM/PM) if it needs to change
static void UpdateClockPeriod(u8 taskId, u8 direction)
{
- u8 hours = gTasks[taskId].data[TD_HOURS];
+ u8 hours = gTasks[taskId].tHours;
switch (direction)
{
- case BACKWARD:
+ case MVMT_BACKWARD:
switch (hours)
{
case 11:
- gTasks[taskId].data[TD_PERIOD] = AM;
+ gTasks[taskId].tPeriod = PERIOD_AM;
break;
case 23:
- gTasks[taskId].data[TD_PERIOD] = PM;
+ gTasks[taskId].tPeriod = PERIOD_PM;
break;
}
break;
- case FORWARD:
+ case MVMT_FORWARD:
switch (hours)
{
case 0:
- gTasks[taskId].data[TD_PERIOD] = AM;
+ gTasks[taskId].tPeriod = PERIOD_AM;
break;
case 12:
- gTasks[taskId].data[TD_PERIOD] = PM;
+ gTasks[taskId].tPeriod = PERIOD_PM;
break;
}
break;
@@ -466,17 +587,381 @@ static void UpdateClockPeriod(u8 taskId, u8 direction)
static void InitClockWithRtc(u8 taskId)
{
RtcCalcLocalTime();
- gTasks[taskId].data[TD_HOURS] = gLocalTime.hours;
- gTasks[taskId].data[TD_MINUTES] = gLocalTime.minutes;
- gTasks[taskId].data[TD_MHAND_ANGLE] = gTasks[taskId].data[TD_MINUTES] * 6;
- gTasks[taskId].data[TD_HHAND_ANGLE] = (gTasks[taskId].data[TD_HOURS] % 12) * 30 + (gTasks[taskId].data[TD_MINUTES] / 10) * 5;
+ gTasks[taskId].tHours = gLocalTime.hours;
+ gTasks[taskId].tMinutes = gLocalTime.minutes;
+ gTasks[taskId].tMinuteHandAngle = gTasks[taskId].tMinutes * 6;
+ gTasks[taskId].tHourHandAngle = (gTasks[taskId].tHours % 12) * 30 + (gTasks[taskId].tMinutes / 10) * 5;
if (gLocalTime.hours <= 11)
- gTasks[taskId].data[TD_PERIOD] = AM;
+ gTasks[taskId].tPeriod = PERIOD_AM;
else
- gTasks[taskId].data[TD_PERIOD] = PM;
+ gTasks[taskId].tPeriod = PERIOD_PM;
}
-void sub_810B05C(struct Sprite *sprite)
+static const s8 gClockHandCoords[][2] =
+{
+ { 0, -24},
+ { 1, -25},
+ { 1, -25},
+ { 2, -25},
+ { 2, -25},
+ { 2, -25},
+ { 3, -24},
+ { 3, -25},
+ { 4, -25},
+ { 4, -25},
+ { 4, -25},
+ { 5, -25},
+ { 5, -25},
+ { 6, -24},
+ { 6, -24},
+ { 6, -24},
+ { 7, -24},
+ { 7, -24},
+ { 7, -24},
+ { 8, -24},
+ { 8, -24},
+ { 9, -24},
+ { 9, -24},
+ { 10, -23},
+ { 10, -23},
+ { 11, -22},
+ { 11, -22},
+ { 11, -22},
+ { 12, -22},
+ { 12, -21},
+ { 13, -21},
+ { 13, -21},
+ { 13, -21},
+ { 14, -21},
+ { 14, -21},
+ { 14, -20},
+ { 14, -20},
+ { 15, -20},
+ { 15, -19},
+ { 16, -19},
+ { 16, -19},
+ { 16, -19},
+ { 16, -18},
+ { 16, -18},
+ { 17, -18},
+ { 17, -17},
+ { 17, -17},
+ { 18, -17},
+ { 18, -17},
+ { 18, -16},
+ { 18, -16},
+ { 19, -16},
+ { 19, -15},
+ { 19, -15},
+ { 20, -15},
+ { 20, -14},
+ { 20, -14},
+ { 20, -13},
+ { 20, -13},
+ { 21, -13},
+ { 21, -13},
+ { 21, -12},
+ { 22, -12},
+ { 22, -12},
+ { 22, -11},
+ { 22, -11},
+ { 22, -10},
+ { 23, -10},
+ { 23, -9},
+ { 23, -9},
+ { 23, -9},
+ { 23, -9},
+ { 23, -8},
+ { 23, -8},
+ { 23, -7},
+ { 23, -7},
+ { 23, -6},
+ { 24, -6},
+ { 24, -6},
+ { 25, -5},
+ { 25, -5},
+ { 24, -4},
+ { 25, -4},
+ { 24, -3},
+ { 25, -3},
+ { 25, -3},
+ { 25, -2},
+ { 25, -2},
+ { 24, -1},
+ { 25, -1},
+ { 24, 0},
+ { 24, 0},
+ { 24, 0},
+ { 24, 1},
+ { 24, 1},
+ { 25, 2},
+ { 24, 2},
+ { 25, 2},
+ { 24, 3},
+ { 24, 3},
+ { 25, 4},
+ { 24, 4},
+ { 24, 5},
+ { 24, 5},
+ { 24, 5},
+ { 24, 6},
+ { 23, 6},
+ { 23, 6},
+ { 23, 7},
+ { 23, 8},
+ { 23, 8},
+ { 23, 8},
+ { 23, 9},
+ { 23, 9},
+ { 23, 10},
+ { 22, 10},
+ { 22, 10},
+ { 22, 11},
+ { 22, 11},
+ { 22, 11},
+ { 22, 12},
+ { 21, 12},
+ { 21, 12},
+ { 21, 13},
+ { 20, 13},
+ { 20, 13},
+ { 19, 13},
+ { 19, 13},
+ { 19, 14},
+ { 19, 14},
+ { 19, 15},
+ { 19, 15},
+ { 18, 15},
+ { 18, 16},
+ { 17, 16},
+ { 17, 16},
+ { 17, 17},
+ { 17, 17},
+ { 16, 17},
+ { 16, 18},
+ { 16, 18},
+ { 15, 18},
+ { 14, 18},
+ { 15, 19},
+ { 14, 19},
+ { 14, 19},
+ { 13, 19},
+ { 13, 20},
+ { 13, 20},
+ { 13, 20},
+ { 12, 20},
+ { 12, 20},
+ { 12, 21},
+ { 11, 21},
+ { 11, 21},
+ { 11, 21},
+ { 10, 21},
+ { 10, 22},
+ { 10, 22},
+ { 9, 22},
+ { 9, 22},
+ { 8, 22},
+ { 7, 22},
+ { 7, 23},
+ { 7, 23},
+ { 6, 23},
+ { 6, 23},
+ { 5, 23},
+ { 5, 23},
+ { 5, 24},
+ { 4, 24},
+ { 4, 24},
+ { 4, 24},
+ { 3, 24},
+ { 2, 24},
+ { 2, 24},
+ { 1, 24},
+ { 1, 24},
+ { 0, 24},
+ { 0, 24},
+ { -1, 23},
+ { 0, 24},
+ { 0, 24},
+ { -1, 24},
+ { -1, 24},
+ { -2, 24},
+ { -2, 24},
+ { -3, 24},
+ { -3, 24},
+ { -4, 24},
+ { -4, 24},
+ { -5, 24},
+ { -5, 23},
+ { -5, 23},
+ { -6, 23},
+ { -6, 23},
+ { -7, 23},
+ { -7, 23},
+ { -7, 23},
+ { -8, 23},
+ { -8, 22},
+ { -9, 22},
+ { -9, 22},
+ {-10, 22},
+ {-10, 22},
+ {-10, 21},
+ {-11, 21},
+ {-11, 21},
+ {-11, 21},
+ {-11, 20},
+ {-12, 20},
+ {-12, 20},
+ {-13, 20},
+ {-13, 20},
+ {-13, 19},
+ {-14, 19},
+ {-14, 19},
+ {-14, 19},
+ {-14, 18},
+ {-15, 18},
+ {-15, 18},
+ {-15, 17},
+ {-16, 17},
+ {-16, 17},
+ {-17, 17},
+ {-17, 16},
+ {-17, 16},
+ {-18, 16},
+ {-17, 15},
+ {-18, 15},
+ {-18, 15},
+ {-19, 15},
+ {-19, 14},
+ {-19, 14},
+ {-19, 13},
+ {-19, 13},
+ {-20, 13},
+ {-20, 12},
+ {-20, 12},
+ {-21, 12},
+ {-21, 12},
+ {-21, 11},
+ {-21, 11},
+ {-21, 10},
+ {-21, 10},
+ {-21, 9},
+ {-22, 9},
+ {-22, 9},
+ {-22, 8},
+ {-22, 8},
+ {-22, 7},
+ {-23, 7},
+ {-23, 7},
+ {-23, 6},
+ {-23, 6},
+ {-23, 5},
+ {-24, 5},
+ {-23, 4},
+ {-23, 4},
+ {-24, 4},
+ {-24, 4},
+ {-24, 3},
+ {-24, 3},
+ {-24, 2},
+ {-24, 2},
+ {-24, 1},
+ {-24, 1},
+ {-24, 1},
+ {-24, 0},
+ {-25, 0},
+ {-24, -1},
+ {-25, -1},
+ {-24, -1},
+ {-24, -2},
+ {-24, -2},
+ {-24, -3},
+ {-24, -3},
+ {-24, -4},
+ {-24, -4},
+ {-24, -4},
+ {-24, -5},
+ {-24, -5},
+ {-24, -6},
+ {-24, -6},
+ {-23, -6},
+ {-23, -7},
+ {-23, -7},
+ {-23, -8},
+ {-23, -8},
+ {-23, -9},
+ {-23, -9},
+ {-22, -9},
+ {-22, -9},
+ {-22, -10},
+ {-22, -10},
+ {-21, -10},
+ {-21, -11},
+ {-22, -11},
+ {-22, -12},
+ {-21, -12},
+ {-21, -13},
+ {-21, -13},
+ {-20, -13},
+ {-21, -14},
+ {-20, -14},
+ {-20, -14},
+ {-19, -14},
+ {-19, -15},
+ {-19, -15},
+ {-18, -16},
+ {-18, -16},
+ {-18, -16},
+ {-18, -17},
+ {-18, -17},
+ {-17, -17},
+ {-17, -18},
+ {-17, -18},
+ {-16, -18},
+ {-16, -18},
+ {-16, -19},
+ {-16, -19},
+ {-15, -19},
+ {-15, -19},
+ {-15, -20},
+ {-14, -20},
+ {-14, -20},
+ {-14, -21},
+ {-13, -21},
+ {-13, -21},
+ {-13, -21},
+ {-12, -21},
+ {-12, -22},
+ {-11, -22},
+ {-11, -22},
+ {-11, -22},
+ {-10, -22},
+ {-10, -22},
+ { -9, -22},
+ { -9, -23},
+ { -9, -23},
+ { -8, -23},
+ { -8, -23},
+ { -7, -23},
+ { -7, -23},
+ { -7, -24},
+ { -6, -24},
+ { -6, -24},
+ { -5, -24},
+ { -5, -24},
+ { -4, -24},
+ { -4, -24},
+ { -4, -24},
+ { -4, -25},
+ { -3, -25},
+ { -2, -25},
+ { -2, -24},
+ { -2, -24},
+ { -1, -25},
+ { -1, -25},
+ { 0, -25},
+};
+
+static void sub_810B05C(struct Sprite *sprite)
{
u16 angle;
s16 sin;
@@ -484,7 +969,7 @@ void sub_810B05C(struct Sprite *sprite)
u16 x;
u16 y;
- angle = gTasks[sprite->data0].data[TD_MHAND_ANGLE];
+ angle = gTasks[sprite->data0].tMinuteHandAngle;
sin = Sin2(angle) / 16;
cos = Cos2(angle) / 16;
SetOamMatrix(0, cos, sin, -sin, cos);
@@ -501,7 +986,7 @@ void sub_810B05C(struct Sprite *sprite)
sprite->pos2.y = y;
}
-void sub_810B0F4(struct Sprite *sprite)
+static void sub_810B0F4(struct Sprite *sprite)
{
u16 angle;
s16 sin;
@@ -509,7 +994,7 @@ void sub_810B0F4(struct Sprite *sprite)
u16 x;
u16 y;
- angle = gTasks[sprite->data0].data[TD_HHAND_ANGLE];
+ angle = gTasks[sprite->data0].tHourHandAngle;
sin = Sin2(angle) / 16;
cos = Cos2(angle) / 16;
SetOamMatrix(1, cos, sin, -sin, cos);
@@ -526,21 +1011,21 @@ void sub_810B0F4(struct Sprite *sprite)
sprite->pos2.y = y;
}
-void sub_810B18C(struct Sprite *sprite)
+static void sub_810B18C(struct Sprite *sprite)
{
s16 sin;
s16 cos;
- if (gTasks[sprite->data0].data[TD_PERIOD] != AM)
+ if (gTasks[sprite->data0].tPeriod != PERIOD_AM)
{
- if ((u16)(sprite->data1 - 60) <= 29)
+ if (sprite->data1 >= 60 && sprite->data1 < 90)
sprite->data1 += 5;
- if (sprite->data1 <= 59)
+ if (sprite->data1 < 60)
sprite->data1++;
}
else
{
- if ((u16)(sprite->data1 - 46) <= 29)
+ if (sprite->data1 > 45 && sprite->data1 <= 75)
sprite->data1 -= 5;
if (sprite->data1 > 75)
sprite->data1--;
@@ -551,12 +1036,12 @@ void sub_810B18C(struct Sprite *sprite)
sprite->pos2.y = sin * 30 / 4096;
}
-void sub_810B230(struct Sprite *sprite)
+static void sub_810B230(struct Sprite *sprite)
{
s16 sin;
s16 cos;
- if (gTasks[sprite->data0].data[TD_PERIOD] != AM)
+ if (gTasks[sprite->data0].tPeriod != PERIOD_AM)
{
if (sprite->data1 >= 105 && sprite->data1 < 135)
sprite->data1 += 5;
diff --git a/src/wild_encounter.c b/src/wild_encounter.c
index 820ff34f5..f848873bb 100644
--- a/src/wild_encounter.c
+++ b/src/wild_encounter.c
@@ -10,6 +10,7 @@
#include "rom4.h"
#include "safari_zone.h"
#include "script.h"
+#include "species.h"
struct WildPokemon
{
@@ -21,7 +22,7 @@ struct WildPokemon
struct WildPokemonInfo
{
u8 encounterRate;
- struct WildPokemon *wildPokemon;
+ const struct WildPokemon *wildPokemon;
};
struct WildPokemonHeader
@@ -34,6 +35,2890 @@ struct WildPokemonHeader
struct WildPokemonInfo *fishingMonsInfo;
};
+
+const struct WildPokemon PetalburgCity_WaterMons [] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+};
+const struct WildPokemonInfo PetalburgCity_WaterMonsInfo = {1, PetalburgCity_WaterMons};
+
+const struct WildPokemon PetalburgCity_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_CORPHISH},
+ {25, 30, SPECIES_CORPHISH},
+ {30, 35, SPECIES_CORPHISH},
+ {20, 25, SPECIES_CORPHISH},
+ {35, 40, SPECIES_CORPHISH},
+ {40, 45, SPECIES_CORPHISH},
+};
+const struct WildPokemonInfo PetalburgCity_FishingMonsInfo = {10, PetalburgCity_FishingMons};
+
+const struct WildPokemon SlateportCity_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo SlateportCity_WaterMonsInfo = {4, SlateportCity_WaterMons};
+
+const struct WildPokemon SlateportCity_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo SlateportCity_FishingMonsInfo = {10, SlateportCity_FishingMons};
+
+const struct WildPokemon LilycoveCity_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo LilycoveCity_WaterMonsInfo = {4, LilycoveCity_WaterMons};
+
+const struct WildPokemon LilycoveCity_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_STARYU},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo LilycoveCity_FishingMonsInfo = {10, LilycoveCity_FishingMons};
+
+const struct WildPokemon MossdeepCity_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo MossdeepCity_WaterMonsInfo = {4, MossdeepCity_WaterMons};
+
+const struct WildPokemon MossdeepCity_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo MossdeepCity_FishingMonsInfo = {10, MossdeepCity_FishingMons};
+
+const struct WildPokemon SootopolisCity_WaterMons [] =
+{
+ {5, 35, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {15, 25, SPECIES_MAGIKARP},
+ {25, 30, SPECIES_MAGIKARP},
+ {25, 30, SPECIES_MAGIKARP},
+};
+const struct WildPokemonInfo SootopolisCity_WaterMonsInfo = {1, SootopolisCity_WaterMons};
+
+const struct WildPokemon SootopolisCity_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+#ifdef SAPPHIRE
+ {5, 10, SPECIES_TENTACOOL},
+#else
+ {10, 15, SPECIES_MAGIKARP},
+#endif
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {30, 35, SPECIES_MAGIKARP},
+ {30, 35, SPECIES_MAGIKARP},
+ {35, 40, SPECIES_GYARADOS},
+ {35, 45, SPECIES_GYARADOS},
+ {5, 45, SPECIES_GYARADOS},
+};
+const struct WildPokemonInfo SootopolisCity_FishingMonsInfo = {10, SootopolisCity_FishingMons};
+
+const struct WildPokemon EverGrandeCity_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo EverGrandeCity_WaterMonsInfo = {4, EverGrandeCity_WaterMons};
+
+const struct WildPokemon EverGrandeCity_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_LUVDISC},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_LUVDISC},
+ {30, 35, SPECIES_WAILMER},
+ {30, 35, SPECIES_CORSOLA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo EverGrandeCity_FishingMonsInfo = {10, EverGrandeCity_FishingMons};
+
+const struct WildPokemon MeteorFalls_1F_1R_LandMons [] =
+{
+ {16, 16, SPECIES_ZUBAT},
+ {17, 17, SPECIES_ZUBAT},
+ {18, 18, SPECIES_ZUBAT},
+ {15, 15, SPECIES_ZUBAT},
+ {14, 14, SPECIES_ZUBAT},
+#ifdef SAPPHIRE
+ {16, 16, SPECIES_LUNATONE},
+ {18, 18, SPECIES_LUNATONE},
+ {14, 14, SPECIES_LUNATONE},
+#else
+ {16, 16, SPECIES_SOLROCK},
+ {18, 18, SPECIES_SOLROCK},
+ {14, 14, SPECIES_SOLROCK},
+#endif
+ {19, 19, SPECIES_ZUBAT},
+ {20, 20, SPECIES_ZUBAT},
+ {19, 19, SPECIES_ZUBAT},
+ {20, 20, SPECIES_ZUBAT},
+};
+const struct WildPokemonInfo MeteorFalls_1F_1R_LandMonsInfo = {10, MeteorFalls_1F_1R_LandMons};
+
+const struct WildPokemon MeteorFalls_1F_1R_WaterMons [] =
+{
+ {5, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_ZUBAT},
+#ifdef SAPPHIRE
+ {25, 35, SPECIES_LUNATONE},
+ {15, 25, SPECIES_LUNATONE},
+ {5, 15, SPECIES_LUNATONE},
+#else
+ {25, 35, SPECIES_SOLROCK},
+ {15, 25, SPECIES_SOLROCK},
+ {5, 15, SPECIES_SOLROCK},
+#endif
+};
+const struct WildPokemonInfo MeteorFalls_1F_1R_WaterMonsInfo = {4, MeteorFalls_1F_1R_WaterMons};
+
+const struct WildPokemon MeteorFalls_1F_1R_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {20, 25, SPECIES_BARBOACH},
+ {35, 40, SPECIES_BARBOACH},
+ {40, 45, SPECIES_BARBOACH},
+};
+const struct WildPokemonInfo MeteorFalls_1F_1R_FishingMonsInfo = {30, MeteorFalls_1F_1R_FishingMons};
+
+const struct WildPokemon MeteorFalls_1F_2R_LandMons [] =
+{
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {35, 35, SPECIES_LUNATONE},
+ {33, 33, SPECIES_LUNATONE},
+ {37, 37, SPECIES_LUNATONE},
+#else
+ {35, 35, SPECIES_SOLROCK},
+ {33, 33, SPECIES_SOLROCK},
+ {37, 37, SPECIES_SOLROCK},
+#endif
+ {35, 35, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {39, 39, SPECIES_LUNATONE},
+#else
+ {39, 39, SPECIES_SOLROCK},
+#endif
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo MeteorFalls_1F_2R_LandMonsInfo = {10, MeteorFalls_1F_2R_LandMons};
+
+const struct WildPokemon MeteorFalls_1F_2R_WaterMons [] =
+{
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {25, 35, SPECIES_LUNATONE},
+ {15, 25, SPECIES_LUNATONE},
+ {5, 15, SPECIES_LUNATONE},
+#else
+ {25, 35, SPECIES_SOLROCK},
+ {15, 25, SPECIES_SOLROCK},
+ {5, 15, SPECIES_SOLROCK},
+#endif
+};
+const struct WildPokemonInfo MeteorFalls_1F_2R_WaterMonsInfo = {4, MeteorFalls_1F_2R_WaterMons};
+
+const struct WildPokemon MeteorFalls_1F_2R_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {30, 35, SPECIES_WHISCASH},
+ {35, 40, SPECIES_WHISCASH},
+ {40, 45, SPECIES_WHISCASH},
+};
+const struct WildPokemonInfo MeteorFalls_1F_2R_FishingMonsInfo = {30, MeteorFalls_1F_2R_FishingMons};
+
+const struct WildPokemon MeteorFalls_B1F_1R_LandMons [] =
+{
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {35, 35, SPECIES_LUNATONE},
+ {33, 33, SPECIES_LUNATONE},
+ {37, 37, SPECIES_LUNATONE},
+#else
+ {35, 35, SPECIES_SOLROCK},
+ {33, 33, SPECIES_SOLROCK},
+ {37, 37, SPECIES_SOLROCK},
+#endif
+ {35, 35, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {39, 39, SPECIES_LUNATONE},
+#else
+ {39, 39, SPECIES_SOLROCK},
+#endif
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo MeteorFalls_B1F_1R_LandMonsInfo = {10, MeteorFalls_B1F_1R_LandMons};
+
+const struct WildPokemon MeteorFalls_B1F_1R_WaterMons [] =
+{
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {25, 35, SPECIES_LUNATONE},
+ {15, 25, SPECIES_LUNATONE},
+ {5, 15, SPECIES_LUNATONE},
+#else
+ {25, 35, SPECIES_SOLROCK},
+ {15, 25, SPECIES_SOLROCK},
+ {5, 15, SPECIES_SOLROCK},
+#endif
+};
+const struct WildPokemonInfo MeteorFalls_B1F_1R_WaterMonsInfo = {4, MeteorFalls_B1F_1R_WaterMons};
+
+const struct WildPokemon MeteorFalls_B1F_1R_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {30, 35, SPECIES_WHISCASH},
+ {35, 40, SPECIES_WHISCASH},
+ {40, 45, SPECIES_WHISCASH},
+};
+const struct WildPokemonInfo MeteorFalls_B1F_1R_FishingMonsInfo = {30, MeteorFalls_B1F_1R_FishingMons};
+
+const struct WildPokemon MeteorFalls_B1F_2R_LandMons [] =
+{
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {30, 30, SPECIES_BAGON},
+#ifdef SAPPHIRE
+ {35, 35, SPECIES_LUNATONE},
+#else
+ {35, 35, SPECIES_SOLROCK},
+#endif
+ {35, 35, SPECIES_BAGON},
+#ifdef SAPPHIRE
+ {37, 37, SPECIES_LUNATONE},
+#else
+ {37, 37, SPECIES_SOLROCK},
+#endif
+ {25, 25, SPECIES_BAGON},
+#ifdef SAPPHIRE
+ {39, 39, SPECIES_LUNATONE},
+#else
+ {39, 39, SPECIES_SOLROCK},
+#endif
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo MeteorFalls_B1F_2R_LandMonsInfo = {10, MeteorFalls_B1F_2R_LandMons};
+
+const struct WildPokemon MeteorFalls_B1F_2R_WaterMons [] =
+{
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {25, 35, SPECIES_LUNATONE},
+ {15, 25, SPECIES_LUNATONE},
+ {5, 15, SPECIES_LUNATONE},
+#else
+ {25, 35, SPECIES_SOLROCK},
+ {15, 25, SPECIES_SOLROCK},
+ {5, 15, SPECIES_SOLROCK},
+#endif
+};
+const struct WildPokemonInfo MeteorFalls_B1F_2R_WaterMonsInfo = {4, MeteorFalls_B1F_2R_WaterMons};
+
+const struct WildPokemon MeteorFalls_B1F_2R_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {30, 35, SPECIES_WHISCASH},
+ {35, 40, SPECIES_WHISCASH},
+ {40, 45, SPECIES_WHISCASH},
+};
+const struct WildPokemonInfo MeteorFalls_B1F_2R_FishingMonsInfo = {30, MeteorFalls_B1F_2R_FishingMons};
+
+const struct WildPokemon RusturfTunnel_LandMons [] =
+{
+ {6, 6, SPECIES_WHISMUR},
+ {7, 7, SPECIES_WHISMUR},
+ {6, 6, SPECIES_WHISMUR},
+ {6, 6, SPECIES_WHISMUR},
+ {7, 7, SPECIES_WHISMUR},
+ {7, 7, SPECIES_WHISMUR},
+ {5, 5, SPECIES_WHISMUR},
+ {8, 8, SPECIES_WHISMUR},
+ {5, 5, SPECIES_WHISMUR},
+ {8, 8, SPECIES_WHISMUR},
+ {5, 5, SPECIES_WHISMUR},
+ {8, 8, SPECIES_WHISMUR},
+};
+const struct WildPokemonInfo RusturfTunnel_LandMonsInfo = {10, RusturfTunnel_LandMons};
+
+const struct WildPokemon GraniteCave_1F_LandMons [] =
+{
+ {7, 7, SPECIES_ZUBAT},
+ {8, 8, SPECIES_MAKUHITA},
+ {7, 7, SPECIES_MAKUHITA},
+ {8, 8, SPECIES_ZUBAT},
+ {9, 9, SPECIES_MAKUHITA},
+ {8, 8, SPECIES_ABRA},
+ {10, 10, SPECIES_MAKUHITA},
+ {6, 6, SPECIES_MAKUHITA},
+ {7, 7, SPECIES_GEODUDE},
+ {8, 8, SPECIES_GEODUDE},
+ {6, 6, SPECIES_GEODUDE},
+ {9, 9, SPECIES_GEODUDE},
+};
+const struct WildPokemonInfo GraniteCave_1F_LandMonsInfo = {10, GraniteCave_1F_LandMons};
+
+const struct WildPokemon GraniteCave_B1F_LandMons [] =
+{
+ {9, 9, SPECIES_ZUBAT},
+ {10, 10, SPECIES_ARON},
+ {9, 9, SPECIES_ARON},
+ {11, 11, SPECIES_ARON},
+ {10, 10, SPECIES_ZUBAT},
+ {9, 9, SPECIES_ABRA},
+ {10, 10, SPECIES_MAKUHITA},
+ {11, 11, SPECIES_MAKUHITA},
+#ifdef SAPPHIRE
+ {10, 10, SPECIES_SABLEYE},
+ {10, 10, SPECIES_SABLEYE},
+ {9, 9, SPECIES_SABLEYE},
+ {11, 11, SPECIES_SABLEYE},
+#else
+ {10, 10, SPECIES_MAWILE},
+ {10, 10, SPECIES_MAWILE},
+ {9, 9, SPECIES_MAWILE},
+ {11, 11, SPECIES_MAWILE},
+#endif
+};
+const struct WildPokemonInfo GraniteCave_B1F_LandMonsInfo = {10, GraniteCave_B1F_LandMons};
+
+const struct WildPokemon GraniteCave_B2F_LandMons [] =
+{
+ {10, 10, SPECIES_ZUBAT},
+ {11, 11, SPECIES_ARON},
+ {10, 10, SPECIES_ARON},
+ {11, 11, SPECIES_ZUBAT},
+ {12, 12, SPECIES_ARON},
+ {10, 10, SPECIES_ABRA},
+#ifdef SAPPHIRE
+ {10, 10, SPECIES_SABLEYE},
+ {11, 11, SPECIES_SABLEYE},
+ {12, 12, SPECIES_SABLEYE},
+ {10, 10, SPECIES_SABLEYE},
+ {12, 12, SPECIES_SABLEYE},
+ {10, 10, SPECIES_SABLEYE},
+#else
+ {10, 10, SPECIES_MAWILE},
+ {11, 11, SPECIES_MAWILE},
+ {12, 12, SPECIES_MAWILE},
+ {10, 10, SPECIES_MAWILE},
+ {12, 12, SPECIES_MAWILE},
+ {10, 10, SPECIES_MAWILE},
+#endif
+};
+const struct WildPokemonInfo GraniteCave_B2F_LandMonsInfo = {10, GraniteCave_B2F_LandMons};
+
+const struct WildPokemon GraniteCave_B2F_RockSmashMons [] =
+{
+ {10, 15, SPECIES_GEODUDE},
+ {10, 20, SPECIES_NOSEPASS},
+ {5, 10, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+};
+const struct WildPokemonInfo GraniteCave_B2F_RockSmashMonsInfo = {20, GraniteCave_B2F_RockSmashMons};
+
+const struct WildPokemon GraniteCave_StevensRoom_LandMons [] =
+{
+ {7, 7, SPECIES_ZUBAT},
+ {8, 8, SPECIES_MAKUHITA},
+ {7, 7, SPECIES_MAKUHITA},
+ {8, 8, SPECIES_ZUBAT},
+ {9, 9, SPECIES_MAKUHITA},
+ {8, 8, SPECIES_ABRA},
+ {10, 10, SPECIES_MAKUHITA},
+ {6, 6, SPECIES_MAKUHITA},
+ {7, 7, SPECIES_ARON},
+ {8, 8, SPECIES_ARON},
+ {7, 7, SPECIES_ARON},
+ {8, 8, SPECIES_ARON},
+};
+const struct WildPokemonInfo GraniteCave_StevensRoom_LandMonsInfo = {10, GraniteCave_StevensRoom_LandMons};
+
+const struct WildPokemon PetalburgWoods_LandMons [] =
+{
+ {5, 5, SPECIES_ZIGZAGOON},
+ {5, 5, SPECIES_WURMPLE},
+ {5, 5, SPECIES_SHROOMISH},
+ {6, 6, SPECIES_ZIGZAGOON},
+ {5, 5, SPECIES_SILCOON},
+ {5, 5, SPECIES_CASCOON},
+ {6, 6, SPECIES_WURMPLE},
+ {6, 6, SPECIES_SHROOMISH},
+ {5, 5, SPECIES_TAILLOW},
+ {5, 5, SPECIES_SLAKOTH},
+ {6, 6, SPECIES_TAILLOW},
+ {6, 6, SPECIES_SLAKOTH},
+};
+const struct WildPokemonInfo PetalburgWoods_LandMonsInfo = {20, PetalburgWoods_LandMons};
+
+//Jagged Pass Pokemon are 2 levels higher on Sapphire
+#ifdef SAPPHIRE
+#define JAGGED_PASS_LEVEL_DIFF 2
+#else
+#define JAGGED_PASS_LEVEL_DIFF 0
+#endif
+
+const struct WildPokemon JaggedPass_LandMons [] =
+{
+ {19 + JAGGED_PASS_LEVEL_DIFF, 19 + JAGGED_PASS_LEVEL_DIFF, SPECIES_NUMEL},
+ {19 + JAGGED_PASS_LEVEL_DIFF, 19 + JAGGED_PASS_LEVEL_DIFF, SPECIES_NUMEL},
+ {19 + JAGGED_PASS_LEVEL_DIFF, 19 + JAGGED_PASS_LEVEL_DIFF, SPECIES_MACHOP},
+ {18 + JAGGED_PASS_LEVEL_DIFF, 18 + JAGGED_PASS_LEVEL_DIFF, SPECIES_NUMEL},
+ {18 + JAGGED_PASS_LEVEL_DIFF, 18 + JAGGED_PASS_LEVEL_DIFF, SPECIES_SPOINK},
+ {18 + JAGGED_PASS_LEVEL_DIFF, 18 + JAGGED_PASS_LEVEL_DIFF, SPECIES_MACHOP},
+ {19 + JAGGED_PASS_LEVEL_DIFF, 19 + JAGGED_PASS_LEVEL_DIFF, SPECIES_SPOINK},
+ {20 + JAGGED_PASS_LEVEL_DIFF, 20 + JAGGED_PASS_LEVEL_DIFF, SPECIES_MACHOP},
+ {20 + JAGGED_PASS_LEVEL_DIFF, 20 + JAGGED_PASS_LEVEL_DIFF, SPECIES_NUMEL},
+ {20 + JAGGED_PASS_LEVEL_DIFF, 20 + JAGGED_PASS_LEVEL_DIFF, SPECIES_SPOINK},
+ {20 + JAGGED_PASS_LEVEL_DIFF, 20 + JAGGED_PASS_LEVEL_DIFF, SPECIES_NUMEL},
+ {20 + JAGGED_PASS_LEVEL_DIFF, 20 + JAGGED_PASS_LEVEL_DIFF, SPECIES_SPOINK},
+};
+const struct WildPokemonInfo JaggedPass_LandMonsInfo = {20, JaggedPass_LandMons};
+
+const struct WildPokemon FieryPath_LandMons [] =
+{
+ {15, 15, SPECIES_NUMEL},
+#ifdef SAPPHIRE
+ {15, 15, SPECIES_GRIMER},
+#else
+ {15, 15, SPECIES_KOFFING},
+#endif
+ {16, 16, SPECIES_NUMEL},
+ {15, 15, SPECIES_MACHOP},
+ {15, 15, SPECIES_TORKOAL},
+ {15, 15, SPECIES_SLUGMA},
+#ifdef SAPPHIRE
+ {16, 16, SPECIES_GRIMER},
+#else
+ {16, 16, SPECIES_KOFFING},
+#endif
+ {16, 16, SPECIES_MACHOP},
+ {14, 14, SPECIES_TORKOAL},
+ {16, 16, SPECIES_TORKOAL},
+#ifdef SAPPHIRE
+ {14, 14, SPECIES_KOFFING},
+ {14, 14, SPECIES_KOFFING},
+#else
+ {14, 14, SPECIES_GRIMER},
+ {14, 14, SPECIES_GRIMER},
+#endif
+};
+const struct WildPokemonInfo FieryPath_LandMonsInfo = {10, FieryPath_LandMons};
+
+const struct WildPokemon MtPyre_1F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+#else
+ {27, 27, SPECIES_DUSKULL},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {23, 23, SPECIES_DUSKULL},
+ {22, 22, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+#endif
+};
+const struct WildPokemonInfo MtPyre_1F_LandMonsInfo = {10, MtPyre_1F_LandMons};
+
+const struct WildPokemon MtPyre_2F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+#else
+ {27, 27, SPECIES_DUSKULL},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {23, 23, SPECIES_DUSKULL},
+ {22, 22, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+#endif
+};
+const struct WildPokemonInfo MtPyre_2F_LandMonsInfo = {10, MtPyre_2F_LandMons};
+
+const struct WildPokemon MtPyre_3F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+#else
+ {27, 27, SPECIES_DUSKULL},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {23, 23, SPECIES_DUSKULL},
+ {22, 22, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+#endif
+};
+const struct WildPokemonInfo MtPyre_3F_LandMonsInfo = {10, MtPyre_3F_LandMons};
+
+const struct WildPokemon MtPyre_4F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {27, 27, SPECIES_DUSKULL},
+ {27, 27, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+#else
+ {27, 27, SPECIES_DUSKULL},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {23, 23, SPECIES_DUSKULL},
+ {22, 22, SPECIES_DUSKULL},
+ {27, 27, SPECIES_SHUPPET},
+ {27, 27, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+#endif
+};
+const struct WildPokemonInfo MtPyre_4F_LandMonsInfo = {10, MtPyre_4F_LandMons};
+
+const struct WildPokemon MtPyre_5F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {27, 27, SPECIES_DUSKULL},
+ {27, 27, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+#else
+ {27, 27, SPECIES_DUSKULL},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {23, 23, SPECIES_DUSKULL},
+ {22, 22, SPECIES_DUSKULL},
+ {27, 27, SPECIES_SHUPPET},
+ {27, 27, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+#endif
+};
+const struct WildPokemonInfo MtPyre_5F_LandMonsInfo = {10, MtPyre_5F_LandMons};
+
+const struct WildPokemon MtPyre_6F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {27, 27, SPECIES_DUSKULL},
+ {27, 27, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+#else
+ {27, 27, SPECIES_DUSKULL},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {23, 23, SPECIES_DUSKULL},
+ {22, 22, SPECIES_DUSKULL},
+ {27, 27, SPECIES_SHUPPET},
+ {27, 27, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+#endif
+};
+const struct WildPokemonInfo MtPyre_6F_LandMonsInfo = {10, MtPyre_6F_LandMons};
+
+const struct WildPokemon MtPyre_Exterior_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_SHUPPET},
+#else
+ {27, 27, SPECIES_DUSKULL},
+#endif
+ {27, 27, SPECIES_MEDITITE},
+#ifdef SAPPHIRE
+ {28, 28, SPECIES_SHUPPET},
+#else
+ {28, 28, SPECIES_DUSKULL},
+#endif
+ {29, 29, SPECIES_MEDITITE},
+#ifdef SAPPHIRE
+ {29, 29, SPECIES_SHUPPET},
+#else
+ {29, 29, SPECIES_DUSKULL},
+#endif
+ {27, 27, SPECIES_VULPIX},
+ {29, 29, SPECIES_VULPIX},
+ {25, 25, SPECIES_VULPIX},
+ {27, 27, SPECIES_WINGULL},
+ {27, 27, SPECIES_WINGULL},
+ {26, 26, SPECIES_WINGULL},
+ {28, 28, SPECIES_WINGULL},
+};
+const struct WildPokemonInfo MtPyre_Exterior_LandMonsInfo = {10, MtPyre_Exterior_LandMons};
+
+const struct WildPokemon MtPyre_Summit_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {28, 28, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {27, 27, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {30, 30, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {30, 30, SPECIES_DUSKULL},
+#else
+ {28, 28, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {27, 27, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {30, 30, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {30, 30, SPECIES_SHUPPET},
+#endif
+ {28, 28, SPECIES_CHIMECHO},
+ {28, 28, SPECIES_CHIMECHO},
+};
+const struct WildPokemonInfo MtPyre_Summit_LandMonsInfo = {10, MtPyre_Summit_LandMons};
+
+const struct WildPokemon SeafloorCavern_Entrance_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Entrance_WaterMonsInfo = {4, SeafloorCavern_Entrance_WaterMons};
+
+const struct WildPokemon SeafloorCavern_Entrance_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo SeafloorCavern_Entrance_FishingMonsInfo = {10, SeafloorCavern_Entrance_FishingMons};
+
+const struct WildPokemon SeafloorCavern_Room1_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room1_LandMonsInfo = {4, SeafloorCavern_Room1_LandMons};
+
+const struct WildPokemon SeafloorCavern_Room2_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room2_LandMonsInfo = {4, SeafloorCavern_Room2_LandMons};
+
+const struct WildPokemon SeafloorCavern_Room3_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room3_LandMonsInfo = {4, SeafloorCavern_Room3_LandMons};
+
+const struct WildPokemon SeafloorCavern_Room4_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room4_LandMonsInfo = {4, SeafloorCavern_Room4_LandMons};
+
+const struct WildPokemon SeafloorCavern_Room5_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room5_LandMonsInfo = {4, SeafloorCavern_Room5_LandMons};
+
+const struct WildPokemon SeafloorCavern_Room6_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room6_LandMonsInfo = {4, SeafloorCavern_Room6_LandMons};
+
+const struct WildPokemon SeafloorCavern_Room6_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room6_WaterMonsInfo = {4, SeafloorCavern_Room6_WaterMons};
+
+const struct WildPokemon SeafloorCavern_Room6_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo SeafloorCavern_Room6_FishingMonsInfo = {10, SeafloorCavern_Room6_FishingMons};
+
+const struct WildPokemon SeafloorCavern_Room7_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room7_LandMonsInfo = {4, SeafloorCavern_Room7_LandMons};
+
+const struct WildPokemon SeafloorCavern_Room7_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room7_WaterMonsInfo = {4, SeafloorCavern_Room7_WaterMons};
+
+const struct WildPokemon SeafloorCavern_Room7_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo SeafloorCavern_Room7_FishingMonsInfo = {10, SeafloorCavern_Room7_FishingMons};
+
+const struct WildPokemon SeafloorCavern_Room8_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room8_LandMonsInfo = {4, SeafloorCavern_Room8_LandMons};
+
+const struct WildPokemon CaveOfOrigin_Entrance_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo CaveOfOrigin_Entrance_LandMonsInfo = {4, CaveOfOrigin_Entrance_LandMons};
+
+const struct WildPokemon CaveOfOrigin_1F_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+#ifdef SAPPHIRE
+ {30, 30, SPECIES_SABLEYE},
+ {32, 32, SPECIES_SABLEYE},
+ {34, 34, SPECIES_SABLEYE},
+#else
+ {30, 30, SPECIES_MAWILE},
+ {32, 32, SPECIES_MAWILE},
+ {34, 34, SPECIES_MAWILE},
+#endif
+ {33, 33, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo CaveOfOrigin_1F_LandMonsInfo = {4, CaveOfOrigin_1F_LandMons};
+
+const struct WildPokemon CaveOfOrigin_B1F_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+#ifdef SAPPHIRE
+ {30, 30, SPECIES_SABLEYE},
+ {32, 32, SPECIES_SABLEYE},
+ {34, 34, SPECIES_SABLEYE},
+#else
+ {30, 30, SPECIES_MAWILE},
+ {32, 32, SPECIES_MAWILE},
+ {34, 34, SPECIES_MAWILE},
+#endif
+ {33, 33, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo CaveOfOrigin_B1F_LandMonsInfo = {4, CaveOfOrigin_B1F_LandMons};
+
+const struct WildPokemon CaveOfOrigin_B2F_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+#ifdef SAPPHIRE
+ {30, 30, SPECIES_SABLEYE},
+ {32, 32, SPECIES_SABLEYE},
+ {34, 34, SPECIES_SABLEYE},
+#else
+ {30, 30, SPECIES_MAWILE},
+ {32, 32, SPECIES_MAWILE},
+ {34, 34, SPECIES_MAWILE},
+#endif
+ {33, 33, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo CaveOfOrigin_B2F_LandMonsInfo = {4, CaveOfOrigin_B2F_LandMons};
+
+const struct WildPokemon CaveOfOrigin_B3F_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+#ifdef SAPPHIRE
+ {30, 30, SPECIES_SABLEYE},
+ {32, 32, SPECIES_SABLEYE},
+ {34, 34, SPECIES_SABLEYE},
+#else
+ {30, 30, SPECIES_MAWILE},
+ {32, 32, SPECIES_MAWILE},
+ {34, 34, SPECIES_MAWILE},
+#endif
+ {33, 33, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo CaveOfOrigin_B3F_LandMonsInfo = {4, CaveOfOrigin_B3F_LandMons};
+
+const struct WildPokemon VictoryRoad_1F_LandMons [] =
+{
+ {40, 40, SPECIES_GOLBAT},
+ {40, 40, SPECIES_HARIYAMA},
+ {40, 40, SPECIES_LAIRON},
+ {40, 40, SPECIES_LOUDRED},
+ {36, 36, SPECIES_ZUBAT},
+ {36, 36, SPECIES_MAKUHITA},
+ {38, 38, SPECIES_GOLBAT},
+ {38, 38, SPECIES_HARIYAMA},
+ {36, 36, SPECIES_ARON},
+ {36, 36, SPECIES_WHISMUR},
+ {36, 36, SPECIES_ARON},
+ {36, 36, SPECIES_WHISMUR},
+};
+const struct WildPokemonInfo VictoryRoad_1F_LandMonsInfo = {10, VictoryRoad_1F_LandMons};
+
+const struct WildPokemon VictoryRoad_B1F_LandMons [] =
+{
+ {40, 40, SPECIES_GOLBAT},
+ {40, 40, SPECIES_HARIYAMA},
+ {40, 40, SPECIES_LAIRON},
+ {40, 40, SPECIES_MEDICHAM},
+ {38, 38, SPECIES_GOLBAT},
+ {38, 38, SPECIES_HARIYAMA},
+ {42, 42, SPECIES_GOLBAT},
+ {42, 42, SPECIES_HARIYAMA},
+ {42, 42, SPECIES_LAIRON},
+ {38, 38, SPECIES_MEDITITE},
+ {42, 42, SPECIES_LAIRON},
+ {38, 38, SPECIES_MEDITITE},
+};
+const struct WildPokemonInfo VictoryRoad_B1F_LandMonsInfo = {10, VictoryRoad_B1F_LandMons};
+
+const struct WildPokemon VictoryRoad_B1F_RockSmashMons [] =
+{
+ {30, 40, SPECIES_GRAVELER},
+ {30, 40, SPECIES_GEODUDE},
+ {35, 40, SPECIES_GRAVELER},
+ {35, 40, SPECIES_GRAVELER},
+ {35, 40, SPECIES_GRAVELER},
+};
+const struct WildPokemonInfo VictoryRoad_B1F_RockSmashMonsInfo = {20, VictoryRoad_B1F_RockSmashMons};
+
+const struct WildPokemon VictoryRoad_B2F_LandMons [] =
+{
+ {40, 40, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {40, 40, SPECIES_SABLEYE},
+#else
+ {40, 40, SPECIES_MAWILE},
+#endif
+ {40, 40, SPECIES_LAIRON},
+ {40, 40, SPECIES_MEDICHAM},
+ {42, 42, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {42, 42, SPECIES_SABLEYE},
+#else
+ {42, 42, SPECIES_MAWILE},
+#endif
+ {44, 44, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {44, 44, SPECIES_SABLEYE},
+#else
+ {44, 44, SPECIES_MAWILE},
+#endif
+ {42, 42, SPECIES_LAIRON},
+ {42, 42, SPECIES_MEDICHAM},
+ {44, 44, SPECIES_LAIRON},
+ {44, 44, SPECIES_MEDICHAM},
+};
+const struct WildPokemonInfo VictoryRoad_B2F_LandMonsInfo = {10, VictoryRoad_B2F_LandMons};
+
+const struct WildPokemon VictoryRoad_B2F_WaterMons [] =
+{
+ {30, 35, SPECIES_GOLBAT},
+ {25, 30, SPECIES_GOLBAT},
+ {35, 40, SPECIES_GOLBAT},
+ {35, 40, SPECIES_GOLBAT},
+ {35, 40, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo VictoryRoad_B2F_WaterMonsInfo = {4, VictoryRoad_B2F_WaterMons};
+
+const struct WildPokemon VictoryRoad_B2F_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {30, 35, SPECIES_WHISCASH},
+ {35, 40, SPECIES_WHISCASH},
+ {40, 45, SPECIES_WHISCASH},
+};
+const struct WildPokemonInfo VictoryRoad_B2F_FishingMonsInfo = {30, VictoryRoad_B2F_FishingMons};
+
+const struct WildPokemon ShoalCave_LowTideEntranceRoom_LandMons [] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {32, 32, SPECIES_ZUBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+};
+const struct WildPokemonInfo ShoalCave_LowTideEntranceRoom_LandMonsInfo = {10, ShoalCave_LowTideEntranceRoom_LandMons};
+
+const struct WildPokemon ShoalCave_LowTideEntranceRoom_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {25, 30, SPECIES_SPHEAL},
+ {25, 30, SPECIES_SPHEAL},
+ {25, 35, SPECIES_SPHEAL},
+};
+const struct WildPokemonInfo ShoalCave_LowTideEntranceRoom_WaterMonsInfo = {4, ShoalCave_LowTideEntranceRoom_WaterMons};
+
+const struct WildPokemon ShoalCave_LowTideEntranceRoom_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo ShoalCave_LowTideEntranceRoom_FishingMonsInfo = {10, ShoalCave_LowTideEntranceRoom_FishingMons};
+
+const struct WildPokemon ShoalCave_LowTideInnerRoom_LandMons [] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {32, 32, SPECIES_ZUBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+};
+const struct WildPokemonInfo ShoalCave_LowTideInnerRoom_LandMonsInfo = {10, ShoalCave_LowTideInnerRoom_LandMons};
+
+const struct WildPokemon ShoalCave_LowTideInnerRoom_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {25, 30, SPECIES_SPHEAL},
+ {25, 30, SPECIES_SPHEAL},
+ {25, 35, SPECIES_SPHEAL},
+};
+const struct WildPokemonInfo ShoalCave_LowTideInnerRoom_WaterMonsInfo = {4, ShoalCave_LowTideInnerRoom_WaterMons};
+
+const struct WildPokemon ShoalCave_LowTideInnerRoom_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo ShoalCave_LowTideInnerRoom_FishingMonsInfo = {10, ShoalCave_LowTideInnerRoom_FishingMons};
+
+const struct WildPokemon ShoalCave_LowTideStairsRoom_LandMons [] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {32, 32, SPECIES_ZUBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+};
+const struct WildPokemonInfo ShoalCave_LowTideStairsRoom_LandMonsInfo = {10, ShoalCave_LowTideStairsRoom_LandMons};
+
+const struct WildPokemon ShoalCave_LowTideLowerRoom_LandMons [] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {32, 32, SPECIES_ZUBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+};
+const struct WildPokemonInfo ShoalCave_LowTideLowerRoom_LandMonsInfo = {10, ShoalCave_LowTideLowerRoom_LandMons};
+
+const struct WildPokemon ShoalCave_LowTideIceRoom_LandMons [] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {26, 26, SPECIES_SNORUNT},
+ {32, 32, SPECIES_SPHEAL},
+ {30, 30, SPECIES_GOLBAT},
+ {28, 28, SPECIES_SNORUNT},
+ {32, 32, SPECIES_GOLBAT},
+ {30, 30, SPECIES_SNORUNT},
+};
+const struct WildPokemonInfo ShoalCave_LowTideIceRoom_LandMonsInfo = {10, ShoalCave_LowTideIceRoom_LandMons};
+
+const struct WildPokemon NewMauville_Entrance_LandMons [] =
+{
+ {24, 24, SPECIES_VOLTORB},
+ {24, 24, SPECIES_MAGNEMITE},
+ {25, 25, SPECIES_VOLTORB},
+ {25, 25, SPECIES_MAGNEMITE},
+ {23, 23, SPECIES_VOLTORB},
+ {23, 23, SPECIES_MAGNEMITE},
+ {26, 26, SPECIES_VOLTORB},
+ {26, 26, SPECIES_MAGNEMITE},
+ {22, 22, SPECIES_VOLTORB},
+ {22, 22, SPECIES_MAGNEMITE},
+ {22, 22, SPECIES_VOLTORB},
+ {22, 22, SPECIES_MAGNEMITE},
+};
+const struct WildPokemonInfo NewMauville_Entrance_LandMonsInfo = {10, NewMauville_Entrance_LandMons};
+
+const struct WildPokemon NewMauville_Inside_LandMons [] =
+{
+ {24, 24, SPECIES_VOLTORB},
+ {24, 24, SPECIES_MAGNEMITE},
+ {25, 25, SPECIES_VOLTORB},
+ {25, 25, SPECIES_MAGNEMITE},
+ {23, 23, SPECIES_VOLTORB},
+ {23, 23, SPECIES_MAGNEMITE},
+ {26, 26, SPECIES_VOLTORB},
+ {26, 26, SPECIES_MAGNEMITE},
+ {22, 22, SPECIES_VOLTORB},
+ {22, 22, SPECIES_MAGNEMITE},
+ {26, 26, SPECIES_ELECTRODE},
+ {26, 26, SPECIES_MAGNETON},
+};
+const struct WildPokemonInfo NewMauville_Inside_LandMonsInfo = {10, NewMauville_Inside_LandMons};
+
+const struct WildPokemon AbandonedShip_Rooms_B1F_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACRUEL},
+};
+const struct WildPokemonInfo AbandonedShip_Rooms_B1F_WaterMonsInfo = {4, AbandonedShip_Rooms_B1F_WaterMons};
+
+const struct WildPokemon AbandonedShip_Rooms_B1F_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_TENTACOOL},
+ {25, 30, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACRUEL},
+ {25, 30, SPECIES_TENTACRUEL},
+ {20, 25, SPECIES_TENTACRUEL},
+};
+const struct WildPokemonInfo AbandonedShip_Rooms_B1F_FishingMonsInfo = {20, AbandonedShip_Rooms_B1F_FishingMons};
+
+const struct WildPokemon AbandonedShip_HiddenFloorCorridors_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACRUEL},
+};
+const struct WildPokemonInfo AbandonedShip_HiddenFloorCorridors_WaterMonsInfo = {4, AbandonedShip_HiddenFloorCorridors_WaterMons};
+
+const struct WildPokemon AbandonedShip_HiddenFloorCorridors_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_TENTACOOL},
+ {25, 30, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACRUEL},
+ {25, 30, SPECIES_TENTACRUEL},
+ {20, 25, SPECIES_TENTACRUEL},
+};
+const struct WildPokemonInfo AbandonedShip_HiddenFloorCorridors_FishingMonsInfo = {20, AbandonedShip_HiddenFloorCorridors_FishingMons};
+
+const struct WildPokemon SkyPillar_1F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {48, 48, SPECIES_SABLEYE},
+#else
+ {48, 48, SPECIES_MAWILE},
+#endif
+ {48, 48, SPECIES_GOLBAT},
+ {50, 50, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {50, 50, SPECIES_SABLEYE},
+#else
+ {50, 50, SPECIES_MAWILE},
+#endif
+ {48, 48, SPECIES_CLAYDOL},
+#ifdef SAPPHIRE
+ {48, 48, SPECIES_BANETTE},
+ {50, 50, SPECIES_BANETTE},
+#else
+ {48, 48, SPECIES_DUSCLOPS},
+ {50, 50, SPECIES_DUSCLOPS},
+#endif
+ {49, 49, SPECIES_CLAYDOL},
+ {47, 47, SPECIES_CLAYDOL},
+ {50, 50, SPECIES_CLAYDOL},
+ {47, 47, SPECIES_CLAYDOL},
+ {50, 50, SPECIES_CLAYDOL},
+};
+const struct WildPokemonInfo SkyPillar_1F_LandMonsInfo = {10, SkyPillar_1F_LandMons};
+
+const struct WildPokemon SkyPillar_3F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {51, 51, SPECIES_SABLEYE},
+#else
+ {51, 51, SPECIES_MAWILE},
+#endif
+ {51, 51, SPECIES_GOLBAT},
+ {53, 53, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {53, 53, SPECIES_SABLEYE},
+#else
+ {53, 53, SPECIES_MAWILE},
+#endif
+ {51, 51, SPECIES_CLAYDOL},
+#ifdef SAPPHIRE
+ {51, 51, SPECIES_BANETTE},
+ {53, 53, SPECIES_BANETTE},
+#else
+ {51, 51, SPECIES_DUSCLOPS},
+ {53, 53, SPECIES_DUSCLOPS},
+#endif
+ {52, 52, SPECIES_CLAYDOL},
+ {50, 50, SPECIES_CLAYDOL},
+ {53, 53, SPECIES_CLAYDOL},
+ {50, 50, SPECIES_CLAYDOL},
+ {53, 53, SPECIES_CLAYDOL},
+};
+const struct WildPokemonInfo SkyPillar_3F_LandMonsInfo = {10, SkyPillar_3F_LandMons};
+
+const struct WildPokemon SkyPillar_5F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {54, 54, SPECIES_SABLEYE},
+#else
+ {54, 54, SPECIES_MAWILE},
+#endif
+ {54, 54, SPECIES_GOLBAT},
+ {56, 56, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {56, 56, SPECIES_SABLEYE},
+#else
+ {56, 56, SPECIES_MAWILE},
+#endif
+ {54, 54, SPECIES_CLAYDOL},
+#ifdef SAPPHIRE
+ {54, 54, SPECIES_BANETTE},
+ {56, 56, SPECIES_BANETTE},
+#else
+ {54, 54, SPECIES_DUSCLOPS},
+ {56, 56, SPECIES_DUSCLOPS},
+#endif
+ {55, 55, SPECIES_CLAYDOL},
+ {56, 56, SPECIES_CLAYDOL},
+ {57, 57, SPECIES_ALTARIA},
+ {54, 54, SPECIES_ALTARIA},
+ {60, 60, SPECIES_ALTARIA},
+};
+const struct WildPokemonInfo SkyPillar_5F_LandMonsInfo = {10, SkyPillar_5F_LandMons};
+
+const struct WildPokemon Route101_LandMons [] =
+{
+ {2, 2, SPECIES_WURMPLE},
+ {2, 2, SPECIES_ZIGZAGOON},
+ {2, 2, SPECIES_WURMPLE},
+ {3, 3, SPECIES_WURMPLE},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_WURMPLE},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {2, 2, SPECIES_POOCHYENA},
+ {2, 2, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_POOCHYENA},
+};
+const struct WildPokemonInfo Route101_LandMonsInfo = {20, Route101_LandMons};
+
+const struct WildPokemon Route102_LandMons [] =
+{
+ {3, 3, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_WURMPLE},
+ {4, 4, SPECIES_ZIGZAGOON},
+ {4, 4, SPECIES_WURMPLE},
+#ifdef SAPPHIRE
+ {3, 3, SPECIES_LOTAD},
+ {4, 4, SPECIES_LOTAD},
+#else
+ {3, 3, SPECIES_SEEDOT},
+ {4, 4, SPECIES_SEEDOT},
+#endif
+ {3, 3, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_POOCHYENA},
+ {4, 4, SPECIES_POOCHYENA},
+ {4, 4, SPECIES_RALTS},
+ {4, 4, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route102_LandMonsInfo = {20, Route102_LandMons};
+
+const struct WildPokemon Route102_WaterMons [] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route102_WaterMonsInfo = {4, Route102_WaterMons};
+
+const struct WildPokemon Route102_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_CORPHISH},
+ {25, 30, SPECIES_CORPHISH},
+ {30, 35, SPECIES_CORPHISH},
+ {20, 25, SPECIES_CORPHISH},
+ {35, 40, SPECIES_CORPHISH},
+ {40, 45, SPECIES_CORPHISH},
+};
+const struct WildPokemonInfo Route102_FishingMonsInfo = {30, Route102_FishingMons};
+
+const struct WildPokemon Route103_LandMons [] =
+{
+ {2, 2, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {4, 4, SPECIES_ZIGZAGOON},
+ {2, 2, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_POOCHYENA},
+ {4, 4, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_WINGULL},
+ {3, 3, SPECIES_WINGULL},
+ {2, 2, SPECIES_WINGULL},
+ {4, 4, SPECIES_WINGULL},
+};
+const struct WildPokemonInfo Route103_LandMonsInfo = {20, Route103_LandMons};
+
+const struct WildPokemon Route103_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route103_WaterMonsInfo = {4, Route103_WaterMons};
+
+const struct WildPokemon Route103_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route103_FishingMonsInfo = {30, Route103_FishingMons};
+
+const struct WildPokemon Route104_LandMons [] =
+{
+ {4, 4, SPECIES_ZIGZAGOON},
+ {4, 4, SPECIES_WURMPLE},
+ {5, 5, SPECIES_ZIGZAGOON},
+ {5, 5, SPECIES_WURMPLE},
+ {4, 4, SPECIES_ZIGZAGOON},
+ {5, 5, SPECIES_ZIGZAGOON},
+ {4, 4, SPECIES_TAILLOW},
+ {5, 5, SPECIES_TAILLOW},
+ {4, 4, SPECIES_WINGULL},
+ {4, 4, SPECIES_WINGULL},
+ {3, 3, SPECIES_WINGULL},
+ {5, 5, SPECIES_WINGULL},
+};
+const struct WildPokemonInfo Route104_LandMonsInfo = {20, Route104_LandMons};
+
+const struct WildPokemon Route104_WaterMons [] =
+{
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route104_WaterMonsInfo = {4, Route104_WaterMons};
+
+const struct WildPokemon Route104_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {25, 30, SPECIES_MAGIKARP},
+ {30, 35, SPECIES_MAGIKARP},
+ {20, 25, SPECIES_MAGIKARP},
+ {35, 40, SPECIES_MAGIKARP},
+ {40, 45, SPECIES_MAGIKARP},
+};
+const struct WildPokemonInfo Route104_FishingMonsInfo = {30, Route104_FishingMons};
+
+const struct WildPokemon Route105_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route105_WaterMonsInfo = {4, Route105_WaterMons};
+
+const struct WildPokemon Route105_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route105_FishingMonsInfo = {30, Route105_FishingMons};
+
+const struct WildPokemon Route106_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route106_WaterMonsInfo = {4, Route106_WaterMons};
+
+const struct WildPokemon Route106_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route106_FishingMonsInfo = {30, Route106_FishingMons};
+
+const struct WildPokemon Route107_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route107_WaterMonsInfo = {4, Route107_WaterMons};
+
+const struct WildPokemon Route107_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route107_FishingMonsInfo = {30, Route107_FishingMons};
+
+const struct WildPokemon Route108_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route108_WaterMonsInfo = {4, Route108_WaterMons};
+
+const struct WildPokemon Route108_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route108_FishingMonsInfo = {30, Route108_FishingMons};
+
+const struct WildPokemon Route109_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route109_WaterMonsInfo = {4, Route109_WaterMons};
+
+const struct WildPokemon Route109_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route109_FishingMonsInfo = {30, Route109_FishingMons};
+
+const struct WildPokemon Route110_LandMons [] =
+{
+ {12, 12, SPECIES_ZIGZAGOON},
+ {12, 12, SPECIES_ELECTRIKE},
+ {12, 12, SPECIES_GULPIN},
+ {13, 13, SPECIES_ELECTRIKE},
+#ifdef SAPPHIRE
+ {13, 13, SPECIES_PLUSLE},
+#else
+ {13, 13, SPECIES_MINUN},
+#endif
+ {13, 13, SPECIES_ODDISH},
+#ifdef SAPPHIRE
+ {13, 13, SPECIES_PLUSLE},
+#else
+ {13, 13, SPECIES_MINUN},
+#endif
+ {13, 13, SPECIES_GULPIN},
+ {12, 12, SPECIES_WINGULL},
+ {12, 12, SPECIES_WINGULL},
+#ifdef SAPPHIRE
+ {12, 12, SPECIES_MINUN},
+ {13, 13, SPECIES_MINUN},
+#else
+ {12, 12, SPECIES_PLUSLE},
+ {13, 13, SPECIES_PLUSLE},
+#endif
+};
+const struct WildPokemonInfo Route110_LandMonsInfo = {20, Route110_LandMons};
+
+const struct WildPokemon Route110_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route110_WaterMonsInfo = {4, Route110_WaterMons};
+
+const struct WildPokemon Route110_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route110_FishingMonsInfo = {30, Route110_FishingMons};
+
+const struct WildPokemon Route111_LandMons [] =
+{
+ {20, 20, SPECIES_SANDSHREW},
+ {20, 20, SPECIES_TRAPINCH},
+ {21, 21, SPECIES_SANDSHREW},
+ {21, 21, SPECIES_TRAPINCH},
+ {19, 19, SPECIES_CACNEA},
+ {21, 21, SPECIES_CACNEA},
+ {19, 19, SPECIES_SANDSHREW},
+ {19, 19, SPECIES_TRAPINCH},
+ {20, 20, SPECIES_BALTOY},
+ {20, 20, SPECIES_BALTOY},
+ {22, 22, SPECIES_BALTOY},
+ {22, 22, SPECIES_BALTOY},
+};
+const struct WildPokemonInfo Route111_LandMonsInfo = {10, Route111_LandMons};
+
+const struct WildPokemon Route111_WaterMons [] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route111_WaterMonsInfo = {4, Route111_WaterMons};
+
+const struct WildPokemon Route111_RockSmashMons [] =
+{
+ {10, 15, SPECIES_GEODUDE},
+ {5, 10, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+};
+const struct WildPokemonInfo Route111_RockSmashMonsInfo = {20, Route111_RockSmashMons};
+
+const struct WildPokemon Route111_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {20, 25, SPECIES_BARBOACH},
+ {35, 40, SPECIES_BARBOACH},
+ {40, 45, SPECIES_BARBOACH},
+};
+const struct WildPokemonInfo Route111_FishingMonsInfo = {30, Route111_FishingMons};
+
+const struct WildPokemon Route112_LandMons [] =
+{
+ {15, 15, SPECIES_NUMEL},
+ {15, 15, SPECIES_NUMEL},
+ {15, 15, SPECIES_MACHOP},
+ {14, 14, SPECIES_NUMEL},
+ {14, 14, SPECIES_NUMEL},
+ {14, 14, SPECIES_MACHOP},
+ {16, 16, SPECIES_NUMEL},
+ {16, 16, SPECIES_MACHOP},
+ {16, 16, SPECIES_NUMEL},
+ {16, 16, SPECIES_NUMEL},
+ {16, 16, SPECIES_NUMEL},
+ {16, 16, SPECIES_NUMEL},
+};
+const struct WildPokemonInfo Route112_LandMonsInfo = {20, Route112_LandMons};
+
+const struct WildPokemon Route113_LandMons [] =
+{
+ {15, 15, SPECIES_SPINDA},
+ {15, 15, SPECIES_SPINDA},
+ {15, 15, SPECIES_SANDSHREW},
+ {14, 14, SPECIES_SPINDA},
+ {14, 14, SPECIES_SPINDA},
+ {14, 14, SPECIES_SANDSHREW},
+ {16, 16, SPECIES_SPINDA},
+ {16, 16, SPECIES_SANDSHREW},
+ {16, 16, SPECIES_SPINDA},
+ {16, 16, SPECIES_SKARMORY},
+ {16, 16, SPECIES_SPINDA},
+ {16, 16, SPECIES_SKARMORY},
+};
+const struct WildPokemonInfo Route113_LandMonsInfo = {20, Route113_LandMons};
+
+const struct WildPokemon Route114_LandMons [] =
+{
+ {16, 16, SPECIES_SWABLU},
+#ifdef SAPPHIRE
+ {16, 16, SPECIES_LOTAD},
+#else
+ {16, 16, SPECIES_SEEDOT},
+#endif
+ {17, 17, SPECIES_SWABLU},
+ {15, 15, SPECIES_SWABLU},
+#ifdef SAPPHIRE
+ {15, 15, SPECIES_LOTAD},
+ {16, 16, SPECIES_SEVIPER},
+ {16, 16, SPECIES_LOMBRE},
+ {18, 18, SPECIES_LOMBRE},
+ {17, 17, SPECIES_SEVIPER},
+ {15, 15, SPECIES_SEVIPER},
+ {17, 17, SPECIES_SEVIPER},
+#else
+ {15, 15, SPECIES_SEEDOT},
+ {16, 16, SPECIES_ZANGOOSE},
+ {16, 16, SPECIES_NUZLEAF},
+ {18, 18, SPECIES_NUZLEAF},
+ {17, 17, SPECIES_ZANGOOSE},
+ {15, 15, SPECIES_ZANGOOSE},
+ {17, 17, SPECIES_ZANGOOSE},
+#endif
+ {15, 15, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route114_LandMonsInfo = {20, Route114_LandMons};
+
+const struct WildPokemon Route114_WaterMons [] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route114_WaterMonsInfo = {4, Route114_WaterMons};
+
+const struct WildPokemon Route114_RockSmashMons [] =
+{
+ {10, 15, SPECIES_GEODUDE},
+ {5, 10, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+};
+const struct WildPokemonInfo Route114_RockSmashMonsInfo = {20, Route114_RockSmashMons};
+
+const struct WildPokemon Route114_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {20, 25, SPECIES_BARBOACH},
+ {35, 40, SPECIES_BARBOACH},
+ {40, 45, SPECIES_BARBOACH},
+};
+const struct WildPokemonInfo Route114_FishingMonsInfo = {30, Route114_FishingMons};
+
+const struct WildPokemon Route115_LandMons [] =
+{
+ {23, 23, SPECIES_SWABLU},
+ {23, 23, SPECIES_TAILLOW},
+ {25, 25, SPECIES_SWABLU},
+ {24, 24, SPECIES_TAILLOW},
+ {25, 25, SPECIES_TAILLOW},
+ {25, 25, SPECIES_SWELLOW},
+ {24, 24, SPECIES_JIGGLYPUFF},
+ {25, 25, SPECIES_JIGGLYPUFF},
+ {24, 24, SPECIES_WINGULL},
+ {24, 24, SPECIES_WINGULL},
+ {26, 26, SPECIES_WINGULL},
+ {25, 25, SPECIES_WINGULL},
+};
+const struct WildPokemonInfo Route115_LandMonsInfo = {20, Route115_LandMons};
+
+const struct WildPokemon Route115_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route115_WaterMonsInfo = {4, Route115_WaterMons};
+
+const struct WildPokemon Route115_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route115_FishingMonsInfo = {30, Route115_FishingMons};
+
+const struct WildPokemon Route116_LandMons [] =
+{
+ {6, 6, SPECIES_ZIGZAGOON},
+ {6, 6, SPECIES_WHISMUR},
+ {6, 6, SPECIES_NINCADA},
+ {7, 7, SPECIES_WHISMUR},
+ {7, 7, SPECIES_NINCADA},
+ {6, 6, SPECIES_TAILLOW},
+ {7, 7, SPECIES_TAILLOW},
+ {8, 8, SPECIES_TAILLOW},
+ {7, 7, SPECIES_ZIGZAGOON},
+ {8, 8, SPECIES_ZIGZAGOON},
+ {7, 7, SPECIES_SKITTY},
+ {8, 8, SPECIES_SKITTY},
+};
+const struct WildPokemonInfo Route116_LandMonsInfo = {20, Route116_LandMons};
+
+const struct WildPokemon Route117_LandMons [] =
+{
+ {13, 13, SPECIES_ZIGZAGOON},
+ {13, 13, SPECIES_ROSELIA},
+ {14, 14, SPECIES_ZIGZAGOON},
+ {14, 14, SPECIES_ROSELIA},
+ {13, 13, SPECIES_MARILL},
+ {13, 13, SPECIES_ODDISH},
+#ifdef SAPPHIRE
+ {13, 13, SPECIES_VOLBEAT},
+ {13, 13, SPECIES_VOLBEAT},
+ {14, 14, SPECIES_VOLBEAT},
+ {14, 14, SPECIES_VOLBEAT},
+ {13, 13, SPECIES_ILLUMISE},
+#else
+ {13, 13, SPECIES_ILLUMISE},
+ {13, 13, SPECIES_ILLUMISE},
+ {14, 14, SPECIES_ILLUMISE},
+ {14, 14, SPECIES_ILLUMISE},
+ {13, 13, SPECIES_VOLBEAT},
+#endif
+ {13, 13, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route117_LandMonsInfo = {20, Route117_LandMons};
+
+const struct WildPokemon Route117_WaterMons [] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route117_WaterMonsInfo = {4, Route117_WaterMons};
+
+const struct WildPokemon Route117_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_CORPHISH},
+ {25, 30, SPECIES_CORPHISH},
+ {30, 35, SPECIES_CORPHISH},
+ {20, 25, SPECIES_CORPHISH},
+ {35, 40, SPECIES_CORPHISH},
+ {40, 45, SPECIES_CORPHISH},
+};
+const struct WildPokemonInfo Route117_FishingMonsInfo = {30, Route117_FishingMons};
+
+const struct WildPokemon Route118_LandMons [] =
+{
+ {24, 24, SPECIES_ZIGZAGOON},
+ {24, 24, SPECIES_ELECTRIKE},
+ {26, 26, SPECIES_ZIGZAGOON},
+ {26, 26, SPECIES_ELECTRIKE},
+ {26, 26, SPECIES_LINOONE},
+ {26, 26, SPECIES_MANECTRIC},
+ {25, 25, SPECIES_WINGULL},
+ {25, 25, SPECIES_WINGULL},
+ {26, 26, SPECIES_WINGULL},
+ {26, 26, SPECIES_WINGULL},
+ {27, 27, SPECIES_WINGULL},
+ {25, 25, SPECIES_KECLEON},
+};
+const struct WildPokemonInfo Route118_LandMonsInfo = {20, Route118_LandMons};
+
+const struct WildPokemon Route118_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route118_WaterMonsInfo = {4, Route118_WaterMons};
+
+const struct WildPokemon Route118_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_CARVANHA},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_CARVANHA},
+ {20, 25, SPECIES_CARVANHA},
+ {35, 40, SPECIES_CARVANHA},
+ {40, 45, SPECIES_CARVANHA},
+};
+const struct WildPokemonInfo Route118_FishingMonsInfo = {30, Route118_FishingMons};
+
+const struct WildPokemon Route119_LandMons [] =
+{
+ {25, 25, SPECIES_ZIGZAGOON},
+ {25, 25, SPECIES_LINOONE},
+ {27, 27, SPECIES_ZIGZAGOON},
+ {25, 25, SPECIES_ODDISH},
+ {27, 27, SPECIES_LINOONE},
+ {26, 26, SPECIES_ODDISH},
+ {27, 27, SPECIES_ODDISH},
+ {24, 24, SPECIES_ODDISH},
+ {25, 25, SPECIES_TROPIUS},
+ {26, 26, SPECIES_TROPIUS},
+ {27, 27, SPECIES_TROPIUS},
+ {25, 25, SPECIES_KECLEON},
+};
+const struct WildPokemonInfo Route119_LandMonsInfo = {15, Route119_LandMons};
+
+const struct WildPokemon Route119_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route119_WaterMonsInfo = {4, Route119_WaterMons};
+
+const struct WildPokemon Route119_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_CARVANHA},
+ {25, 30, SPECIES_CARVANHA},
+ {30, 35, SPECIES_CARVANHA},
+ {20, 25, SPECIES_CARVANHA},
+ {35, 40, SPECIES_CARVANHA},
+ {40, 45, SPECIES_CARVANHA},
+};
+const struct WildPokemonInfo Route119_FishingMonsInfo = {30, Route119_FishingMons};
+
+const struct WildPokemon Route120_LandMons [] =
+{
+ {25, 25, SPECIES_ZIGZAGOON},
+ {25, 25, SPECIES_LINOONE},
+ {27, 27, SPECIES_LINOONE},
+ {25, 25, SPECIES_ODDISH},
+ {25, 25, SPECIES_MARILL},
+ {26, 26, SPECIES_ODDISH},
+ {27, 27, SPECIES_ODDISH},
+ {27, 27, SPECIES_MARILL},
+ {25, 25, SPECIES_ABSOL},
+ {27, 27, SPECIES_ABSOL},
+ {25, 25, SPECIES_KECLEON},
+ {25, 25, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route120_LandMonsInfo = {20, Route120_LandMons};
+
+const struct WildPokemon Route120_WaterMons [] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route120_WaterMonsInfo = {4, Route120_WaterMons};
+
+const struct WildPokemon Route120_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {20, 25, SPECIES_BARBOACH},
+ {35, 40, SPECIES_BARBOACH},
+ {40, 45, SPECIES_BARBOACH},
+};
+const struct WildPokemonInfo Route120_FishingMonsInfo = {30, Route120_FishingMons};
+
+const struct WildPokemon Route121_LandMons [] =
+{
+ {26, 26, SPECIES_ZIGZAGOON},
+#ifdef SAPPHIRE
+ {26, 26, SPECIES_SHUPPET},
+#else
+ {26, 26, SPECIES_DUSKULL},
+#endif
+ {26, 26, SPECIES_LINOONE},
+#ifdef SAPPHIRE
+ {28, 28, SPECIES_SHUPPET},
+#else
+ {28, 28, SPECIES_DUSKULL},
+#endif
+ {28, 28, SPECIES_LINOONE},
+ {26, 26, SPECIES_ODDISH},
+ {28, 28, SPECIES_ODDISH},
+ {28, 28, SPECIES_GLOOM},
+ {26, 26, SPECIES_WINGULL},
+ {27, 27, SPECIES_WINGULL},
+ {28, 28, SPECIES_WINGULL},
+ {25, 25, SPECIES_KECLEON},
+};
+const struct WildPokemonInfo Route121_LandMonsInfo = {20, Route121_LandMons};
+
+const struct WildPokemon Route121_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route121_WaterMonsInfo = {4, Route121_WaterMons};
+
+const struct WildPokemon Route121_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route121_FishingMonsInfo = {30, Route121_FishingMons};
+
+const struct WildPokemon Route122_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route122_WaterMonsInfo = {4, Route122_WaterMons};
+
+const struct WildPokemon Route122_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route122_FishingMonsInfo = {30, Route122_FishingMons};
+
+const struct WildPokemon Route123_LandMons [] =
+{
+ {26, 26, SPECIES_ZIGZAGOON},
+#ifdef SAPPHIRE
+ {26, 26, SPECIES_SHUPPET},
+#else
+ {26, 26, SPECIES_DUSKULL},
+#endif
+ {26, 26, SPECIES_LINOONE},
+#ifdef SAPPHIRE
+ {28, 28, SPECIES_SHUPPET},
+#else
+ {28, 28, SPECIES_DUSKULL},
+#endif
+ {28, 28, SPECIES_LINOONE},
+ {26, 26, SPECIES_ODDISH},
+ {28, 28, SPECIES_ODDISH},
+ {28, 28, SPECIES_GLOOM},
+ {26, 26, SPECIES_WINGULL},
+ {27, 27, SPECIES_WINGULL},
+ {28, 28, SPECIES_WINGULL},
+ {25, 25, SPECIES_KECLEON},
+};
+const struct WildPokemonInfo Route123_LandMonsInfo = {20, Route123_LandMons};
+
+const struct WildPokemon Route123_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route123_WaterMonsInfo = {4, Route123_WaterMons};
+
+const struct WildPokemon Route123_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route123_FishingMonsInfo = {30, Route123_FishingMons};
+
+const struct WildPokemon Route124_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route124_WaterMonsInfo = {4, Route124_WaterMons};
+
+const struct WildPokemon Route124_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route124_FishingMonsInfo = {30, Route124_FishingMons};
+
+const struct WildPokemon Route125_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route125_WaterMonsInfo = {4, Route125_WaterMons};
+
+const struct WildPokemon Route125_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route125_FishingMonsInfo = {30, Route125_FishingMons};
+
+const struct WildPokemon Route126_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route126_WaterMonsInfo = {4, Route126_WaterMons};
+
+const struct WildPokemon Route126_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route126_FishingMonsInfo = {30, Route126_FishingMons};
+
+const struct WildPokemon Route127_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route127_WaterMonsInfo = {4, Route127_WaterMons};
+
+const struct WildPokemon Route127_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route127_FishingMonsInfo = {30, Route127_FishingMons};
+
+const struct WildPokemon Route128_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route128_WaterMonsInfo = {4, Route128_WaterMons};
+
+const struct WildPokemon Route128_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_LUVDISC},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_LUVDISC},
+ {30, 35, SPECIES_WAILMER},
+ {30, 35, SPECIES_CORSOLA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route128_FishingMonsInfo = {30, Route128_FishingMons};
+
+const struct WildPokemon Route129_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+#ifdef SAPPHIRE
+ {25, 30, SPECIES_WAILORD},
+#else
+ {35, 40, SPECIES_WAILORD},
+#endif
+};
+const struct WildPokemonInfo Route129_WaterMonsInfo = {4, Route129_WaterMons};
+
+const struct WildPokemon Route129_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route129_FishingMonsInfo = {30, Route129_FishingMons};
+
+const struct WildPokemon Route130_LandMons [] =
+{
+ {30, 30, SPECIES_WYNAUT},
+ {35, 35, SPECIES_WYNAUT},
+ {25, 25, SPECIES_WYNAUT},
+ {40, 40, SPECIES_WYNAUT},
+ {20, 20, SPECIES_WYNAUT},
+ {45, 45, SPECIES_WYNAUT},
+ {15, 15, SPECIES_WYNAUT},
+ {50, 50, SPECIES_WYNAUT},
+ {10, 10, SPECIES_WYNAUT},
+ {5, 5, SPECIES_WYNAUT},
+ {10, 10, SPECIES_WYNAUT},
+ {5, 5, SPECIES_WYNAUT},
+};
+const struct WildPokemonInfo Route130_LandMonsInfo = {20, Route130_LandMons};
+
+const struct WildPokemon Route130_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route130_WaterMonsInfo = {4, Route130_WaterMons};
+
+const struct WildPokemon Route130_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route130_FishingMonsInfo = {30, Route130_FishingMons};
+
+const struct WildPokemon Route131_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route131_WaterMonsInfo = {4, Route131_WaterMons};
+
+const struct WildPokemon Route131_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route131_FishingMonsInfo = {30, Route131_FishingMons};
+
+const struct WildPokemon Route132_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route132_WaterMonsInfo = {4, Route132_WaterMons};
+
+const struct WildPokemon Route132_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_HORSEA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route132_FishingMonsInfo = {30, Route132_FishingMons};
+
+const struct WildPokemon Route133_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route133_WaterMonsInfo = {4, Route133_WaterMons};
+
+const struct WildPokemon Route133_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_HORSEA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route133_FishingMonsInfo = {30, Route133_FishingMons};
+
+const struct WildPokemon Route134_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route134_WaterMonsInfo = {4, Route134_WaterMons};
+
+const struct WildPokemon Route134_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_HORSEA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route134_FishingMonsInfo = {30, Route134_FishingMons};
+
+const struct WildPokemon SafariZone_Northwest_LandMons [] =
+{
+ {27, 27, SPECIES_RHYHORN},
+ {27, 27, SPECIES_ODDISH},
+ {29, 29, SPECIES_RHYHORN},
+ {29, 29, SPECIES_ODDISH},
+ {27, 27, SPECIES_DODUO},
+ {29, 29, SPECIES_GLOOM},
+ {31, 31, SPECIES_GLOOM},
+ {29, 29, SPECIES_DODUO},
+ {29, 29, SPECIES_DODRIO},
+ {27, 27, SPECIES_PINSIR},
+ {31, 31, SPECIES_DODRIO},
+ {29, 29, SPECIES_PINSIR},
+};
+const struct WildPokemonInfo SafariZone_Northwest_LandMonsInfo = {25, SafariZone_Northwest_LandMons};
+
+const struct WildPokemon SafariZone_Northwest_WaterMons [] =
+{
+ {20, 30, SPECIES_PSYDUCK},
+ {20, 30, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_GOLDUCK},
+ {25, 40, SPECIES_GOLDUCK},
+};
+const struct WildPokemonInfo SafariZone_Northwest_WaterMonsInfo = {9, SafariZone_Northwest_WaterMons};
+
+const struct WildPokemon SafariZone_Northwest_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 25, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_GOLDEEN},
+ {25, 30, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_SEAKING},
+ {35, 40, SPECIES_SEAKING},
+ {25, 30, SPECIES_SEAKING},
+};
+const struct WildPokemonInfo SafariZone_Northwest_FishingMonsInfo = {35, SafariZone_Northwest_FishingMons};
+
+const struct WildPokemon SafariZone_Northeast_LandMons [] =
+{
+ {27, 27, SPECIES_PHANPY},
+ {27, 27, SPECIES_ODDISH},
+ {29, 29, SPECIES_PHANPY},
+ {29, 29, SPECIES_ODDISH},
+ {27, 27, SPECIES_NATU},
+ {29, 29, SPECIES_GLOOM},
+ {31, 31, SPECIES_GLOOM},
+ {29, 29, SPECIES_NATU},
+ {29, 29, SPECIES_XATU},
+ {27, 27, SPECIES_HERACROSS},
+ {31, 31, SPECIES_XATU},
+ {29, 29, SPECIES_HERACROSS},
+};
+const struct WildPokemonInfo SafariZone_Northeast_LandMonsInfo = {25, SafariZone_Northeast_LandMons};
+
+const struct WildPokemon SafariZone_Northeast_RockSmashMons [] =
+{
+ {10, 15, SPECIES_GEODUDE},
+ {5, 10, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {20, 25, SPECIES_GEODUDE},
+ {25, 30, SPECIES_GEODUDE},
+};
+const struct WildPokemonInfo SafariZone_Northeast_RockSmashMonsInfo = {25, SafariZone_Northeast_RockSmashMons};
+
+const struct WildPokemon SafariZone_Southwest_LandMons [] =
+{
+ {25, 25, SPECIES_ODDISH},
+ {27, 27, SPECIES_ODDISH},
+ {25, 25, SPECIES_GIRAFARIG},
+ {27, 27, SPECIES_GIRAFARIG},
+ {25, 25, SPECIES_NATU},
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_DODUO},
+#else
+ {25, 25, SPECIES_DODUO},
+#endif
+ {25, 25, SPECIES_GLOOM},
+ {27, 27, SPECIES_WOBBUFFET},
+ {25, 25, SPECIES_PIKACHU},
+ {27, 27, SPECIES_WOBBUFFET},
+ {27, 27, SPECIES_PIKACHU},
+ {29, 29, SPECIES_WOBBUFFET},
+};
+const struct WildPokemonInfo SafariZone_Southwest_LandMonsInfo = {25, SafariZone_Southwest_LandMons};
+
+const struct WildPokemon SafariZone_Southwest_WaterMons [] =
+{
+ {20, 30, SPECIES_PSYDUCK},
+ {20, 30, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_PSYDUCK},
+};
+const struct WildPokemonInfo SafariZone_Southwest_WaterMonsInfo = {9, SafariZone_Southwest_WaterMons};
+
+const struct WildPokemon SafariZone_Southwest_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 25, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_GOLDEEN},
+ {25, 30, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_SEAKING},
+ {35, 40, SPECIES_SEAKING},
+ {25, 30, SPECIES_SEAKING},
+};
+const struct WildPokemonInfo SafariZone_Southwest_FishingMonsInfo = {35, SafariZone_Southwest_FishingMons};
+
+const struct WildPokemon SafariZone_Southeast_LandMons [] =
+{
+ {25, 25, SPECIES_ODDISH},
+ {27, 27, SPECIES_ODDISH},
+ {25, 25, SPECIES_GIRAFARIG},
+ {27, 27, SPECIES_GIRAFARIG},
+ {25, 25, SPECIES_NATU},
+ {25, 25, SPECIES_DODUO},
+ {25, 25, SPECIES_GLOOM},
+ {27, 27, SPECIES_WOBBUFFET},
+ {25, 25, SPECIES_PIKACHU},
+ {27, 27, SPECIES_WOBBUFFET},
+ {27, 27, SPECIES_PIKACHU},
+ {29, 29, SPECIES_WOBBUFFET},
+};
+const struct WildPokemonInfo SafariZone_Southeast_LandMonsInfo = {25, SafariZone_Southeast_LandMons};
+
+const struct WildPokemon DewfordTown_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo DewfordTown_WaterMonsInfo = {4, DewfordTown_WaterMons};
+
+const struct WildPokemon DewfordTown_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo DewfordTown_FishingMonsInfo = {10, DewfordTown_FishingMons};
+
+const struct WildPokemon PacifidlogTown_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo PacifidlogTown_WaterMonsInfo = {4, PacifidlogTown_WaterMons};
+
+const struct WildPokemon PacifidlogTown_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo PacifidlogTown_FishingMonsInfo = {10, PacifidlogTown_FishingMons};
+
+const struct WildPokemon Underwater1_WaterMons [] =
+{
+ {20, 30, SPECIES_CLAMPERL},
+ {20, 30, SPECIES_CHINCHOU},
+ {30, 35, SPECIES_CLAMPERL},
+ {30, 35, SPECIES_RELICANTH},
+ {30, 35, SPECIES_RELICANTH},
+};
+const struct WildPokemonInfo Underwater1_WaterMonsInfo = {4, Underwater1_WaterMons};
+
+const struct WildPokemon Underwater2_WaterMons [] =
+{
+ {20, 30, SPECIES_CLAMPERL},
+ {20, 30, SPECIES_CHINCHOU},
+ {30, 35, SPECIES_CLAMPERL},
+ {30, 35, SPECIES_RELICANTH},
+ {30, 35, SPECIES_RELICANTH},
+};
+const struct WildPokemonInfo Underwater2_WaterMonsInfo = {4, Underwater2_WaterMons};
+
+
extern u16 gRoute119WaterTileData[];
extern struct WildPokemonHeader gWildMonHeaders[];
extern struct Pokemon gEnemyParty[6];
@@ -234,7 +3119,7 @@ static u8 ChooseWildMonIndex_Fishing(u8 rod)
return wildMonIndex;
}
-static u8 ChooseWildMonLevel(struct WildPokemon *wildPokemon)
+static u8 ChooseWildMonLevel(const struct WildPokemon *wildPokemon)
{
u8 min;
u8 max;
diff --git a/tools/scaninc/Makefile b/tools/scaninc/Makefile
index 71c4389ef..c408e4a6e 100644
--- a/tools/scaninc/Makefile
+++ b/tools/scaninc/Makefile
@@ -1,6 +1,6 @@
CXX = g++
-CXXFLAGS = -Wall -std=c++11 -O2
+CXXFLAGS = -Wall -std=c++14 -O2
SRCS = scaninc.cpp c_file.cpp asm_file.cpp
diff --git a/tools/scaninc/c_file.cpp b/tools/scaninc/c_file.cpp
index 4af741f6e..970fbe135 100644
--- a/tools/scaninc/c_file.cpp
+++ b/tools/scaninc/c_file.cpp
@@ -202,9 +202,9 @@ void CFile::SkipWhitespace()
bool CFile::CheckIdentifier(const std::string& ident)
{
- int i;
+ unsigned int i;
- for (i = 0; (unsigned)i < ident.length() && m_pos + i < m_size; i++)
+ for (i = 0; i < ident.length() && m_pos + i < (unsigned)m_size; i++)
if (ident[i] != m_buffer[m_pos + i])
return false;
diff --git a/tools/scaninc/c_file.h b/tools/scaninc/c_file.h
index fcd327d28..2503acac1 100644
--- a/tools/scaninc/c_file.h
+++ b/tools/scaninc/c_file.h
@@ -42,11 +42,11 @@ private:
std::string m_path;
std::set<std::string> m_incbins;
- void CFile::RemoveComments();
+ void RemoveComments();
bool ConsumeHorizontalWhitespace();
bool ConsumeNewline();
void SkipWhitespace();
- std::unique_ptr<unsigned char[]> CFile::ReadWholeFile(const std::string& path, int& size);
+ std::unique_ptr<unsigned char[]> ReadWholeFile(const std::string& path, int& size);
bool CheckIdentifier(const std::string& ident);
void CheckIncbin();
};