parent
b9900a1ffb
commit
16fc7c310e
|
|
@ -296,4 +296,22 @@ extern u8 D_800A872C;
|
|||
|
||||
extern CharacterSlot CHARACTER_SLOT_MAGNUS[];
|
||||
|
||||
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;
|
||||
} MaybeAttackData; // size:0x10
|
||||
|
||||
extern MaybeAttackData __MAYBE_ATTACK_DATA[];
|
||||
|
||||
#endif
|
||||
56
splat.yaml
56
splat.yaml
|
|
@ -832,24 +832,24 @@ segments:
|
|||
symbol_name_format: overlay_177ED0_$VRAM_$ROM
|
||||
exclusive_ram_id: test_overlapping
|
||||
subsegments:
|
||||
- [0x177ED0, bin]
|
||||
# - [0x1782C0, asm]
|
||||
# - [0x178450, asm]
|
||||
- [0x177ED0, asm]
|
||||
- [0x1782C0, asm]
|
||||
- [0x178450, asm]
|
||||
|
||||
# - [0x17BCD0, rodata]
|
||||
# - [0x17BCE0, rodata]
|
||||
# - [0x17C500, rodata]
|
||||
# - [0x17CC20, rodata]
|
||||
# - [0x17CCE0, rodata]
|
||||
# - [0x17F130, rodata]
|
||||
# - [0x17F460, rodata]
|
||||
# - [0x17F7F0, rodata]
|
||||
# - [0x17F8D0, rodata]
|
||||
# - [0x17F8F0, rodata]
|
||||
# - [0x17F900, rodata]
|
||||
# - [0x17F910, rodata]
|
||||
- [0x17BCD0, rodata]
|
||||
- [0x17BCE0, rodata]
|
||||
- [0x17C500, rodata]
|
||||
- [0x17CC20, rodata]
|
||||
- [0x17CCE0, rodata]
|
||||
- [0x17F130, rodata]
|
||||
- [0x17F460, rodata]
|
||||
- [0x17F7F0, rodata]
|
||||
- [0x17F8D0, rodata]
|
||||
- [0x17F8F0, rodata]
|
||||
- [0x17F900, rodata]
|
||||
- [0x17F910, rodata]
|
||||
|
||||
- { start: 0x17F9C0, type: bss, vram: 0x8021CA70 }
|
||||
# - { start: 0x17F9C0, type: bss, vram: 0x8021CA70 }
|
||||
|
||||
- [0x17F9C0, bin]
|
||||
# Overlay here
|
||||
|
|
@ -869,19 +869,21 @@ segments:
|
|||
# Overlay here
|
||||
- [0x1A9290, bin]
|
||||
|
||||
# - type: code
|
||||
# dir: overlay_1A9290
|
||||
# start: 0x1A9290
|
||||
# vram: 0x80214F80
|
||||
# bss_size: 0x90
|
||||
# symbol_name_format: overlay_1A9290_$VRAM_$ROM
|
||||
# exclusive_ram_id: test_overlapping
|
||||
# subsegments:
|
||||
# - [0x1A9290, asm]
|
||||
- type: code
|
||||
dir: overlay_1A9290
|
||||
start: 0x1A9290
|
||||
vram: 0x80214F80
|
||||
bss_size: 0x90
|
||||
symbol_name_format: overlay_1A9290_$VRAM_$ROM
|
||||
exclusive_ram_id: test_overlapping
|
||||
subsegments:
|
||||
- [0x1A9290, asm]
|
||||
- [0x1B1510, asm]
|
||||
|
||||
# - [0x1B2270, data]
|
||||
- [0x1B2270, rodata]
|
||||
- [0x1B2570, rodata]
|
||||
|
||||
# - { start: 0x1B2670, type: bss, vram: 0x8021E360 }
|
||||
# - { start: 0x1B2670, type: bss, vram: 0x8021E360 }
|
||||
|
||||
- [0x1B2670, bin]
|
||||
# Overlay here
|
||||
|
|
|
|||
|
|
@ -41,5 +41,5 @@ INCLUDE_ASM(const s32, "2DE10", __calls_romCopy_8009DD38);
|
|||
|
||||
INCLUDE_ASM(const s32, "2DE10", __calls_romCopy_8009DE40);
|
||||
|
||||
INCLUDE_ASM(const s32, "2DE10", __calls_romCopy_8009DF48);
|
||||
INCLUDE_ASM(const s32, "2DE10", __load_and_unpack);
|
||||
|
||||
|
|
|
|||
|
|
@ -104,7 +104,13 @@ INCLUDE_ASM(const s32, "item", func_8016E338);
|
|||
|
||||
INCLUDE_ASM(const s32, "item", func_8016E440);
|
||||
|
||||
INCLUDE_ASM(const s32, "item", func_8016E458);
|
||||
// INCLUDE_ASM(const s32, "item", func_8016E458);
|
||||
|
||||
/* 44358 8016E458 */
|
||||
u8 func_8016E458(u8 arg0) {
|
||||
return __MAYBE_ATTACK_DATA[arg0].field_0x0;
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM(const s32, "item", func_8016E470);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,15 @@
|
|||
__MAYBE_ATTACK_DATA = 0x8018AA80; // rom:0x60980 size:0x10
|
||||
|
||||
STR_LEVEL_UP = 0x8021DFCC; // rom:0x1B22DC
|
||||
STR_MAXIMUM_HP_UP = 0x8021DFD8; // rom:0x1B22E8
|
||||
STR_STR_UP = 0x8021DFE8; // rom:0x1B22F8
|
||||
STR_VIT_UP = 0x8021DFF0; // rom:0x1B2300
|
||||
STR_INT_UP = 0x8021DFF8; // rom:0x1B2308
|
||||
STR_MEN_UP = 0x8021E000; // rom:0x1B2310
|
||||
STR_CANNOT_BE_USED = 0x8021DF80; // rom:0x1B2290
|
||||
STR_PETRIFICATION = 0x8021DFA0; // rom:0x1B22B0
|
||||
|
||||
STR_PHYSICAL = 0x80187660; // rom:0x5D560 type:asciz
|
||||
|
||||
ITEM_DATA = 0x8018C410; // size:0x20
|
||||
|
||||
|
|
@ -356,7 +367,7 @@ __calls_romCopy_8009DAF4 = 0x8009DAF4;
|
|||
__calls_romCopy_8009DBB8 = 0x8009DBB8;
|
||||
__calls_romCopy_8009DD38 = 0x8009DD38;
|
||||
__calls_romCopy_8009DE40 = 0x8009DE40;
|
||||
__calls_romCopy_8009DF48 = 0x8009DF48;
|
||||
__load_and_unpack = 0x8009DF48;
|
||||
//__calls_romCopy_800EA488 = 0x800EA488;
|
||||
|
||||
__start_thread_800BE1C0 = 0x8008B0B0;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
from ob import read_rom, ELEMENT_NAMES
|
||||
|
||||
from struct import unpack_from
|
||||
|
||||
def read_attack(index):
|
||||
ATTACK_SIZE = 0x10
|
||||
ATTACK_FORMAT = '>BBBBBBBBBBBBI'
|
||||
|
||||
attack_start = 0x60980 + (index * ATTACK_SIZE)
|
||||
attack_end = attack_start + ATTACK_SIZE
|
||||
|
||||
return unpack_from(ATTACK_FORMAT, read_rom(attack_start, attack_end))
|
||||
|
||||
length = 0x6136B - 0x60980
|
||||
|
||||
for i in range(0, 30):
|
||||
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 = read_rom(name_addr_diff, name_addr_diff + 32).split(b'\0', 1)[0]
|
||||
|
||||
print(ELEMENT_NAMES[element])
|
||||
print(name)
|
||||
print(field_0x0)
|
||||
print(field_0x2)
|
||||
print(field_0x3)
|
||||
print(field_0x4)
|
||||
print(field_0x5)
|
||||
|
|
@ -1,9 +1,4 @@
|
|||
def read_rom(start, end):
|
||||
chunksize = end - start
|
||||
with open("baserom.z64", "rb") as f:
|
||||
f.seek(start)
|
||||
return f.read(chunksize)
|
||||
|
||||
from ob import read_rom, ELEMENT_NAMES
|
||||
|
||||
from struct import unpack_from
|
||||
|
||||
|
|
@ -15,18 +10,6 @@ def read_item(index):
|
|||
item_end = item_start + ITEM_SIZE
|
||||
|
||||
return unpack_from(ITEM_FORMAT, read_rom(item_start, item_end))
|
||||
|
||||
ELEMENT_NAMES = {
|
||||
0: "Physical",
|
||||
1: "Wind",
|
||||
2: "Flame",
|
||||
3: "Earth",
|
||||
4: "Water",
|
||||
5: "Virtue",
|
||||
6: "Bane",
|
||||
|
||||
255: "Invalid"
|
||||
}
|
||||
|
||||
for i in range(0, 130):
|
||||
# print(f"Item {i}:")
|
||||
|
|
|
|||
|
|
@ -0,0 +1,30 @@
|
|||
# OgreBattle util
|
||||
|
||||
ELEMENT_NAMES = {
|
||||
0: "Physical",
|
||||
1: "Wind",
|
||||
2: "Flame",
|
||||
3: "Earth",
|
||||
4: "Water",
|
||||
5: "Virtue",
|
||||
6: "Bane",
|
||||
|
||||
7: "Unknown_7",
|
||||
8: "Unknown_8",
|
||||
9: "Unknown_9",
|
||||
10: "Unknown_10",
|
||||
11: "Unknown_11",
|
||||
12: "Unknown_12",
|
||||
13: "Unknown_13",
|
||||
14: "Unknown_14",
|
||||
|
||||
15: "Unknown_15",
|
||||
|
||||
255: "Invalid"
|
||||
}
|
||||
|
||||
def read_rom(start, end):
|
||||
chunksize = end - start
|
||||
with open("baserom.z64", "rb") as f:
|
||||
f.seek(start)
|
||||
return f.read(chunksize)
|
||||
Loading…
Reference in New Issue