ItemId_GetName, CopyItemName

This commit is contained in:
PikalaxALT 2021-08-30 14:15:17 -04:00
parent ac14e89984
commit 035de03c09
4 changed files with 57 additions and 91 deletions

View File

@ -3,97 +3,6 @@
.text
.syntax unified
thumb_func_start GetItemById
GetItemById: @ 0x0200C680
lsls r0, r0, #0x10
lsrs r1, r0, #0x10
ldr r0, =gAgbPmRomParams
ldr r0, [r0]
adds r0, #0xc8
ldr r2, [r0]
movs r0, #0xae
lsls r0, r0, #1
cmp r1, r0
bls _0200C696
movs r1, #0
_0200C696:
movs r0, #0x2c
muls r0, r1, r0
adds r0, r2, r0
bx lr
.align 2, 0
.pool
thumb_func_start CopyItemName
CopyItemName: @ 0x0200C6A4
push {r4, r5, lr}
adds r4, r1, #0
adds r5, r2, #0
lsls r0, r0, #0x10
lsrs r1, r0, #0x10
adds r2, r1, #0
cmp r1, #0xaf
bne _0200C6F8
movs r2, #0x2b
ldr r0, =gEnigmaBerryPtr
ldr r1, [r0]
ldrb r0, [r1, #0x14]
cmp r0, #0
beq _0200C6C8
ldrb r3, [r1, #0xa]
rsbs r0, r3, #0
cmp r0, #0
blt _0200C6DE
_0200C6C8:
subs r0, r2, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x2a
bls _0200C6D4
movs r2, #1
_0200C6D4:
lsls r0, r2, #3
subs r0, r0, r2
lsls r0, r0, #2
ldr r1, =gBerries - 28
adds r1, r0, r1
_0200C6DE:
adds r0, r4, #0
bl StringCopy
adds r0, r4, #0
adds r1, r5, #0
bl StringAppend
b _0200C722
.align 2, 0
.pool
_0200C6F8:
ldr r0, =gAgbPmRomParams
ldr r0, [r0]
adds r0, #0xc8
ldr r3, [r0]
movs r0, #0xae
lsls r0, r0, #1
cmp r1, r0
bls _0200C710
movs r1, #0
b _0200C712
.align 2, 0
.pool
_0200C710:
adds r1, r2, #0
_0200C712:
movs r0, #0x2c
adds r2, r1, #0
muls r2, r0, r2
adds r1, r2, #0
adds r1, r3, r1
adds r0, r4, #0
bl StringCopy
_0200C722:
pop {r4, r5}
pop {r0}
bx r0
thumb_func_start ball_number_to_ball_processing_index
ball_number_to_ball_processing_index: @ 0x0200C728
lsls r0, r0, #0x10

View File

@ -4,5 +4,6 @@
#include "libpmagb/agb_rom.h"
#include "libpmagb/save.h"
#include "libpmagb/berry.h"
#include "libpmagb/string_util.h"
#endif //GUARD_LIBPMAGB_H

View File

@ -0,0 +1,7 @@
#ifndef PMAGB_STRING_UTIL_H
#define PMAGB_STRING_UTIL_H
u8 *StringCopy(u8 *dest, const u8 *src);
u8 *StringAppend(u8 *dest, const u8 *src);
#endif //PMAGB_STRING_UTIL_H

View File

@ -3,6 +3,27 @@
#include "constants/berry.h"
#include "constants/items.h"
typedef void (*ItemUseFunc)(u8);
struct Item
{
u8 name[14];
u16 itemId;
u16 price;
u8 holdEffect;
u8 holdEffectParam;
const u8 *description;
u8 importance;
u8 exitsBagOnUse; // unused, but items which have this field set to 1 all
// exit the Bag when they are used.
u8 pocket;
u8 type;
ItemUseFunc fieldUseFunc;
u8 battleUsage;
ItemUseFunc battleUseFunc;
u8 secondaryId;
};
u32 GetEnigmaBerryChecksum(struct EnigmaBerry * enigmaBerry)
{
u32 i, csum;
@ -64,3 +85,31 @@ const struct Berry *GetBerryInfo(u8 berry)
return &gBerries[berry - 1];
}
}
static u16 SanitizeItemId(u16 itemId)
{
if (itemId >= ITEMS_COUNT)
return 0;
else
return itemId;
}
const u8 *ItemId_GetName(u16 itemId)
{
const struct Item * items = gAgbPmRomParams->items;
return items[SanitizeItemId(itemId)].name;
}
void CopyItemName(u16 itemId, u8 *string, const u8 * berry_str)
{
if (itemId == ITEM_ENIGMA_BERRY)
{
StringCopy(string, GetBerryInfo(ITEM_TO_BERRY(ITEM_ENIGMA_BERRY))->name);
StringAppend(string, berry_str);
}
else
{
StringCopy(string, ItemId_GetName(itemId));
}
}