summaryrefslogtreecommitdiff
path: root/asm/flag.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/flag.s')
-rw-r--r--asm/flag.s124
1 files changed, 124 insertions, 0 deletions
diff --git a/asm/flag.s b/asm/flag.s
new file mode 100644
index 000000000..6f2e7b3eb
--- /dev/null
+++ b/asm/flag.s
@@ -0,0 +1,124 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start GetFlagPointer
+GetFlagPointer: @ 80692AC
+ push {lr}
+ lsls r2, r0, 16
+ lsrs r1, r2, 16
+ adds r3, r1, 0
+ cmp r1, 0
+ bne _080692BC
+ movs r0, 0
+ b _080692E2
+_080692BC:
+ ldr r0, _080692C8
+ cmp r1, r0
+ bhi _080692D0
+ lsrs r0, r2, 19
+ ldr r1, _080692CC
+ b _080692E0
+ .align 2, 0
+_080692C8: .4byte 0x00003fff
+_080692CC: .4byte gSaveBlock1 + 0x1220
+_080692D0:
+ ldr r1, _080692E8
+ adds r0, r3, r1
+ cmp r0, 0
+ bge _080692DC
+ adds r1, 0x7
+ adds r0, r3, r1
+_080692DC:
+ asrs r0, 3
+ ldr r1, _080692EC
+_080692E0:
+ adds r0, r1
+_080692E2:
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080692E8: .4byte 0xffffc000
+_080692EC: .4byte gUnknown_0202E8E2
+ thumb_func_end GetFlagPointer
+
+ thumb_func_start FlagSet
+FlagSet: @ 80692F0
+ push {r4,lr}
+ lsls r0, 16
+ lsrs r4, r0, 16
+ adds r0, r4, 0
+ bl GetFlagPointer
+ adds r2, r0, 0
+ cmp r2, 0
+ beq _08069310
+ movs r0, 0x7
+ ands r0, r4
+ movs r1, 0x1
+ lsls r1, r0
+ ldrb r0, [r2]
+ orrs r1, r0
+ strb r1, [r2]
+_08069310:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end FlagSet
+
+ thumb_func_start FlagReset
+FlagReset: @ 8069318
+ push {r4,lr}
+ lsls r0, 16
+ lsrs r4, r0, 16
+ adds r0, r4, 0
+ bl GetFlagPointer
+ adds r2, r0, 0
+ cmp r2, 0
+ beq _08069338
+ movs r0, 0x7
+ ands r0, r4
+ movs r1, 0x1
+ lsls r1, r0
+ ldrb r0, [r2]
+ bics r0, r1
+ strb r0, [r2]
+_08069338:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end FlagReset
+
+ thumb_func_start FlagGet
+FlagGet: @ 8069340
+ push {r4,lr}
+ lsls r0, 16
+ lsrs r4, r0, 16
+ adds r0, r4, 0
+ bl GetFlagPointer
+ cmp r0, 0
+ beq _08069364
+ ldrb r0, [r0]
+ movs r1, 0x7
+ ands r1, r4
+ asrs r0, r1
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08069364
+ movs r0, 0x1
+ b _08069366
+_08069364:
+ movs r0, 0
+_08069366:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end FlagGet
+
+ .align 2, 0 @ Don't pad with nop.