Identified more symbols

Decompiled more functions
Improved .gitignore
Before I do something stupid...
This commit is contained in:
Ogre 2023-09-06 15:00:27 +02:00
parent 2df8bc6570
commit d5f043ed1c
6 changed files with 308 additions and 5 deletions

5
.gitignore vendored
View File

@ -7,3 +7,8 @@ build
.vscode
tools/build
ogrebattle64.ld
undefined_funcs_auto.txt
undefined_syms_auto.txt
ctx.c

View File

@ -18,12 +18,14 @@ typedef struct {
/* 0x14 */ u8 field_0x14[0x2];
/* 0x16 */ u16 max_hp;
/* 0x18 */ u16 cur_hp;
/* 0x1A */ u8 field_0x1a[0x2];
/* 0x1A */ u8 field_0x1a;
/* 0x1B */ u8 field_0x1b;
/* 0x1C */ u16 strength;
/* 0x1E */ u16 vitality;
/* 0x20 */ u16 intelligence;
/* 0x22 */ u16 mem;
/* 0x24 */ u16 agility;
// DEX affects melee and special attacks, as well as accuracy.
/* 0x26 */ u16 dexterity;
/* 0x28 */ u8 field_0x28[0x10];
} CharacterSlot; // size:0x38

View File

@ -295,4 +295,48 @@ extern u8 D_800A872C;
extern CharacterSlot CHARACTER_SLOT_MAGNUS[];
typedef struct {
/* 0x00 */ u8 field_0x0;
/* 0x01 */ u8 field_0x1;
/* 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;
/* 0x10 */ u8 field_0xa;
/* 0x11 */ u8 field_0xb;
/* 0x12 */ u8 field_0xc;
/* 0x13 */ u8 field_0xd;
/* 0x14 */ u8 field_0xe;
/* 0x15 */ u8 field_0xf;
/* 0x10 */ u8 field_0x10;
/* 0x11 */ u8 field_0x11;
/* 0x12 */ u8 field_0x12;
/* 0x13 */ u8 field_0x13;
/* 0x14 */ u8 field_0x14;
/* 0x15 */ u8 field_0x15;
/* 0x16 */ u8 field_0x16;
/* 0x17 */ u8 field_0x17;
/* 0x18 */ u8 field_0x18;
/* 0x19 */ u8 field_0x19;
/* 0x1a */ u8 field_0x1a;
/* 0x1b */ u8 field_0x1b;
/* 0x1c */ u8 field_0x1c;
/* 0x1d */ u8 field_0x1d;
/* 0x1e */ u8 field_0x1e;
/* 0x1f */ u8 field_0x1f;
} __UnkCharacterStats; // size:0x20
extern u8 D_8018C410[];
extern u8 D_8018C411[];
extern u8 D_8018C416[];
extern u8 D_8018C417[];
extern u8 D_8018C41A[];
extern s8 __magnus_get_vitality(u16 arg0);
extern s8 __magnus_get_intelligence(u16 arg0);
#endif

View File

@ -373,7 +373,7 @@ segments:
- [0x420D0, asm]
- [0x42C30, c]
- [0x42C90, asm]
- [0x43100, asm]
- [0x43100, c]
- [0x45CB0, asm]
- [0x46090, asm]
- [0x49510, asm]

View File

@ -0,0 +1,238 @@
#include "common.h"
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D200);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D254);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D2A8);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D2FC);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D350);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D3A4);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D3F8);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D44C);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D4A0);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D4F4);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D548);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D59C);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D5F0);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D644);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D698);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D6EC);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D740);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D794);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D7E8);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D83C);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D890);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D8E4);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D938);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D98C);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016D9E0);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016DA34);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016DA88);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016DADC);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016DB30);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016DB84);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016DBD8);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016DC2C);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016DC80);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016DCD4);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016DD20);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016DD74);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016DDC8);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016DE1C);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016DE70);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016DEC4);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016DF18);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016DF88);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016DFDC);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016E030);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016E084);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016E0D8);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016E140);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016E174);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016E1DC);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016E230);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016E338);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016E440);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016E458);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016E470);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016E50C);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016EA34);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016EAEC);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016EBA4);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F11C);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F4E0);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F500);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F520);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F540);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F560);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F580);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F598);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F5B0);
/* 454C8 8016F5C8 */
u8 func_8016F5C8(u16 arg0) {
return D_8018C410[arg0 * 32];
}
/* 454E0 8016F5E0 */
u8 func_8016F5E0(u16 arg0) {
u8 var_a0;
var_a0 = D_8018C411[arg0 * 32];
if (var_a0 == 0x10) {
var_a0 = CHARACTER_SLOT_MAGNUS->field_0x1a;
}
return var_a0;
}
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F614);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F62C);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F644);
/* 4555C 8016F65C */
s8 __magnus_get_strength(u16 arg0) {
s8 ret;
if (arg0 == 132) {
ret = CHARACTER_SLOT_MAGNUS[0].strength / 20;
} else {
ret = D_8018C416[arg0 * 32];
}
return ret;
}
/* 455AC 8016F6AC */
s8 __magnus_get_vitality(u16 arg0) {
s8 ret;
if (arg0 == 132) {
ret = CHARACTER_SLOT_MAGNUS[0].vitality / 20;
} else {
ret = D_8018C41A[arg0 * 32];
}
return ret;
}
/* 455FC 8016F6FC */
s8 __magnus_get_intelligence(u16 arg0) {
s8 ret;
if (arg0 == 132) {
ret = CHARACTER_SLOT_MAGNUS[0].intelligence / 20;
} else {
ret = D_8018C417[arg0 * 32];
}
return ret;
}
INCLUDE_ASM(const s32, "overlays/overlay1/43100", __magnus_get_mem);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", __magnus_get_agility);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", __magnus_get_dexterity);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F83C);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F854);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F86C);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F884);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F89C);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F8B4);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F8CC);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F8E4);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F900);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F920);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F940);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F95C);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F978);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F998);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F9B8);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F9D4);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016F9F0);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016FA34);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016FB50);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016FBE0);
INCLUDE_ASM(const s32, "overlays/overlay1/43100", func_8016FCEC);

View File

@ -1,11 +1,19 @@
__magnus_get_vitality = 0x8016F6AC;
__magnus_get_strength = 0x8016F65C;
__magnus_get_intelligence = 0x8016F6FC;
__magnus_get_mem = 0x8016F74C;
__magnus_get_agility = 0x8016F79C;
__magnus_get_dexterity = 0x8016F7EC;
__setup_overlay5 = 0x8017B5EC;
__setup_overlay3 = 0x8017B774;
__setup_overlay6 = 0x8017B6B0;
MakeRouteList = 0x801B3620; // rom:0x107D60
STR_VALUE_CANNOT_BE_REACHED_MAKE_ROUTE_LIST = 0x801EE0A0;
STR_VALUE_CANNOT_BE_REACHED_MAKE_ROUTE_LIST = 0x801EE0A0; // type:asciz
Magnetic = 0x801B44DC; // rom:0x108C1C
STR_MEM_ERROR_MAGNETIC = 0x801EE0F0;
STR_MEM_ERROR_MAGNETIC = 0x801EE0F0; // type:asciz
// Obviously wrong translated but whatevs..
STR_FAILED_TO_CONTROL_THE_HEATER = 0x800ADE78;
STR_EMPTY = 0x800AE334; // type:asciz
@ -22,6 +30,12 @@ NAME_SHEEN = 0x8018E9FC; // type:asciz size:0x6
CLASS_NAME_DRAGON_MASTER = 0x80190230; // type:asciz
ITEM_NAME_SWORD = 0x80212E50; // type:asciz rom:0x163FC0
ITEM_NAME_GREAT_SWORD = 0x80212E58; // type:asciz rom:0x163FC8
ITEM_NAME_THRUSTING_SWORD = 0x80212E64; // type:asciz rom:0x163FC8
ITEM_NAME_1HANDED = 0x80212E74; // type:asciz rom:0x163FE4
ITEM_NAME_SHORT_SPEAR = 0x80212EA4; // type:asciz rom:0x164014
__PTR_BIG_STRUCT = 0x80196AF8; // type:u32
__maybe_get_used_character_slots = 0x8016C048;
@ -57,7 +71,7 @@ STR_CREATING_NEW_DATA = 0x800ADEE8;
STR_CREATING_A_NEW_FILE = 0x800ADEC8;
STR_ADDING_NEW_DATA = 0x800ADEA4;
STR_buSave_SAVING = 0x800ADF08;
STR_UNUSEDMALLOCNO_INSUFFICIENT_MEMORY = 0x800ADF88;
STR_UNUSEDMALLOCNO_INSUFFICIENT_MEMORY = 0x800ADF88; // type:asciz
STR_FILE_NOT_FOUND = 0x800AE2AC;
D_800A86B8 = 0x800A86B8; // size:0x3 type:u8