summaryrefslogtreecommitdiff
path: root/asm/coins.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/coins.s')
-rw-r--r--asm/coins.s251
1 files changed, 251 insertions, 0 deletions
diff --git a/asm/coins.s b/asm/coins.s
new file mode 100644
index 000000000..164e75007
--- /dev/null
+++ b/asm/coins.s
@@ -0,0 +1,251 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_811A704
+sub_811A704: @ 811A704
+ push {r4,lr}
+ adds r4, r1, 0
+ adds r3, r2, 0
+ lsls r4, 24
+ lsls r3, 24
+ movs r1, 0x80
+ lsls r1, 18
+ adds r4, r1
+ lsrs r4, 24
+ movs r1, 0x80
+ lsls r1, 17
+ adds r3, r1
+ lsrs r3, 24
+ movs r1, 0x4
+ adds r2, r4, 0
+ bl sub_811A798
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_811A704
+
+ thumb_func_start sub_811A72C
+sub_811A72C: @ 811A72C
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ mov r8, r0
+ adds r4, r1, 0
+ adds r3, r2, 0
+ lsls r4, 24
+ lsls r3, 24
+ lsrs r6, r4, 24
+ movs r0, 0x90
+ lsls r0, 20
+ adds r4, r0
+ lsrs r4, 24
+ lsrs r5, r3, 24
+ movs r0, 0xC0
+ lsls r0, 18
+ adds r3, r0
+ lsrs r3, 24
+ adds r0, r6, 0
+ adds r1, r5, 0
+ adds r2, r4, 0
+ bl MenuDrawTextWindow
+ mov r0, r8
+ adds r1, r6, 0
+ adds r2, r5, 0
+ bl sub_811A704
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_811A72C
+
+ thumb_func_start sub_811A770
+sub_811A770: @ 811A770
+ push {r4,lr}
+ adds r2, r0, 0
+ adds r3, r1, 0
+ lsls r2, 24
+ lsls r3, 24
+ lsrs r0, r2, 24
+ movs r1, 0x90
+ lsls r1, 20
+ adds r2, r1
+ lsrs r2, 24
+ lsrs r1, r3, 24
+ movs r4, 0xC0
+ lsls r4, 18
+ adds r3, r4
+ lsrs r3, 24
+ bl MenuZeroFillWindowRect
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_811A770
+
+ thumb_func_start sub_811A798
+sub_811A798: @ 811A798
+ push {r4-r7,lr}
+ sub sp, 0x10
+ adds r4, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r5, r1, 0
+ lsls r2, 24
+ lsrs r6, r2, 24
+ lsls r3, 24
+ lsrs r7, r3, 24
+ mov r0, sp
+ adds r1, r4, 0
+ bl ConvertIntToDecimalString
+ lsls r1, r5, 1
+ adds r1, r5
+ lsls r1, 1
+ adds r1, 0x21
+ adds r0, r5, 0x2
+ lsls r0, 3
+ subs r1, r0
+ lsls r1, 24
+ lsrs r0, r1, 27
+ subs r0, r6, r0
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r0, 0xE0
+ lsls r0, 19
+ ands r0, r1
+ lsrs r1, r0, 24
+ ldr r4, _0811A824 @ =gStringVar1
+ cmp r1, 0
+ beq _0811A7EA
+ movs r0, 0xFC
+ strb r0, [r4]
+ movs r0, 0x11
+ strb r0, [r4, 0x1]
+ movs r0, 0x8
+ subs r0, r1
+ strb r0, [r4, 0x2]
+ adds r4, 0x3
+_0811A7EA:
+ movs r0, 0xFC
+ strb r0, [r4]
+ movs r0, 0x11
+ strb r0, [r4, 0x1]
+ mov r0, sp
+ bl StringLength
+ lsls r0, 16
+ lsrs r0, 16
+ subs r0, r5, r0
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 1
+ strb r1, [r4, 0x2]
+ adds r4, 0x3
+ adds r0, r4, 0
+ mov r1, sp
+ bl StringCopy
+ ldr r0, _0811A828 @ =gOtherText_Coins2
+ adds r1, r6, 0
+ adds r2, r7, 0
+ bl MenuPrint
+ add sp, 0x10
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0811A824: .4byte gStringVar1
+_0811A828: .4byte gOtherText_Coins2
+ thumb_func_end sub_811A798
+
+ thumb_func_start GetCoins
+GetCoins: @ 811A82C
+ ldr r0, _0811A838 @ =gSaveBlock1
+ ldr r1, _0811A83C @ =0x00000494
+ adds r0, r1
+ ldrh r0, [r0]
+ bx lr
+ .align 2, 0
+_0811A838: .4byte gSaveBlock1
+_0811A83C: .4byte 0x00000494
+ thumb_func_end GetCoins
+
+ thumb_func_start GiveCoins
+GiveCoins: @ 811A840
+ push {r4,lr}
+ lsls r0, 16
+ lsrs r4, r0, 16
+ bl GetCoins
+ lsls r0, 16
+ ldr r1, _0811A858 @ =0x270e0000
+ cmp r0, r1
+ bls _0811A85C
+ movs r0, 0
+ b _0811A88C
+ .align 2, 0
+_0811A858: .4byte 0x270e0000
+_0811A85C:
+ ldr r0, _0811A874 @ =gSaveBlock1
+ ldr r1, _0811A878 @ =0x00000494
+ adds r3, r0, r1
+ ldrh r1, [r3]
+ adds r2, r4, r1
+ lsls r0, r2, 16
+ lsrs r0, 16
+ cmp r1, r0
+ bls _0811A880
+ ldr r0, _0811A87C @ =0x0000270f
+ strh r0, [r3]
+ b _0811A88A
+ .align 2, 0
+_0811A874: .4byte gSaveBlock1
+_0811A878: .4byte 0x00000494
+_0811A87C: .4byte 0x0000270f
+_0811A880:
+ strh r2, [r3]
+ ldr r1, _0811A894 @ =0x0000270f
+ cmp r0, r1
+ bls _0811A88A
+ strh r1, [r3]
+_0811A88A:
+ movs r0, 0x1
+_0811A88C:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0811A894: .4byte 0x0000270f
+ thumb_func_end GiveCoins
+
+ thumb_func_start TakeCoins
+TakeCoins: @ 811A898
+ push {r4,lr}
+ lsls r0, 16
+ lsrs r4, r0, 16
+ bl GetCoins
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, r4
+ bcs _0811A8AE
+ movs r0, 0
+ b _0811A8BC
+_0811A8AE:
+ ldr r1, _0811A8C4 @ =gSaveBlock1
+ ldr r0, _0811A8C8 @ =0x00000494
+ adds r1, r0
+ ldrh r0, [r1]
+ subs r0, r4
+ strh r0, [r1]
+ movs r0, 0x1
+_0811A8BC:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0811A8C4: .4byte gSaveBlock1
+_0811A8C8: .4byte 0x00000494
+ thumb_func_end TakeCoins
+
+ .align 2, 0 @ Don't pad with nop.