summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xasm/field_specials.s279
-rwxr-xr-xld_script.txt1
-rwxr-xr-xsrc/field_specials.c122
3 files changed, 122 insertions, 280 deletions
diff --git a/asm/field_specials.s b/asm/field_specials.s
deleted file mode 100755
index d8115fa61..000000000
--- a/asm/field_specials.s
+++ /dev/null
@@ -1,279 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_810FD60
-sub_810FD60: @ 810FD60
- ldr r0, _0810FD74 @ =gSaveBlock1
- ldr r1, _0810FD78 @ =0x000013c2
- adds r0, r1
- ldrh r0, [r0]
- ldr r1, _0810FD7C @ =gSpecialVar_0x8004
- ldrh r1, [r1]
- asrs r0, r1
- movs r1, 0x1
- ands r0, r1
- bx lr
- .align 2, 0
-_0810FD74: .4byte gSaveBlock1
-_0810FD78: .4byte 0x000013c2
-_0810FD7C: .4byte gSpecialVar_0x8004
- thumb_func_end sub_810FD60
-
- thumb_func_start sub_810FD80
-sub_810FD80: @ 810FD80
- ldr r2, _0810FDA4 @ =gSaveBlock1
- ldr r0, _0810FDA8 @ =0x000013c2
- adds r2, r0
- ldrh r1, [r2]
- movs r3, 0x80
- lsls r3, 6
- adds r0, r3, 0
- orrs r0, r1
- movs r3, 0x80
- lsls r3, 1
- adds r1, r3, 0
- orrs r0, r1
- movs r3, 0x80
- lsls r3, 3
- adds r1, r3, 0
- orrs r0, r1
- strh r0, [r2]
- bx lr
- .align 2, 0
-_0810FDA4: .4byte gSaveBlock1
-_0810FDA8: .4byte 0x000013c2
- thumb_func_end sub_810FD80
-
- thumb_func_start sub_810FDAC
-sub_810FDAC: @ 810FDAC
- push {lr}
- movs r3, 0
- movs r2, 0
- ldr r0, _0810FDC8 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- subs r0, 0x8
- cmp r0, 0x7
- bhi _0810FE0C
- lsls r0, 2
- ldr r1, _0810FDCC @ =_0810FDD0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0810FDC8: .4byte gSpecialVar_0x8004
-_0810FDCC: .4byte _0810FDD0
- .align 2, 0
-_0810FDD0:
- .4byte _0810FE0C
- .4byte _0810FE0C
- .4byte _0810FDF0
- .4byte _0810FDF6
- .4byte _0810FDFC
- .4byte _0810FE02
- .4byte _0810FE08
- .4byte _0810FE0C
-_0810FDF0:
- movs r3, 0
- movs r2, 0x3
- b _0810FE0C
-_0810FDF6:
- movs r3, 0
- movs r2, 0x1
- b _0810FE0C
-_0810FDFC:
- movs r3, 0x1
- movs r2, 0
- b _0810FE0C
-_0810FE02:
- movs r3, 0
- movs r2, 0x4
- b _0810FE0C
-_0810FE08:
- movs r3, 0x1
- movs r2, 0x5
-_0810FE0C:
- ldr r0, _0810FE18 @ =gSaveBlock1 + 0x30B8
- adds r1, r3, 0
- bl sub_810FE1C
- pop {r0}
- bx r0
- .align 2, 0
-_0810FE18: .4byte gSaveBlock1 + 0x30B8
- thumb_func_end sub_810FDAC
-
- thumb_func_start sub_810FE1C
-sub_810FE1C: @ 810FE1C
- push {r4,lr}
- lsls r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsrs r1, 20
- adds r1, r0, r1
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _0810FED0
- cmp r2, 0x5
- bhi _0810FEBC
- lsls r0, r2, 2
- ldr r1, _0810FE3C @ =_0810FE40
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0810FE3C: .4byte _0810FE40
- .align 2, 0
-_0810FE40:
- .4byte _0810FEBC
- .4byte _0810FE58
- .4byte _0810FE6C
- .4byte _0810FE80
- .4byte _0810FE94
- .4byte _0810FEA8
-_0810FE58:
- ldr r0, _0810FE64 @ =gStringVar1
- ldr r1, _0810FE68 @ =gOtherText_Steven
- bl StringCopy
- b _0810FEF2
- .align 2, 0
-_0810FE64: .4byte gStringVar1
-_0810FE68: .4byte gOtherText_Steven
-_0810FE6C:
- ldr r0, _0810FE78 @ =gStringVar1
- ldr r1, _0810FE7C @ =gOtherText_Brawly
- bl StringCopy
- b _0810FEF2
- .align 2, 0
-_0810FE78: .4byte gStringVar1
-_0810FE7C: .4byte gOtherText_Brawly
-_0810FE80:
- ldr r0, _0810FE8C @ =gStringVar1
- ldr r1, _0810FE90 @ =gOtherText_Winona
- bl StringCopy
- b _0810FEF2
- .align 2, 0
-_0810FE8C: .4byte gStringVar1
-_0810FE90: .4byte gOtherText_Winona
-_0810FE94:
- ldr r0, _0810FEA0 @ =gStringVar1
- ldr r1, _0810FEA4 @ =gOtherText_Phoebe
- bl StringCopy
- b _0810FEF2
- .align 2, 0
-_0810FEA0: .4byte gStringVar1
-_0810FEA4: .4byte gOtherText_Phoebe
-_0810FEA8:
- ldr r0, _0810FEB4 @ =gStringVar1
- ldr r1, _0810FEB8 @ =gOtherText_Glacia
- bl StringCopy
- b _0810FEF2
- .align 2, 0
-_0810FEB4: .4byte gStringVar1
-_0810FEB8: .4byte gOtherText_Glacia
-_0810FEBC:
- ldr r0, _0810FEC8 @ =gStringVar1
- ldr r1, _0810FECC @ =gOtherText_Wallace
- bl StringCopy
- b _0810FEF2
- .align 2, 0
-_0810FEC8: .4byte gStringVar1
-_0810FECC: .4byte gOtherText_Wallace
-_0810FED0:
- ldr r4, _0810FEF8 @ =gStringVar1
- adds r0, r4, 0
- movs r2, 0x7
- bl StringCopyN
- movs r0, 0xFF
- strb r0, [r4, 0x7]
- ldrb r0, [r4]
- cmp r0, 0xFC
- bne _0810FEF2
- ldrb r0, [r4, 0x1]
- cmp r0, 0x15
- bne _0810FEF2
- adds r0, r4, 0
- movs r1, 0x1
- bl ConvertInternationalString
-_0810FEF2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810FEF8: .4byte gStringVar1
- thumb_func_end sub_810FE1C
-
- thumb_func_start sub_810FEFC
-sub_810FEFC: @ 810FEFC
- push {lr}
- ldr r0, _0810FF20 @ =0x00004095
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x2
- bne _0810FF2C
- bl sub_810FA74
- ldr r0, _0810FF24 @ =gUnknown_02024D26
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0810FF28
- bl sub_810FB9C
- b _0810FF2C
- .align 2, 0
-_0810FF20: .4byte 0x00004095
-_0810FF24: .4byte gUnknown_02024D26
-_0810FF28:
- bl sub_810FC18
-_0810FF2C:
- pop {r0}
- bx r0
- thumb_func_end sub_810FEFC
-
- thumb_func_start sub_810FF30
-sub_810FF30: @ 810FF30
- ldr r0, _0810FF40 @ =gSaveBlock1
- ldr r1, _0810FF44 @ =0x000013c2
- adds r0, r1
- ldrh r0, [r0]
- lsrs r0, 7
- movs r1, 0x1
- ands r0, r1
- bx lr
- .align 2, 0
-_0810FF40: .4byte gSaveBlock1
-_0810FF44: .4byte 0x000013c2
- thumb_func_end sub_810FF30
-
- thumb_func_start sub_810FF48
-sub_810FF48: @ 810FF48
- ldr r0, _0810FF58 @ =gSaveBlock1
- ldr r1, _0810FF5C @ =0x000013c2
- adds r0, r1
- ldrh r2, [r0]
- movs r1, 0x80
- orrs r1, r2
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0810FF58: .4byte gSaveBlock1
-_0810FF5C: .4byte 0x000013c2
- thumb_func_end sub_810FF48
-
- thumb_func_start sub_810FF60
-sub_810FF60: @ 810FF60
- push {lr}
- ldr r0, _0810FF74 @ =gSpecialVar_0x8004
- ldrb r0, [r0]
- bl sub_810FB10
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0810FF74: .4byte gSpecialVar_0x8004
- thumb_func_end sub_810FF60
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/ld_script.txt b/ld_script.txt
index 41b9a7803..5112e39ea 100755
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -215,7 +215,6 @@ SECTIONS {
src/birch_pc.o(.text);
src/hof_pc.o(.text);
src/field_specials.o(.text);
- asm/field_specials.o(.text);
asm/battle_records.o(.text);
src/battle_records.o(.text);
asm/battle_records.o(.text_8110494);
diff --git a/src/field_specials.c b/src/field_specials.c
index 8a6860e1e..13be27dc2 100755
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -2241,3 +2241,125 @@ void sub_810FCE8(void)
}
}
}
+
+bool8 sub_810FD60(void)
+{
+ return (gSaveBlock1.vars[0x41] >> gSpecialVar_0x8004) & 0x01;
+}
+
+void sub_810FD80(void)
+{
+ gSaveBlock1.vars[0x41] |= 0x2000;
+ gSaveBlock1.vars[0x41] |= 0x100;
+ gSaveBlock1.vars[0x41] |= 0x400;
+}
+
+void sub_810FE1C(void *, u8, u8);
+
+void sub_810FDAC(void)
+{
+ u8 a = 0;
+ u8 b = 0;
+ switch (gSpecialVar_0x8004)
+ {
+ case 8:
+ break;
+ case 9:
+ break;
+ case 10:
+ a = 0;
+ b = 3;
+ break;
+ case 11:
+ a = 0;
+ b = 1;
+ break;
+ case 12:
+ a = 1;
+ b = 0;
+ break;
+ case 13:
+ a = 0;
+ b = 4;
+ break;
+ case 14:
+ a = 1;
+ b = 5;
+ break;
+ case 15:
+ break;
+ }
+ sub_810FE1C(gSaveBlock1.linkBattleRecords, a, b);
+}
+
+void sub_810FE1C(void *linkRecords, u8 a, u8 b)
+{
+ u8 *curRecord = (linkRecords + 16 * a);
+ if (*curRecord == EOS)
+ {
+ switch (b)
+ {
+ case 0:
+ StringCopy(gStringVar1, gOtherText_Wallace);
+ break;
+ case 1:
+ StringCopy(gStringVar1, gOtherText_Steven);
+ break;
+ case 2:
+ StringCopy(gStringVar1, gOtherText_Brawly);
+ break;
+ case 3:
+ StringCopy(gStringVar1, gOtherText_Winona);
+ break;
+ case 4:
+ StringCopy(gStringVar1, gOtherText_Phoebe);
+ break;
+ case 5:
+ StringCopy(gStringVar1, gOtherText_Glacia);
+ break;
+ default:
+ StringCopy(gStringVar1, gOtherText_Wallace);
+ break;
+ }
+ }
+ else
+ {
+ StringCopyN(gStringVar1, curRecord, 7);
+ gStringVar1[7] = EOS;
+ if (gStringVar1[0] == 0xfc && gStringVar1[1] == 0x15)
+ {
+ ConvertInternationalString(gStringVar1, 1);
+ }
+ }
+}
+
+void sub_810FEFC(void)
+{
+ if (VarGet(VAR_0x4095) == 2)
+ {
+ sub_810FA74();
+ if (gUnknown_02024D26 == 1)
+ {
+ sub_810FB9C();
+ }
+ else
+ {
+ sub_810FC18();
+ }
+ }
+}
+
+bool8 sub_810FF30(void)
+{
+ return (gSaveBlock1.vars[0x41] >> 7) & 0x01;
+}
+
+void sub_810FF48(void)
+{
+ gSaveBlock1.vars[0x41] |= 0x80;
+}
+
+u8 sub_810FF60(void)
+{
+ return sub_810FB10(gSpecialVar_0x8004);
+}