Corrected AbilityData

This commit is contained in:
Ogre 2023-09-11 01:53:42 +02:00
parent f0091a98ae
commit 0003efebb1
6 changed files with 28 additions and 19 deletions

View File

@ -297,19 +297,19 @@ extern u8 D_800A872C;
extern CharacterSlot CHARACTER_SLOT[];
typedef struct {
/* 0x00 */ u8 field_0x0;
/* 0x01 */ Element element;
/* 0x02 */ u8 field_0x2;
/* 0x03 */ u8 field_0x3;
/* 0x04 */ u8 field_0x4;
/* 0x05 */ u8 field_0x5;
/* 0x06 */ u8 field_0x6;
/* 0x07 */ u8 field_0x7;
/* 0x08 */ u8 field_0x8;
/* 0x09 */ u8 field_0x9;
/* 0x0a */ u8 field_0xa;
/* 0x0b */ u8 field_0xb;
/* 0x0c */ const char* name;
/* 0x00 */ const char* name;
/* 0x04 */ u8 field_0x0;
/* 0x05 */ Element element;
/* 0x06 */ u8 field_0x2;
/* 0x07 */ u8 field_0x3;
/* 0x08 */ u8 field_0x4;
/* 0x09 */ u8 field_0x5;
/* 0x0a */ u8 field_0x6;
/* 0x0b */ u8 field_0x7;
/* 0x0c */ u8 field_0x8;
/* 0x0d */ u8 field_0x9;
/* 0x0e */ u8 field_0xa;
/* 0x0f */ u8 field_0xb;
} AbilityData; // size:0x10
extern AbilityData ABILITY_DATA[];

View File

@ -165,7 +165,7 @@ char* item_get_name(u16 index) {
}
/* 454C8 8016F5C8 */
u8 item_get_type(u16 index) {
ItemType item_get_type(u16 index) {
return ITEM_DATA[index].type;
}

View File

@ -16,7 +16,7 @@ STR_PETRIFICATION = 0x8021DFA0; // rom:0x1B22B0
STR_PHYSICAL = 0x80187660; // rom:0x5D560 type:asciz
ABILITY_DATA = 0x8018AA80; // rom:0x60980 size:0x10
ABILITY_DATA = 0x8018AA7C; // rom:0x6097C size:0x10
ability_get_element = 0x8016E470;
ITEM_DATA = 0x8018C40C; // size:0x20

View File

@ -2,6 +2,9 @@ from ob import read_rom, ELEMENT_NAME
from struct import unpack_from
NAME_VADDR_START = 0x8016AF80
NAME_ADDR_START = 0x40E80
def read_attack(index):
ATTACK_SIZE = 0x10
ATTACK_FORMAT = '>BBBBBBBBBBBBI'
@ -14,14 +17,12 @@ def read_attack(index):
length = 0x6136B - 0x60980
for i in range(0, 130):
name_vaddr_start = 0x801876FC
name_addr_start = 0x5D5FC
(field_0x0, element, field_0x2, field_0x3, field_0x4,
field_0x5, field_0x6, field_0x7, field_0x8, field_0x9,
field_0xa, field_0xb, name_vaddr) = read_attack(i)
name_addr_diff = (name_vaddr - name_vaddr_start) + name_addr_start
name_addr_diff = (name_vaddr - NAME_VADDR_START) + NAME_ADDR_START
name = read_rom(name_addr_diff, name_addr_diff + 32).split(b'\0', 1)[0]
print(f"{name}:\t", (field_0x0, field_0x2, field_0x3, field_0x4, field_0x5,

View File

@ -39,10 +39,15 @@ ITEM_TYPE_NAME = {
19: "Robe",
20: "Garment",
21: "Helm",
22: "Headgear",
23: "Spellbook",
24: "Fan",
25: "Accessory",
255: "Invalid"
}
for i in range(1, 276):
for i in range(0, 279):
# print(f"Item {i}:")
(name_vaddr, item_type, element, field_0x2, field_0x3, field_0x4,
strength, intelligence, agility, dexterity, vitality,
@ -53,6 +58,8 @@ for i in range(1, 276):
(field_0xc, res_strike, res_wind, res_fire, res_earth, res_water,
res_holy, res_dark, *rest) = rest
rest = (field_0xc, *rest)
type_str = ITEM_TYPE_NAME[item_type] if item_type in ITEM_TYPE_NAME else f"Unknown({item_type})"

View File

@ -19,6 +19,7 @@ ELEMENT_NAME = {
14: "Unknown_14",
15: "Unknown_15",
16: "Wind (Special)",
255: "Invalid"
}