diff options
-rw-r--r-- | asm/trade.s | 65 | ||||
-rw-r--r-- | src/trade.c | 89 |
2 files changed, 87 insertions, 67 deletions
diff --git a/asm/trade.s b/asm/trade.s index 8faba39dd..490f838f5 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -10,71 +10,6 @@ .set sub_804A96C_alt, sub_804A96C .endif - thumb_func_start sub_8047E44 -sub_8047E44: @ 8047E44 - push {r4-r7,lr} - sub sp, 0x18 - movs r4, 0 - mov r5, sp - movs r6, 0xD6 - lsls r6, 16 -_08047E50: - mov r1, sp - ldr r0, _08047EBC @ =gSpriteTemplate_820C0EC - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - adds r0, r4, 0x6 - ldrh r1, [r5] - adds r0, r1 - strh r0, [r5] - asrs r1, r6, 16 - mov r0, sp - movs r2, 0x98 - movs r3, 0x1 - bl CreateSprite - movs r2, 0x80 - lsls r2, 14 - adds r6, r2 - adds r4, 0x1 - cmp r4, 0x1 - ble _08047E50 - movs r4, 0 - mov r5, sp - movs r6, 0xC0 - lsls r6, 13 -_08047E84: - mov r1, sp - ldr r0, _08047EBC @ =gSpriteTemplate_820C0EC - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - adds r0, r4, 0 - adds r0, 0x8 - ldrh r3, [r5] - adds r0, r3 - strh r0, [r5] - asrs r1, r6, 16 - mov r0, sp - movs r2, 0x96 - movs r3, 0x1 - bl CreateSprite - movs r7, 0x80 - lsls r7, 14 - adds r6, r7 - adds r4, 0x1 - cmp r4, 0x4 - ble _08047E84 - add sp, 0x18 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08047EBC: .4byte gSpriteTemplate_820C0EC - thumb_func_end sub_8047E44 - thumb_func_start sub_8047EC0 sub_8047EC0: @ 8047EC0 push {r4-r7,lr} diff --git a/src/trade.c b/src/trade.c index 392ab881a..a624dc861 100644 --- a/src/trade.c +++ b/src/trade.c @@ -478,9 +478,29 @@ void sub_8047D58(void) } nullsub_5(5, 0); } + +void sub_8047E44(void) +{ + struct SpriteTemplate spriteTemplate; + int i; + s16 x; + + for (i = 0, x = 0xd6; i < 2; x += 32, i ++) + { + spriteTemplate = gSpriteTemplate_820C0EC; + spriteTemplate.tileTag += i + 6; + CreateSprite(&spriteTemplate, x, 0x98, 1); + } + + for (i = 0, x = 0x18; i < 5; x += 32, i ++) + { + spriteTemplate = gSpriteTemplate_820C0EC; + spriteTemplate.tileTag += i + 8; + CreateSprite(&spriteTemplate, x, 0x96, 1); + } +} #else -__attribute__((naked)) -void sub_8047D58(void) +__attribute__((naked)) void sub_8047D58(void) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r8\n" @@ -595,6 +615,71 @@ void sub_8047D58(void) "_08047E3C: .4byte gLinkPlayers + 0x8\n" "_08047E40: .4byte gTradeUnknownSpriteCoords + 0x3"); } + +__attribute__((naked)) void sub_8047E44(void) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tsub sp, 0x18\n" + "\tmovs r4, 0\n" + "\tmov r5, sp\n" + "\tmovs r6, 0xD6\n" + "\tlsls r6, 16\n" + "_08047E50:\n" + "\tmov r1, sp\n" + "\tldr r0, _08047EBC @ =gSpriteTemplate_820C0EC\n" + "\tldm r0!, {r2,r3,r7}\n" + "\tstm r1!, {r2,r3,r7}\n" + "\tldm r0!, {r2,r3,r7}\n" + "\tstm r1!, {r2,r3,r7}\n" + "\tadds r0, r4, 0x6\n" + "\tldrh r1, [r5]\n" + "\tadds r0, r1\n" + "\tstrh r0, [r5]\n" + "\tasrs r1, r6, 16\n" + "\tmov r0, sp\n" + "\tmovs r2, 0x98\n" + "\tmovs r3, 0x1\n" + "\tbl CreateSprite\n" + "\tmovs r2, 0x80\n" + "\tlsls r2, 14\n" + "\tadds r6, r2\n" + "\tadds r4, 0x1\n" + "\tcmp r4, 0x1\n" + "\tble _08047E50\n" + "\tmovs r4, 0\n" + "\tmov r5, sp\n" + "\tmovs r6, 0xC0\n" + "\tlsls r6, 13\n" + "_08047E84:\n" + "\tmov r1, sp\n" + "\tldr r0, _08047EBC @ =gSpriteTemplate_820C0EC\n" + "\tldm r0!, {r2,r3,r7}\n" + "\tstm r1!, {r2,r3,r7}\n" + "\tldm r0!, {r2,r3,r7}\n" + "\tstm r1!, {r2,r3,r7}\n" + "\tadds r0, r4, 0\n" + "\tadds r0, 0x8\n" + "\tldrh r3, [r5]\n" + "\tadds r0, r3\n" + "\tstrh r0, [r5]\n" + "\tasrs r1, r6, 16\n" + "\tmov r0, sp\n" + "\tmovs r2, 0x96\n" + "\tmovs r3, 0x1\n" + "\tbl CreateSprite\n" + "\tmovs r7, 0x80\n" + "\tlsls r7, 14\n" + "\tadds r6, r7\n" + "\tadds r4, 0x1\n" + "\tcmp r4, 0x4\n" + "\tble _08047E84\n" + "\tadd sp, 0x18\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_08047EBC: .4byte gSpriteTemplate_820C0EC"); +} #endif asm(".section .text.sub_804A96C"); |