diff options
Diffstat (limited to 'asm/coins.s')
-rw-r--r-- | asm/coins.s | 251 |
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. |