summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiegoisawesome <diego@domoreaweso.me>2017-10-01 14:48:29 -0500
committerDiegoisawesome <diego@domoreaweso.me>2017-10-01 14:48:29 -0500
commitba758afc1486b6cfb262d2fa96bbe9efd6c1720c (patch)
tree44e91e096a0643b473cc1444007fa0c3108c3def
parent8982501b7860b97cd659262cbb14f375ca07b54a (diff)
Extract baseroms from and combine fldeff_emotion and trainer_see
Also extract from bike
-rw-r--r--asm/fldeff_emotion.s328
-rw-r--r--asm/trainer_see.s328
-rw-r--r--data/bike.s47
-rw-r--r--data/cable_club.s9
-rw-r--r--data/fldeff_emotion.s11
-rw-r--r--data/strings.s8
-rw-r--r--data/trainer_see.s83
-rw-r--r--graphics/misc/emotion_exclamation.pngbin0 -> 108 bytes
-rw-r--r--graphics/misc/emotion_heart.pngbin0 -> 126 bytes
-rw-r--r--graphics/misc/emotion_question.pngbin0 -> 117 bytes
-rw-r--r--ld_script.txt2
11 files changed, 452 insertions, 364 deletions
diff --git a/asm/fldeff_emotion.s b/asm/fldeff_emotion.s
deleted file mode 100644
index 37096a438..000000000
--- a/asm/fldeff_emotion.s
+++ /dev/null
@@ -1,328 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start oei_exclamation_mark
-oei_exclamation_mark: @ 80B4620
- push {lr}
- ldr r0, =gUnknown_085507B4
- movs r1, 0
- movs r2, 0
- movs r3, 0x53
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080B4648
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r1, 0
- movs r2, 0
- bl sub_80B46D8
-_080B4648:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end oei_exclamation_mark
-
- thumb_func_start sub_80B4658
-sub_80B4658: @ 80B4658
- push {lr}
- ldr r0, =gUnknown_085507B4
- movs r1, 0
- movs r2, 0
- movs r3, 0x52
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080B4680
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r1, 0x21
- movs r2, 0x1
- bl sub_80B46D8
-_080B4680:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B4658
-
- thumb_func_start sub_80B4690
-sub_80B4690: @ 80B4690
- push {r4,lr}
- ldr r0, =gUnknown_085507CC
- movs r1, 0
- movs r2, 0
- movs r3, 0x52
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _080B46C6
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, =gSprites
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x2E
- movs r2, 0
- bl sub_80B46D8
- ldrb r1, [r4, 0x5]
- movs r0, 0xF
- ands r0, r1
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r4, 0x5]
-_080B46C6:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B4690
-
- thumb_func_start sub_80B46D8
-@ void sub_80B46D8(struct obj *object, s16 a2, u8 a3)
-sub_80B46D8: @ 80B46D8
- push {r4,lr}
- lsls r2, 24
- lsrs r2, 24
- ldrb r4, [r0, 0x5]
- movs r3, 0xD
- negs r3, r3
- ands r3, r4
- movs r4, 0x4
- orrs r3, r4
- strb r3, [r0, 0x5]
- movs r3, 0x3E
- adds r3, r0
- mov r12, r3
- ldrb r3, [r3]
- movs r4, 0x2
- orrs r3, r4
- mov r4, r12
- strb r3, [r4]
- ldr r4, =gFieldEffectSpawnParams
- ldr r3, [r4]
- strh r3, [r0, 0x2E]
- ldr r3, [r4, 0x4]
- strh r3, [r0, 0x30]
- ldr r3, [r4, 0x8]
- strh r3, [r0, 0x32]
- ldr r3, =0x0000fffb
- strh r3, [r0, 0x34]
- strh r1, [r0, 0x3C]
- adds r1, r2, 0
- bl StartSpriteAnim
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B46D8
-
- thumb_func_start objc_exclamation_mark_probably
-objc_exclamation_mark_probably: @ 80B4724
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x32]
- lsls r2, 24
- lsrs r2, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _080B4756
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080B4764
-_080B4756:
- ldrh r1, [r4, 0x3C]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldEffectStop
- b _080B47B2
-_080B4764:
- ldr r2, =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, =gSprites
- adds r1, r0
- ldrh r3, [r4, 0x34]
- ldrh r0, [r4, 0x36]
- adds r2, r3, r0
- strh r2, [r4, 0x36]
- ldrh r0, [r1, 0x20]
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x22]
- subs r0, 0x10
- strh r0, [r4, 0x22]
- ldrh r0, [r1, 0x24]
- strh r0, [r4, 0x24]
- ldrh r0, [r1, 0x26]
- adds r0, r2
- strh r0, [r4, 0x26]
- lsls r2, 16
- asrs r2, 16
- cmp r2, 0
- beq _080B47B0
- adds r0, r3, 0x1
- strh r0, [r4, 0x34]
- b _080B47B2
- .pool
-_080B47B0:
- strh r2, [r4, 0x34]
-_080B47B2:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end objc_exclamation_mark_probably
-
- thumb_func_start sub_80B47BC
-sub_80B47BC: @ 80B47BC
- push {lr}
- ldr r0, =gUnknown_02038BFC
- ldrb r0, [r0]
- cmp r0, 0
- beq _080B47D4
- ldr r0, =gUnknown_03006090
- ldrb r0, [r0, 0xC]
- b _080B47D8
- .pool
-_080B47D4:
- ldr r0, =gUnknown_03006090
- ldrb r0, [r0]
-_080B47D8:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B47BC
-
- thumb_func_start sub_80B47E0
-sub_80B47E0: @ 80B47E0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _080B47EE
- movs r0, 0
- b _080B4800
-_080B47EE:
- cmp r0, 0
- beq _080B47FC
- ldr r0, =gUnknown_03006090
- ldrb r0, [r0, 0xC]
- b _080B4800
- .pool
-_080B47FC:
- ldr r0, =gUnknown_03006090
- ldrb r0, [r0]
-_080B4800:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B47E0
-
- thumb_func_start sub_80B4808
-sub_80B4808: @ 80B4808
- push {lr}
- ldr r0, =gUnknown_030060AC
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080B4870
- ldr r2, =gUnknown_03006090
- ldr r0, =gUnknown_03006080
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gMapObjects
- adds r0, r1
- ldrb r0, [r0, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetOppositeDirection
- lsls r0, 24
- lsrs r0, 24
- bl GetFaceDirectionAnimId
- ldr r3, =gUnknown_03006084
- strb r0, [r3]
- movs r0, 0xFE
- strb r0, [r3, 0x1]
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- movs r0, 0xFF
- bl exec_movement
- b _080B489E
- .pool
-_080B4870:
- ldr r0, =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gMapObjects
- adds r0, r1
- ldrb r0, [r0, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- ldr r3, =gUnknown_03006084
- strb r0, [r3]
- movs r0, 0xFE
- strb r0, [r3, 0x1]
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- movs r0, 0xFF
- bl exec_movement
-_080B489E:
- movs r0, 0xFF
- bl sub_809BE48
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B4808
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/trainer_see.s b/asm/trainer_see.s
index d57ad1815..d638498ee 100644
--- a/asm/trainer_see.s
+++ b/asm/trainer_see.s
@@ -267,7 +267,7 @@ CheckIfTrainerCanApproachPlayer: @ 80B3DF0
mov r8, r4
cmp r0, 0x1
bne _080B3E50
- ldr r1, =gUnknown_0855072C
+ ldr r1, =gIsTrainerInRange
ldrb r0, [r7, 0x18]
lsls r0, 28
lsrs r0, 26
@@ -300,7 +300,7 @@ _080B3E4C:
_080B3E50:
movs r5, 0
_080B3E52:
- ldr r0, =gUnknown_0855072C
+ ldr r0, =gIsTrainerInRange
lsls r4, r5, 2
adds r4, r0
ldrb r1, [r7, 0x1D]
@@ -702,7 +702,7 @@ c3_8081EDC: @ 80B4118
b _080B416C
.pool
_080B4150:
- ldr r7, =gUnknown_0855073C
+ ldr r7, =gTrainerSeeFuncList
_080B4152:
movs r1, 0x8
ldrsh r0, [r4, r1]
@@ -1186,7 +1186,7 @@ sub_80B44C8: @ 80B44C8
adds r0, 0x1
strh r0, [r4, 0x16]
_080B44FA:
- ldr r1, =gUnknown_0855076C
+ ldr r1, =gTrainerSeeFuncList2
movs r2, 0x8
ldrsh r0, [r4, r2]
lsls r0, 2
@@ -1322,4 +1322,324 @@ _080B4616:
.pool
thumb_func_end sub_80B45D0
+ thumb_func_start oei_exclamation_mark
+oei_exclamation_mark: @ 80B4620
+ push {lr}
+ ldr r0, =gSpriteTemplate_85507B4
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x53
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _080B4648
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, =gSprites
+ adds r0, r1
+ movs r1, 0
+ movs r2, 0
+ bl sub_80B46D8
+_080B4648:
+ movs r0, 0
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end oei_exclamation_mark
+
+ thumb_func_start sub_80B4658
+sub_80B4658: @ 80B4658
+ push {lr}
+ ldr r0, =gSpriteTemplate_85507B4
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x52
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _080B4680
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, =gSprites
+ adds r0, r1
+ movs r1, 0x21
+ movs r2, 0x1
+ bl sub_80B46D8
+_080B4680:
+ movs r0, 0
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80B4658
+
+ thumb_func_start sub_80B4690
+sub_80B4690: @ 80B4690
+ push {r4,lr}
+ ldr r0, =gSpriteTemplate_85507CC
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x52
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _080B46C6
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, =gSprites
+ adds r4, r0
+ adds r0, r4, 0
+ movs r1, 0x2E
+ movs r2, 0
+ bl sub_80B46D8
+ ldrb r1, [r4, 0x5]
+ movs r0, 0xF
+ ands r0, r1
+ movs r1, 0x20
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+_080B46C6:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80B4690
+
+ thumb_func_start sub_80B46D8
+@ void sub_80B46D8(struct obj *object, s16 a2, u8 a3)
+sub_80B46D8: @ 80B46D8
+ push {r4,lr}
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r4, [r0, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ ands r3, r4
+ movs r4, 0x4
+ orrs r3, r4
+ strb r3, [r0, 0x5]
+ movs r3, 0x3E
+ adds r3, r0
+ mov r12, r3
+ ldrb r3, [r3]
+ movs r4, 0x2
+ orrs r3, r4
+ mov r4, r12
+ strb r3, [r4]
+ ldr r4, =gFieldEffectSpawnParams
+ ldr r3, [r4]
+ strh r3, [r0, 0x2E]
+ ldr r3, [r4, 0x4]
+ strh r3, [r0, 0x30]
+ ldr r3, [r4, 0x8]
+ strh r3, [r0, 0x32]
+ ldr r3, =0x0000fffb
+ strh r3, [r0, 0x34]
+ strh r1, [r0, 0x3C]
+ adds r1, r2, 0
+ bl StartSpriteAnim
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80B46D8
+
+ thumb_func_start objc_exclamation_mark_probably
+objc_exclamation_mark_probably: @ 80B4724
+ push {r4,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ ldrh r2, [r4, 0x32]
+ lsls r2, 24
+ lsrs r2, 24
+ mov r3, sp
+ bl TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B4756
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080B4764
+_080B4756:
+ ldrh r1, [r4, 0x3C]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldEffectStop
+ b _080B47B2
+_080B4764:
+ ldr r2, =gMapObjects
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x4]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, =gSprites
+ adds r1, r0
+ ldrh r3, [r4, 0x34]
+ ldrh r0, [r4, 0x36]
+ adds r2, r3, r0
+ strh r2, [r4, 0x36]
+ ldrh r0, [r1, 0x20]
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x22]
+ subs r0, 0x10
+ strh r0, [r4, 0x22]
+ ldrh r0, [r1, 0x24]
+ strh r0, [r4, 0x24]
+ ldrh r0, [r1, 0x26]
+ adds r0, r2
+ strh r0, [r4, 0x26]
+ lsls r2, 16
+ asrs r2, 16
+ cmp r2, 0
+ beq _080B47B0
+ adds r0, r3, 0x1
+ strh r0, [r4, 0x34]
+ b _080B47B2
+ .pool
+_080B47B0:
+ strh r2, [r4, 0x34]
+_080B47B2:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end objc_exclamation_mark_probably
+
+ thumb_func_start sub_80B47BC
+sub_80B47BC: @ 80B47BC
+ push {lr}
+ ldr r0, =gUnknown_02038BFC
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _080B47D4
+ ldr r0, =gUnknown_03006090
+ ldrb r0, [r0, 0xC]
+ b _080B47D8
+ .pool
+_080B47D4:
+ ldr r0, =gUnknown_03006090
+ ldrb r0, [r0]
+_080B47D8:
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80B47BC
+
+ thumb_func_start sub_80B47E0
+sub_80B47E0: @ 80B47E0
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bls _080B47EE
+ movs r0, 0
+ b _080B4800
+_080B47EE:
+ cmp r0, 0
+ beq _080B47FC
+ ldr r0, =gUnknown_03006090
+ ldrb r0, [r0, 0xC]
+ b _080B4800
+ .pool
+_080B47FC:
+ ldr r0, =gUnknown_03006090
+ ldrb r0, [r0]
+_080B4800:
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80B47E0
+
+ thumb_func_start sub_80B4808
+sub_80B4808: @ 80B4808
+ push {lr}
+ ldr r0, =gUnknown_030060AC
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _080B4870
+ ldr r2, =gUnknown_03006090
+ ldr r0, =gUnknown_03006080
+ ldrh r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, =gMapObjects
+ adds r0, r1
+ ldrb r0, [r0, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetOppositeDirection
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetFaceDirectionAnimId
+ ldr r3, =gUnknown_03006084
+ strb r0, [r3]
+ movs r0, 0xFE
+ strb r0, [r3, 0x1]
+ ldr r0, =gSaveBlock1Ptr
+ ldr r0, [r0]
+ ldrb r1, [r0, 0x5]
+ ldrb r2, [r0, 0x4]
+ movs r0, 0xFF
+ bl exec_movement
+ b _080B489E
+ .pool
+_080B4870:
+ ldr r0, =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, =gMapObjects
+ adds r0, r1
+ ldrb r0, [r0, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetFaceDirectionAnimId
+ ldr r3, =gUnknown_03006084
+ strb r0, [r3]
+ movs r0, 0xFE
+ strb r0, [r3, 0x1]
+ ldr r0, =gSaveBlock1Ptr
+ ldr r0, [r0]
+ ldrb r1, [r0, 0x5]
+ ldrb r2, [r0, 0x4]
+ movs r0, 0xFF
+ bl exec_movement
+_080B489E:
+ movs r0, 0xFF
+ bl sub_809BE48
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80B4808
+
.align 2, 0 @ Don't pad with nop.
diff --git a/data/bike.s b/data/bike.s
index 26bcc8745..ffb33e52b 100644
--- a/data/bike.s
+++ b/data/bike.s
@@ -5,19 +5,54 @@
.align 2, 0
gUnknown_0859744C:: @ 859744C
- .incbin "baserom.gba", 0x59744c, 0x10
+ .4byte sub_8119224
+ .4byte sub_8119238
+ .4byte sub_8119280
+ .4byte sub_8119344
+ .align 2
gUnknown_0859745C:: @ 859745C
- .incbin "baserom.gba", 0x59745c, 0xc
+ .4byte PlayerGoSpeed0
+ .4byte PlayerGoSpeed1
+ .4byte PlayerGoSpeed3
+ .align 2
gUnknown_08597468:: @ 8597468
- .incbin "baserom.gba", 0x597468, 0x34
+ .4byte sub_81197E4
+ .4byte sub_81197F4
+ .4byte sub_8119830
+ .4byte sub_81198C0
+ .4byte sub_81198FC
+ .4byte sub_8119938
+ .4byte sub_8119974
+ .4byte sub_81199B0
+ .4byte sub_8119A24
+ .4byte sub_8119A94
+ .4byte sub_8119AA4
+ .4byte sub_8119B34
+ .4byte sub_8119BC4
+ .align 2
gUnknown_0859749C:: @ 859749C
- .incbin "baserom.gba", 0x59749c, 0x1c
+ .4byte CheckMovementInputAcroBikeNormal
+ .4byte CheckMovementInputAcroBikeChangingDirection
+ .4byte CheckMovementInputAcroBikeStandingWheelie
+ .4byte CheckMovementInputAcroBikeBunnyHop
+ .4byte CheckMovementInputAcroBikeMovingWheelie
+ .4byte CheckMovementInputAcroBikeUnknownMode5
+ .4byte CheckMovementInputAcroBikeUnknownMode6
+ .align 2
gUnknown_085974B8:: @ 85974B8
- .incbin "baserom.gba", 0x5974b8, 0x8
+ .2byte 0x0001, 0x0002, 0x0004
+ .align 1
+gUnknown_085974BE:: @ 85974BE
+ .2byte 0x0004
+
+ .align 2
gUnknown_085974C0:: @ 85974C0
- .incbin "baserom.gba", 0x5974c0, 0x70
+ .4byte 0x00000001, 0x00000002, 0x0000000f, 0x0000000f, gUnknown_085974BE, gUnknown_085974BE, 0x00000001
+ .4byte 0x00000002, 0x00000002, 0x0000000f, 0x0000000f, gUnknown_085974BE, gUnknown_085974BE, 0x00000002
+ .4byte 0x00000003, 0x00000002, 0x0000000f, 0x0000000f, gUnknown_085974BE, gUnknown_085974BE, 0x00000003
+ .4byte 0x00000004, 0x00000002, 0x0000000f, 0x0000000f, gUnknown_085974BE, gUnknown_085974BE, 0x00000004
diff --git a/data/cable_club.s b/data/cable_club.s
index 4961cb1cc..f62b0b90a 100644
--- a/data/cable_club.s
+++ b/data/cable_club.s
@@ -4,8 +4,13 @@
.section .rodata
.align 2, 0
+ .align 2
gUnknown_08550594:: @ 8550594
- .incbin "baserom.gba", 0x550594, 0x8
+ window_template 0x00, 0x10, 0x0b, 0x0b, 0x02, 0x0f, 0x0125
+ .align 2
gUnknown_0855059C:: @ 855059C
- .incbin "baserom.gba", 0x55059c, 0x190
+ .4byte gText_BronzeCard
+ .4byte gText_CopperCard
+ .4byte gText_SilverCard
+ .4byte gText_GoldCard
diff --git a/data/fldeff_emotion.s b/data/fldeff_emotion.s
deleted file mode 100644
index f2c90d637..000000000
--- a/data/fldeff_emotion.s
+++ /dev/null
@@ -1,11 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_085507B4:: @ 85507B4
- .incbin "baserom.gba", 0x5507b4, 0x18
-
-gUnknown_085507CC:: @ 85507CC
- .incbin "baserom.gba", 0x5507cc, 0x18
diff --git a/data/strings.s b/data/strings.s
index 5fb8ca902..78e936b13 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -4452,16 +4452,16 @@ gText_ButtonTypeLEqualsA:: @ 85EE65D
gText_XPLink:: @ 85EE667
.string "{STR_VAR_1}P LINK$"
-gUnknown_085EE670:: @ 85EE670
+gText_BronzeCard:: @ 85EE670
.string "BRONZE$"
-gUnknown_085EE677:: @ 85EE677
+gText_CopperCard:: @ 85EE677
.string "COPPER$"
-gUnknown_085EE67E:: @ 85EE67E
+gText_SilverCard:: @ 85EE67E
.string "SILVER$"
-gUnknown_085EE685:: @ 85EE685
+gText_GoldCard:: @ 85EE685
.string "GOLD$"
gText_Day:: @ 85EE68A
diff --git a/data/trainer_see.s b/data/trainer_see.s
index 7480cb290..79c1a9f98 100644
--- a/data/trainer_see.s
+++ b/data/trainer_see.s
@@ -2,13 +2,82 @@
.include "constants/constants.inc"
.section .rodata
- .align 2, 0
-gUnknown_0855072C:: @ 855072C
- .incbin "baserom.gba", 0x55072c, 0x10
+ .align 2
+gEmotion_ExclamationMarkGfx:: @ 85505AC
+ .incbin "graphics/misc/emotion_exclamation.4bpp"
-gUnknown_0855073C:: @ 855073C
- .incbin "baserom.gba", 0x55073c, 0x30
+ .align 2
+gEmotion_QuestionMarkGfx:: @ 855062C
+ .incbin "graphics/misc/emotion_question.4bpp"
-gUnknown_0855076C:: @ 855076C
- .incbin "baserom.gba", 0x55076c, 0x48
+ .align 2
+gEmotion_HeartGfx:: @ 85506AC
+ .incbin "graphics/misc/emotion_heart.4bpp"
+
+ .align 2
+gIsTrainerInRange:: @ 855072C
+ .4byte IsTrainerInRangeSouth
+ .4byte IsTrainerInRangeNorth
+ .4byte IsTrainerInRangeWest
+ .4byte IsTrainerInRangeEast
+
+ .align 2
+gTrainerSeeFuncList:: @ 855073C
+ .4byte sub_80B4178
+ .4byte sub_80B417C
+ .4byte sub_80B41C0
+ .4byte sub_80B4200
+ .4byte sub_80B425C
+ .4byte sub_80B4318
+ .4byte sub_80B435C
+ .4byte sub_80B4390
+ .4byte sub_80B43AC
+ .4byte sub_80B43E0
+ .4byte sub_80B4438
+ .4byte sub_80B44AC
+
+ .align 2
+gTrainerSeeFuncList2:: @ 855076C
+ .4byte sub_80B43AC
+ .4byte sub_80B43E0
+ .4byte sub_80B4438
+ .4byte sub_80B44AC
+
+ .align 2
+gOamData_855077C:: @ 855077C
+ .2byte 0x0000
+ .2byte 0x4000
+ .2byte 0x0400
+
+ .align 2
+gSpriteImageTable_8550784:: @ 8550784
+ obj_tiles gEmotion_ExclamationMarkGfx, 0x0080, 0x0000
+ obj_tiles gEmotion_QuestionMarkGfx, 0x0080, 0x0000
+
+ .align 2
+gSpriteImageTable_8550794:: @ 8550794
+ obj_tiles gEmotion_HeartGfx, 0x0080, 0x0000
+
+ .align 2
+gSpriteAnim_855079C:: @ 855079C
+ obj_image_anim_frame 0, 60
+ obj_image_anim_end
+
+ .align 2
+gSpriteAnim_85507A4:: @ 85507A4
+ obj_image_anim_frame 1, 60
+ obj_image_anim_end
+
+ .align 2
+gSpriteAnimTable_85507AC:: @ 85507AC
+ .4byte gSpriteAnim_855079C
+ .4byte gSpriteAnim_85507A4
+
+ .align 2
+gSpriteTemplate_85507B4:: @ 85507B4
+ spr_template 0xffff, 0xffff, gOamData_855077C, gSpriteAnimTable_85507AC, gSpriteImageTable_8550784, gDummySpriteAffineAnimTable, objc_exclamation_mark_probably
+
+ .align 2
+gSpriteTemplate_85507CC:: @ 85507CC
+ spr_template 0xffff, 0x1004, gOamData_855077C, gSpriteAnimTable_85507AC, gSpriteImageTable_8550794, gDummySpriteAffineAnimTable, objc_exclamation_mark_probably
diff --git a/graphics/misc/emotion_exclamation.png b/graphics/misc/emotion_exclamation.png
new file mode 100644
index 000000000..595566d2f
--- /dev/null
+++ b/graphics/misc/emotion_exclamation.png
Binary files differ
diff --git a/graphics/misc/emotion_heart.png b/graphics/misc/emotion_heart.png
new file mode 100644
index 000000000..9995984b4
--- /dev/null
+++ b/graphics/misc/emotion_heart.png
Binary files differ
diff --git a/graphics/misc/emotion_question.png b/graphics/misc/emotion_question.png
new file mode 100644
index 000000000..7376fd058
--- /dev/null
+++ b/graphics/misc/emotion_question.png
Binary files differ
diff --git a/ld_script.txt b/ld_script.txt
index c2f8af595..e0fc0d0c9 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -123,7 +123,6 @@ SECTIONS {
asm/battle_setup.o(.text);
asm/cable_club.o(.text);
asm/trainer_see.o(.text);
- asm/fldeff_emotion.o(.text);
asm/wild_encounter.o(.text);
asm/field_effect.o(.text);
asm/unknown_task.o(.text);
@@ -365,7 +364,6 @@ SECTIONS {
data/battle_setup.o(.rodata);
data/cable_club.o(.rodata);
data/trainer_see.o(.rodata);
- data/fldeff_emotion.o(.rodata);
data/wild_encounter.o(.rodata);
data/field_effect.o(.rodata);
data/option_menu.o(.rodata);