mirror of
https://github.com/pret/colosseum-mb.git
synced 2026-04-26 08:49:29 -05:00
ItemId_GetName, CopyItemName
This commit is contained in:
parent
ac14e89984
commit
035de03c09
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
7
payload/include/libpmagb/string_util.h
Normal file
7
payload/include/libpmagb/string_util.h
Normal 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
|
||||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user