through sub_80C8604

This commit is contained in:
PikalaxALT
2018-01-22 14:54:37 -05:00
parent 68a402883f
commit 4e98ffed33
4 changed files with 49 additions and 134 deletions

View File

@@ -5,139 +5,6 @@
.text
thumb_func_start sub_80C857C
sub_80C857C: @ 80C857C
push {r4,r5,lr}
adds r2, r0, 0
lsls r4, r1, 16
lsrs r4, 16
ldr r5, _080C85A8 @ =gSharedMem + 0x1E000
adds r0, r5, 0
adds r1, r2, 0
adds r2, r4, 0
bl memcpy
bl bitmask_all_link_players_but_self
lsls r0, 24
lsrs r0, 24
adds r1, r5, 0
adds r2, r4, 0
bl SendBlock
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080C85A8: .4byte gSharedMem + 0x1E000
thumb_func_end sub_80C857C
thumb_func_start sub_80C85AC
sub_80C85AC: @ 80C85AC
push {r4,lr}
lsls r0, 24
lsrs r0, 24
movs r1, 0x80
lsls r1, 17
lsls r1, r0
lsrs r4, r1, 24
bl GetBlockReceivedStatus
adds r1, r4, 0
ands r1, r0
cmp r1, 0
beq _080C85D0
adds r0, r4, 0
bl ResetBlockReceivedFlag
movs r0, 0x1
b _080C85D2
_080C85D0:
movs r0, 0
_080C85D2:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80C85AC
thumb_func_start sub_80C85D8
sub_80C85D8: @ 80C85D8
push {r4,lr}
movs r4, 0
_080C85DC:
bl GetBlockReceivedStatus
lsls r0, 24
lsrs r0, 24
asrs r0, r4
movs r1, 0x1
ands r0, r1
cmp r0, 0
bne _080C85F2
movs r0, 0
b _080C85FE
_080C85F2:
adds r4, 0x1
cmp r4, 0x3
ble _080C85DC
bl ResetBlockReceivedFlags
movs r0, 0x1
_080C85FE:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80C85D8
.ifdef ENGLISH
thumb_func_start sub_80C8604
sub_80C8604: @ 80C8604
push {r4-r6,lr}
lsls r0, 24
lsrs r2, r0, 24
movs r1, 0
ldr r5, _080C8638 @ =gTasks
ldr r6, _080C863C @ =sub_80C8644
ldr r4, _080C8640 @ =gBlockRecvBuffer
movs r3, 0xFF
_080C8614:
lsls r0, r1, 8
adds r0, r4
strh r3, [r0]
adds r0, r1, 0x1
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x3
bls _080C8614
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
adds r0, r5
movs r1, 0
strh r1, [r0, 0x8]
str r6, [r0]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080C8638: .4byte gTasks
_080C863C: .4byte sub_80C8644
_080C8640: .4byte gBlockRecvBuffer
thumb_func_end sub_80C8604
.else
thumb_func_start sub_80C8604
sub_80C8604: @ 80C8604
lsls r0, 24
lsrs r0, 24
ldr r2, _080C861C @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
movs r0, 0
strh r0, [r1, 0x8]
ldr r0, _080C8620 @ =sub_80C8644
str r0, [r1]
bx lr
.align 2, 0
_080C861C: .4byte gTasks
_080C8620: .4byte sub_80C8644
thumb_func_end sub_80C8604
.endif
thumb_func_start sub_80C8644
sub_80C8644: @ 80C8644
lsls r0, 24

View File

@@ -261,6 +261,7 @@ extern u8 gSharedMem[];
#define eHallOfFame (struct HallOfFame *)(gSharedMem + 0x1E000)
#define HALL_OF_FAME_SHEET_0 ((u8 *)(gSharedMem + 0x1E000))
#define ewram1E000_2 (const u8 *)(gSharedMem + 0x1E000)
#define eContestLinkSendBuffer gSharedMem + 0x1E000
#define HALL_OF_FAME_SHEET_1 ((u8 *)(gSharedMem + 0x1E800))
#define ewram_1f000 (*(struct DecoPCPointers *)(gSharedMem + 0x1f000))
#define ewramSavedPokeballsPocket ((struct ItemSlot *)(gSharedMem + 0x1F000)) // saved Pokeballs pocket (for Wally battle)

View File

@@ -169,8 +169,9 @@ SECTIONS {
src/field/field_special_scene.o(.text);
src/field/rotating_gate.o(.text);
src/field/safari_zone.o(.text);
asm/contest_link_80C857C.o(.text);
src/battle/contest_link_80C857C.o(.text);
asm/contest_link_80C857C.o(.text);
src/battle/contest_link_80C857C.o(.text_de);
src/field/item_use.o(.text);
src/battle/anim/powder.o(.text);
src/battle/anim/orbs.o(.text);

View File

@@ -1,6 +1,52 @@
#include "global.h"
#include "ewram.h"
#include "task.h"
#include "link.h"
void sub_80C8644(u8 taskId);
void sub_80C857C(const void *data, u16 size)
{
memcpy(eContestLinkSendBuffer, data, size);
SendBlock(bitmask_all_link_players_but_self(), eContestLinkSendBuffer, size);
}
bool8 sub_80C85AC(u8 who)
{
u8 flag = 1 << who;
if (!(GetBlockReceivedStatus() & flag))
return FALSE;
ResetBlockReceivedFlag(flag);
return TRUE;
}
bool8 sub_80C85D8(void)
{
int i;
for (i = 0; i < MAX_LINK_PLAYERS; i++)
{
if (!((GetBlockReceivedStatus() >> i) & 1))
return FALSE;
}
ResetBlockReceivedFlags();
return TRUE;
}
void sub_80C8604(u8 taskId)
{
#if ENGLISH
u8 i;
for (i = 0; i < 4; i++)
gBlockRecvBuffer[i][0] = 0xff;
#endif
gTasks[taskId].data[0] = 0;
gTasks[taskId].func = sub_80C8644;
}
asm(".section .text_de");
#if GERMAN
void de_sub_80C9274(bool32 arg0)