Compare commits
6 Commits
4fec5e1726
...
80fbf0175e
| Author | SHA1 | Date |
|---|---|---|
|
|
80fbf0175e | |
|
|
c63870ac14 | |
|
|
fd34166b82 | |
|
|
dd47587e8b | |
|
|
cf67e12f81 | |
|
|
9d2e65d8fb |
|
|
@ -82,37 +82,29 @@ typedef struct {
|
||||||
|
|
||||||
ASSERT_SIZE(ClassData, 0x48);
|
ASSERT_SIZE(ClassData, 0x48);
|
||||||
|
|
||||||
// This can be removed when all class data has been decompiled.
|
extern ClassData obClassData[];
|
||||||
typedef union {
|
|
||||||
u32 raw[18];
|
|
||||||
ClassData class_data;
|
|
||||||
} ClassData_u;
|
|
||||||
|
|
||||||
ASSERT_SIZE(ClassData_u, 0x48);
|
|
||||||
|
|
||||||
extern ClassData_u obClassData[];
|
|
||||||
extern EquipmentId (*FP_CLASS_GET_ITEM_1[4])(u8, u8);
|
extern EquipmentId (*FP_CLASS_GET_ITEM_1[4])(u8, u8);
|
||||||
|
|
||||||
extern u8 class_get_field_0x2c(u8 portrait, u8 class);
|
extern u8 class_get_field_0x2c(u8 portrait, u8 class);
|
||||||
extern u8 class_get_ability_front(u8 portrait, u8 class);
|
extern u8 obClassGetAbilityFront(u8 portrait, u8 class);
|
||||||
extern u8 class_get_ability_front_hitcount(u8 portrait, u8 class);
|
extern u8 obClassGetAbilityFrontHits(u8 portrait, u8 class);
|
||||||
extern u8 class_get_ability_middle(u8 portrait, u8 class);
|
extern u8 obClassGetAbilityMiddle(u8 portrait, u8 class);
|
||||||
extern u8 class_get_ability_middle_hitcount(u8 portrait, u8 class);
|
extern u8 obClassGetAbilityMiddleHits(u8 portrait, u8 class);
|
||||||
extern u8 class_get_ability_back(u8 portrait, u8 class);
|
extern u8 obClassGetAbilityBack(u8 portrait, u8 class);
|
||||||
extern u8 class_get_ability_back_hitcount(u8 portrait, u8 class);
|
extern u8 obClassGetAbilityBackHits(u8 portrait, u8 class);
|
||||||
extern u8 class_get_field_0x4(u8 portrait, u8 class);
|
extern u8 class_get_field_0x4(u8 portrait, u8 class);
|
||||||
extern u8 class_get_gender(u8 portrait, u8 class);
|
extern u8 obClassGetGender(u8 portrait, u8 class);
|
||||||
extern u8 class_get_leadership_rank(u8 portrait, u8 class);
|
extern u8 obClassGetLeadershipRank(u8 portrait, u8 class);
|
||||||
extern u8 class_get_global_flag(u8 portrait, u8 class);
|
extern u8 class_get_global_flag(u8 portrait, u8 class);
|
||||||
|
|
||||||
extern EquipmentId class_get_item_upper_left(u8 portrait, u8 class);
|
extern EquipmentId obClassGetItemUpperLeft(u8 portrait, u8 class);
|
||||||
extern EquipmentId class_get_item_upper_right(u8 portrait, u8 class);
|
extern EquipmentId obClassGetItemUpperRight(u8 portrait, u8 class);
|
||||||
extern EquipmentId class_get_item_lower_left(u8 portrait, u8 class);
|
extern EquipmentId obClassGetItemLowerLeft(u8 portrait, u8 class);
|
||||||
extern EquipmentId class_get_item_lower_right(u8 portrait, u8 class);
|
extern EquipmentId obClassGetItemLowerRight(u8 portrait, u8 class);
|
||||||
|
|
||||||
extern char* class_get_ability_front_name(u8 portrait, u8 class);
|
extern char* obClassGetAbilityFrontName(u8 portrait, u8 class);
|
||||||
extern char* class_get_ability_middle_name(u8 portrait, u8 class);
|
extern char* obClassGetAbilityMiddleName(u8 portrait, u8 class);
|
||||||
extern char* class_get_ability_back_name(u8 portrait, u8 class);
|
extern char* obClassGetAbilityBackName(u8 portrait, u8 class);
|
||||||
extern char* class_get_name(u8 portrait, u8 class);
|
extern char* obClassGetName(u8 portrait, u8 class);
|
||||||
|
|
||||||
#endif // __CLASS_H__
|
#endif // __CLASS_H__
|
||||||
|
|
@ -226,22 +226,22 @@ extern void func_8008350C();
|
||||||
extern void func_8008B1D0(u8*);
|
extern void func_8008B1D0(u8*);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/* 0x00 */ u8* dst;
|
/* 0x00 */ u32 vram_start;
|
||||||
/* 0x04 */ u8* field_0x4;
|
/* 0x04 */ u32 vram_end;
|
||||||
/* 0x08 */ u8* src_start;
|
/* 0x08 */ u32 src_start;
|
||||||
/* 0x0c */ u8* src_end;
|
/* 0x0c */ u32 src_end;
|
||||||
/* 0x10 */ u8* bss_start;
|
/* 0x10 */ u32 bss_start;
|
||||||
/* 0x14 */ u8* bss_end;
|
/* 0x14 */ u32 bss_end;
|
||||||
/* 0x18 */ u8* text_start;
|
/* 0x18 */ u32 text_start;
|
||||||
/* 0x1c */ u8* text_end;
|
/* 0x1c */ u32 text_end;
|
||||||
/* 0x20 */ u8* data_start;
|
/* 0x20 */ u32 data_start;
|
||||||
/* 0x24 */ u8* data_end;
|
/* 0x24 */ u32 data_end;
|
||||||
} OverlayEntry; // size:0x28
|
} OverlayEntry; // size:0x28
|
||||||
|
|
||||||
ASSERT_SIZE(OverlayEntry, 0x28);
|
ASSERT_SIZE(OverlayEntry, 0x28);
|
||||||
|
|
||||||
extern u8* __SOME_OVERLAY_ID_ARRAY[11];
|
extern u8* __SOME_OVERLAY_ID_ARRAY[];
|
||||||
extern OverlayEntry __SOME_OVERLAY_TABLE[11];
|
extern OverlayEntry __SOME_OVERLAY_TABLE[];
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/* 0x00 */ void (*setup)(void);
|
/* 0x00 */ void (*setup)(void);
|
||||||
|
|
@ -270,7 +270,7 @@ extern void __setup_overlay_87200(void);
|
||||||
extern void __setup_overlay_71280_51674(void);
|
extern void __setup_overlay_71280_51674(void);
|
||||||
extern void __setup_overlay_71280_51940(void);
|
extern void __setup_overlay_71280_51940(void);
|
||||||
|
|
||||||
extern u8* func_80076188(void);
|
extern u32* func_80076188(void);
|
||||||
extern void func_80076194(void);
|
extern void func_80076194(void);
|
||||||
extern void func_800761A4(void);
|
extern void func_800761A4(void);
|
||||||
extern void __loads_overlay_array(s32 arg0);
|
extern void __loads_overlay_array(s32 arg0);
|
||||||
|
|
@ -388,7 +388,7 @@ extern void func_801C889C(s32 arg0);
|
||||||
extern void func_8007337C(void);
|
extern void func_8007337C(void);
|
||||||
extern void func_801C8864(void);
|
extern void func_801C8864(void);
|
||||||
|
|
||||||
extern u8 D_800A872C;
|
extern u32 D_800A872C[];
|
||||||
|
|
||||||
extern CharacterSlot CHARACTER_SLOT[0x64];
|
extern CharacterSlot CHARACTER_SLOT[0x64];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,19 @@ DECLARE_ROM_SEGMENT(n64_wave_data);
|
||||||
DECLARE_ROM_SEGMENT(n64_wave_table_00);
|
DECLARE_ROM_SEGMENT(n64_wave_table_00);
|
||||||
DECLARE_ROM_SEGMENT(n64_wave_table_01);
|
DECLARE_ROM_SEGMENT(n64_wave_table_01);
|
||||||
|
|
||||||
|
DECLARE_SEGMENT(overlay_66E10);
|
||||||
|
DECLARE_SEGMENT(overlay_6E660);
|
||||||
|
|
||||||
|
DECLARE_SEGMENT(overlay_E48F0);
|
||||||
|
DECLARE_SEGMENT(overlay_EBBB0);
|
||||||
|
DECLARE_SEGMENT(overlay_F9FF0);
|
||||||
|
DECLARE_SEGMENT(overlay_FA5D0);
|
||||||
|
DECLARE_SEGMENT(overlay_FA5E0);
|
||||||
|
|
||||||
|
DECLARE_SEGMENT(overlay_145210);
|
||||||
|
DECLARE_SEGMENT(overlay_14EBE0);
|
||||||
|
|
||||||
|
|
||||||
DECLARE_SEGMENT(overlay_71280);
|
DECLARE_SEGMENT(overlay_71280);
|
||||||
DECLARE_SEGMENT(overlay_79730);
|
DECLARE_SEGMENT(overlay_79730);
|
||||||
DECLARE_SEGMENT(overlay_87200);
|
DECLARE_SEGMENT(overlay_87200);
|
||||||
|
|
|
||||||
|
|
@ -385,26 +385,26 @@ FP_CLASS_GET_ITEM_1 = 0x8018B494; // rom:0x61394 size:16 type:u32
|
||||||
|
|
||||||
obClassData = 0x80187C14; // rom:0x5DB14 size:0x2E68 type:u32
|
obClassData = 0x80187C14; // rom:0x5DB14 size:0x2E68 type:u32
|
||||||
class_get_field_0x2c = 0x8016DBD8; // rom:0x43AD8
|
class_get_field_0x2c = 0x8016DBD8; // rom:0x43AD8
|
||||||
class_get_ability_front = 0x8016DC2C; // rom:0x43B2C
|
obClassGetAbilityFront = 0x8016DC2C; // rom:0x43B2C
|
||||||
class_get_ability_front_hitcount = 0x8016DC80; // rom:0x43B80
|
obClassGetAbilityFrontHits = 0x8016DC80; // rom:0x43B80
|
||||||
class_get_ability_middle = 0x8016DCD4; // rom:0x43BD4
|
obClassGetAbilityMiddle = 0x8016DCD4; // rom:0x43BD4
|
||||||
class_get_ability_middle_hitcount = 0x8016DD20; // rom:0x43C20
|
obClassGetAbilityMiddleHits = 0x8016DD20; // rom:0x43C20
|
||||||
class_get_ability_back = 0x8016DD74; // rom:0x43C74
|
obClassGetAbilityBack = 0x8016DD74; // rom:0x43C74
|
||||||
class_get_ability_back_hitcount = 0x8016DDC8; // rom:0x43CC8
|
obClassGetAbilityBackHits = 0x8016DDC8; // rom:0x43CC8
|
||||||
class_get_field_0x4 = 0x8016DE1C; // rom:0x43D1C
|
class_get_field_0x4 = 0x8016DE1C; // rom:0x43D1C
|
||||||
class_get_gender = 0x8016DE70; // rom:0x43D70
|
obClassGetGender = 0x8016DE70; // rom:0x43D70
|
||||||
class_get_leadership_rank = 0x8016DEC4; // rom:0x43DC4
|
obClassGetLeadershipRank = 0x8016DEC4; // rom:0x43DC4
|
||||||
class_get_global_flag = 0x8016DF18; // rom:0x43E18
|
class_get_global_flag = 0x8016DF18; // rom:0x43E18
|
||||||
class_get_item_upper_left = 0x8016DF88; // rom:0x43E88
|
obClassGetItemUpperLeft = 0x8016DF88; // rom:0x43E88
|
||||||
class_get_item_upper_right = 0x8016DFDC; // rom:0x43EDC
|
obClassGetItemUpperRight = 0x8016DFDC; // rom:0x43EDC
|
||||||
class_get_item_lower_left = 0x8016E030; // rom:0x43F30
|
obClassGetItemLowerLeft = 0x8016E030; // rom:0x43F30
|
||||||
class_get_item_lower_right = 0x8016E084; // rom:0x43F84
|
obClassGetItemLowerRight = 0x8016E084; // rom:0x43F84
|
||||||
class_get_ability_front_name = 0x8016E0D8; // rom:0x43FD8
|
obClassGetAbilityFrontName = 0x8016E0D8; // rom:0x43FD8
|
||||||
class_get_ability_middle_name = 0x8016E140; // rom:0x44040
|
obClassGetAbilityMiddleName = 0x8016E140; // rom:0x44040
|
||||||
class_get_ability_back_name = 0x8016E174; // rom:0x44074
|
obClassGetAbilityBackName = 0x8016E174; // rom:0x44074
|
||||||
class_get_name = 0x8016E1DC; // rom:0x440DC
|
obClassGetName = 0x8016E1DC; // rom:0x440DC
|
||||||
class_get_ability = 0x8016E230; // rom:0x44130
|
obClassGetAbility = 0x8016E230; // rom:0x44130
|
||||||
class_get_ability_hitcount = 0x8016E338; // rom:0x44238
|
obClassGetAbilityHits = 0x8016E338; // rom:0x44238
|
||||||
|
|
||||||
// CLASS_NAME_DRAGON_MASTER = 0x80190230; // type:asciz
|
// CLASS_NAME_DRAGON_MASTER = 0x80190230; // type:asciz
|
||||||
// obClassNameDanika = 0x8018FED0;
|
// obClassNameDanika = 0x8018FED0;
|
||||||
|
|
|
||||||
12
splat.yaml
12
splat.yaml
|
|
@ -115,9 +115,9 @@ segments:
|
||||||
- [0x18F30, asm]
|
- [0x18F30, asm]
|
||||||
- [0x18F80, asm]
|
- [0x18F80, asm]
|
||||||
- [0x19050, c, "_ob_past_brick"]
|
- [0x19050, c, "_ob_past_brick"]
|
||||||
- [0x19DD0, asm]
|
- [0x19DD0, c, "_ob_questionable_glass"]
|
||||||
- [0x19E10, asm]
|
- [0x19E10, asm]
|
||||||
- [0x19E30, asm]
|
- [0x19E30, c, "_ob_yielding_ice"]
|
||||||
- [0x19EB0, asm]
|
- [0x19EB0, asm]
|
||||||
- [0x19FC0, c, "black"]
|
- [0x19FC0, c, "black"]
|
||||||
- [0x1A050, c, "_ob_icy_coast"]
|
- [0x1A050, c, "_ob_icy_coast"]
|
||||||
|
|
@ -317,7 +317,7 @@ segments:
|
||||||
- [0x2DE10, c, "_ob_prized_room"]
|
- [0x2DE10, c, "_ob_prized_room"]
|
||||||
|
|
||||||
- [0x2E450, data]
|
- [0x2E450, data]
|
||||||
- [0x387C0, data, "data/overlay_table"]
|
- [0x387C0, .data, "data/overlay_table"]
|
||||||
- [0x38B50, data]
|
- [0x38B50, data]
|
||||||
- [0x39900, data, "gfx/_ob_star_skate"]
|
- [0x39900, data, "gfx/_ob_star_skate"]
|
||||||
- [0x39B90, data]
|
- [0x39B90, data]
|
||||||
|
|
@ -462,8 +462,6 @@ segments:
|
||||||
|
|
||||||
- { start: 0x66E10, type: bss, vram: 0x80190F10 }
|
- { start: 0x66E10, type: bss, vram: 0x80190F10 }
|
||||||
|
|
||||||
- [0x66E10, bin]
|
|
||||||
|
|
||||||
# __SOME_OVERLAY_TABLE[0]
|
# __SOME_OVERLAY_TABLE[0]
|
||||||
- type: code
|
- type: code
|
||||||
dir: overlay_66E10
|
dir: overlay_66E10
|
||||||
|
|
@ -484,8 +482,6 @@ segments:
|
||||||
|
|
||||||
- { start: 0x69900, type: bss, vram: 0x8019A660 }
|
- { start: 0x69900, type: bss, vram: 0x8019A660 }
|
||||||
|
|
||||||
- [0x69900, bin]
|
|
||||||
|
|
||||||
# __SOME_OVERLAY_TABLE[17]
|
# __SOME_OVERLAY_TABLE[17]
|
||||||
- type: code
|
- type: code
|
||||||
name: overlay_69900
|
name: overlay_69900
|
||||||
|
|
@ -508,8 +504,6 @@ segments:
|
||||||
|
|
||||||
- { start: 0x6E660, type: bss, vram: 0x8019C8D0 }
|
- { start: 0x6E660, type: bss, vram: 0x8019C8D0 }
|
||||||
|
|
||||||
- [0x6E660, bin]
|
|
||||||
|
|
||||||
# __SOME_OVERLAY_TABLE[1]
|
# __SOME_OVERLAY_TABLE[1]
|
||||||
- type: code
|
- type: code
|
||||||
name: overlay_6E660
|
name: overlay_6E660
|
||||||
|
|
|
||||||
33
src/42C30.c
33
src/42C30.c
|
|
@ -1,33 +0,0 @@
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
u8 D_80187020;
|
|
||||||
u8 __compared_osTvType;
|
|
||||||
|
|
||||||
/* 42C30 8016CD30 */
|
|
||||||
u8 __get_compared_osTvType(void) {
|
|
||||||
return D_80187020;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 42C3C 8016CD3C */
|
|
||||||
u8 __reset_compared_osTvType(void) {
|
|
||||||
u8 temp_v0;
|
|
||||||
|
|
||||||
temp_v0 = __compared_osTvType;
|
|
||||||
__compared_osTvType = 0;
|
|
||||||
return temp_v0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 42C50 8016CD50 */
|
|
||||||
void func_8016CD50(u8 arg0) {
|
|
||||||
D_80187020 = arg0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 42C5C 8016CD5C */
|
|
||||||
void __inc_compared_osTvType(u8 arg0) {
|
|
||||||
if (D_80187020 != arg0) {
|
|
||||||
__compared_osTvType = arg0 + 1;
|
|
||||||
}
|
|
||||||
D_80187020 = arg0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "45AE0", func_8016FBE0);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "45AE0", func_8016FCEC);
|
|
||||||
41
src/49A30.c
41
src/49A30.c
|
|
@ -1,41 +0,0 @@
|
||||||
#include <PR/gbi.h>
|
|
||||||
|
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "49A30", func_80173B30);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "49A30", func_80173B40);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "49A30", func_80173B50);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "49A30", func_80173B60);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "49A30", func_80173BA0);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "49A30", func_80173BE0);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "49A30", func_80173C54);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "49A30", func_80173D14);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "49A30", func_80173D4C);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "49A30", func_80173D84);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "49A30", func_80173DBC);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "49A30", func_80174138);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "49A30", func_80174250);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "49A30", func_801758C0);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "49A30", func_801768D4);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "49A30", func_80176948);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "49A30", func_80176C6C);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "49A30", func_80176F90);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "49A30", func_801772C0);
|
|
||||||
64
src/5C060.c
64
src/5C060.c
|
|
@ -1,64 +0,0 @@
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
/* 5C060 80186160 */
|
|
||||||
void func_80186160(void) {
|
|
||||||
D_80197168[0] |= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 5C078 80186178 */
|
|
||||||
void func_80186178(void) {
|
|
||||||
D_80197168[0] &= 0xFE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 5C090 80186190 */
|
|
||||||
void func_80186190(s32 arg0, s32 arg1) {
|
|
||||||
if (arg1 != 0) {
|
|
||||||
s32 var_a1 = ((arg0 >= 0) ? arg0 : arg0 + 7);
|
|
||||||
D_80197168[(var_a1 >> 3)] = D_80197168[(var_a1 >> 3)] | (1 << (arg0 - ((var_a1 >> 3) * 8)));
|
|
||||||
} else {
|
|
||||||
s32 var_a1_3 = (arg0 >= 0) ? arg0 : arg0 + 7;
|
|
||||||
D_80197168[(var_a1_3 >> 3)] = D_80197168[(var_a1_3 >> 3)] & ~(1 << (arg0 - ((var_a1_3 >> 3) * 8)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 5C110 80186210 */
|
|
||||||
s32 func_80186210(s32 arg0) {
|
|
||||||
s32 var_v1 = (arg0 >= 0 ? arg0 : arg0 + 7);
|
|
||||||
|
|
||||||
return (D_80197168[(var_v1 >> 3)] >> (arg0 - ((var_v1 >> 3) * 8))) & 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 5C140 80186240 */
|
|
||||||
s32 func_80186240(s32 arg0) {
|
|
||||||
s32 temp_v1;
|
|
||||||
s32 var_v0;
|
|
||||||
s32 var_v1;
|
|
||||||
|
|
||||||
if(arg0 == -1)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
var_v1 = arg0;
|
|
||||||
if (arg0 < 0) {
|
|
||||||
var_v1 = arg0 + 7;
|
|
||||||
}
|
|
||||||
temp_v1 = var_v1 >> 3;
|
|
||||||
return ((D_80197AE7[temp_v1] >> (arg0 - (temp_v1 * 8))) & 1) ^ 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* 5C184 80186284 */
|
|
||||||
void func_80186284(s32 arg0) {
|
|
||||||
D_80196F58 = arg0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* 5C190 80186290 */
|
|
||||||
void func_80186290(void) {
|
|
||||||
D_801951A1 |= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 5C1A8 801862A8 */
|
|
||||||
void func_801862A8(void) {
|
|
||||||
bzero(&D_80197AE7, 8);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
|
/* 19DD0 800899D0 */
|
||||||
void set_swap_buffer_func(void (*arg0)(void**)) {
|
void set_swap_buffer_func(void (*arg0)(void**)) {
|
||||||
s32 mask;
|
s32 mask;
|
||||||
|
|
||||||
mask = osSetIntMask(OS_IM_NONE);
|
mask = osSetIntMask(OS_IM_NONE);
|
||||||
SWAP_BUFFER_FUNC = arg0;
|
SWAP_BUFFER_FUNC = arg0;
|
||||||
osSetIntMask(mask);
|
osSetIntMask(mask);
|
||||||
}
|
}
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
|
/* 19E30 80089A30 */
|
||||||
void __dma_load_loop(s32 count) {
|
void __dma_load_loop(s32 count) {
|
||||||
Stack__dma_load_loop sp10;
|
Stack__dma_load_loop sp10;
|
||||||
OSMesgQueue mq;
|
OSMesgQueue mq;
|
||||||
114
src/ability.c
114
src/ability.c
|
|
@ -1,114 +0,0 @@
|
||||||
#include "ability.h"
|
|
||||||
|
|
||||||
#include "common.h"
|
|
||||||
#include "equipment.h"
|
|
||||||
#include "class.h"
|
|
||||||
|
|
||||||
/* 44340 8016E440 */
|
|
||||||
char* obAbilityGetName(u8 index) {
|
|
||||||
return obAbilityData[index].name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 44358 8016E458 */
|
|
||||||
u8 ability_get_field_0x4(u8 index) {
|
|
||||||
return obAbilityData[index].field_0x4;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 44370 8016E470 */
|
|
||||||
Element obAbilityGetElement(u8 index, u16 arg1, u16 arg2, s32 arg3, u16 arg4) {
|
|
||||||
u16 item_index;
|
|
||||||
|
|
||||||
if (obAbilityData[index].element != ELEMENT_INVALID && obAbilityData[index].element != 0xF)
|
|
||||||
return obAbilityData[index].element;
|
|
||||||
|
|
||||||
if (obAbilityData[index].field_0x4 == 3) {
|
|
||||||
item_index = obEquipmentGetFirstSpellbook(arg1, arg2, arg3, arg4);
|
|
||||||
} else {
|
|
||||||
item_index = obEquipmentGetFirstWeapon(arg1, arg2, arg3, arg4);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (item_index == 0)
|
|
||||||
return ELEMENT_PHYSICAL;
|
|
||||||
|
|
||||||
return obEquipmentGetElement(item_index);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "ability", func_8016E50C);
|
|
||||||
|
|
||||||
// INCLUDE_ASM(const s32, "ability", func_8016EA34);
|
|
||||||
|
|
||||||
/* 44934 8016EA34 */
|
|
||||||
u8 func_8016EA34(u8 portrait, u8 class, u8 arg2)
|
|
||||||
{
|
|
||||||
if (obClassData[portrait].field_0x45 != class)
|
|
||||||
portrait = class;
|
|
||||||
|
|
||||||
portrait = (obClassData[portrait].field_0x42 != 0xFF && arg2 < obClassData[portrait].field_0x42) ?
|
|
||||||
obClassData[portrait].field_0x41 :
|
|
||||||
(obClassData[portrait].field_0x44 != 0xFF && arg2 < obClassData[portrait].field_0x44) ?
|
|
||||||
obClassData[portrait].field_0x43 : portrait;
|
|
||||||
|
|
||||||
return portrait;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* 449EC 8016EAEC */
|
|
||||||
u16 character_get_item(CharacterSlot* character, u8 slot) {
|
|
||||||
u16 item_id;
|
|
||||||
|
|
||||||
item_id = 0;
|
|
||||||
switch(slot) {
|
|
||||||
case 0:
|
|
||||||
item_id = character->item_upper_left;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 1:
|
|
||||||
item_id = character->item_upper_right;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2:
|
|
||||||
item_id = character->item_lower_left;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
item_id = character->item_lower_right;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (item_id == 0) {
|
|
||||||
item_id = FP_CLASS_GET_ITEM_1[slot](character->portrait, character->class);
|
|
||||||
}
|
|
||||||
return item_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "ability", __character_handle_levelup);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "ability", __character_initialise);
|
|
||||||
|
|
||||||
/* 453E0 8016F4E0 */
|
|
||||||
char *obItemGetName(u16 arg0) {
|
|
||||||
return obItemData[arg0].name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 45400 8016F500 */
|
|
||||||
u8 item_get_field_0x4(u16 arg0) {
|
|
||||||
return obItemData[arg0].field_0x4;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 45420 8016F520 */
|
|
||||||
u8 item_get_field_0x5(u16 arg0) {
|
|
||||||
return obItemData[arg0].field_0x5;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 45440 8016F540 */
|
|
||||||
u8 item_get_field_0x8(u16 arg0) {
|
|
||||||
return obItemData[arg0].field_0x8;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 45460 8016F560 */
|
|
||||||
u8 item_get_field_0x9(u16 arg0) {
|
|
||||||
return obItemData[arg0].field_0x9;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -5,7 +5,7 @@ INCLUDE_ASM(const s32, "_ob_overconfident_mother", __calls_loads_overlay_array);
|
||||||
INCLUDE_ASM(const s32, "_ob_overconfident_mother", func_80076150);
|
INCLUDE_ASM(const s32, "_ob_overconfident_mother", func_80076150);
|
||||||
|
|
||||||
/* 6588 80076188 */
|
/* 6588 80076188 */
|
||||||
u8* func_80076188(void) {
|
u32* func_80076188(void) {
|
||||||
return &D_800A872C;
|
return &D_800A872C;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -19,7 +19,6 @@ void func_800761A4(void) {
|
||||||
func_80073164(0, 1, 1, 0x80, 1, 0x100, 0x2000);
|
func_80073164(0, 1, 1, 0x80, 1, 0x100, 0x2000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "_ob_overconfident_mother", __loads_overlay_array);
|
INCLUDE_ASM(const s32, "_ob_overconfident_mother", __loads_overlay_array);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "_ob_overconfident_mother", func_80076324);
|
INCLUDE_ASM(const s32, "_ob_overconfident_mother", func_80076324);
|
||||||
|
|
|
||||||
265
src/class.c
265
src/class.c
|
|
@ -1,265 +0,0 @@
|
||||||
#include "class.h"
|
|
||||||
|
|
||||||
#include "common.h"
|
|
||||||
#include "ability.h"
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D200);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D254);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D2A8);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D2FC);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D350);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D3A4);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D3F8);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D44C);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D4A0);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D4F4);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D548);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D59C);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D5F0);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D644);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D698);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D6EC);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D740);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D794);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D7E8);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D83C);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D890);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D8E4);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D938);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D98C);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016D9E0);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016DA34);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016DA88);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016DADC);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016DB30);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "class", func_8016DB84);
|
|
||||||
|
|
||||||
/* 43AD8 8016DBD8 */
|
|
||||||
u8 class_get_field_0x2c(u8 portrait, u8 class) {
|
|
||||||
if (obClassData[portrait].field_0x45 == class)
|
|
||||||
return obClassData[portrait].field_0x2c;
|
|
||||||
|
|
||||||
return obClassData[class].field_0x2c;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 43B2C 8016DC2C */
|
|
||||||
u8 class_get_ability_front(u8 portrait, u8 class) {
|
|
||||||
if (obClassData[portrait].field_0x45 == class)
|
|
||||||
return obClassData[portrait].ability_front;
|
|
||||||
|
|
||||||
return obClassData[class].ability_front;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 43B80 8016DC80 */
|
|
||||||
u8 class_get_ability_front_hitcount(u8 portrait, u8 class) {
|
|
||||||
if (obClassData[portrait].field_0x45 == class)
|
|
||||||
return obClassData[portrait].ability_front_hitcount;
|
|
||||||
|
|
||||||
return obClassData[class].ability_front_hitcount;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 43BD4 8016DCD4 */
|
|
||||||
u8 class_get_ability_middle(u8 portrait, u8 class) {
|
|
||||||
s32 var_v0;
|
|
||||||
|
|
||||||
if (obClassData[portrait].field_0x45 != class) {
|
|
||||||
var_v0 = class * 9;
|
|
||||||
} else {
|
|
||||||
var_v0 = obClassData[portrait].field_0x45 * 9;
|
|
||||||
}
|
|
||||||
return *(&obClassData->ability_middle + (var_v0 * 8));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 43C20 8016DD20 */
|
|
||||||
u8 class_get_ability_middle_hitcount(u8 portrait, u8 class) {
|
|
||||||
if (obClassData[portrait].field_0x45 == class)
|
|
||||||
return obClassData[portrait].ability_middle_hitcount;
|
|
||||||
|
|
||||||
return obClassData[class].ability_middle_hitcount;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 43C74 8016DD74 */
|
|
||||||
u8 class_get_ability_back(u8 portrait, u8 class) {
|
|
||||||
if (obClassData[portrait].field_0x45 == class)
|
|
||||||
return obClassData[portrait].ability_back;
|
|
||||||
|
|
||||||
return obClassData[class].ability_back;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 43CC8 8016DDC8 */
|
|
||||||
u8 class_get_ability_back_hitcount(u8 portrait, u8 class) {
|
|
||||||
if (obClassData[portrait].field_0x45 == class)
|
|
||||||
return obClassData[portrait].ability_back_hitcount;
|
|
||||||
|
|
||||||
return obClassData[class].ability_back_hitcount;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 43D1C 8016DE1C */
|
|
||||||
u8 class_get_field_0x4(u8 portrait, u8 class) {
|
|
||||||
if (obClassData[portrait].field_0x45 == class)
|
|
||||||
return obClassData[portrait].field_0x4;
|
|
||||||
|
|
||||||
return obClassData[class].field_0x4;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 43D70 8016DE70 */
|
|
||||||
u8 class_get_gender(u8 portrait, u8 class) {
|
|
||||||
if (obClassData[portrait].field_0x45 == class)
|
|
||||||
return obClassData[portrait].gender;
|
|
||||||
|
|
||||||
return obClassData[class].gender;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 43DC4 8016DEC4 */
|
|
||||||
u8 class_get_leadership_rank(u8 portrait, u8 class) {
|
|
||||||
if (obClassData[portrait].field_0x45 == class)
|
|
||||||
return obClassData[portrait].leadership_rank;
|
|
||||||
|
|
||||||
return obClassData[class].leadership_rank;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 43E18 8016DF18 */
|
|
||||||
u8 class_get_global_flag(u8 portrait, u8 class) {
|
|
||||||
u8 var_a1;
|
|
||||||
|
|
||||||
var_a1 = class;
|
|
||||||
if (D_8018ECE4[portrait].field_0x0 & 0x80) {
|
|
||||||
if (obClassData[portrait].field_0x45 == var_a1) {
|
|
||||||
var_a1 = portrait;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return D_8018ECE4[var_a1].field_0x0 & 0x3F;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 43E88 8016DF88 */
|
|
||||||
EquipmentId class_get_item_upper_left(u8 portrait, u8 class) {
|
|
||||||
if (obClassData[portrait].field_0x45 == class)
|
|
||||||
return obClassData[portrait].item_upper_left;
|
|
||||||
|
|
||||||
return obClassData[class].item_upper_left;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 43EDC 8016DFDC */
|
|
||||||
EquipmentId class_get_item_upper_right(u8 portrait, u8 class) {
|
|
||||||
if (obClassData[portrait].field_0x45 == class)
|
|
||||||
return obClassData[portrait].item_upper_right;
|
|
||||||
|
|
||||||
return obClassData[class].item_upper_right;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 43F30 8016E030 */
|
|
||||||
EquipmentId class_get_item_lower_left(u8 portrait, u8 class) {
|
|
||||||
if (obClassData[portrait].field_0x45 == class)
|
|
||||||
return obClassData[portrait].item_lower_left;
|
|
||||||
|
|
||||||
return obClassData[class].item_lower_left;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 43F84 8016E084 */
|
|
||||||
EquipmentId class_get_item_lower_right(u8 portrait, u8 class) {
|
|
||||||
if (obClassData[portrait].field_0x45 == class)
|
|
||||||
return obClassData[portrait].item_lower_right;
|
|
||||||
|
|
||||||
return obClassData[class].item_lower_right;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 43FD8 8016E0D8 */
|
|
||||||
char* class_get_ability_front_name(u8 portrait, u8 class) {
|
|
||||||
u8 var_v0;
|
|
||||||
|
|
||||||
if (obClassData[portrait].field_0x45 == class) {
|
|
||||||
var_v0 = obClassData[portrait].ability_front;
|
|
||||||
} else {
|
|
||||||
var_v0 = obClassData[class].ability_front;
|
|
||||||
}
|
|
||||||
|
|
||||||
return obAbilityGetName(var_v0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 44040 8016E140 */
|
|
||||||
char* class_get_ability_middle_name(u8 portrait, u8 class) {
|
|
||||||
// Possible a C macro wrapping?
|
|
||||||
do {
|
|
||||||
char* ret = obAbilityGetName(obClassData[class].ability_middle);
|
|
||||||
return ret;
|
|
||||||
} while(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 44074 8016E174 */
|
|
||||||
char* class_get_ability_back_name(u8 portrait, u8 class) {
|
|
||||||
u8 var_v0;
|
|
||||||
|
|
||||||
if (obClassData[portrait].field_0x45 == class) {
|
|
||||||
var_v0 = obClassData[portrait].ability_back;
|
|
||||||
} else {
|
|
||||||
var_v0 = obClassData[class].ability_back;
|
|
||||||
}
|
|
||||||
|
|
||||||
return obAbilityGetName(var_v0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 440DC 8016E1DC */
|
|
||||||
char* class_get_name(u8 portrait, u8 class) {
|
|
||||||
if (obClassData[portrait].field_0x45 == class)
|
|
||||||
return obClassData[portrait].name;
|
|
||||||
|
|
||||||
return obClassData[class].name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 44130 8016E230 */
|
|
||||||
u8 class_get_ability(u8 portrait, u8 class, u8 row)
|
|
||||||
{
|
|
||||||
if (obClassData[portrait].field_0x45 != class)
|
|
||||||
portrait = class;
|
|
||||||
|
|
||||||
if (row == 0) {
|
|
||||||
return obClassData[portrait].ability_front != 0xFF ? obClassData[portrait].ability_front : obClassData[class].ability_front;
|
|
||||||
} else if (row == 1) {
|
|
||||||
return obClassData[portrait].ability_middle != 0xFF ? obClassData[portrait].ability_middle : obClassData[class].ability_middle;
|
|
||||||
} else {
|
|
||||||
return obClassData[portrait].ability_back != 0xFF ? obClassData[portrait].ability_back : obClassData[class].ability_back;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 44238 8016E338 */
|
|
||||||
u8 class_get_ability_hitcount(u8 portrait, u8 class, u8 row) {
|
|
||||||
if (obClassData[portrait].field_0x45 != class)
|
|
||||||
portrait = class;
|
|
||||||
|
|
||||||
if (row == 0) {
|
|
||||||
return obClassData[portrait].ability_front_hitcount != 0xFF ? obClassData[portrait].ability_front_hitcount : obClassData[class].ability_front_hitcount;
|
|
||||||
} else if (row == 1) {
|
|
||||||
return obClassData[portrait].ability_middle_hitcount != 0xFF ? obClassData[portrait].ability_middle_hitcount : obClassData[class].ability_middle_hitcount;
|
|
||||||
} else {
|
|
||||||
return obClassData[portrait].ability_back_hitcount != 0xFF ? obClassData[portrait].ability_back_hitcount : obClassData[class].ability_back_hitcount;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,239 @@
|
||||||
|
#include "common.h"
|
||||||
|
#include "segment_symbols.h"
|
||||||
|
|
||||||
|
#define DECLARE_OVERLAY_ENTRY(segment) \
|
||||||
|
{ \
|
||||||
|
(u32)SEGMENT_VRAM_START(segment),\
|
||||||
|
(u32)SEGMENT_VRAM_END(segment),\
|
||||||
|
(u32)SEGMENT_ROM_START(segment),\
|
||||||
|
(u32)SEGMENT_ROM_END(segment),\
|
||||||
|
(u32)SEGMENT_BSS_START(segment),\
|
||||||
|
(u32)SEGMENT_BSS_END(segment),\
|
||||||
|
(u32)SEGMENT_TEXT_START(segment),\
|
||||||
|
(u32)SEGMENT_TEXT_END(segment),\
|
||||||
|
(u32)SEGMENT_DATA_START(segment),\
|
||||||
|
(u32)SEGMENT_RODATA_END(segment) \
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 387C0 800A83C0 */
|
||||||
|
OverlayEntry __SOME_OVERLAY_TABLE[] = {
|
||||||
|
DECLARE_OVERLAY_ENTRY(overlay_66E10),
|
||||||
|
{ /* __SOME_OVERLAY_TABLE[1] */
|
||||||
|
.vram_start = 0x80197B70,
|
||||||
|
.vram_end = 0x801F1510,
|
||||||
|
(u32)SEGMENT_ROM_START(overlay_6E660),
|
||||||
|
(u32)SEGMENT_ROM_END(overlay_6E660),
|
||||||
|
(u32)SEGMENT_BSS_START(overlay_6E660),
|
||||||
|
(u32)SEGMENT_BSS_END(overlay_6E660),
|
||||||
|
(u32)SEGMENT_TEXT_START(overlay_6E660),
|
||||||
|
(u32)SEGMENT_TEXT_END(overlay_6E660),
|
||||||
|
(u32)SEGMENT_DATA_START(overlay_6E660),
|
||||||
|
(u32)SEGMENT_RODATA_END(overlay_6E660)
|
||||||
|
},
|
||||||
|
DECLARE_OVERLAY_ENTRY(overlay_E48F0),
|
||||||
|
DECLARE_OVERLAY_ENTRY(overlay_EBBB0),
|
||||||
|
DECLARE_OVERLAY_ENTRY(overlay_F9FF0),
|
||||||
|
DECLARE_OVERLAY_ENTRY(overlay_FA5D0),
|
||||||
|
DECLARE_OVERLAY_ENTRY(overlay_FA5E0),
|
||||||
|
{ /* __SOME_OVERLAY_TABLE[7] */
|
||||||
|
.vram_start = 0x801AD5A0,
|
||||||
|
.vram_end = 0x801F4030,
|
||||||
|
.src_start = 0x101CE0,
|
||||||
|
.src_end = 0x145210,
|
||||||
|
.bss_start = 0x801F0AD0,
|
||||||
|
.bss_end = 0x801F4030,
|
||||||
|
.text_start = 0x801AD5A0,
|
||||||
|
.text_end = 0x801E7D60,
|
||||||
|
.data_start = 0x801E7D60,
|
||||||
|
.data_end = 0x801F0AD0
|
||||||
|
},
|
||||||
|
DECLARE_OVERLAY_ENTRY(overlay_145210),
|
||||||
|
{ /* __SOME_OVERLAY_TABLE[9] */
|
||||||
|
.vram_start = 0x801FDA70,
|
||||||
|
.vram_end = 0x80220F40,
|
||||||
|
(u32)SEGMENT_ROM_START(overlay_14EBE0),
|
||||||
|
(u32)SEGMENT_ROM_END(overlay_14EBE0),
|
||||||
|
(u32)SEGMENT_BSS_START(overlay_14EBE0),
|
||||||
|
(u32)SEGMENT_BSS_END(overlay_14EBE0),
|
||||||
|
(u32)SEGMENT_TEXT_START(overlay_14EBE0),
|
||||||
|
(u32)SEGMENT_TEXT_END(overlay_14EBE0),
|
||||||
|
(u32)SEGMENT_DATA_START(overlay_14EBE0),
|
||||||
|
(u32)SEGMENT_RODATA_END(overlay_14EBE0)
|
||||||
|
},
|
||||||
|
{ /* __SOME_OVERLAY_TABLE[10] */
|
||||||
|
.vram_start = 0x801AD5A0,
|
||||||
|
.vram_end = 0x801F70E0,
|
||||||
|
.src_start = 0x1F0A30,
|
||||||
|
.src_end = 0x213B10,
|
||||||
|
.bss_start = 0x801D0680,
|
||||||
|
.bss_end = 0x801D0840,
|
||||||
|
.text_start = 0x801AD5A0,
|
||||||
|
.text_end = 0x801CE890,
|
||||||
|
.data_start = 0x801CE890,
|
||||||
|
.data_end = 0x801D0680
|
||||||
|
},
|
||||||
|
{ /* __SOME_OVERLAY_TABLE[11] */
|
||||||
|
.vram_start = 0x801F70E0,
|
||||||
|
.vram_end = 0x8020A2E0,
|
||||||
|
.src_start = 0x24BCA0,
|
||||||
|
.src_end = 0x25EE90,
|
||||||
|
.bss_start = 0x8020A2D0,
|
||||||
|
.bss_end = 0x8020A2E0,
|
||||||
|
.text_start = 0x801F70E0,
|
||||||
|
.text_end = 0x80209700,
|
||||||
|
.data_start = 0x80209700,
|
||||||
|
.data_end = 0x8020A2D0
|
||||||
|
},
|
||||||
|
{ /* __SOME_OVERLAY_TABLE[12] */
|
||||||
|
.vram_start = 0x8020A2E0,
|
||||||
|
.vram_end = 0x802210C0,
|
||||||
|
.src_start = 0x0025EE90,
|
||||||
|
.src_end = 0x00275850,
|
||||||
|
.bss_start = 0x80220CA0,
|
||||||
|
.bss_end = 0x802210C0,
|
||||||
|
.text_start = 0x8020A2E0,
|
||||||
|
.text_end = 0x8021F450,
|
||||||
|
.data_start = 0x8021F450,
|
||||||
|
.data_end = 0x80220CA0
|
||||||
|
},
|
||||||
|
{ /* __SOME_OVERLAY_TABLE[13] */
|
||||||
|
.vram_start = 0x802210C0,
|
||||||
|
.vram_end = 0x80225890,
|
||||||
|
.src_start = 0x00275850,
|
||||||
|
.src_end = 0x0027A020,
|
||||||
|
.bss_start = 0x80225890,
|
||||||
|
.bss_end = 0x80225890,
|
||||||
|
.text_start = 0x802210C0,
|
||||||
|
.text_end = 0x80225620,
|
||||||
|
.data_start = 0x80225620,
|
||||||
|
.data_end = 0x80225890
|
||||||
|
},
|
||||||
|
{ /* __SOME_OVERLAY_TABLE[14] */
|
||||||
|
.vram_start = 0x80225890,
|
||||||
|
.vram_end = 0x80243DB0,
|
||||||
|
.src_start = 0x00281860,
|
||||||
|
.src_end = 0x00286BD0,
|
||||||
|
.bss_start = 0x8022AC00,
|
||||||
|
.bss_end = 0x8022AC90,
|
||||||
|
.text_start = 0x80225890,
|
||||||
|
.text_end = 0x8022A720,
|
||||||
|
.data_start = 0x8022A720,
|
||||||
|
.data_end = 0x8022AC00
|
||||||
|
},
|
||||||
|
{ /* __SOME_OVERLAY_TABLE[15] */
|
||||||
|
.vram_start = 0x80197B70,
|
||||||
|
.vram_end = 0x801BA710,
|
||||||
|
.src_start = 0x001CE070,
|
||||||
|
.src_end = 0x001F0A30,
|
||||||
|
.bss_start = 0x801BA530,
|
||||||
|
.bss_end = 0x801BA710,
|
||||||
|
.text_start = 0x80197B70,
|
||||||
|
.text_end = 0x801B8080,
|
||||||
|
.data_start = 0x801B8080,
|
||||||
|
.data_end = 0x801BA530
|
||||||
|
},
|
||||||
|
{ /* __SOME_OVERLAY_TABLE[16] */
|
||||||
|
.vram_start = 0x80225890,
|
||||||
|
.vram_end = 0x8022D170,
|
||||||
|
.src_start = 0x0027A020,
|
||||||
|
.src_end = 0x00281860,
|
||||||
|
.bss_start = 0x8022D0D0,
|
||||||
|
.bss_end = 0x8022D170,
|
||||||
|
.text_start = 0x80225890,
|
||||||
|
.text_end = 0x8022C5C0,
|
||||||
|
.data_start = 0x8022C5C0,
|
||||||
|
.data_end = 0x8022D0D0
|
||||||
|
},
|
||||||
|
{ /* __SOME_OVERLAY_TABLE[17] */
|
||||||
|
.vram_start = 0x80197B70,
|
||||||
|
.vram_end = 0x8019C930,
|
||||||
|
.src_start = 0x69900,
|
||||||
|
.src_end = 0x6E660,
|
||||||
|
.bss_start = 0x8019C8D0,
|
||||||
|
.bss_end = 0x8019C930,
|
||||||
|
.text_start = 0x80197B70,
|
||||||
|
.text_end = 0x8019C1F0,
|
||||||
|
.data_start = 0x8019C1F0,
|
||||||
|
.data_end = 0x8019C8D0
|
||||||
|
},
|
||||||
|
{ /* __SOME_OVERLAY_TABLE[18] */
|
||||||
|
.vram_start = 0x80220F40,
|
||||||
|
.vram_end = 0x802305E0,
|
||||||
|
.src_start = 0x1BA050,
|
||||||
|
.src_end = 0x1C3300,
|
||||||
|
.bss_start = 0x8022A1F0,
|
||||||
|
.bss_end = 0x8022A840,
|
||||||
|
.text_start = 0x80220F40,
|
||||||
|
.text_end = 0x80229CB0,
|
||||||
|
.data_start = 0x80229CB0,
|
||||||
|
.data_end = 0x8022A1F0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 38AB8 800A86B8 */
|
||||||
|
u8 D_800A86B8[] = {2, 1, -1};
|
||||||
|
|
||||||
|
/* 38ABC 800A86BC */
|
||||||
|
u8 D_800A86BC[] = {2, 3, 7, 8, 9, -1};
|
||||||
|
|
||||||
|
/* 38AC4 800A86C4 */
|
||||||
|
u8 D_800A86C4[] = {2, 4, 10, 11, 12, 13, 14, -1};
|
||||||
|
|
||||||
|
/* 38ACC 800A86CC */
|
||||||
|
u8 D_800A86CC[] = {0, 14, -1};
|
||||||
|
|
||||||
|
/* 38AD0 800A86D0 */
|
||||||
|
u8 D_800A86D0[] = {2, 3, 6, -1};
|
||||||
|
|
||||||
|
/* 38AD4 800A86D4 */
|
||||||
|
u8 D_800A86D4[] = {15, -1};
|
||||||
|
|
||||||
|
/* 38AD8 800A86D8 */
|
||||||
|
u8 D_800A86D8[] = {0, 1, 2, 7, 8, 9, 10, 11, 12, 13, 14, -1};
|
||||||
|
|
||||||
|
/* 38AE4 800A86E4 */
|
||||||
|
u8 D_800A86E4[] = {2, 4, 10, 11, 12, 13, 16, -1};
|
||||||
|
|
||||||
|
/* 38AEC 800A86EC */
|
||||||
|
u8 D_800A86EC[] = {17, 18, -1};
|
||||||
|
|
||||||
|
/* 38AF0 800A86F0 */
|
||||||
|
u8 D_800A86F0[] = {2, 3, 7, 8, 9, 18, -1};
|
||||||
|
|
||||||
|
/* 38AF8 800A86F8 */
|
||||||
|
u8 D_800A86F8[] = {2, 1, 18, -1};
|
||||||
|
|
||||||
|
/* 38AFC 800A86FC */
|
||||||
|
u8* __SOME_OVERLAY_ID_ARRAY[] = {
|
||||||
|
D_800A86B8,
|
||||||
|
D_800A86BC,
|
||||||
|
D_800A86C4,
|
||||||
|
D_800A86CC,
|
||||||
|
D_800A86D0,
|
||||||
|
D_800A86D4,
|
||||||
|
D_800A86D8,
|
||||||
|
D_800A86E4,
|
||||||
|
D_800A86EC,
|
||||||
|
D_800A86F0,
|
||||||
|
D_800A86F8
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 38B28 800A8728 */
|
||||||
|
u32 D_800A8728 = NULL;
|
||||||
|
|
||||||
|
/* 38B2C 800A872C */
|
||||||
|
u32 D_800A872C[] = {
|
||||||
|
0x800761A4,
|
||||||
|
0x00000000,
|
||||||
|
0x00000000,
|
||||||
|
0x00000000,
|
||||||
|
0x0000000C
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 38B40 800A8740 */
|
||||||
|
u32 D_800A8740[] = {
|
||||||
|
0x00000000,
|
||||||
|
0x00000000,
|
||||||
|
0x00000000,
|
||||||
|
0x00000000
|
||||||
|
};
|
||||||
232
src/equipment.c
232
src/equipment.c
|
|
@ -1,232 +0,0 @@
|
||||||
#include "equipment.h"
|
|
||||||
|
|
||||||
#include "common.h"
|
|
||||||
#include "element.h"
|
|
||||||
|
|
||||||
/* 45480 8016F580 */
|
|
||||||
u8 equipment_get_field_0x1b(EquipmentId index) {
|
|
||||||
return obEquipmentData[index].field_0x1b;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 45498 8016F598 */
|
|
||||||
u8 equipment_get_field_0x1c(EquipmentId index) {
|
|
||||||
return obEquipmentData[index].field_0x1c;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 454B0 8016F5B0 */
|
|
||||||
char* obEquipmentGetName(EquipmentId index) {
|
|
||||||
return obEquipmentData[index].name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 454C8 8016F5C8 */
|
|
||||||
EquipmentType obEquipmentGetType(EquipmentId index) {
|
|
||||||
return obEquipmentData[index].type;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 454E0 8016F5E0 */
|
|
||||||
Element obEquipmentGetElement(EquipmentId index) {
|
|
||||||
Element element;
|
|
||||||
|
|
||||||
element = obEquipmentData[index].element;
|
|
||||||
if (element == ELEMENT_UNKNOWN_0x10) {
|
|
||||||
element = CHARACTER_SLOT[0].element;
|
|
||||||
}
|
|
||||||
return element;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 45514 8016F614 */
|
|
||||||
u8 equipment_get_field_0x6(EquipmentId index) {
|
|
||||||
return obEquipmentData[index].field_0x6;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 4552C 8016F62C */
|
|
||||||
u16 obEquipmentGetBuyPrice(EquipmentId index) {
|
|
||||||
return obEquipmentData[index].buy_price;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 45544 8016F644 */
|
|
||||||
s8 equipment_get_field_0x10(EquipmentId index) {
|
|
||||||
return obEquipmentData[index].field_0x10;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 4555C 8016F65C */
|
|
||||||
s8 obEquipmentGetStrength(EquipmentId index) {
|
|
||||||
s8 ret;
|
|
||||||
if (index == EQUIPMENT_ID_GALLANT_DOLL) {
|
|
||||||
ret = CHARACTER_SLOT[0].strength / 20;
|
|
||||||
} else {
|
|
||||||
ret = obEquipmentData[index].strength;
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 455AC 8016F6AC */
|
|
||||||
s8 obEquipmentGetVitality(EquipmentId index) {
|
|
||||||
s8 ret;
|
|
||||||
if (index == EQUIPMENT_ID_GALLANT_DOLL) {
|
|
||||||
ret = CHARACTER_SLOT[0].vitality / 20;
|
|
||||||
} else {
|
|
||||||
ret = obEquipmentData[index].vitality;
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 455FC 8016F6FC */
|
|
||||||
s8 obEquipmentGetIntelligence(EquipmentId index) {
|
|
||||||
s8 ret;
|
|
||||||
if (index == EQUIPMENT_ID_GALLANT_DOLL) {
|
|
||||||
ret = CHARACTER_SLOT[0].intelligence / 20;
|
|
||||||
} else {
|
|
||||||
ret = obEquipmentData[index].intelligence;
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 4564C 8016F74C */
|
|
||||||
s8 obEquipmentGetMentality(EquipmentId index) {
|
|
||||||
s8 ret;
|
|
||||||
if (index == EQUIPMENT_ID_GALLANT_DOLL) {
|
|
||||||
ret = CHARACTER_SLOT[0].mentality / 20;
|
|
||||||
} else {
|
|
||||||
ret = obEquipmentData[index].mentality;
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 4569C 8016F79C */
|
|
||||||
s8 obEquipmentGetAgility(EquipmentId index) {
|
|
||||||
s8 ret;
|
|
||||||
if (index == EQUIPMENT_ID_GALLANT_DOLL) {
|
|
||||||
ret = CHARACTER_SLOT[0].agility / 20;
|
|
||||||
} else {
|
|
||||||
ret = obEquipmentData[index].agility;
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 456EC 8016F7EC */
|
|
||||||
s8 obEquipmentGetDexterity(EquipmentId index) {
|
|
||||||
s8 ret;
|
|
||||||
if (index == EQUIPMENT_ID_GALLANT_DOLL) {
|
|
||||||
ret = CHARACTER_SLOT[0].dexterity / 20;
|
|
||||||
} else {
|
|
||||||
ret = obEquipmentData[index].dexterity;
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 4573C 8016F83C */
|
|
||||||
s8 obEquipmentGetResistanceStrike(EquipmentId index) {
|
|
||||||
return obEquipmentData[index].res_strike;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 45754 8016F854 */
|
|
||||||
s8 obEquipmentGetResistanceWind(EquipmentId index) {
|
|
||||||
return obEquipmentData[index].res_wind;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 4576C 8016F86C */
|
|
||||||
s8 obEquipmentGetResistanceFire(EquipmentId index) {
|
|
||||||
return obEquipmentData[index].res_fire;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 45784 8016F884 */
|
|
||||||
s8 obEquipmentGetResistanceEarth(EquipmentId index) {
|
|
||||||
return obEquipmentData[index].res_earth;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 4579C 8016F89C */
|
|
||||||
s8 obEquipmentGetResistanceWater(EquipmentId index) {
|
|
||||||
return obEquipmentData[index].res_water;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 457B4 8016F8B4 */
|
|
||||||
s8 obEquipmentGetResistanceVirtue(EquipmentId index) {
|
|
||||||
return obEquipmentData[index].res_holy;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 457CC 8016F8CC */
|
|
||||||
s8 obEquipmentGetResistanceBane(EquipmentId index) {
|
|
||||||
return obEquipmentData[index].res_dark;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 457E4 8016F8E4 */
|
|
||||||
u8 equipment_get_field_0x18_b68(EquipmentId index) {
|
|
||||||
return obEquipmentData[index].field_0x18 >> 6;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 45800 8016F900 */
|
|
||||||
u8 equipment_get_field_0x18_b46(EquipmentId index) {
|
|
||||||
return (obEquipmentData[index].field_0x18 >> 4) & 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 45820 8016F920 */
|
|
||||||
u8 equipment_get_field_0x18_b24(EquipmentId index) {
|
|
||||||
return (obEquipmentData[index].field_0x18 >> 2) & 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 45840 8016F940 */
|
|
||||||
u8 equipment_get_field_0x18_b12(EquipmentId index) {
|
|
||||||
return obEquipmentData[index].field_0x18 & 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 4585C 8016F95C */
|
|
||||||
u8 equipment_get_field_0x19_b68(EquipmentId index) {
|
|
||||||
return obEquipmentData[index].field_0x19 >> 6;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 45878 8016F978 */
|
|
||||||
u8 equipment_get_field_0x19_b46(EquipmentId index) {
|
|
||||||
return (obEquipmentData[index].field_0x19 >> 4) & 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 45898 8016F998 */
|
|
||||||
u8 equipment_get_field_0x19_b24(EquipmentId index) {
|
|
||||||
return (obEquipmentData[index].field_0x19 >> 2) & 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 458B8 8016F9B8 */
|
|
||||||
u8 equipment_get_field_0x19_b12(EquipmentId index) {
|
|
||||||
return obEquipmentData[index].field_0x19 & 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 458D4 8016F9D4 */
|
|
||||||
u8 equipment_get_field_0x1a_b7(EquipmentId index) {
|
|
||||||
return obEquipmentData[index].field_0x1a >> 7;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 458F0 8016F9F0 */
|
|
||||||
bool obEquipmentIsWeapon(EquipmentId index) {
|
|
||||||
s32 type = obEquipmentData[index].type;
|
|
||||||
|
|
||||||
if (type != 0) {
|
|
||||||
if (type < EQUIPMENT_TYPE_SMALL_SHIELD) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (type == EQUIPMENT_TYPE_FAN) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "equipment", obEquipmentGetFirstWeapon);
|
|
||||||
|
|
||||||
/* 45A50 8016FB50 */
|
|
||||||
EquipmentId obEquipmentGetFirstSpellbook(EquipmentId arg0, EquipmentId arg1, EquipmentId arg2, EquipmentId arg3) {
|
|
||||||
if (obEquipmentData[arg0].type == EQUIPMENT_TYPE_SPELLBOOK)
|
|
||||||
return arg0;
|
|
||||||
|
|
||||||
if (obEquipmentData[arg1].type == EQUIPMENT_TYPE_SPELLBOOK)
|
|
||||||
return arg1;
|
|
||||||
|
|
||||||
if (obEquipmentData[arg2].type == EQUIPMENT_TYPE_SPELLBOOK)
|
|
||||||
return arg2;
|
|
||||||
|
|
||||||
if (obEquipmentData[arg3].type == EQUIPMENT_TYPE_SPELLBOOK)
|
|
||||||
return arg3;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -8,45 +8,45 @@ extern u32 func_8017BB34[];
|
||||||
|
|
||||||
/* 65C50 8018FD50 */
|
/* 65C50 8018FD50 */
|
||||||
OverlaySomething __OVERLAY_INFO_79730_65C50 = {
|
OverlaySomething __OVERLAY_INFO_79730_65C50 = {
|
||||||
__setup_overlay_79730,
|
.setup = __setup_overlay_79730,
|
||||||
func_8017B838,
|
.field_0x4 = func_8017B838,
|
||||||
func_8017B9A8,
|
.field_0x8 = func_8017B9A8,
|
||||||
func_8017BA2C,
|
.field_0xc = func_8017BA2C,
|
||||||
0x00000002
|
.field_0x10 = 0x00000002
|
||||||
};
|
};
|
||||||
|
|
||||||
/* 65C64 8018FD64 */
|
/* 65C64 8018FD64 */
|
||||||
OverlaySomething __OVERLAY_INFO_87200_65C64 = {
|
OverlaySomething __OVERLAY_INFO_87200_65C64 = {
|
||||||
__setup_overlay_87200,
|
.setup = __setup_overlay_87200,
|
||||||
func_8017B838,
|
.field_0x4 = func_8017B838,
|
||||||
func_8017B9A8,
|
.field_0x8 = func_8017B9A8,
|
||||||
0x00000000,
|
.field_0xc = 0x00000000,
|
||||||
0x00000002
|
.field_0x10 = 0x00000002
|
||||||
};
|
};
|
||||||
|
|
||||||
/* 65C78 8018FD78 */
|
/* 65C78 8018FD78 */
|
||||||
OverlaySomething __OVERLAY_INFO_87200_65C78 = {
|
OverlaySomething __OVERLAY_INFO_87200_65C78 = {
|
||||||
__setup_overlay_87200,
|
.setup = __setup_overlay_87200,
|
||||||
func_8017B838,
|
.field_0x4 = func_8017B838,
|
||||||
func_8017B9A8,
|
.field_0x8 = func_8017B9A8,
|
||||||
0x00000000,
|
.field_0xc = 0x00000000,
|
||||||
0x00040002
|
.field_0x10 = 0x00040002
|
||||||
};
|
};
|
||||||
|
|
||||||
/* 65C8C 8018FD8C */
|
/* 65C8C 8018FD8C */
|
||||||
OverlaySomething __OVERLAY_INFO_71280_65C8C = {
|
OverlaySomething __OVERLAY_INFO_71280_65C8C = {
|
||||||
__setup_overlay_71280_51674,
|
.setup = __setup_overlay_71280_51674,
|
||||||
func_8017B838,
|
.field_0x4 = func_8017B838,
|
||||||
func_8017B9A8,
|
.field_0x8 = func_8017B9A8,
|
||||||
0x00000000,
|
.field_0xc = 0x00000000,
|
||||||
0x00000002
|
.field_0x10 = 0x00000002
|
||||||
};
|
};
|
||||||
|
|
||||||
/* 65CA0 8018FDA0 */
|
/* 65CA0 8018FDA0 */
|
||||||
OverlaySomething __OVERLAY_INFO_71280_65CA0 = {
|
OverlaySomething __OVERLAY_INFO_71280_65CA0 = {
|
||||||
__setup_overlay_71280_51940,
|
.setup = __setup_overlay_71280_51940,
|
||||||
func_8017BB08,
|
.field_0x4 = func_8017BB08,
|
||||||
func_8017BB34,
|
.field_0x8 = func_8017BB34,
|
||||||
0x00000000,
|
.field_0xc = 0x00000000,
|
||||||
0x00000002
|
.field_0x10 = 0x00000002
|
||||||
};
|
};
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
|
#include "class.h"
|
||||||
|
#include "ability.h"
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", func_8016D200);
|
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", func_8016D200);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", func_8016D254);
|
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", func_8016D254);
|
||||||
|
|
@ -60,139 +63,536 @@ INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", func_8016DB30);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", func_8016DB84);
|
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", func_8016DB84);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", class_get_field_0x2c);
|
/* 43AD8 8016DBD8 */
|
||||||
|
u8 class_get_field_0x2c(u8 portrait, u8 class) {
|
||||||
|
if (obClassData[portrait].field_0x45 == class)
|
||||||
|
return obClassData[portrait].field_0x2c;
|
||||||
|
|
||||||
|
return obClassData[class].field_0x2c;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", class_get_ability_front);
|
/* 43B2C 8016DC2C */
|
||||||
|
u8 obClassGetAbilityFront(u8 portrait, u8 class) {
|
||||||
|
if (obClassData[portrait].field_0x45 == class)
|
||||||
|
return obClassData[portrait].ability_front;
|
||||||
|
|
||||||
|
return obClassData[class].ability_front;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", class_get_ability_front_hitcount);
|
/* 43B80 8016DC80 */
|
||||||
|
u8 obClassGetAbilityFrontHits(u8 portrait, u8 class) {
|
||||||
|
if (obClassData[portrait].field_0x45 == class)
|
||||||
|
return obClassData[portrait].ability_front_hitcount;
|
||||||
|
|
||||||
|
return obClassData[class].ability_front_hitcount;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", class_get_ability_middle);
|
/* 43BD4 8016DCD4 */
|
||||||
|
u8 obClassGetAbilityMiddle(u8 portrait, u8 class) {
|
||||||
|
s32 var_v0;
|
||||||
|
|
||||||
|
if (obClassData[portrait].field_0x45 != class) {
|
||||||
|
var_v0 = class * 9;
|
||||||
|
} else {
|
||||||
|
var_v0 = obClassData[portrait].field_0x45 * 9;
|
||||||
|
}
|
||||||
|
return *(&obClassData->ability_middle + (var_v0 * 8));
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", class_get_ability_middle_hitcount);
|
/* 43C20 8016DD20 */
|
||||||
|
u8 obClassGetAbilityMiddleHits(u8 portrait, u8 class) {
|
||||||
|
if (obClassData[portrait].field_0x45 == class)
|
||||||
|
return obClassData[portrait].ability_middle_hitcount;
|
||||||
|
|
||||||
|
return obClassData[class].ability_middle_hitcount;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", class_get_ability_back);
|
/* 43C74 8016DD74 */
|
||||||
|
u8 obClassGetAbilityBack(u8 portrait, u8 class) {
|
||||||
|
if (obClassData[portrait].field_0x45 == class)
|
||||||
|
return obClassData[portrait].ability_back;
|
||||||
|
|
||||||
|
return obClassData[class].ability_back;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", class_get_ability_back_hitcount);
|
/* 43CC8 8016DDC8 */
|
||||||
|
u8 obClassGetAbilityBackHits(u8 portrait, u8 class) {
|
||||||
|
if (obClassData[portrait].field_0x45 == class)
|
||||||
|
return obClassData[portrait].ability_back_hitcount;
|
||||||
|
|
||||||
|
return obClassData[class].ability_back_hitcount;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", class_get_field_0x4);
|
/* 43D1C 8016DE1C */
|
||||||
|
u8 class_get_field_0x4(u8 portrait, u8 class) {
|
||||||
|
if (obClassData[portrait].field_0x45 == class)
|
||||||
|
return obClassData[portrait].field_0x4;
|
||||||
|
|
||||||
|
return obClassData[class].field_0x4;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", class_get_gender);
|
/* 43D70 8016DE70 */
|
||||||
|
u8 obClassGetGender(u8 portrait, u8 class) {
|
||||||
|
if (obClassData[portrait].field_0x45 == class)
|
||||||
|
return obClassData[portrait].gender;
|
||||||
|
|
||||||
|
return obClassData[class].gender;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", class_get_leadership_rank);
|
/* 43DC4 8016DEC4 */
|
||||||
|
u8 obClassGetLeadershipRank(u8 portrait, u8 class) {
|
||||||
|
if (obClassData[portrait].field_0x45 == class)
|
||||||
|
return obClassData[portrait].leadership_rank;
|
||||||
|
|
||||||
|
return obClassData[class].leadership_rank;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", class_get_global_flag);
|
/* 43E18 8016DF18 */
|
||||||
|
u8 class_get_global_flag(u8 portrait, u8 class) {
|
||||||
|
u8 var_a1;
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", class_get_item_upper_left);
|
var_a1 = class;
|
||||||
|
if (D_8018ECE4[portrait].field_0x0 & 0x80) {
|
||||||
|
if (obClassData[portrait].field_0x45 == var_a1) {
|
||||||
|
var_a1 = portrait;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return D_8018ECE4[var_a1].field_0x0 & 0x3F;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", class_get_item_upper_right);
|
/* 43E88 8016DF88 */
|
||||||
|
EquipmentId obClassGetItemUpperLeft(u8 portrait, u8 class) {
|
||||||
|
if (obClassData[portrait].field_0x45 == class)
|
||||||
|
return obClassData[portrait].item_upper_left;
|
||||||
|
|
||||||
|
return obClassData[class].item_upper_left;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", class_get_item_lower_left);
|
/* 43EDC 8016DFDC */
|
||||||
|
EquipmentId obClassGetItemUpperRight(u8 portrait, u8 class) {
|
||||||
|
if (obClassData[portrait].field_0x45 == class)
|
||||||
|
return obClassData[portrait].item_upper_right;
|
||||||
|
|
||||||
|
return obClassData[class].item_upper_right;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", class_get_item_lower_right);
|
/* 43F30 8016E030 */
|
||||||
|
EquipmentId obClassGetItemLowerLeft(u8 portrait, u8 class) {
|
||||||
|
if (obClassData[portrait].field_0x45 == class)
|
||||||
|
return obClassData[portrait].item_lower_left;
|
||||||
|
|
||||||
|
return obClassData[class].item_lower_left;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", class_get_ability_front_name);
|
/* 43F84 8016E084 */
|
||||||
|
EquipmentId obClassGetItemLowerRight(u8 portrait, u8 class) {
|
||||||
|
if (obClassData[portrait].field_0x45 == class)
|
||||||
|
return obClassData[portrait].item_lower_right;
|
||||||
|
|
||||||
|
return obClassData[class].item_lower_right;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", class_get_ability_middle_name);
|
/* 43FD8 8016E0D8 */
|
||||||
|
char* obClassGetAbilityFrontName(u8 portrait, u8 class) {
|
||||||
|
u8 var_v0;
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", class_get_ability_back_name);
|
if (obClassData[portrait].field_0x45 == class) {
|
||||||
|
var_v0 = obClassData[portrait].ability_front;
|
||||||
|
} else {
|
||||||
|
var_v0 = obClassData[class].ability_front;
|
||||||
|
}
|
||||||
|
|
||||||
|
return obAbilityGetName(var_v0);
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", class_get_name);
|
/* 44040 8016E140 */
|
||||||
|
char* obClassGetAbilityMiddleName(u8 portrait, u8 class) {
|
||||||
|
// Possible a C macro wrapping?
|
||||||
|
do {
|
||||||
|
char* ret = obAbilityGetName(obClassData[class].ability_middle);
|
||||||
|
return ret;
|
||||||
|
} while(0);
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", class_get_ability);
|
/* 44074 8016E174 */
|
||||||
|
char* obClassGetAbilityBackName(u8 portrait, u8 class) {
|
||||||
|
u8 var_v0;
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", class_get_ability_hitcount);
|
if (obClassData[portrait].field_0x45 == class) {
|
||||||
|
var_v0 = obClassData[portrait].ability_back;
|
||||||
|
} else {
|
||||||
|
var_v0 = obClassData[class].ability_back;
|
||||||
|
}
|
||||||
|
|
||||||
|
return obAbilityGetName(var_v0);
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obAbilityGetName);
|
/* 440DC 8016E1DC */
|
||||||
|
char* obClassGetName(u8 portrait, u8 class) {
|
||||||
|
if (obClassData[portrait].field_0x45 == class)
|
||||||
|
return obClassData[portrait].name;
|
||||||
|
|
||||||
|
return obClassData[class].name;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", ability_get_field_0x4);
|
/* 44130 8016E230 */
|
||||||
|
u8 obClassGetAbility(u8 portrait, u8 class, u8 row)
|
||||||
|
{
|
||||||
|
if (obClassData[portrait].field_0x45 != class)
|
||||||
|
portrait = class;
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obAbilityGetElement);
|
if (row == 0) {
|
||||||
|
return obClassData[portrait].ability_front != 0xFF ? obClassData[portrait].ability_front : obClassData[class].ability_front;
|
||||||
|
} else if (row == 1) {
|
||||||
|
return obClassData[portrait].ability_middle != 0xFF ? obClassData[portrait].ability_middle : obClassData[class].ability_middle;
|
||||||
|
} else {
|
||||||
|
return obClassData[portrait].ability_back != 0xFF ? obClassData[portrait].ability_back : obClassData[class].ability_back;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 44238 8016E338 */
|
||||||
|
u8 obClassGetAbilityHits(u8 portrait, u8 class, u8 row) {
|
||||||
|
if (obClassData[portrait].field_0x45 != class)
|
||||||
|
portrait = class;
|
||||||
|
|
||||||
|
if (row == 0) {
|
||||||
|
return obClassData[portrait].ability_front_hitcount != 0xFF ? obClassData[portrait].ability_front_hitcount : obClassData[class].ability_front_hitcount;
|
||||||
|
} else if (row == 1) {
|
||||||
|
return obClassData[portrait].ability_middle_hitcount != 0xFF ? obClassData[portrait].ability_middle_hitcount : obClassData[class].ability_middle_hitcount;
|
||||||
|
} else {
|
||||||
|
return obClassData[portrait].ability_back_hitcount != 0xFF ? obClassData[portrait].ability_back_hitcount : obClassData[class].ability_back_hitcount;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 44340 8016E440 */
|
||||||
|
char* obAbilityGetName(u8 index) {
|
||||||
|
return obAbilityData[index].name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 44358 8016E458 */
|
||||||
|
u8 ability_get_field_0x4(u8 index) {
|
||||||
|
return obAbilityData[index].field_0x4;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 44370 8016E470 */
|
||||||
|
Element obAbilityGetElement(u8 index, u16 arg1, u16 arg2, s32 arg3, u16 arg4) {
|
||||||
|
u16 item_index;
|
||||||
|
|
||||||
|
if (obAbilityData[index].element != ELEMENT_INVALID && obAbilityData[index].element != 0xF)
|
||||||
|
return obAbilityData[index].element;
|
||||||
|
|
||||||
|
if (obAbilityData[index].field_0x4 == 3) {
|
||||||
|
item_index = obEquipmentGetFirstSpellbook(arg1, arg2, arg3, arg4);
|
||||||
|
} else {
|
||||||
|
item_index = obEquipmentGetFirstWeapon(arg1, arg2, arg3, arg4);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item_index == 0)
|
||||||
|
return ELEMENT_PHYSICAL;
|
||||||
|
|
||||||
|
return obEquipmentGetElement(item_index);
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", func_8016E50C);
|
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", func_8016E50C);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", func_8016EA34);
|
/* 44934 8016EA34 */
|
||||||
|
u8 func_8016EA34(u8 portrait, u8 class, u8 arg2)
|
||||||
|
{
|
||||||
|
if (obClassData[portrait].field_0x45 != class)
|
||||||
|
portrait = class;
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", character_get_item);
|
portrait = (obClassData[portrait].field_0x42 != 0xFF && arg2 < obClassData[portrait].field_0x42) ?
|
||||||
|
obClassData[portrait].field_0x41 :
|
||||||
|
(obClassData[portrait].field_0x44 != 0xFF && arg2 < obClassData[portrait].field_0x44) ?
|
||||||
|
obClassData[portrait].field_0x43 : portrait;
|
||||||
|
|
||||||
|
return portrait;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 449EC 8016EAEC */
|
||||||
|
u16 character_get_item(CharacterSlot* character, u8 slot) {
|
||||||
|
u16 item_id;
|
||||||
|
|
||||||
|
item_id = 0;
|
||||||
|
switch(slot) {
|
||||||
|
case 0:
|
||||||
|
item_id = character->item_upper_left;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
item_id = character->item_upper_right;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
item_id = character->item_lower_left;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
item_id = character->item_lower_right;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item_id == 0) {
|
||||||
|
item_id = FP_CLASS_GET_ITEM_1[slot](character->portrait, character->class);
|
||||||
|
}
|
||||||
|
return item_id;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", __character_handle_levelup);
|
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", __character_handle_levelup);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", __character_initialise);
|
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", __character_initialise);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obItemGetName);
|
/* 453E0 8016F4E0 */
|
||||||
|
char *obItemGetName(u16 arg0) {
|
||||||
|
return obItemData[arg0].name;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", item_get_field_0x4);
|
/* 45400 8016F500 */
|
||||||
|
u8 item_get_field_0x4(u16 arg0) {
|
||||||
|
return obItemData[arg0].field_0x4;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", item_get_field_0x5);
|
/* 45420 8016F520 */
|
||||||
|
u8 item_get_field_0x5(u16 arg0) {
|
||||||
|
return obItemData[arg0].field_0x5;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", item_get_field_0x8);
|
/* 45440 8016F540 */
|
||||||
|
u8 item_get_field_0x8(u16 arg0) {
|
||||||
|
return obItemData[arg0].field_0x8;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", item_get_field_0x9);
|
/* 45460 8016F560 */
|
||||||
|
u8 item_get_field_0x9(u16 arg0) {
|
||||||
|
return obItemData[arg0].field_0x9;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", equipment_get_field_0x1b);
|
/* 45480 8016F580 */
|
||||||
|
u8 equipment_get_field_0x1b(EquipmentId index) {
|
||||||
|
return obEquipmentData[index].field_0x1b;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", equipment_get_field_0x1c);
|
/* 45498 8016F598 */
|
||||||
|
u8 equipment_get_field_0x1c(EquipmentId index) {
|
||||||
|
return obEquipmentData[index].field_0x1c;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obEquipmentGetName);
|
/* 454B0 8016F5B0 */
|
||||||
|
char* obEquipmentGetName(EquipmentId index) {
|
||||||
|
return obEquipmentData[index].name;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obEquipmentGetType);
|
/* 454C8 8016F5C8 */
|
||||||
|
EquipmentType obEquipmentGetType(EquipmentId index) {
|
||||||
|
return obEquipmentData[index].type;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obEquipmentGetElement);
|
/* 454E0 8016F5E0 */
|
||||||
|
Element obEquipmentGetElement(EquipmentId index) {
|
||||||
|
Element element;
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", equipment_get_field_0x6);
|
element = obEquipmentData[index].element;
|
||||||
|
if (element == ELEMENT_UNKNOWN_0x10) {
|
||||||
|
element = CHARACTER_SLOT[0].element;
|
||||||
|
}
|
||||||
|
return element;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obEquipmentGetBuyPrice);
|
/* 45514 8016F614 */
|
||||||
|
u8 equipment_get_field_0x6(EquipmentId index) {
|
||||||
|
return obEquipmentData[index].field_0x6;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", equipment_get_field_0x10);
|
/* 4552C 8016F62C */
|
||||||
|
u16 obEquipmentGetBuyPrice(EquipmentId index) {
|
||||||
|
return obEquipmentData[index].buy_price;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obEquipmentGetStrength);
|
/* 45544 8016F644 */
|
||||||
|
s8 equipment_get_field_0x10(EquipmentId index) {
|
||||||
|
return obEquipmentData[index].field_0x10;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obEquipmentGetVitality);
|
/* 4555C 8016F65C */
|
||||||
|
s8 obEquipmentGetStrength(EquipmentId index) {
|
||||||
|
s8 ret;
|
||||||
|
if (index == EQUIPMENT_ID_GALLANT_DOLL) {
|
||||||
|
ret = CHARACTER_SLOT[0].strength / 20;
|
||||||
|
} else {
|
||||||
|
ret = obEquipmentData[index].strength;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obEquipmentGetIntelligence);
|
/* 455AC 8016F6AC */
|
||||||
|
s8 obEquipmentGetVitality(EquipmentId index) {
|
||||||
|
s8 ret;
|
||||||
|
if (index == EQUIPMENT_ID_GALLANT_DOLL) {
|
||||||
|
ret = CHARACTER_SLOT[0].vitality / 20;
|
||||||
|
} else {
|
||||||
|
ret = obEquipmentData[index].vitality;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obEquipmentGetMentality);
|
/* 455FC 8016F6FC */
|
||||||
|
s8 obEquipmentGetIntelligence(EquipmentId index) {
|
||||||
|
s8 ret;
|
||||||
|
if (index == EQUIPMENT_ID_GALLANT_DOLL) {
|
||||||
|
ret = CHARACTER_SLOT[0].intelligence / 20;
|
||||||
|
} else {
|
||||||
|
ret = obEquipmentData[index].intelligence;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obEquipmentGetAgility);
|
/* 4564C 8016F74C */
|
||||||
|
s8 obEquipmentGetMentality(EquipmentId index) {
|
||||||
|
s8 ret;
|
||||||
|
if (index == EQUIPMENT_ID_GALLANT_DOLL) {
|
||||||
|
ret = CHARACTER_SLOT[0].mentality / 20;
|
||||||
|
} else {
|
||||||
|
ret = obEquipmentData[index].mentality;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obEquipmentGetDexterity);
|
/* 4569C 8016F79C */
|
||||||
|
s8 obEquipmentGetAgility(EquipmentId index) {
|
||||||
|
s8 ret;
|
||||||
|
if (index == EQUIPMENT_ID_GALLANT_DOLL) {
|
||||||
|
ret = CHARACTER_SLOT[0].agility / 20;
|
||||||
|
} else {
|
||||||
|
ret = obEquipmentData[index].agility;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obEquipmentGetResistanceStrike);
|
/* 456EC 8016F7EC */
|
||||||
|
s8 obEquipmentGetDexterity(EquipmentId index) {
|
||||||
|
s8 ret;
|
||||||
|
if (index == EQUIPMENT_ID_GALLANT_DOLL) {
|
||||||
|
ret = CHARACTER_SLOT[0].dexterity / 20;
|
||||||
|
} else {
|
||||||
|
ret = obEquipmentData[index].dexterity;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obEquipmentGetResistanceWind);
|
/* 4573C 8016F83C */
|
||||||
|
s8 obEquipmentGetResistanceStrike(EquipmentId index) {
|
||||||
|
return obEquipmentData[index].res_strike;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obEquipmentGetResistanceFire);
|
/* 45754 8016F854 */
|
||||||
|
s8 obEquipmentGetResistanceWind(EquipmentId index) {
|
||||||
|
return obEquipmentData[index].res_wind;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obEquipmentGetResistanceEarth);
|
/* 4576C 8016F86C */
|
||||||
|
s8 obEquipmentGetResistanceFire(EquipmentId index) {
|
||||||
|
return obEquipmentData[index].res_fire;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obEquipmentGetResistanceWater);
|
/* 45784 8016F884 */
|
||||||
|
s8 obEquipmentGetResistanceEarth(EquipmentId index) {
|
||||||
|
return obEquipmentData[index].res_earth;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obEquipmentGetResistanceVirtue);
|
/* 4579C 8016F89C */
|
||||||
|
s8 obEquipmentGetResistanceWater(EquipmentId index) {
|
||||||
|
return obEquipmentData[index].res_water;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obEquipmentGetResistanceBane);
|
/* 457B4 8016F8B4 */
|
||||||
|
s8 obEquipmentGetResistanceVirtue(EquipmentId index) {
|
||||||
|
return obEquipmentData[index].res_holy;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", equipment_get_field_0x18_b68);
|
/* 457CC 8016F8CC */
|
||||||
|
s8 obEquipmentGetResistanceBane(EquipmentId index) {
|
||||||
|
return obEquipmentData[index].res_dark;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", equipment_get_field_0x18_b46);
|
/* 457E4 8016F8E4 */
|
||||||
|
u8 equipment_get_field_0x18_b68(EquipmentId index) {
|
||||||
|
return obEquipmentData[index].field_0x18 >> 6;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", equipment_get_field_0x18_b24);
|
/* 45800 8016F900 */
|
||||||
|
u8 equipment_get_field_0x18_b46(EquipmentId index) {
|
||||||
|
return (obEquipmentData[index].field_0x18 >> 4) & 3;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", equipment_get_field_0x18_b12);
|
/* 45820 8016F920 */
|
||||||
|
u8 equipment_get_field_0x18_b24(EquipmentId index) {
|
||||||
|
return (obEquipmentData[index].field_0x18 >> 2) & 3;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", equipment_get_field_0x19_b68);
|
/* 45840 8016F940 */
|
||||||
|
u8 equipment_get_field_0x18_b12(EquipmentId index) {
|
||||||
|
return obEquipmentData[index].field_0x18 & 3;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", equipment_get_field_0x19_b46);
|
/* 4585C 8016F95C */
|
||||||
|
u8 equipment_get_field_0x19_b68(EquipmentId index) {
|
||||||
|
return obEquipmentData[index].field_0x19 >> 6;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", equipment_get_field_0x19_b24);
|
/* 45878 8016F978 */
|
||||||
|
u8 equipment_get_field_0x19_b46(EquipmentId index) {
|
||||||
|
return (obEquipmentData[index].field_0x19 >> 4) & 3;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", equipment_get_field_0x19_b12);
|
/* 45898 8016F998 */
|
||||||
|
u8 equipment_get_field_0x19_b24(EquipmentId index) {
|
||||||
|
return (obEquipmentData[index].field_0x19 >> 2) & 3;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", equipment_get_field_0x1a_b7);
|
/* 458B8 8016F9B8 */
|
||||||
|
u8 equipment_get_field_0x19_b12(EquipmentId index) {
|
||||||
|
return obEquipmentData[index].field_0x19 & 3;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obEquipmentIsWeapon);
|
/* 458D4 8016F9D4 */
|
||||||
|
u8 equipment_get_field_0x1a_b7(EquipmentId index) {
|
||||||
|
return obEquipmentData[index].field_0x1a >> 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 458F0 8016F9F0 */
|
||||||
|
bool obEquipmentIsWeapon(EquipmentId index) {
|
||||||
|
s32 type = obEquipmentData[index].type;
|
||||||
|
|
||||||
|
if (type != 0) {
|
||||||
|
if (type < EQUIPMENT_TYPE_SMALL_SHIELD) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (type == EQUIPMENT_TYPE_FAN) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obEquipmentGetFirstWeapon);
|
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obEquipmentGetFirstWeapon);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", obEquipmentGetFirstSpellbook);
|
/* 45A50 8016FB50 */
|
||||||
|
EquipmentId obEquipmentGetFirstSpellbook(EquipmentId arg0, EquipmentId arg1, EquipmentId arg2, EquipmentId arg3) {
|
||||||
|
if (obEquipmentData[arg0].type == EQUIPMENT_TYPE_SPELLBOOK)
|
||||||
|
return arg0;
|
||||||
|
|
||||||
|
if (obEquipmentData[arg1].type == EQUIPMENT_TYPE_SPELLBOOK)
|
||||||
|
return arg1;
|
||||||
|
|
||||||
|
if (obEquipmentData[arg2].type == EQUIPMENT_TYPE_SPELLBOOK)
|
||||||
|
return arg2;
|
||||||
|
|
||||||
|
if (obEquipmentData[arg3].type == EQUIPMENT_TYPE_SPELLBOOK)
|
||||||
|
return arg3;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", func_8016FBE0);
|
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", func_8016FBE0);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,64 @@
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_hallowed_class", func_80186160);
|
/* 5C060 80186160 */
|
||||||
|
void func_80186160(void) {
|
||||||
|
D_80197168[0] |= 1;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_hallowed_class", func_80186178);
|
/* 5C078 80186178 */
|
||||||
|
void func_80186178(void) {
|
||||||
|
D_80197168[0] &= 0xFE;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_hallowed_class", func_80186190);
|
/* 5C090 80186190 */
|
||||||
|
void func_80186190(s32 arg0, s32 arg1) {
|
||||||
|
if (arg1 != 0) {
|
||||||
|
s32 var_a1 = ((arg0 >= 0) ? arg0 : arg0 + 7);
|
||||||
|
D_80197168[(var_a1 >> 3)] = D_80197168[(var_a1 >> 3)] | (1 << (arg0 - ((var_a1 >> 3) * 8)));
|
||||||
|
} else {
|
||||||
|
s32 var_a1_3 = (arg0 >= 0) ? arg0 : arg0 + 7;
|
||||||
|
D_80197168[(var_a1_3 >> 3)] = D_80197168[(var_a1_3 >> 3)] & ~(1 << (arg0 - ((var_a1_3 >> 3) * 8)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_hallowed_class", func_80186210);
|
/* 5C110 80186210 */
|
||||||
|
s32 func_80186210(s32 arg0) {
|
||||||
|
s32 var_v1 = (arg0 >= 0 ? arg0 : arg0 + 7);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_hallowed_class", func_80186240);
|
return (D_80197168[(var_v1 >> 3)] >> (arg0 - ((var_v1 >> 3) * 8))) & 1;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_hallowed_class", func_80186284);
|
/* 5C140 80186240 */
|
||||||
|
s32 func_80186240(s32 arg0) {
|
||||||
|
s32 temp_v1;
|
||||||
|
s32 var_v0;
|
||||||
|
s32 var_v1;
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_hallowed_class", func_80186290);
|
if(arg0 == -1)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
var_v1 = arg0;
|
||||||
|
if (arg0 < 0) {
|
||||||
|
var_v1 = arg0 + 7;
|
||||||
|
}
|
||||||
|
temp_v1 = var_v1 >> 3;
|
||||||
|
return ((D_80197AE7[temp_v1] >> (arg0 - (temp_v1 * 8))) & 1) ^ 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* 5C184 80186284 */
|
||||||
|
void func_80186284(s32 arg0) {
|
||||||
|
D_80196F58 = arg0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* 5C190 80186290 */
|
||||||
|
void func_80186290(void) {
|
||||||
|
D_801951A1 |= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 5C1A8 801862A8 */
|
||||||
|
void func_801862A8(void) {
|
||||||
|
bzero(&D_80197AE7, 8);
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_hallowed_class", func_801862A8);
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,33 @@
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_ugliest_snow", __get_compared_osTvType);
|
extern u8 D_80187020;
|
||||||
|
extern u8 __compared_osTvType;
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_ugliest_snow", __reset_compared_osTvType);
|
/* 42C30 8016CD30 */
|
||||||
|
u8 __get_compared_osTvType(void) {
|
||||||
|
return D_80187020;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 42C3C 8016CD3C */
|
||||||
|
u8 __reset_compared_osTvType(void) {
|
||||||
|
u8 temp_v0;
|
||||||
|
|
||||||
|
temp_v0 = __compared_osTvType;
|
||||||
|
__compared_osTvType = 0;
|
||||||
|
return temp_v0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 42C50 8016CD50 */
|
||||||
|
void func_8016CD50(u8 arg0) {
|
||||||
|
D_80187020 = arg0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 42C5C 8016CD5C */
|
||||||
|
void __inc_compared_osTvType(u8 arg0) {
|
||||||
|
if (D_80187020 != arg0) {
|
||||||
|
__compared_osTvType = arg0 + 1;
|
||||||
|
}
|
||||||
|
D_80187020 = arg0;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_ugliest_snow", func_8016CD50);
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "segment_obdata/_ob_ugliest_snow", __inc_compared_osTvType);
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue