mirror of
https://github.com/pret/pokeruby.git
synced 2026-09-12 21:17:43 -05:00
SpawnBerryBlenderLinkPlayerSprites
This commit is contained in:
174
asm/field_specials.s
Normal file → Executable file
174
asm/field_specials.s
Normal file → Executable file
@@ -6,180 +6,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start SpawnBerryBlenderLinkPlayerSprites
|
||||
SpawnBerryBlenderLinkPlayerSprites: @ 810DB28
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x14
|
||||
movs r7, 0
|
||||
movs r0, 0
|
||||
mov r9, r0
|
||||
mov r8, r0
|
||||
ldr r1, _0810DB74 @ =gUnknown_083F8358
|
||||
add r0, sp, 0x8
|
||||
movs r2, 0x4
|
||||
bl memcpy
|
||||
add r4, sp, 0xC
|
||||
ldr r1, _0810DB78 @ =gUnknown_083F835C
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x8
|
||||
bl memcpy
|
||||
bl sub_8008218
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
mov r10, r0
|
||||
bl player_get_direction_lower_nybble
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
adds r1, r0, 0
|
||||
cmp r0, 0x2
|
||||
beq _0810DB94
|
||||
cmp r0, 0x2
|
||||
bgt _0810DB7C
|
||||
cmp r0, 0x1
|
||||
beq _0810DBC0
|
||||
b _0810DBD2
|
||||
.align 2, 0
|
||||
_0810DB74: .4byte gUnknown_083F8358
|
||||
_0810DB78: .4byte gUnknown_083F835C
|
||||
_0810DB7C:
|
||||
cmp r1, 0x3
|
||||
beq _0810DB86
|
||||
cmp r1, 0x4
|
||||
beq _0810DBA8
|
||||
b _0810DBD2
|
||||
_0810DB86:
|
||||
movs r7, 0x2
|
||||
ldr r1, _0810DB90 @ =gSaveBlock1
|
||||
ldrh r0, [r1]
|
||||
subs r0, 0x1
|
||||
b _0810DBAE
|
||||
.align 2, 0
|
||||
_0810DB90: .4byte gSaveBlock1
|
||||
_0810DB94:
|
||||
movs r7, 0x1
|
||||
ldr r0, _0810DBA4 @ =gSaveBlock1
|
||||
ldrh r1, [r0]
|
||||
mov r9, r1
|
||||
ldrh r0, [r0, 0x2]
|
||||
subs r0, 0x1
|
||||
b _0810DBCC
|
||||
.align 2, 0
|
||||
_0810DBA4: .4byte gSaveBlock1
|
||||
_0810DBA8:
|
||||
ldr r1, _0810DBBC @ =gSaveBlock1
|
||||
ldrh r0, [r1]
|
||||
adds r0, 0x1
|
||||
_0810DBAE:
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
mov r9, r0
|
||||
ldrh r1, [r1, 0x2]
|
||||
mov r8, r1
|
||||
b _0810DBD2
|
||||
.align 2, 0
|
||||
_0810DBBC: .4byte gSaveBlock1
|
||||
_0810DBC0:
|
||||
movs r7, 0x3
|
||||
ldr r0, _0810DBD8 @ =gSaveBlock1
|
||||
ldrh r4, [r0]
|
||||
mov r9, r4
|
||||
ldrh r0, [r0, 0x2]
|
||||
adds r0, 0x1
|
||||
_0810DBCC:
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
mov r8, r0
|
||||
_0810DBD2:
|
||||
movs r6, 0
|
||||
b _0810DC5C
|
||||
.align 2, 0
|
||||
_0810DBD8: .4byte gSaveBlock1
|
||||
_0810DBDC:
|
||||
cmp r10, r6
|
||||
beq _0810DC56
|
||||
ldr r1, _0810DC74 @ =gLinkPlayers
|
||||
lsls r0, r6, 3
|
||||
subs r0, r6
|
||||
lsls r0, 2
|
||||
adds r0, r1
|
||||
ldrb r1, [r0, 0x13]
|
||||
movs r0, 0
|
||||
bl GetRivalAvatarGraphicsIdByStateIdAndGender
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
mov r1, sp
|
||||
adds r1, r7
|
||||
adds r1, 0x8
|
||||
ldrb r1, [r1]
|
||||
movs r2, 0xF0
|
||||
subs r2, r6
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
lsls r5, r7, 1
|
||||
mov r3, sp
|
||||
adds r3, r5
|
||||
adds r3, 0xC
|
||||
ldrb r3, [r3]
|
||||
lsls r3, 24
|
||||
asrs r3, 24
|
||||
mov r12, r3
|
||||
mov r4, r9
|
||||
lsls r3, r4, 16
|
||||
asrs r3, 16
|
||||
add r3, r12
|
||||
adds r3, 0x7
|
||||
lsls r3, 16
|
||||
asrs r3, 16
|
||||
mov r4, sp
|
||||
adds r4, 0xD
|
||||
adds r4, r5
|
||||
ldrb r4, [r4]
|
||||
lsls r4, 24
|
||||
asrs r4, 24
|
||||
mov r12, r4
|
||||
mov r5, r8
|
||||
lsls r4, r5, 16
|
||||
asrs r4, 16
|
||||
add r4, r12
|
||||
adds r4, 0x7
|
||||
lsls r4, 16
|
||||
asrs r4, 16
|
||||
str r4, [sp]
|
||||
movs r4, 0
|
||||
str r4, [sp, 0x4]
|
||||
bl SpawnSpecialFieldObjectParametrized
|
||||
adds r0, r7, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r7, r0, 24
|
||||
cmp r7, 0x4
|
||||
bne _0810DC56
|
||||
movs r7, 0
|
||||
_0810DC56:
|
||||
adds r0, r6, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r6, r0, 24
|
||||
_0810DC5C:
|
||||
ldr r0, _0810DC78 @ =gSpecialVar_0x8004
|
||||
ldrh r0, [r0]
|
||||
cmp r6, r0
|
||||
bcc _0810DBDC
|
||||
add sp, 0x14
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0810DC74: .4byte gLinkPlayers
|
||||
_0810DC78: .4byte gSpecialVar_0x8004
|
||||
thumb_func_end SpawnBerryBlenderLinkPlayerSprites
|
||||
|
||||
thumb_func_start MauvilleGymSpecial1
|
||||
MauvilleGymSpecial1: @ 810DC7C
|
||||
push {r4,r5,lr}
|
||||
|
||||
10
data/field_specials.s
Normal file → Executable file
10
data/field_specials.s
Normal file → Executable file
@@ -3,16 +3,6 @@
|
||||
|
||||
.section .rodata
|
||||
|
||||
.align 2
|
||||
gUnknown_083F8358:: @ 83F8358
|
||||
.byte 7, 9, 8, 10
|
||||
|
||||
gUnknown_083F835C:: @ 83F835C
|
||||
.byte 0, 1
|
||||
.byte 1, 0
|
||||
.byte 0, -1
|
||||
.byte -1, 0
|
||||
|
||||
.align 2
|
||||
gUnknown_083F8364:: @ 83F8364
|
||||
.byte 7, 16, 0, 0
|
||||
|
||||
1
include/field_map_obj.h
Normal file → Executable file
1
include/field_map_obj.h
Normal file → Executable file
@@ -197,5 +197,6 @@ u8 sub_8060B38(u8);
|
||||
u8 sub_8060B64(u8);
|
||||
u8 GetOppositeDirection(u8);
|
||||
void sub_80634D0(struct MapObject *, struct Sprite *);
|
||||
u8 SpawnSpecialFieldObjectParametrized(u8, u8, u8, s16, s16, u8);
|
||||
|
||||
#endif // GUARD_FIELD_MAP_OBJ_H
|
||||
|
||||
65
src/field_specials.c
Normal file → Executable file
65
src/field_specials.c
Normal file → Executable file
@@ -2,6 +2,7 @@
|
||||
#include "field_specials.h"
|
||||
#include "diploma.h"
|
||||
#include "event_data.h"
|
||||
#include "field_map_obj.h"
|
||||
#include "field_player_avatar.h"
|
||||
#include "main.h"
|
||||
#include "map_constants.h"
|
||||
@@ -26,6 +27,7 @@ extern u16 gScriptResult;
|
||||
extern u8 gUnknown_02039250;
|
||||
extern u8 gUnknown_02039251;
|
||||
extern u32 gUnknown_02039254;
|
||||
extern u16 gSpecialVar_0x8004;
|
||||
|
||||
static void RecordCyclingRoadResults(u32, u8);
|
||||
|
||||
@@ -283,3 +285,66 @@ u8 GetLinkPartnerNames(void)
|
||||
}
|
||||
return nLinkPlayers;
|
||||
}
|
||||
|
||||
const u8 gUnknown_083F8358[4] = {7, 9, 8, 10};
|
||||
const s8 gUnknown_083F835C[4][2] = {
|
||||
{ 0, 1},
|
||||
{ 1, 0},
|
||||
{ 0, -1},
|
||||
{-1, 0}
|
||||
};
|
||||
|
||||
void SpawnBerryBlenderLinkPlayerSprites(void)
|
||||
{
|
||||
u8 unknown_083F8358[4];
|
||||
u8 unknown_083F835C[4][2];
|
||||
u8 myLinkPlayerNumber;
|
||||
u8 playerDirectionLowerNybble;
|
||||
s16 x;
|
||||
s16 y;
|
||||
u8 i;
|
||||
u8 j;
|
||||
u8 rivalAvatarGraphicsId;
|
||||
|
||||
j = 0;
|
||||
x = 0;
|
||||
y = 0;
|
||||
memcpy(unknown_083F8358, gUnknown_083F8358, sizeof gUnknown_083F8358);
|
||||
memcpy(unknown_083F835C, gUnknown_083F835C, sizeof gUnknown_083F835C);
|
||||
myLinkPlayerNumber = sub_8008218();
|
||||
playerDirectionLowerNybble = player_get_direction_lower_nybble();
|
||||
switch (playerDirectionLowerNybble)
|
||||
{
|
||||
case DIR_WEST:
|
||||
j = 2;
|
||||
x = gSaveBlock1.pos.x - 1;
|
||||
y = gSaveBlock1.pos.y;
|
||||
break;
|
||||
case DIR_NORTH:
|
||||
j = 1;
|
||||
x = gSaveBlock1.pos.x;
|
||||
y = gSaveBlock1.pos.y - 1;
|
||||
break;
|
||||
case DIR_EAST:
|
||||
x = gSaveBlock1.pos.x + 1;
|
||||
y = gSaveBlock1.pos.y;
|
||||
break;
|
||||
case DIR_SOUTH:
|
||||
j = 3;
|
||||
x = gSaveBlock1.pos.x;
|
||||
y = gSaveBlock1.pos.y + 1;
|
||||
}
|
||||
for (i=0; i<gSpecialVar_0x8004; i++)
|
||||
{
|
||||
if (myLinkPlayerNumber != i)
|
||||
{
|
||||
rivalAvatarGraphicsId = GetRivalAvatarGraphicsIdByStateIdAndGender(0, gLinkPlayers[i].gender);
|
||||
SpawnSpecialFieldObjectParametrized(rivalAvatarGraphicsId, unknown_083F8358[j], 0xf0 - i, (s8)unknown_083F835C[j][0] + x + 7, (s8)unknown_083F835C[j][1] + y + 7, 0);
|
||||
j++;
|
||||
if (j == 4)
|
||||
{
|
||||
j = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user