mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-02-24 21:25:30 +01:00
Merge pull request #204 from DizzyEggg/match_nonmatchings
Match a couple of nonmatching functions
This commit is contained in:
commit
db97098b91
@ -34,6 +34,8 @@
|
||||
// Converts a number to Q4.12 fixed-point format
|
||||
#define Q_4_12(n) ((s16)((n) * 4096))
|
||||
|
||||
#define PARTY_SIZE 6
|
||||
|
||||
#define POKEMON_NAME_LENGTH 10
|
||||
#define OT_NAME_LENGTH 7
|
||||
|
||||
@ -295,6 +297,16 @@ struct SaveBlock2
|
||||
|
||||
extern struct SaveBlock2 *gSaveBlock2Ptr;
|
||||
|
||||
struct SecretBaseParty
|
||||
{
|
||||
u32 personality[PARTY_SIZE];
|
||||
u16 moves[PARTY_SIZE * 4];
|
||||
u16 species[PARTY_SIZE];
|
||||
u16 heldItems[PARTY_SIZE];
|
||||
u8 levels[PARTY_SIZE];
|
||||
u8 EVs[PARTY_SIZE];
|
||||
};
|
||||
|
||||
struct SecretBaseRecord
|
||||
{
|
||||
/*0x1A9C*/ u8 secretBaseId;
|
||||
@ -310,12 +322,7 @@ struct SecretBaseRecord
|
||||
/*0x1AAD*/ u8 sbr_field_11;
|
||||
/*0x1AAE*/ u8 decorations[16];
|
||||
/*0x1ABE*/ u8 decorationPos[16];
|
||||
/*0x1AD0*/ u32 partyPersonality[6];
|
||||
/*0x1AE8*/ u16 partyMoves[6 * 4];
|
||||
/*0x1B18*/ u16 partySpecies[6];
|
||||
/*0x1B24*/ u16 partyHeldItems[6];
|
||||
/*0x1B2E*/ u8 partyLevels[6];
|
||||
/*0x1B34*/ u8 partyEVs[6];
|
||||
/*0x1AD0*/ struct SecretBaseParty party;
|
||||
};
|
||||
|
||||
#include "constants/game_stat.h"
|
||||
|
@ -128,7 +128,6 @@
|
||||
|
||||
#define NUMBER_OF_MON_TYPES 0x12
|
||||
|
||||
#define PARTY_SIZE 6
|
||||
#define MAX_TOTAL_EVS 510
|
||||
#define NUM_STATS 6
|
||||
#define UNOWN_FORM_COUNT 28
|
||||
|
@ -6226,7 +6226,7 @@ static u32 GetTrainerMoneyToGive(u16 trainerId)
|
||||
|
||||
if (trainerId == SECRET_BASE_OPPONENT)
|
||||
{
|
||||
moneyReward = 20 * gBattleResources->secretBase->partyLevels[0] * gBattleStruct->moneyMultiplier;
|
||||
moneyReward = 20 * gBattleResources->secretBase->party.levels[0] * gBattleStruct->moneyMultiplier;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -217,10 +217,9 @@ static void berry_fix_main(void)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
static void berry_fix_gpu_set(void)
|
||||
{
|
||||
s32 width;
|
||||
s32 width, left;
|
||||
|
||||
SetGpuReg(REG_OFFSET_BG0CNT, 0x0000);
|
||||
SetGpuReg(REG_OFFSET_BG1CNT, 0x0000);
|
||||
@ -249,230 +248,27 @@ static void berry_fix_gpu_set(void)
|
||||
FillWindowPixelBuffer(3, 0);
|
||||
FillWindowPixelBuffer(0, 0xAA);
|
||||
|
||||
// This block is a meme among memes
|
||||
width = (0x78 - GetStringWidth(0, sUnknown_08617E9B, 0)) / 2;
|
||||
box_print(2, 0, width, 3, sUnknown_0861815B, -1, sUnknown_08617E9B);
|
||||
width = (s32)(0x78 - GetStringWidth(0, sUnknown_08617E9B, 0)) / 2 + 0x78;
|
||||
box_print(2, 0, width, 3, sUnknown_0861815B, -1, sUnknown_08617E8D);
|
||||
width = (0x70 - GetStringWidth(0, sUnknown_08617E8D, 0)) / 2;
|
||||
box_print(3, 0, width, 0, sUnknown_0861815B, -1, sUnknown_08617E8D);
|
||||
width = (0xd0 - GetStringWidth(1, sUnknown_08617E78, 0)) / 2;
|
||||
box_print(0, 1, width, 2, sUnknown_08618158, -1, sUnknown_08617E78);
|
||||
width = GetStringWidth(0, sUnknown_08617E9B, 0);
|
||||
left = (0x78 - width) / 2;
|
||||
box_print(2, 0, left, 3, sUnknown_0861815B, TEXT_SPEED_FF, sUnknown_08617E9B);
|
||||
|
||||
width = GetStringWidth(0, sUnknown_08617E8D, 0);
|
||||
left = (0x78 - width) / 2 + 0x78;
|
||||
box_print(2, 0, left, 3, sUnknown_0861815B, TEXT_SPEED_FF, sUnknown_08617E8D);
|
||||
|
||||
width = GetStringWidth(0, sUnknown_08617E8D, 0);
|
||||
left = (0x70 - width) / 2;
|
||||
box_print(3, 0, left, 0, sUnknown_0861815B, TEXT_SPEED_FF, sUnknown_08617E8D);
|
||||
|
||||
width = GetStringWidth(1, sUnknown_08617E78, 0);
|
||||
left = (0xD0 - width) / 2;
|
||||
box_print(0, 1, left, 2, sUnknown_08618158, TEXT_SPEED_FF, sUnknown_08617E78);
|
||||
|
||||
CopyWindowToVram(2, 2);
|
||||
CopyWindowToVram(3, 2);
|
||||
CopyWindowToVram(0, 2);
|
||||
}
|
||||
|
||||
#else
|
||||
__attribute__((naked)) static void berry_fix_gpu_set(void)
|
||||
{
|
||||
asm(".syntax unified\n"
|
||||
"\tpush {r4-r6,lr}\n"
|
||||
"\tmov r6, r8\n"
|
||||
"\tpush {r6}\n"
|
||||
"\tsub sp, 0x10\n"
|
||||
"\tmovs r0, 0x8\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tbl SetGpuReg\n"
|
||||
"\tmovs r0, 0xA\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tbl SetGpuReg\n"
|
||||
"\tmovs r0, 0x10\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tbl SetGpuReg\n"
|
||||
"\tmovs r0, 0x12\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tbl SetGpuReg\n"
|
||||
"\tmovs r0, 0x14\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tbl SetGpuReg\n"
|
||||
"\tmovs r0, 0x16\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tbl SetGpuReg\n"
|
||||
"\tmovs r0, 0x50\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tbl SetGpuReg\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tstr r1, [sp, 0xC]\n"
|
||||
"\tldr r4, =0x040000d4\n"
|
||||
"\tadd r0, sp, 0xC\n"
|
||||
"\tstr r0, [r4]\n"
|
||||
"\tmovs r0, 0xC0\n"
|
||||
"\tlsls r0, 19\n"
|
||||
"\tstr r0, [r4, 0x4]\n"
|
||||
"\tldr r0, =0x85006000\n"
|
||||
"\tstr r0, [r4, 0x8]\n"
|
||||
"\tldr r0, [r4, 0x8]\n"
|
||||
"\tstr r1, [sp, 0xC]\n"
|
||||
"\tadd r0, sp, 0xC\n"
|
||||
"\tstr r0, [r4]\n"
|
||||
"\tmovs r0, 0xE0\n"
|
||||
"\tlsls r0, 19\n"
|
||||
"\tstr r0, [r4, 0x4]\n"
|
||||
"\tldr r2, =0x85000100\n"
|
||||
"\tstr r2, [r4, 0x8]\n"
|
||||
"\tldr r0, [r4, 0x8]\n"
|
||||
"\tstr r1, [sp, 0xC]\n"
|
||||
"\tadd r0, sp, 0xC\n"
|
||||
"\tstr r0, [r4]\n"
|
||||
"\tmovs r0, 0xA0\n"
|
||||
"\tlsls r0, 19\n"
|
||||
"\tstr r0, [r4, 0x4]\n"
|
||||
"\tstr r2, [r4, 0x8]\n"
|
||||
"\tldr r0, [r4, 0x8]\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tbl ResetBgsAndClearDma3BusyFlags\n"
|
||||
"\tldr r1, =gUnknown_08618108\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tmovs r2, 0x2\n"
|
||||
"\tbl InitBgsFromTemplates\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tbl ChangeBgX\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tbl ChangeBgY\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tbl ChangeBgX\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tbl ChangeBgY\n"
|
||||
"\tldr r0, =gUnknown_08618110\n"
|
||||
"\tbl InitWindows\n"
|
||||
"\tbl DeactivateAllTextPrinters\n"
|
||||
"\tldr r0, =sUnknown_08618138\n"
|
||||
"\tstr r0, [r4]\n"
|
||||
"\tldr r0, =0x050001e0\n"
|
||||
"\tstr r0, [r4, 0x4]\n"
|
||||
"\tldr r0, =0x84000008\n"
|
||||
"\tstr r0, [r4, 0x8]\n"
|
||||
"\tldr r0, [r4, 0x8]\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tmovs r1, 0x40\n"
|
||||
"\tbl SetGpuReg\n"
|
||||
"\tmovs r0, 0x2\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tbl FillWindowPixelBuffer\n"
|
||||
"\tmovs r0, 0x3\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tbl FillWindowPixelBuffer\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tmovs r1, 0xAA\n"
|
||||
"\tbl FillWindowPixelBuffer\n"
|
||||
"\tldr r5, =sUnknown_08617E9B\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tadds r1, r5, 0\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tbl GetStringWidth\n"
|
||||
"\tadds r1, r0, 0\n"
|
||||
"\tmovs r4, 0x78\n"
|
||||
"\tsubs r0, r4, r1\n"
|
||||
"\tlsrs r1, r0, 31\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tasrs r0, 1\n"
|
||||
"\tlsls r2, r0, 24\n"
|
||||
"\tlsrs r2, 24\n"
|
||||
"\tldr r6, =sUnknown_0861815B\n"
|
||||
"\tstr r6, [sp]\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tnegs r0, r0\n"
|
||||
"\tmov r8, r0\n"
|
||||
"\tstr r0, [sp, 0x4]\n"
|
||||
"\tstr r5, [sp, 0x8]\n"
|
||||
"\tmovs r0, 0x2\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r3, 0x3\n"
|
||||
"\tbl box_print\n"
|
||||
"\tldr r5, =sUnknown_08617E8D\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tadds r1, r5, 0\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tbl GetStringWidth\n"
|
||||
"\tadds r1, r0, 0\n"
|
||||
"\tsubs r4, r1\n"
|
||||
"\tlsrs r0, r4, 31\n"
|
||||
"\tadds r4, r0\n"
|
||||
"\tasrs r4, 1\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tadds r0, 0x78\n"
|
||||
"\tlsls r2, r0, 24\n"
|
||||
"\tlsrs r2, 24\n"
|
||||
"\tstr r6, [sp]\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tstr r0, [sp, 0x4]\n"
|
||||
"\tstr r5, [sp, 0x8]\n"
|
||||
"\tmovs r0, 0x2\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r3, 0x3\n"
|
||||
"\tbl box_print\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tadds r1, r5, 0\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tbl GetStringWidth\n"
|
||||
"\tadds r1, r0, 0\n"
|
||||
"\tmovs r0, 0x70\n"
|
||||
"\tsubs r0, r1\n"
|
||||
"\tlsrs r1, r0, 31\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tasrs r0, 1\n"
|
||||
"\tlsls r2, r0, 24\n"
|
||||
"\tlsrs r2, 24\n"
|
||||
"\tstr r6, [sp]\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tstr r0, [sp, 0x4]\n"
|
||||
"\tstr r5, [sp, 0x8]\n"
|
||||
"\tmovs r0, 0x3\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tbl box_print\n"
|
||||
"\tldr r4, =sUnknown_08617E78\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tadds r1, r4, 0\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tbl GetStringWidth\n"
|
||||
"\tadds r1, r0, 0\n"
|
||||
"\tmovs r0, 0xD0\n"
|
||||
"\tsubs r0, r1\n"
|
||||
"\tlsrs r1, r0, 31\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tasrs r0, 1\n"
|
||||
"\tlsls r2, r0, 24\n"
|
||||
"\tlsrs r2, 24\n"
|
||||
"\tldr r0, =sUnknown_08618158\n"
|
||||
"\tstr r0, [sp]\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tstr r0, [sp, 0x4]\n"
|
||||
"\tstr r4, [sp, 0x8]\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tmovs r3, 0x2\n"
|
||||
"\tbl box_print\n"
|
||||
"\tmovs r0, 0x2\n"
|
||||
"\tmovs r1, 0x2\n"
|
||||
"\tbl CopyWindowToVram\n"
|
||||
"\tmovs r0, 0x3\n"
|
||||
"\tmovs r1, 0x2\n"
|
||||
"\tbl CopyWindowToVram\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tmovs r1, 0x2\n"
|
||||
"\tbl CopyWindowToVram\n"
|
||||
"\tadd sp, 0x10\n"
|
||||
"\tpop {r3}\n"
|
||||
"\tmov r8, r3\n"
|
||||
"\tpop {r4-r6}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.pool\n"
|
||||
".syntax divided");
|
||||
}
|
||||
#endif
|
||||
|
||||
static int berry_fix_text_update(int checkval)
|
||||
{
|
||||
if (berry_fix_mb_manager->unk1 == checkval)
|
||||
@ -522,7 +318,7 @@ static void berry_fix_text_print(int scene)
|
||||
ShowBg(1);
|
||||
}
|
||||
|
||||
static void berry_fix_bg_hide()
|
||||
static void berry_fix_bg_hide(void)
|
||||
{
|
||||
HideBg(0);
|
||||
HideBg(1);
|
||||
|
159
src/item_use.c
159
src/item_use.c
@ -92,6 +92,7 @@ extern u8 gBankInMenu;
|
||||
extern u16 gBattlePartyID[];
|
||||
extern void sub_81B89F0(void);
|
||||
extern u8 GetItemEffectType(u16);
|
||||
extern struct MapConnection *sub_8088A8C(s16, s16);
|
||||
|
||||
void MapPostLoadHook_UseItem(void);
|
||||
extern void sub_80AF6D4(void);
|
||||
@ -453,8 +454,6 @@ bool8 sub_80FD730(struct MapConnection *connection, int x, int y)
|
||||
return sub_80FD6D4(mapHeader->events, localX, localY);
|
||||
}
|
||||
|
||||
// weird math
|
||||
#ifdef NONMATCHING
|
||||
void sub_80FD7C8(u8 taskId)
|
||||
{
|
||||
s16 x, y;
|
||||
@ -462,15 +461,18 @@ void sub_80FD7C8(u8 taskId)
|
||||
s16 width = gMapHeader.mapData->width + 7;
|
||||
s16 height = gMapHeader.mapData->height + 7;
|
||||
|
||||
s16 var1 = 7;
|
||||
s16 var2 = 7;
|
||||
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
|
||||
for (curX = x - 7; curX <= x + 7; curX++)
|
||||
{
|
||||
for (curY = y - 5; curY <= y + 5; curY++)
|
||||
{
|
||||
if (7 > curX
|
||||
if (var1 > curX
|
||||
|| curX >= width
|
||||
|| 7 > curY
|
||||
|| var2 > curY
|
||||
|| curY >= height)
|
||||
{
|
||||
struct MapConnection *conn = sub_8088A8C(curX, curY);
|
||||
@ -480,155 +482,6 @@ void sub_80FD7C8(u8 taskId)
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
__attribute__((naked))
|
||||
void sub_80FD7C8(u8 taskId)
|
||||
{
|
||||
asm(".syntax unified\n\
|
||||
push {r4-r7,lr}\n\
|
||||
mov r7, r10\n\
|
||||
mov r6, r9\n\
|
||||
mov r5, r8\n\
|
||||
push {r5-r7}\n\
|
||||
sub sp, 0x14\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
str r0, [sp, 0x4]\n\
|
||||
ldr r0, =gMapHeader\n\
|
||||
ldr r1, [r0]\n\
|
||||
ldr r0, [r1]\n\
|
||||
adds r0, 0x7\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r0, 16\n\
|
||||
str r0, [sp, 0x8]\n\
|
||||
ldr r0, [r1, 0x4]\n\
|
||||
adds r0, 0x7\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r0, 16\n\
|
||||
str r0, [sp, 0xC]\n\
|
||||
mov r4, sp\n\
|
||||
adds r4, 0x2\n\
|
||||
mov r0, sp\n\
|
||||
adds r1, r4, 0\n\
|
||||
bl PlayerGetDestCoords\n\
|
||||
mov r0, sp\n\
|
||||
ldrh r0, [r0]\n\
|
||||
subs r0, 0x7\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r3, r0, 16\n\
|
||||
asrs r0, 16\n\
|
||||
mov r1, sp\n\
|
||||
movs r2, 0\n\
|
||||
ldrsh r1, [r1, r2]\n\
|
||||
adds r1, 0x7\n\
|
||||
cmp r0, r1\n\
|
||||
bgt _080FD8CC\n\
|
||||
_080FD816:\n\
|
||||
mov r5, sp\n\
|
||||
ldrh r0, [r5, 0x2]\n\
|
||||
subs r0, 0x5\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r4, r0, 16\n\
|
||||
lsls r2, r4, 16\n\
|
||||
asrs r1, r2, 16\n\
|
||||
movs r6, 0x2\n\
|
||||
ldrsh r0, [r5, r6]\n\
|
||||
adds r0, 0x5\n\
|
||||
lsls r3, 16\n\
|
||||
mov r8, r3\n\
|
||||
cmp r1, r0\n\
|
||||
bgt _080FD8B6\n\
|
||||
movs r0, 0x7\n\
|
||||
str r0, [sp, 0x10]\n\
|
||||
mov r1, r8\n\
|
||||
asrs r1, 16\n\
|
||||
mov r9, r1\n\
|
||||
mov r10, r0\n\
|
||||
_080FD83E:\n\
|
||||
ldr r3, [sp, 0x10]\n\
|
||||
cmp r3, r9\n\
|
||||
bgt _080FD860\n\
|
||||
ldr r5, [sp, 0x8]\n\
|
||||
lsls r0, r5, 16\n\
|
||||
asrs r0, 16\n\
|
||||
cmp r9, r0\n\
|
||||
bge _080FD860\n\
|
||||
asrs r1, r2, 16\n\
|
||||
cmp r10, r1\n\
|
||||
bgt _080FD860\n\
|
||||
ldr r6, [sp, 0xC]\n\
|
||||
lsls r0, r6, 16\n\
|
||||
asrs r0, 16\n\
|
||||
lsls r7, r4, 16\n\
|
||||
cmp r1, r0\n\
|
||||
blt _080FD89E\n\
|
||||
_080FD860:\n\
|
||||
mov r0, r8\n\
|
||||
asrs r5, r0, 16\n\
|
||||
lsls r4, 16\n\
|
||||
asrs r6, r4, 16\n\
|
||||
adds r0, r5, 0\n\
|
||||
adds r1, r6, 0\n\
|
||||
bl sub_8088A8C\n\
|
||||
adds r7, r4, 0\n\
|
||||
cmp r0, 0\n\
|
||||
beq _080FD89E\n\
|
||||
adds r1, r5, 0\n\
|
||||
adds r2, r6, 0\n\
|
||||
bl sub_80FD730\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
cmp r0, 0x1\n\
|
||||
bne _080FD89E\n\
|
||||
mov r0, sp\n\
|
||||
ldrh r1, [r0]\n\
|
||||
subs r1, r5, r1\n\
|
||||
lsls r1, 16\n\
|
||||
asrs r1, 16\n\
|
||||
ldrh r2, [r0, 0x2]\n\
|
||||
subs r2, r6, r2\n\
|
||||
lsls r2, 16\n\
|
||||
asrs r2, 16\n\
|
||||
ldr r0, [sp, 0x4]\n\
|
||||
bl sub_80FD8E0\n\
|
||||
_080FD89E:\n\
|
||||
movs r1, 0x80\n\
|
||||
lsls r1, 9\n\
|
||||
adds r0, r7, r1\n\
|
||||
lsrs r4, r0, 16\n\
|
||||
lsls r2, r4, 16\n\
|
||||
asrs r1, r2, 16\n\
|
||||
mov r3, sp\n\
|
||||
movs r5, 0x2\n\
|
||||
ldrsh r0, [r3, r5]\n\
|
||||
adds r0, 0x5\n\
|
||||
cmp r1, r0\n\
|
||||
ble _080FD83E\n\
|
||||
_080FD8B6:\n\
|
||||
movs r1, 0x80\n\
|
||||
lsls r1, 9\n\
|
||||
add r1, r8\n\
|
||||
lsrs r3, r1, 16\n\
|
||||
asrs r1, 16\n\
|
||||
mov r0, sp\n\
|
||||
movs r6, 0\n\
|
||||
ldrsh r0, [r0, r6]\n\
|
||||
adds r0, 0x7\n\
|
||||
cmp r1, r0\n\
|
||||
ble _080FD816\n\
|
||||
_080FD8CC:\n\
|
||||
add sp, 0x14\n\
|
||||
pop {r3-r5}\n\
|
||||
mov r8, r3\n\
|
||||
mov r9, r4\n\
|
||||
mov r10, r5\n\
|
||||
pop {r4-r7}\n\
|
||||
pop {r0}\n\
|
||||
bx r0\n\
|
||||
.pool\n\
|
||||
.syntax divided\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
void sub_80FD8E0(u8 taskId, s16 x, s16 y)
|
||||
{
|
||||
|
@ -1197,26 +1197,26 @@ void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord)
|
||||
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
if (gBattleResources->secretBase->partySpecies[i])
|
||||
if (gBattleResources->secretBase->party.species[i])
|
||||
{
|
||||
CreateMon(&gEnemyParty[i],
|
||||
gBattleResources->secretBase->partySpecies[i],
|
||||
gBattleResources->secretBase->partyLevels[i],
|
||||
gBattleResources->secretBase->party.species[i],
|
||||
gBattleResources->secretBase->party.levels[i],
|
||||
15,
|
||||
1,
|
||||
gBattleResources->secretBase->partyPersonality[i],
|
||||
gBattleResources->secretBase->party.personality[i],
|
||||
2,
|
||||
0);
|
||||
|
||||
SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBattleResources->secretBase->partyHeldItems[i]);
|
||||
SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBattleResources->secretBase->party.heldItems[i]);
|
||||
|
||||
for (j = 0; j < 6; j++)
|
||||
SetMonData(&gEnemyParty[i], MON_DATA_HP_EV + j, &gBattleResources->secretBase->partyEVs[i]);
|
||||
SetMonData(&gEnemyParty[i], MON_DATA_HP_EV + j, &gBattleResources->secretBase->party.EVs[i]);
|
||||
|
||||
for (j = 0; j < 4; j++)
|
||||
{
|
||||
SetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j, &gBattleResources->secretBase->partyMoves[i * 4 + j]);
|
||||
SetMonData(&gEnemyParty[i], MON_DATA_PP1 + j, &gBattleMoves[gBattleResources->secretBase->partyMoves[i * 4 + j]].pp);
|
||||
SetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j, &gBattleResources->secretBase->party.moves[i * 4 + j]);
|
||||
SetMonData(&gEnemyParty[i], MON_DATA_PP1 + j, &gBattleMoves[gBattleResources->secretBase->party.moves[i * 4 + j]].pp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include "menu_indicators.h"
|
||||
#include "constants/maps.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/species.h"
|
||||
#include "sound.h"
|
||||
#include "overworld.h"
|
||||
#include "fieldmap.h"
|
||||
@ -711,237 +712,45 @@ u8 sub_80E98AC(struct Pokemon *pokemon)
|
||||
return evTotal / 6;
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
// This function is a meme
|
||||
void sub_80E9914(void)
|
||||
{
|
||||
u32 zero;
|
||||
u32 *personality;
|
||||
u16 partyIdx;
|
||||
u16 moveIdx;
|
||||
u16 sbPartyIdx;
|
||||
u16 *species;
|
||||
u16 *items;
|
||||
u16 *moves;
|
||||
u8 *levels;
|
||||
u8 *evs;
|
||||
struct SecretBaseParty *party;
|
||||
|
||||
sbPartyIdx = 0;
|
||||
personality = gSaveBlock1Ptr->secretBases[0].partyPersonality;
|
||||
party = &gSaveBlock1Ptr->secretBases[0].party;
|
||||
if (gSaveBlock1Ptr->secretBases[0].secretBaseId != 0)
|
||||
{
|
||||
partyIdx = 0;
|
||||
moves = gSaveBlock1Ptr->secretBases[0].partyMoves;
|
||||
species = gSaveBlock1Ptr->secretBases[0].partySpecies;
|
||||
items = gSaveBlock1Ptr->secretBases[0].partyHeldItems;
|
||||
levels = gSaveBlock1Ptr->secretBases[0].partyLevels;
|
||||
evs = gSaveBlock1Ptr->secretBases[0].partyEVs;
|
||||
zero = 0;
|
||||
for (partyIdx = 0; partyIdx < PARTY_SIZE; partyIdx ++)
|
||||
for (partyIdx = 0; partyIdx < PARTY_SIZE; partyIdx++)
|
||||
{
|
||||
for (moveIdx = 0; moveIdx < 4; moveIdx ++)
|
||||
for (moveIdx = 0; moveIdx < 4; moveIdx++)
|
||||
{
|
||||
moves[partyIdx * 4 + moveIdx] = zero;
|
||||
party->moves[partyIdx * 4 + moveIdx] = 0;
|
||||
}
|
||||
species[partyIdx] = zero;
|
||||
items[partyIdx] = zero;
|
||||
levels[partyIdx] = zero;
|
||||
personality[partyIdx] = zero;
|
||||
evs[partyIdx] = zero;
|
||||
if (GetMonData(&gPlayerParty[partyIdx], MON_DATA_SPECIES) != SPECIES_NONE && !GetMonData(&gPlayerParty[partyIdx], MON_DATA_IS_EGG))
|
||||
party->species[partyIdx] = 0;
|
||||
party->heldItems[partyIdx] = 0;
|
||||
party->levels[partyIdx] = 0;
|
||||
party->personality[partyIdx] = 0;
|
||||
party->EVs[partyIdx] = 0;
|
||||
if (GetMonData(&gPlayerParty[partyIdx], MON_DATA_SPECIES) != SPECIES_NONE
|
||||
&& !GetMonData(&gPlayerParty[partyIdx], MON_DATA_IS_EGG))
|
||||
{
|
||||
for (moveIdx = 0; moveIdx < 4; moveIdx ++)
|
||||
for (moveIdx = 0; moveIdx < 4; moveIdx++)
|
||||
{
|
||||
moves[sbPartyIdx * 4 + moveIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_MOVE1 + moveIdx);
|
||||
party->moves[sbPartyIdx * 4 + moveIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_MOVE1 + moveIdx);
|
||||
}
|
||||
species[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_SPECIES);
|
||||
items[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_HELD_ITEM);
|
||||
levels[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_LEVEL);
|
||||
personality[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_PERSONALITY);
|
||||
evs[sbPartyIdx] = sub_80E98AC(&gPlayerParty[partyIdx]);
|
||||
sbPartyIdx ++;
|
||||
party->species[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_SPECIES);
|
||||
party->heldItems[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_HELD_ITEM);
|
||||
party->levels[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_LEVEL);
|
||||
party->personality[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_PERSONALITY);
|
||||
party->EVs[sbPartyIdx] = sub_80E98AC(&gPlayerParty[partyIdx]);
|
||||
sbPartyIdx++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
__attribute__((naked)) void sub_80E9914(void)
|
||||
{
|
||||
asm_unified("\tpush {r4-r7,lr}\n"
|
||||
"\tmov r7, r10\n"
|
||||
"\tmov r6, r9\n"
|
||||
"\tmov r5, r8\n"
|
||||
"\tpush {r5-r7}\n"
|
||||
"\tsub sp, 0x24\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tmov r10, r0\n"
|
||||
"\tldr r0, =gSaveBlock1Ptr\n"
|
||||
"\tldr r1, [r0]\n"
|
||||
"\tldr r2, =0x00001ad0\n"
|
||||
"\tadds r2, r1, r2\n"
|
||||
"\tstr r2, [sp]\n"
|
||||
"\tldr r3, =0x00001a9c\n"
|
||||
"\tadds r0, r1, r3\n"
|
||||
"\tldrb r0, [r0]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _080E993A\n"
|
||||
"\tb _080E9A60\n"
|
||||
"_080E993A:\n"
|
||||
"\tmovs r6, 0\n"
|
||||
"\tldr r7, =0x00001ae8\n"
|
||||
"\tadds r7, r1, r7\n"
|
||||
"\tstr r7, [sp, 0x14]\n"
|
||||
"\tldr r0, =0x00001b18\n"
|
||||
"\tadds r0, r1, r0\n"
|
||||
"\tstr r0, [sp, 0xC]\n"
|
||||
"\tldr r2, =0x00001b24\n"
|
||||
"\tadds r2, r1, r2\n"
|
||||
"\tstr r2, [sp, 0x10]\n"
|
||||
"\tadds r3, 0x94\n"
|
||||
"\tadds r3, r1, r3\n"
|
||||
"\tstr r3, [sp, 0x18]\n"
|
||||
"\tldr r7, =0x00001b36\n"
|
||||
"\tadds r7, r1, r7\n"
|
||||
"\tstr r7, [sp, 0x1C]\n"
|
||||
"\tmov r9, r6\n"
|
||||
"_080E995C:\n"
|
||||
"\tmovs r4, 0\n"
|
||||
"\tlsls r5, r6, 2\n"
|
||||
"\tlsls r3, r6, 1\n"
|
||||
"\tldr r0, =gPlayerParty\n"
|
||||
"\tmov r8, r0\n"
|
||||
"\tadds r1, r6, 0x1\n"
|
||||
"\tstr r1, [sp, 0x4]\n"
|
||||
"\tadds r2, r5, 0\n"
|
||||
"\tldr r1, [sp, 0x14]\n"
|
||||
"_080E996E:\n"
|
||||
"\tadds r0, r2, r4\n"
|
||||
"\tlsls r0, 1\n"
|
||||
"\tadds r0, r1, r0\n"
|
||||
"\tmov r7, r9\n"
|
||||
"\tstrh r7, [r0]\n"
|
||||
"\tadds r0, r4, 0x1\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r4, r0, 16\n"
|
||||
"\tcmp r4, 0x3\n"
|
||||
"\tbls _080E996E\n"
|
||||
"\tldr r1, [sp, 0xC]\n"
|
||||
"\tadds r0, r1, r3\n"
|
||||
"\tmov r2, r9\n"
|
||||
"\tstrh r2, [r0]\n"
|
||||
"\tldr r7, [sp, 0x10]\n"
|
||||
"\tadds r0, r7, r3\n"
|
||||
"\tstrh r2, [r0]\n"
|
||||
"\tldr r1, [sp, 0x18]\n"
|
||||
"\tadds r0, r1, r6\n"
|
||||
"\tmov r2, r9\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tldr r3, [sp]\n"
|
||||
"\tadds r0, r3, r5\n"
|
||||
"\tmov r7, r9\n"
|
||||
"\tstr r7, [r0]\n"
|
||||
"\tldr r1, [sp, 0x1C]\n"
|
||||
"\tadds r0, r1, r6\n"
|
||||
"\tstrb r7, [r0]\n"
|
||||
"\tmovs r2, 0x64\n"
|
||||
"\tadds r5, r6, 0\n"
|
||||
"\tmuls r5, r2\n"
|
||||
"\tmov r3, r8\n"
|
||||
"\tadds r4, r5, r3\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tmovs r1, 0xB\n"
|
||||
"\tbl GetMonData\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _080E9A54\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tmovs r1, 0x2D\n"
|
||||
"\tbl GetMonData\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _080E9A54\n"
|
||||
"\tmovs r4, 0\n"
|
||||
"\tmov r7, r10\n"
|
||||
"\tlsls r7, 2\n"
|
||||
"\tmov r8, r7\n"
|
||||
"\tmov r0, r10\n"
|
||||
"\tlsls r7, r0, 1\n"
|
||||
"\tadds r0, 0x1\n"
|
||||
"\tstr r0, [sp, 0x8]\n"
|
||||
"\tldr r2, =gPlayerParty\n"
|
||||
"_080E99DA:\n"
|
||||
"\tadds r1, r4, 0\n"
|
||||
"\tadds r1, 0xD\n"
|
||||
"\tadds r0, r5, r2\n"
|
||||
"\tstr r2, [sp, 0x20]\n"
|
||||
"\tbl GetMonData\n"
|
||||
"\tmov r3, r8\n"
|
||||
"\tadds r1, r3, r4\n"
|
||||
"\tlsls r1, 1\n"
|
||||
"\tldr r3, [sp, 0x14]\n"
|
||||
"\tadds r1, r3, r1\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tadds r0, r4, 0x1\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r4, r0, 16\n"
|
||||
"\tldr r2, [sp, 0x20]\n"
|
||||
"\tcmp r4, 0x3\n"
|
||||
"\tbls _080E99DA\n"
|
||||
"\tmovs r0, 0x64\n"
|
||||
"\tadds r4, r6, 0\n"
|
||||
"\tmuls r4, r0\n"
|
||||
"\tldr r0, =gPlayerParty\n"
|
||||
"\tadds r4, r0\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tmovs r1, 0xB\n"
|
||||
"\tbl GetMonData\n"
|
||||
"\tldr r2, [sp, 0xC]\n"
|
||||
"\tadds r1, r2, r7\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tmovs r1, 0xC\n"
|
||||
"\tbl GetMonData\n"
|
||||
"\tldr r3, [sp, 0x10]\n"
|
||||
"\tadds r1, r3, r7\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tmovs r1, 0x38\n"
|
||||
"\tbl GetMonData\n"
|
||||
"\tldr r1, [sp, 0x18]\n"
|
||||
"\tadd r1, r10\n"
|
||||
"\tstrb r0, [r1]\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tbl GetMonData\n"
|
||||
"\tldr r1, [sp]\n"
|
||||
"\tadd r1, r8\n"
|
||||
"\tstr r0, [r1]\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tbl sub_80E98AC\n"
|
||||
"\tldr r1, [sp, 0x1C]\n"
|
||||
"\tadd r1, r10\n"
|
||||
"\tstrb r0, [r1]\n"
|
||||
"\tldr r7, [sp, 0x8]\n"
|
||||
"\tlsls r0, r7, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tmov r10, r0\n"
|
||||
"_080E9A54:\n"
|
||||
"\tldr r1, [sp, 0x4]\n"
|
||||
"\tlsls r0, r1, 16\n"
|
||||
"\tlsrs r6, r0, 16\n"
|
||||
"\tcmp r6, 0x5\n"
|
||||
"\tbhi _080E9A60\n"
|
||||
"\tb _080E995C\n"
|
||||
"_080E9A60:\n"
|
||||
"\tadd sp, 0x24\n"
|
||||
"\tpop {r3-r5}\n"
|
||||
"\tmov r8, r3\n"
|
||||
"\tmov r9, r4\n"
|
||||
"\tmov r10, r5\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.pool");
|
||||
}
|
||||
#endif
|
||||
|
||||
void sub_80E9A90(void)
|
||||
{
|
||||
@ -1357,7 +1166,6 @@ void sub_80EA354(void)
|
||||
gSpecialVar_Result = gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_1_5;
|
||||
}
|
||||
|
||||
|
||||
void sub_80EA3E4(u8 taskId)
|
||||
{
|
||||
s16 x;
|
||||
|
114
src/sprite.c
114
src/sprite.c
@ -240,12 +240,26 @@ static const AffineAnimCmdFunc sAffineAnimCmdFuncs[] =
|
||||
AffineAnimCmd_frame,
|
||||
};
|
||||
|
||||
static const s32 sUnknown_082EC6F4[24] =
|
||||
static const s32 sUnknown_082EC6F4[3][4][2] =
|
||||
{
|
||||
8, 8, 0x10, 0x10, 0x20, 0x20,
|
||||
0x40, 0x40, 0x10, 8, 0x20, 8,
|
||||
0x20, 0x10, 0x40, 0x20, 8, 0x10,
|
||||
8, 0x20, 0x10, 0x20, 0x20, 0x40,
|
||||
{
|
||||
{8, 8},
|
||||
{0x10, 0x10},
|
||||
{0x20, 0x20},
|
||||
{0x40, 0x40},
|
||||
},
|
||||
{
|
||||
{0x10, 8},
|
||||
{0x20, 8},
|
||||
{0x20, 0x10},
|
||||
{0x40, 0x20},
|
||||
},
|
||||
{
|
||||
{8, 0x10},
|
||||
{8, 0x20},
|
||||
{0x10, 0x20},
|
||||
{0x20, 0x40},
|
||||
},
|
||||
};
|
||||
|
||||
static const struct OamDimensions sOamDimensions[3][4] =
|
||||
@ -1207,106 +1221,26 @@ s32 sub_8007E28(s32 a0, s32 a1, s32 a2)
|
||||
return a2 - ((u32)(a2 * a1) / (u32)(a0) + var1);
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
void obj_update_pos2(struct Sprite* sprite, s32 a1, s32 a2)
|
||||
void obj_update_pos2(struct Sprite *sprite, s32 a1, s32 a2)
|
||||
{
|
||||
s32 var0, var1, var2;
|
||||
u8 matrixNum = sprite->oam.matrixNum;
|
||||
|
||||
u32 matrixNum = sprite->oam.matrixNum;
|
||||
if (a1 != 0x800)
|
||||
{
|
||||
var0 = sUnknown_082EC6F4[sprite->oam.size * 8 + sprite->oam.shape * 32];
|
||||
var0 = sUnknown_082EC6F4[sprite->oam.shape][sprite->oam.size][0];
|
||||
var1 = var0 << 8;
|
||||
var2 = (var0 << 16) / gOamMatrices[matrixNum].a;
|
||||
sprite->pos2.x = sub_8007E28(var1, var2, a1);
|
||||
}
|
||||
if (a2 != 0x800)
|
||||
{
|
||||
var0 = sUnknown_082EC6F4[4 + (sprite->oam.size * 8 + sprite->oam.shape * 32)];
|
||||
var0 = sUnknown_082EC6F4[sprite->oam.shape][sprite->oam.size][1];
|
||||
var1 = var0 << 8;
|
||||
var2 = (var0 << 16) / gOamMatrices[matrixNum].d;
|
||||
sprite->pos2.y = sub_8007E28(var1, var2, a2);
|
||||
}
|
||||
}
|
||||
#else
|
||||
__attribute__((naked))
|
||||
void obj_update_pos2(struct Sprite* sprite, s32 a1, s32 a2)
|
||||
{
|
||||
asm(".syntax unified\n\
|
||||
push {r4-r7,lr}\n\
|
||||
mov r7, r9\n\
|
||||
mov r6, r8\n\
|
||||
push {r6,r7}\n\
|
||||
adds r5, r0, 0\n\
|
||||
adds r6, r1, 0\n\
|
||||
mov r8, r2\n\
|
||||
ldrb r1, [r5, 0x3]\n\
|
||||
lsls r0, r1, 26\n\
|
||||
lsrs r7, r0, 27\n\
|
||||
movs r0, 0x80\n\
|
||||
lsls r0, 4\n\
|
||||
mov r9, r0\n\
|
||||
cmp r6, r9\n\
|
||||
beq _08007EA2\n\
|
||||
ldr r2, =sUnknown_082EC6F4\n\
|
||||
lsrs r1, 6\n\
|
||||
lsls r1, 3\n\
|
||||
ldrb r0, [r5, 0x1]\n\
|
||||
lsrs r0, 6\n\
|
||||
lsls r0, 5\n\
|
||||
adds r1, r0\n\
|
||||
adds r1, r2\n\
|
||||
ldr r0, [r1]\n\
|
||||
lsls r4, r0, 8\n\
|
||||
lsls r0, 16\n\
|
||||
ldr r2, =gOamMatrices\n\
|
||||
lsls r1, r7, 3\n\
|
||||
adds r1, r2\n\
|
||||
movs r2, 0\n\
|
||||
ldrsh r1, [r1, r2]\n\
|
||||
bl __divsi3\n\
|
||||
adds r1, r0, 0\n\
|
||||
adds r0, r4, 0\n\
|
||||
adds r2, r6, 0\n\
|
||||
bl sub_8007E28\n\
|
||||
strh r0, [r5, 0x24]\n\
|
||||
_08007EA2:\n\
|
||||
cmp r8, r9\n\
|
||||
beq _08007EDA\n\
|
||||
ldr r2, =sUnknown_082EC6F4\n\
|
||||
ldrb r1, [r5, 0x3]\n\
|
||||
lsrs r1, 6\n\
|
||||
lsls r1, 3\n\
|
||||
ldrb r0, [r5, 0x1]\n\
|
||||
lsrs r0, 6\n\
|
||||
lsls r0, 5\n\
|
||||
adds r1, r0\n\
|
||||
adds r2, 0x4\n\
|
||||
adds r1, r2\n\
|
||||
ldr r0, [r1]\n\
|
||||
lsls r4, r0, 8\n\
|
||||
lsls r0, 16\n\
|
||||
ldr r2, =gOamMatrices\n\
|
||||
lsls r1, r7, 3\n\
|
||||
adds r1, r2\n\
|
||||
movs r2, 0x6\n\
|
||||
ldrsh r1, [r1, r2]\n\
|
||||
bl __divsi3\n\
|
||||
adds r1, r0, 0\n\
|
||||
adds r0, r4, 0\n\
|
||||
mov r2, r8\n\
|
||||
bl sub_8007E28\n\
|
||||
strh r0, [r5, 0x26]\n\
|
||||
_08007EDA:\n\
|
||||
pop {r3,r4}\n\
|
||||
mov r8, r3\n\
|
||||
mov r9, r4\n\
|
||||
pop {r4-r7}\n\
|
||||
pop {r0}\n\
|
||||
bx r0\n\
|
||||
.pool\n\
|
||||
.syntax divided");
|
||||
}
|
||||
#endif // NONMATCHING
|
||||
|
||||
void SetSpriteOamFlipBits(struct Sprite *sprite, u8 hFlip, u8 vFlip)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user