Add ClassId

This commit is contained in:
gijs 2024-05-24 11:49:59 +02:00
parent c7690712d2
commit 9fe0a8f5f4
5 changed files with 163 additions and 141 deletions

View File

@ -4,6 +4,7 @@
#include <ultra64.h> #include <ultra64.h>
#include "assert.h" #include "assert.h"
#include "class_id.h"
#include "element.h" #include "element.h"
#include "gender.h" #include "gender.h"
@ -15,7 +16,7 @@ typedef struct {
/* 0x00 */ s8 name[0x10]; /* 0x00 */ s8 name[0x10];
/* 0x10 */ u8 field_0x10; /* 0x10 */ u8 field_0x10;
/* 0x11 */ u8 portrait; /* 0x11 */ u8 portrait;
/* 0x12 */ u8 class; /* 0x12 */ ClassId class;
/* 0x13 */ u8 level; /* 0x13 */ u8 level;
/* 0x14 */ Gender gender; /* 0x14 */ Gender gender;
/* 0x15 */ u8 field_0x15; /* 0x15 */ u8 field_0x15;

View File

@ -4,6 +4,7 @@
#include <ultra64.h> #include <ultra64.h>
#include "assert.h" #include "assert.h"
#include "class_id.h"
#include "equipment_id.h" #include "equipment_id.h"
#include "gender.h" #include "gender.h"
@ -76,7 +77,7 @@ typedef struct {
/* 0x42 */ u8 field_0x42; /* 0x42 */ u8 field_0x42;
/* 0x43 */ u8 field_0x43; /* 0x43 */ u8 field_0x43;
/* 0x44 */ u8 field_0x44; /* 0x44 */ u8 field_0x44;
/* 0x45 */ u8 field_0x45; /* 0x45 */ ClassId field_0x45;
/* 0x46 */ u8 element; /* 0x46 */ u8 element;
/* 0x47 */ u8 max_items; /* 0x47 */ u8 max_items;
} ClassData; // size:0x48 } ClassData; // size:0x48
@ -86,26 +87,26 @@ ASSERT_SIZE(ClassData, 0x48);
extern ClassData obClassData[]; extern ClassData 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, ClassId class);
extern u8 obClassGetAbilityFront(u8 portrait, u8 class); extern u8 obClassGetAbilityFront(u8 portrait, ClassId class);
extern u8 obClassGetAbilityFrontHits(u8 portrait, u8 class); extern u8 obClassGetAbilityFrontHits(u8 portrait, ClassId class);
extern u8 obClassGetAbilityMiddle(u8 portrait, u8 class); extern u8 obClassGetAbilityMiddle(u8 portrait, ClassId class);
extern u8 obClassGetAbilityMiddleHits(u8 portrait, u8 class); extern u8 obClassGetAbilityMiddleHits(u8 portrait, ClassId class);
extern u8 obClassGetAbilityBack(u8 portrait, u8 class); extern u8 obClassGetAbilityBack(u8 portrait, ClassId class);
extern u8 obClassGetAbilityBackHits(u8 portrait, u8 class); extern u8 obClassGetAbilityBackHits(u8 portrait, ClassId class);
extern u8 class_get_field_0x4(u8 portrait, u8 class); extern u8 class_get_field_0x4(u8 portrait, ClassId class);
extern u8 obClassGetGender(u8 portrait, u8 class); extern u8 obClassGetGender(u8 portrait, ClassId class);
extern u8 obClassGetLeadershipRank(u8 portrait, u8 class); extern u8 obClassGetLeadershipRank(u8 portrait, ClassId class);
extern u8 class_get_global_flag(u8 portrait, u8 class); extern u8 class_get_global_flag(u8 portrait, ClassId class);
extern EquipmentId obClassGetItemUpperLeft(u8 portrait, u8 class); extern EquipmentId obClassGetItemUpperLeft(u8 portrait, ClassId class);
extern EquipmentId obClassGetItemUpperRight(u8 portrait, u8 class); extern EquipmentId obClassGetItemUpperRight(u8 portrait, ClassId class);
extern EquipmentId obClassGetItemLowerLeft(u8 portrait, u8 class); extern EquipmentId obClassGetItemLowerLeft(u8 portrait, ClassId class);
extern EquipmentId obClassGetItemLowerRight(u8 portrait, u8 class); extern EquipmentId obClassGetItemLowerRight(u8 portrait, ClassId class);
extern char* obClassGetAbilityFrontName(u8 portrait, u8 class); extern char *obClassGetAbilityFrontName(u8 portrait, ClassId class);
extern char* obClassGetAbilityMiddleName(u8 portrait, u8 class); extern char *obClassGetAbilityMiddleName(u8 portrait, ClassId class);
extern char* obClassGetAbilityBackName(u8 portrait, u8 class); extern char *obClassGetAbilityBackName(u8 portrait, ClassId class);
extern char* obClassGetName(u8 portrait, u8 class); extern char *obClassGetName(u8 portrait, ClassId class);
#endif // __CLASS_H__ #endif // __CLASS_H__

20
include/class_id.h Normal file
View File

@ -0,0 +1,20 @@
#ifndef __CLASS_ID_H__
#define __CLASS_ID_H__
#include <ultratypes.h>
typedef u8 ClassId;
#define CLASS_ID_SOLDIER 1
#define CLASS_ID_FIGHTER 2
#define CLASS_ID_LYCANTROPE 3
#define CLASS_ID_AMAZON 4
#define CLASS_ID_KNIGHT 5
#define CLASS_ID_BERSERKER 6
#define CLASS_ID_FENCER 7
#define CLASS_ID_PHALANX 8
#define CLASS_ID_BEAST_TAMER 9
#define CLASS_ID_DOLL_MASTER 10
#define CLASS_ID_NINJA 11
#endif // __CLASS_ID_H__

View File

@ -5853,7 +5853,7 @@ u8 D_8018B484[] = { 0xFF, 0x3C, 0x44, 0x4C, 0x54, 0x9A, 0x60, 0x00 };
u8 D_8018B48C[] = { 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x00 }; u8 D_8018B48C[] = { 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x00 };
/* 61394 8018B494 */ /* 61394 8018B494 */
u16 (*FP_CLASS_GET_ITEM_1[])(u8 portrait, u8 class) = { u16 (*FP_CLASS_GET_ITEM_1[])(u8 portrait, ClassId class) = {
class_get_item_upper_left, class_get_item_upper_left,
class_get_item_upper_right, class_get_item_upper_right,
class_get_item_lower_left, class_get_item_lower_left,

View File

@ -66,7 +66,7 @@ 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);
/* 43AD8 8016DBD8 */ /* 43AD8 8016DBD8 */
u8 class_get_field_0x2c(u8 portrait, u8 class) { u8 class_get_field_0x2c(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].field_0x2c; return obClassData[portrait].field_0x2c;
@ -74,7 +74,7 @@ u8 class_get_field_0x2c(u8 portrait, u8 class) {
} }
/* 43B2C 8016DC2C */ /* 43B2C 8016DC2C */
u8 obClassGetAbilityFront(u8 portrait, u8 class) { u8 obClassGetAbilityFront(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].ability_front; return obClassData[portrait].ability_front;
@ -82,7 +82,7 @@ u8 obClassGetAbilityFront(u8 portrait, u8 class) {
} }
/* 43B80 8016DC80 */ /* 43B80 8016DC80 */
u8 obClassGetAbilityFrontHits(u8 portrait, u8 class) { u8 obClassGetAbilityFrontHits(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].ability_front_hitcount; return obClassData[portrait].ability_front_hitcount;
@ -90,7 +90,7 @@ u8 obClassGetAbilityFrontHits(u8 portrait, u8 class) {
} }
/* 43BD4 8016DCD4 */ /* 43BD4 8016DCD4 */
u8 obClassGetAbilityMiddle(u8 portrait, u8 class) { u8 obClassGetAbilityMiddle(u8 portrait, ClassId class) {
s32 var_v0; s32 var_v0;
if (obClassData[portrait].field_0x45 != class) { if (obClassData[portrait].field_0x45 != class) {
@ -102,7 +102,7 @@ u8 obClassGetAbilityMiddle(u8 portrait, u8 class) {
} }
/* 43C20 8016DD20 */ /* 43C20 8016DD20 */
u8 obClassGetAbilityMiddleHits(u8 portrait, u8 class) { u8 obClassGetAbilityMiddleHits(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].ability_middle_hitcount; return obClassData[portrait].ability_middle_hitcount;
@ -110,7 +110,7 @@ u8 obClassGetAbilityMiddleHits(u8 portrait, u8 class) {
} }
/* 43C74 8016DD74 */ /* 43C74 8016DD74 */
u8 obClassGetAbilityBack(u8 portrait, u8 class) { u8 obClassGetAbilityBack(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].ability_back; return obClassData[portrait].ability_back;
@ -118,7 +118,7 @@ u8 obClassGetAbilityBack(u8 portrait, u8 class) {
} }
/* 43CC8 8016DDC8 */ /* 43CC8 8016DDC8 */
u8 obClassGetAbilityBackHits(u8 portrait, u8 class) { u8 obClassGetAbilityBackHits(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].ability_back_hitcount; return obClassData[portrait].ability_back_hitcount;
@ -126,7 +126,7 @@ u8 obClassGetAbilityBackHits(u8 portrait, u8 class) {
} }
/* 43D1C 8016DE1C */ /* 43D1C 8016DE1C */
u8 class_get_field_0x4(u8 portrait, u8 class) { u8 class_get_field_0x4(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].field_0x4; return obClassData[portrait].field_0x4;
@ -134,7 +134,7 @@ u8 class_get_field_0x4(u8 portrait, u8 class) {
} }
/* 43D70 8016DE70 */ /* 43D70 8016DE70 */
Gender obClassGetGender(u8 portrait, u8 class) { Gender obClassGetGender(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].gender; return obClassData[portrait].gender;
@ -142,7 +142,7 @@ Gender obClassGetGender(u8 portrait, u8 class) {
} }
/* 43DC4 8016DEC4 */ /* 43DC4 8016DEC4 */
u8 obClassGetLeadershipRank(u8 portrait, u8 class) { u8 obClassGetLeadershipRank(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].leadership_rank; return obClassData[portrait].leadership_rank;
@ -150,7 +150,7 @@ u8 obClassGetLeadershipRank(u8 portrait, u8 class) {
} }
/* 43E18 8016DF18 */ /* 43E18 8016DF18 */
u8 class_get_global_flag(u8 portrait, u8 class) { u8 class_get_global_flag(u8 portrait, ClassId class) {
u8 var_a1; u8 var_a1;
var_a1 = class; var_a1 = class;
@ -163,7 +163,7 @@ u8 class_get_global_flag(u8 portrait, u8 class) {
} }
/* 43E88 8016DF88 */ /* 43E88 8016DF88 */
EquipmentId obClassGetItemUpperLeft(u8 portrait, u8 class) { EquipmentId obClassGetItemUpperLeft(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].item_upper_left; return obClassData[portrait].item_upper_left;
@ -171,7 +171,7 @@ EquipmentId obClassGetItemUpperLeft(u8 portrait, u8 class) {
} }
/* 43EDC 8016DFDC */ /* 43EDC 8016DFDC */
EquipmentId obClassGetItemUpperRight(u8 portrait, u8 class) { EquipmentId obClassGetItemUpperRight(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].item_upper_right; return obClassData[portrait].item_upper_right;
@ -179,7 +179,7 @@ EquipmentId obClassGetItemUpperRight(u8 portrait, u8 class) {
} }
/* 43F30 8016E030 */ /* 43F30 8016E030 */
EquipmentId obClassGetItemLowerLeft(u8 portrait, u8 class) { EquipmentId obClassGetItemLowerLeft(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].item_lower_left; return obClassData[portrait].item_lower_left;
@ -187,7 +187,7 @@ EquipmentId obClassGetItemLowerLeft(u8 portrait, u8 class) {
} }
/* 43F84 8016E084 */ /* 43F84 8016E084 */
EquipmentId obClassGetItemLowerRight(u8 portrait, u8 class) { EquipmentId obClassGetItemLowerRight(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].item_lower_right; return obClassData[portrait].item_lower_right;
@ -195,7 +195,7 @@ EquipmentId obClassGetItemLowerRight(u8 portrait, u8 class) {
} }
/* 43FD8 8016E0D8 */ /* 43FD8 8016E0D8 */
char* obClassGetAbilityFrontName(u8 portrait, u8 class) { char* obClassGetAbilityFrontName(u8 portrait, ClassId class) {
u8 var_v0; u8 var_v0;
if (obClassData[portrait].field_0x45 == class) { if (obClassData[portrait].field_0x45 == class) {
@ -208,7 +208,7 @@ char* obClassGetAbilityFrontName(u8 portrait, u8 class) {
} }
/* 44040 8016E140 */ /* 44040 8016E140 */
char* obClassGetAbilityMiddleName(u8 portrait, u8 class) { char* obClassGetAbilityMiddleName(u8 portrait, ClassId class) {
// Possible a C macro wrapping? // Possible a C macro wrapping?
do { do {
char* ret = obAbilityGetName(obClassData[class].ability_middle); char* ret = obAbilityGetName(obClassData[class].ability_middle);
@ -217,7 +217,7 @@ char* obClassGetAbilityMiddleName(u8 portrait, u8 class) {
} }
/* 44074 8016E174 */ /* 44074 8016E174 */
char* obClassGetAbilityBackName(u8 portrait, u8 class) { char* obClassGetAbilityBackName(u8 portrait, ClassId class) {
u8 var_v0; u8 var_v0;
if (obClassData[portrait].field_0x45 == class) { if (obClassData[portrait].field_0x45 == class) {
@ -230,7 +230,7 @@ char* obClassGetAbilityBackName(u8 portrait, u8 class) {
} }
/* 440DC 8016E1DC */ /* 440DC 8016E1DC */
char* obClassGetName(u8 portrait, u8 class) { char* obClassGetName(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].name; return obClassData[portrait].name;
@ -238,7 +238,7 @@ char* obClassGetName(u8 portrait, u8 class) {
} }
/* 44130 8016E230 */ /* 44130 8016E230 */
u8 obClassGetAbility(u8 portrait, u8 class, u8 row) u8 obClassGetAbility(u8 portrait, ClassId class, u8 row)
{ {
if (obClassData[portrait].field_0x45 != class) if (obClassData[portrait].field_0x45 != class)
portrait = class; portrait = class;
@ -253,7 +253,7 @@ u8 obClassGetAbility(u8 portrait, u8 class, u8 row)
} }
/* 44238 8016E338 */ /* 44238 8016E338 */
u8 obClassGetAbilityHits(u8 portrait, u8 class, u8 row) { u8 obClassGetAbilityHits(u8 portrait, ClassId class, u8 row) {
if (obClassData[portrait].field_0x45 != class) if (obClassData[portrait].field_0x45 != class)
portrait = class; portrait = class;
@ -298,7 +298,7 @@ Element obAbilityGetElement(u8 index, u16 arg1, u16 arg2, s32 arg3, u16 arg4) {
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", func_8016E50C); INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", func_8016E50C);
/* 44934 8016EA34 */ /* 44934 8016EA34 */
u8 func_8016EA34(u8 portrait, u8 class, u8 arg2) u8 func_8016EA34(u8 portrait, ClassId class, u8 arg2)
{ {
if (obClassData[portrait].field_0x45 != class) if (obClassData[portrait].field_0x45 != class)
portrait = class; portrait = class;