parent
b9900a1ffb
commit
16fc7c310e
|
|
@ -296,4 +296,22 @@ extern u8 D_800A872C;
|
||||||
|
|
||||||
extern CharacterSlot CHARACTER_SLOT_MAGNUS[];
|
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
|
#endif
|
||||||
56
splat.yaml
56
splat.yaml
|
|
@ -832,24 +832,24 @@ segments:
|
||||||
symbol_name_format: overlay_177ED0_$VRAM_$ROM
|
symbol_name_format: overlay_177ED0_$VRAM_$ROM
|
||||||
exclusive_ram_id: test_overlapping
|
exclusive_ram_id: test_overlapping
|
||||||
subsegments:
|
subsegments:
|
||||||
- [0x177ED0, bin]
|
- [0x177ED0, asm]
|
||||||
# - [0x1782C0, asm]
|
- [0x1782C0, asm]
|
||||||
# - [0x178450, asm]
|
- [0x178450, asm]
|
||||||
|
|
||||||
# - [0x17BCD0, rodata]
|
- [0x17BCD0, rodata]
|
||||||
# - [0x17BCE0, rodata]
|
- [0x17BCE0, rodata]
|
||||||
# - [0x17C500, rodata]
|
- [0x17C500, rodata]
|
||||||
# - [0x17CC20, rodata]
|
- [0x17CC20, rodata]
|
||||||
# - [0x17CCE0, rodata]
|
- [0x17CCE0, rodata]
|
||||||
# - [0x17F130, rodata]
|
- [0x17F130, rodata]
|
||||||
# - [0x17F460, rodata]
|
- [0x17F460, rodata]
|
||||||
# - [0x17F7F0, rodata]
|
- [0x17F7F0, rodata]
|
||||||
# - [0x17F8D0, rodata]
|
- [0x17F8D0, rodata]
|
||||||
# - [0x17F8F0, rodata]
|
- [0x17F8F0, rodata]
|
||||||
# - [0x17F900, rodata]
|
- [0x17F900, rodata]
|
||||||
# - [0x17F910, rodata]
|
- [0x17F910, rodata]
|
||||||
|
|
||||||
- { start: 0x17F9C0, type: bss, vram: 0x8021CA70 }
|
# - { start: 0x17F9C0, type: bss, vram: 0x8021CA70 }
|
||||||
|
|
||||||
- [0x17F9C0, bin]
|
- [0x17F9C0, bin]
|
||||||
# Overlay here
|
# Overlay here
|
||||||
|
|
@ -869,19 +869,21 @@ segments:
|
||||||
# Overlay here
|
# Overlay here
|
||||||
- [0x1A9290, bin]
|
- [0x1A9290, bin]
|
||||||
|
|
||||||
# - type: code
|
- type: code
|
||||||
# dir: overlay_1A9290
|
dir: overlay_1A9290
|
||||||
# start: 0x1A9290
|
start: 0x1A9290
|
||||||
# vram: 0x80214F80
|
vram: 0x80214F80
|
||||||
# bss_size: 0x90
|
bss_size: 0x90
|
||||||
# symbol_name_format: overlay_1A9290_$VRAM_$ROM
|
symbol_name_format: overlay_1A9290_$VRAM_$ROM
|
||||||
# exclusive_ram_id: test_overlapping
|
exclusive_ram_id: test_overlapping
|
||||||
# subsegments:
|
subsegments:
|
||||||
# - [0x1A9290, asm]
|
- [0x1A9290, asm]
|
||||||
|
- [0x1B1510, asm]
|
||||||
|
|
||||||
# - [0x1B2270, data]
|
- [0x1B2270, rodata]
|
||||||
|
- [0x1B2570, rodata]
|
||||||
|
|
||||||
# - { start: 0x1B2670, type: bss, vram: 0x8021E360 }
|
# - { start: 0x1B2670, type: bss, vram: 0x8021E360 }
|
||||||
|
|
||||||
- [0x1B2670, bin]
|
- [0x1B2670, bin]
|
||||||
# Overlay here
|
# 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_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_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);
|
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
|
ITEM_DATA = 0x8018C410; // size:0x20
|
||||||
|
|
||||||
|
|
@ -356,7 +367,7 @@ __calls_romCopy_8009DAF4 = 0x8009DAF4;
|
||||||
__calls_romCopy_8009DBB8 = 0x8009DBB8;
|
__calls_romCopy_8009DBB8 = 0x8009DBB8;
|
||||||
__calls_romCopy_8009DD38 = 0x8009DD38;
|
__calls_romCopy_8009DD38 = 0x8009DD38;
|
||||||
__calls_romCopy_8009DE40 = 0x8009DE40;
|
__calls_romCopy_8009DE40 = 0x8009DE40;
|
||||||
__calls_romCopy_8009DF48 = 0x8009DF48;
|
__load_and_unpack = 0x8009DF48;
|
||||||
//__calls_romCopy_800EA488 = 0x800EA488;
|
//__calls_romCopy_800EA488 = 0x800EA488;
|
||||||
|
|
||||||
__start_thread_800BE1C0 = 0x8008B0B0;
|
__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):
|
from ob import read_rom, ELEMENT_NAMES
|
||||||
chunksize = end - start
|
|
||||||
with open("baserom.z64", "rb") as f:
|
|
||||||
f.seek(start)
|
|
||||||
return f.read(chunksize)
|
|
||||||
|
|
||||||
|
|
||||||
from struct import unpack_from
|
from struct import unpack_from
|
||||||
|
|
||||||
|
|
@ -15,18 +10,6 @@ def read_item(index):
|
||||||
item_end = item_start + ITEM_SIZE
|
item_end = item_start + ITEM_SIZE
|
||||||
|
|
||||||
return unpack_from(ITEM_FORMAT, read_rom(item_start, item_end))
|
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):
|
for i in range(0, 130):
|
||||||
# print(f"Item {i}:")
|
# 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