Compare commits

..

No commits in common. "474036e160aa2d1d124ce49d488135bcea3faa93" and "a59d54c56d9e744cc76162544273a9d0787799d3" have entirely different histories.

33 changed files with 1274 additions and 882 deletions

View File

@ -3,35 +3,32 @@
#include <ultra64.h> #include <ultra64.h>
#include "ability_id.h"
#include "assert.h" #include "assert.h"
#include "element.h" #include "element.h"
#include "equipment_id.h"
typedef struct { typedef struct {
/* 0x00 */ char *name; /* 0x00 */ char *name;
/* 0x04 */ u8 field_0x4; /* 0x04 */ u8 field_0x4;
/* 0x05 */ Element element; /* 0x05 */ Element element;
/* 0x06 */ u8 field_0x6; /* 0x06 */ u8 field_0x6;
/* 0x07 */ u8 field_0x7; /* 0x07 */ u8 field_0x7;
/* 0x08 */ u8 field_0x8; /* 0x08 */ u8 field_0x8;
/* 0x09 */ u8 field_0x9; /* 0x09 */ u8 field_0x9;
/* 0x0a */ u8 field_0xa; /* 0x0a */ u8 field_0xa;
/* 0x0b */ u8 field_0xb; /* 0x0b */ u8 field_0xb;
/* 0x0c */ u8 field_0xc; /* 0x0c */ u8 field_0xc;
/* 0x0d */ u8 field_0xd; /* 0x0d */ u8 field_0xd;
/* 0x0e */ u8 field_0xe; /* 0x0e */ u8 field_0xe;
/* 0x0f */ u8 field_0xf; /* 0x0f */ u8 field_0xf;
} AbilityData; // size:0x10 } AbilityData; // size:0x10
ASSERT_SIZE(AbilityData, 0x10); ASSERT_SIZE(AbilityData, 0x10);
extern AbilityData obAbilityData[]; extern AbilityData obAbilityData[];
extern char *obAbilityGetName(AbilityId index); extern char *obAbilityGetName(u8 index);
extern u8 ability_get_field_0x4(AbilityId index); extern u8 ability_get_field_0x4(u8 index);
extern Element obAbilityGetElement(AbilityId index, EquipmentId arg1, extern Element obAbilityGetElement(u8 index, u16 arg1, u16 arg2, s32 arg3,
EquipmentId arg2, EquipmentId arg3, u16 arg4);
EquipmentId arg4);
#endif // __ABILITY_H__ #endif // __ABILITY_H__

View File

@ -1,27 +0,0 @@
#ifndef __ABILITY_ID_H__
#define __ABILITY_ID_H__
#include <ultratypes.h>
typedef u8 AbilityId;
#define ABILITY_ID_THRUST 1
#define ABILITY_ID_PECK 2
#define ABILITY_ID_PIERCE 3
#define ABILITY_ID_SLASH 4
#define ABILITY_ID_CLEAVE 5
#define ABILITY_ID_REND 6
#define ABILITY_ID_CLAW 7
#define ABILITY_ID_BITE 8
#define ABILITY_ID_STRIKE 9
#define ABILITY_ID_CRUSH 10
#define ABILITY_ID_SMASH 11
#define ABILITY_ID_LASH 12
#define ABILITY_ID_PULL_STRINGS 13
#define ABILITY_ID_SHOOT 14
#define ABILITY_ID_TAKE_A_PEEK 15
#define ABILITY_ID_FLIP_OVER 16
#define ABILITY_ID_SONIC_BOOM 17
#define ABILITY_ID_WIND_SHOT 17
#endif // __ABILITY_ID_H__

View File

@ -4,47 +4,45 @@
#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"
typedef struct { typedef struct {
// Possible data still undiscovered: // Possible data still undiscovered:
// - Alignment // - Alignment
// - Held items (four u16's) // - Held items (four u16's)
/* 0x00 */ s8 name[0x10]; /* 0x00 */ s8 name[0x10];
/* 0x10 */ u8 field_0x10; /* 0x10 */ u8 field_0x10;
/* 0x11 */ u8 portrait; /* 0x11 */ u8 portrait;
/* 0x12 */ ClassId class; /* 0x12 */ u8 class;
/* 0x13 */ u8 level; /* 0x13 */ u8 level;
/* 0x14 */ Gender gender; /* 0x14 */ u8 gender;
/* 0x15 */ u8 field_0x15; /* 0x15 */ u8 field_0x15;
/* 0x16 */ u16 max_hp; /* 0x16 */ u16 max_hp;
/* 0x18 */ u16 cur_hp; /* 0x18 */ u16 cur_hp;
/* 0x1A */ Element element; /* 0x1A */ Element element;
/* 0x1B */ u8 field_0x1b; /* 0x1B */ u8 field_0x1b;
/* 0x1C */ u16 strength;
/* 0x1E */ u16 vitality;
/* 0x20 */ u16 intelligence;
/* 0x22 */ u16 mentality;
/* 0x24 */ u16 agility;
// DEX affects melee and special attacks, as well as accuracy.
/* 0x26 */ u16 dexterity;
/* 0x1C */ u16 strength; /* 0x28 */ u8 field_0x28;
/* 0x1E */ u16 vitality; /* 0x29 */ u8 field_0x29;
/* 0x20 */ u16 intelligence; /* 0x2a */ u16 item_upper_left;
/* 0x22 */ u16 mentality; /* 0x2c */ u16 item_upper_right;
/* 0x24 */ u16 agility; /* 0x2e */ u16 item_lower_left;
// DEX affects melee and special attacks, as well as accuracy. /* 0x30 */ u16 item_lower_right;
/* 0x26 */ u16 dexterity; /* 0x32 */ u8 field_0x32;
/* 0x33 */ s8 field_0x33;
/* 0x28 */ u8 field_0x28; /* 0x34 */ u8 field_0x34;
/* 0x29 */ u8 field_0x29; /* 0x35 */ u8 field_0x35;
/* 0x2a */ u16 item_upper_left; /* 0x36 */ u8 field_0x36;
/* 0x2c */ u16 item_upper_right; /* 0x37 */ u8 field_0x37;
/* 0x2e */ u16 item_lower_left;
/* 0x30 */ u16 item_lower_right;
/* 0x32 */ u8 field_0x32;
/* 0x33 */ s8 field_0x33;
/* 0x34 */ u8 field_0x34;
/* 0x35 */ u8 field_0x35;
/* 0x36 */ u8 field_0x36;
/* 0x37 */ u8 field_0x37;
} CharacterSlot; // size:0x38 } CharacterSlot; // size:0x38
ASSERT_SIZE(CharacterSlot, 0x38); ASSERT_SIZE(CharacterSlot, 0x38);

View File

@ -4,109 +4,107 @@
#include <ultra64.h> #include <ultra64.h>
#include "assert.h" #include "assert.h"
#include "class_id.h" #include "equipment.h"
#include "equipment_id.h"
#include "gender.h"
typedef struct { typedef struct {
/* 0x00 */ char *name; /* 0x00 */ char* name;
/* 0x04 */ u8 field_0x4; /* 0x04 */ u8 field_0x4;
/* 0x05 */ Gender gender; /* 0x05 */ u8 gender;
/* 0x06 */ u8 leadership_rank; /* 0x06 */ u8 leadership_rank;
/* 0x07 */ u8 field_0x7; /* 0x07 */ u8 field_0x7;
/* 0x08 */ u16 max_hp; /* 0x08 */ u16 max_hp;
/* 0x0a */ u8 field_0xa; /* 0x0a */ u8 field_0xa;
/* 0x0b */ u8 field_0xb; /* 0x0b */ u8 field_0xb;
/* 0x0c */ u16 strength; /* 0x0c */ u16 strength;
/* 0x0e */ u8 field_0xe; /* 0x0e */ u8 field_0xe;
/* 0x0f */ u8 field_0xf; /* 0x0f */ u8 field_0xf;
/* 0x10 */ u16 vitality; /* 0x10 */ u16 vitality;
/* 0x12 */ u8 field_0x12; /* 0x12 */ u8 field_0x12;
/* 0x13 */ u8 field_0x13; /* 0x13 */ u8 field_0x13;
/* 0x14 */ u16 intelligence; /* 0x14 */ u16 intelligence;
/* 0x16 */ u8 field_0x16; /* 0x16 */ u8 field_0x16;
/* 0x17 */ u8 field_0x17; /* 0x17 */ u8 field_0x17;
/* 0x18 */ u16 mentality; /* 0x18 */ u16 mentality;
/* 0x1a */ u8 field_0x1a; /* 0x1a */ u8 field_0x1a;
/* 0x1b */ u8 field_0x1b; /* 0x1b */ u8 field_0x1b;
/* 0x1c */ u16 agility; /* 0x1c */ u16 agility;
/* 0x1e */ u8 field_0x1e; /* 0x1e */ u8 field_0x1e;
/* 0x1f */ u8 field_0x1f; /* 0x1f */ u8 field_0x1f;
/* 0x20 */ u16 dexterity; /* 0x20 */ u16 dexterity;
/* 0x22 */ u8 field_0x22; /* 0x22 */ u8 field_0x22;
/* 0x23 */ u8 field_0x23; /* 0x23 */ u8 field_0x23;
/* 0x24 */ u8 field_0x24;
/* 0x25 */ u8 field_0x25;
/* 0x26 */ u8 field_0x26;
/* 0x27 */ u8 field_0x27;
/* 0x28 */ u8 field_0x28;
/* 0x29 */ u8 field_0x29;
/* 0x2a */ u8 field_0x2a;
/* 0x2b */ u8 field_0x2b;
/* 0x2c */ u8 field_0x2c;
/* 0x2d */ u8 field_0x2d;
/* 0x24 */ u8 field_0x24; /* 0x2e */ u16 item_upper_left;
/* 0x25 */ u8 field_0x25; /* 0x30 */ u16 item_upper_right;
/* 0x26 */ u8 field_0x26; /* 0x32 */ u16 item_lower_left;
/* 0x27 */ u8 field_0x27; /* 0x34 */ u16 item_lower_right;
/* 0x28 */ u8 field_0x28;
/* 0x29 */ u8 field_0x29;
/* 0x2a */ u8 field_0x2a;
/* 0x2b */ u8 field_0x2b;
/* 0x2c */ u8 field_0x2c;
/* 0x2d */ u8 field_0x2d;
/* 0x2e */ u16 item_upper_left; /* 0x36 */ u8 field_0x36;
/* 0x30 */ u16 item_upper_right;
/* 0x32 */ u16 item_lower_left;
/* 0x34 */ u16 item_lower_right;
/* 0x36 */ u8 field_0x36; // The ability which is used when the unit is placed in the front row.
/* 0x37 */ u8 ability_front;
// The amount of hits the unit performs when placed in the front row.
/* 0x38 */ u8 ability_front_hitcount;
// The ability which is used when the unit is placed in the middle row.
/* 0x39 */ u8 ability_middle;
// The amount of hits the unit performs when placed in the middle row.
/* 0x3a */ u8 ability_middle_hitcount;
// The ability which is used when the unit is placed in the back row.
/* 0x3b */ u8 ability_back;
// The amount of hits the unit performs when placed in the back row.
/* 0x3c */ u8 ability_back_hitcount;
// The ability which is used when the unit is placed in the front row. /* 0x3d */ u8 field_0x3d;
/* 0x37 */ u8 ability_front; /* 0x3e */ u8 field_0x3e;
// The amount of hits the unit performs when placed in the front row. /* 0x3f */ u8 field_0x3f;
/* 0x38 */ u8 ability_front_hitcount;
// The ability which is used when the unit is placed in the middle row.
/* 0x39 */ u8 ability_middle;
// The amount of hits the unit performs when placed in the middle row.
/* 0x3a */ u8 ability_middle_hitcount;
// The ability which is used when the unit is placed in the back row.
/* 0x3b */ u8 ability_back;
// The amount of hits the unit performs when placed in the back row.
/* 0x3c */ u8 ability_back_hitcount;
/* 0x3d */ u8 field_0x3d; /* 0x40 */ u8 field_0x40;
/* 0x3e */ u8 field_0x3e; /* 0x41 */ u8 field_0x41;
/* 0x3f */ u8 field_0x3f; /* 0x42 */ u8 field_0x42;
/* 0x43 */ u8 field_0x43;
/* 0x40 */ u8 field_0x40; /* 0x44 */ u8 field_0x44;
/* 0x41 */ u8 field_0x41; /* 0x45 */ u8 field_0x45;
/* 0x42 */ u8 field_0x42; /* 0x46 */ u8 element;
/* 0x43 */ u8 field_0x43; /* 0x47 */ u8 max_items;
/* 0x44 */ u8 field_0x44;
/* 0x45 */ ClassId field_0x45;
/* 0x46 */ u8 element;
/* 0x47 */ u8 max_items;
} ClassData; // size:0x48 } ClassData; // size:0x48
ASSERT_SIZE(ClassData, 0x48); ASSERT_SIZE(ClassData, 0x48);
extern ClassData obClassData[]; extern ClassData obClassData[];
extern EquipmentId (*FP_CLASS_GET_ITEM_1[4])(u8, ClassId); extern EquipmentId (*FP_CLASS_GET_ITEM_1[4])(u8, u8);
u8 class_get_field_0x2c(u8 portrait, ClassId class); extern u8 class_get_field_0x2c(u8 portrait, u8 class);
u8 obClassGetAbilityFront(u8 portrait, ClassId class); extern u8 obClassGetAbilityFront(u8 portrait, u8 class);
u8 obClassGetAbilityFrontHits(u8 portrait, ClassId class); extern u8 obClassGetAbilityFrontHits(u8 portrait, u8 class);
u8 obClassGetAbilityMiddle(u8 portrait, ClassId class); extern u8 obClassGetAbilityMiddle(u8 portrait, u8 class);
u8 obClassGetAbilityMiddleHits(u8 portrait, ClassId class); extern u8 obClassGetAbilityMiddleHits(u8 portrait, u8 class);
u8 obClassGetAbilityBack(u8 portrait, ClassId class); extern u8 obClassGetAbilityBack(u8 portrait, u8 class);
u8 obClassGetAbilityBackHits(u8 portrait, ClassId class); extern u8 obClassGetAbilityBackHits(u8 portrait, u8 class);
u8 class_get_field_0x4(u8 portrait, ClassId class); extern u8 class_get_field_0x4(u8 portrait, u8 class);
u8 obClassGetGender(u8 portrait, ClassId class); extern u8 obClassGetGender(u8 portrait, u8 class);
u8 obClassGetLeadershipRank(u8 portrait, ClassId class); extern u8 obClassGetLeadershipRank(u8 portrait, u8 class);
u8 class_get_global_flag(u8 portrait, ClassId class); extern u8 class_get_global_flag(u8 portrait, u8 class);
EquipmentId obClassGetItemUpperLeft(u8 portrait, ClassId class); extern EquipmentId obClassGetItemUpperLeft(u8 portrait, u8 class);
EquipmentId obClassGetItemUpperRight(u8 portrait, ClassId class); extern EquipmentId obClassGetItemUpperRight(u8 portrait, u8 class);
EquipmentId obClassGetItemLowerLeft(u8 portrait, ClassId class); extern EquipmentId obClassGetItemLowerLeft(u8 portrait, u8 class);
EquipmentId obClassGetItemLowerRight(u8 portrait, ClassId class); extern EquipmentId obClassGetItemLowerRight(u8 portrait, u8 class);
char *obClassGetAbilityFrontName(u8 portrait, ClassId class); extern char* obClassGetAbilityFrontName(u8 portrait, u8 class);
char *obClassGetAbilityMiddleName(u8 portrait, ClassId class); extern char* obClassGetAbilityMiddleName(u8 portrait, u8 class);
char *obClassGetAbilityBackName(u8 portrait, ClassId class); extern char* obClassGetAbilityBackName(u8 portrait, u8 class);
char *obClassGetName(u8 portrait, ClassId class); extern char* obClassGetName(u8 portrait, u8 class);
#endif // __CLASS_H__ #endif // __CLASS_H__

View File

@ -1,20 +0,0 @@
#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

@ -139,7 +139,7 @@ extern OSPiHandle* CART_HANDLE;
extern OSMesgQueue MQ_800E7988; extern OSMesgQueue MQ_800E7988;
extern OSContPad obContData[MAXCONTROLLERS]; extern OSContPad __GLOBAL_CONTROLLER_DATA_COPY[MAXCONTROLLERS];
extern void (*SWAP_BUFFER_FUNC_800A9E8C)(void** buffers); extern void (*SWAP_BUFFER_FUNC_800A9E8C)(void** buffers);
@ -161,7 +161,7 @@ extern void __osViSwapBuffer_3(void** buffers);
extern void func_8008350C(); extern void func_8008350C();
extern void obSetViMode(s32); extern void __set_vi_mode(s32);
typedef struct { typedef struct {
/* 0x00 */ u32 vram_start; /* 0x00 */ u32 vram_start;
@ -300,7 +300,7 @@ extern void func_8017223C(s32);
extern void func_80172368(); extern void func_80172368();
extern void func_80172394(); extern void func_80172394();
extern void __resets_menu_timer(void); extern void __resets_menu_timer(void);
extern u16 __maybeBlockingRetraceFunc; extern u16 D_800C4C26;
extern u16 D_8018F1A2; extern u16 D_8018F1A2;
extern s32 D_8018FB34; extern s32 D_8018FB34;
@ -537,10 +537,12 @@ extern s8 D_800A8211;
extern s8 D_800A8212; extern s8 D_800A8212;
extern u8 D_800A8213; extern u8 D_800A8213;
u8 __get_compared_osTvType(); extern OSContPad __GLOBAL_CONTROLLER_DATA_COPY[4];
u8 __reset_compared_osTvType();
void func_8016CD50(u8 arg0); extern u8 __get_compared_osTvType();
void __inc_compared_osTvType(u8 arg0); extern u8 __reset_compared_osTvType();
extern void func_8016CD50(u8 arg0);
extern void __inc_compared_osTvType(u8 arg0);
extern s32 func_80173B60(s32); extern s32 func_80173B60(s32);
extern s32 D_800AF0B0; extern s32 D_800AF0B0;
@ -561,7 +563,4 @@ extern void obSetCurrentTime(u32 time);
extern u32 obGetCurrentTime(); extern u32 obGetCurrentTime();
extern f32 obGetCurrentTimeF(); extern f32 obGetCurrentTimeF();
extern void _some_camera_setup(float fovY, float aspect);
void obReadController(u16);
#endif #endif

View File

@ -6,8 +6,8 @@
#include "assert.h" #include "assert.h"
#include "element.h" #include "element.h"
#include "equipment_id.h"
#include "equipment_type.h" #include "equipment_type.h"
#include "equipment_id.h"
typedef struct { typedef struct {
/* 0x00 */ char *name; /* 0x00 */ char *name;
@ -45,46 +45,49 @@ ASSERT_SIZE(EquipmentData, 0x20);
extern EquipmentData obEquipmentData[]; extern EquipmentData obEquipmentData[];
extern s8 (*obEquipmentGetResistance[])(EquipmentId index); extern s8 (*obEquipmentGetResistance[])(EquipmentId index);
char *obEquipmentGetName(EquipmentId index); extern char *obEquipmentGetName(EquipmentId index);
EquipmentType obEquipmentGetType(EquipmentId index); extern EquipmentType obEquipmentGetType(EquipmentId index);
Element obEquipmentGetElement(EquipmentId index); extern Element obEquipmentGetElement(EquipmentId index);
u8 equipment_get_field_0x6(EquipmentId index); extern u8 equipment_get_field_0x6(EquipmentId index);
u16 obEquipmentGetBuyPrice(EquipmentId index); extern u16 obEquipmentGetBuyPrice(EquipmentId index);
s8 equipment_get_field_0x10(EquipmentId index); extern s8 equipment_get_field_0x10(EquipmentId index);
s8 obEquipmentGetStrength(EquipmentId index); extern s8 obEquipmentGetStrength(EquipmentId index);
s8 obEquipmentGetVitality(EquipmentId index); extern s8 obEquipmentGetVitality(EquipmentId index);
s8 obEquipmentGetIntelligence(EquipmentId index); extern s8 obEquipmentGetIntelligence(EquipmentId index);
s8 obEquipmentGetMentality(EquipmentId index); extern s8 obEquipmentGetMentality(EquipmentId index);
s8 obEquipmentGetAgility(EquipmentId index); extern s8 obEquipmentGetAgility(EquipmentId index);
s8 obEquipmentGetDexterity(EquipmentId index); extern s8 obEquipmentGetDexterity(EquipmentId index);
s8 obEquipmentGetResistanceStrike(EquipmentId index); extern s8 obEquipmentGetResistanceStrike(EquipmentId index);
s8 obEquipmentGetResistanceWind(EquipmentId index); extern s8 obEquipmentGetResistanceWind(EquipmentId index);
s8 obEquipmentGetResistanceFire(EquipmentId index); extern s8 obEquipmentGetResistanceFire(EquipmentId index);
s8 obEquipmentGetResistanceEarth(EquipmentId index); extern s8 obEquipmentGetResistanceEarth(EquipmentId index);
s8 obEquipmentGetResistanceWater(EquipmentId index); extern s8 obEquipmentGetResistanceWater(EquipmentId index);
s8 obEquipmentGetResistanceVirtue(EquipmentId index); extern s8 obEquipmentGetResistanceVirtue(EquipmentId index);
s8 obEquipmentGetResistanceBane(EquipmentId index); extern s8 obEquipmentGetResistanceBane(EquipmentId index);
u8 equipment_get_field_0x18_b68(EquipmentId index); extern u8 equipment_get_field_0x18_b68(EquipmentId index);
u8 equipment_get_field_0x18_b46(EquipmentId index); extern u8 equipment_get_field_0x18_b46(EquipmentId index);
u8 equipment_get_field_0x18_b24(EquipmentId index); extern u8 equipment_get_field_0x18_b24(EquipmentId index);
u8 equipment_get_field_0x18_b12(EquipmentId index); extern u8 equipment_get_field_0x18_b12(EquipmentId index);
u8 equipment_get_field_0x19_b68(EquipmentId index); extern u8 equipment_get_field_0x19_b68(EquipmentId index);
u8 equipment_get_field_0x19_b46(EquipmentId index); extern u8 equipment_get_field_0x19_b46(EquipmentId index);
u8 equipment_get_field_0x19_b24(EquipmentId index); extern u8 equipment_get_field_0x19_b24(EquipmentId index);
u8 equipment_get_field_0x19_b12(EquipmentId index); extern u8 equipment_get_field_0x19_b12(EquipmentId index);
u8 equipment_get_field_0x1a_b7(EquipmentId index); extern u8 equipment_get_field_0x1a_b7(EquipmentId index);
u8 obEquipmentIsWeapon(EquipmentId index); extern u8 obEquipmentIsWeapon(EquipmentId index);
extern EquipmentId obEquipmentGetFirstWeapon(EquipmentId arg0, EquipmentId arg1, extern EquipmentId obEquipmentGetFirstWeapon(EquipmentId arg0,
EquipmentId arg2, EquipmentId arg1,
EquipmentId arg3); EquipmentId arg2,
EquipmentId obEquipmentGetFirstSpellbook(EquipmentId arg0, EquipmentId arg1, EquipmentId arg3);
EquipmentId arg2, EquipmentId arg3); extern EquipmentId obEquipmentGetFirstSpellbook(EquipmentId arg0,
EquipmentId arg1,
EquipmentId arg2,
EquipmentId arg3);
#endif #endif

View File

@ -6,20 +6,5 @@
typedef u16 EquipmentId; typedef u16 EquipmentId;
#define EQUIPMENT_ID_GALLANT_DOLL 132 #define EQUIPMENT_ID_GALLANT_DOLL 132
// ...
#define EQUIPMENT_ID_SPELLBOOK 243
#define EQUIPMENT_ID_BOOK_OF_WIND 244
#define EQUIPMENT_ID_BOOK_OF_FLAME 245
#define EQUIPMENT_ID_BOOK_OF_EARTH 246
#define EQUIPMENT_ID_BOOK_OF_WATER 247
#define EQUIPMENT_ID_BOOK_OF_BANE 248
#define EQUIPMENT_ID_TEMPEST 249
#define EQUIPMENT_ID_ANNIHILATION 250
#define EQUIPMENT_ID_METEOR_STRIKE 251
#define EQUIPMENT_ID_WHITE_MUTE 252
#define EQUIPMENT_ID_AMULET 253
#define EQUIPMENT_ID_RING_OF_ELOQUENCE 254
#define EQUIPMENT_ID_FIRECREST 255
#define EQUIPMENT_ID_BELL_OF_THUNDER 256
#endif // __EQUIPMENT_ID_H__ #endif // __EQUIPMENT_ID_H__

View File

@ -1,17 +0,0 @@
#ifndef __GENDER_H__
#define __GENDER_H__
#include <ultra64.h>
#include "assert.h"
typedef u8 Gender;
#define GENDER_MALE 0
#define GENDER_FEMALE 1
// The gender is based on the gender of the leader.
#define GENDER_LEADER 2
ASSERT_SIZE(Gender, 1);
#endif // __GENDER_H__

View File

@ -8,8 +8,3 @@
.global \label .global \label
\label: \label:
.endm .endm
.macro jlabel label
.global \label
\label:
.endm

View File

@ -1,16 +1,3 @@
__SOME_PERSPECTIVE_MATRIX = 0x800aedf0; // size:64
__SOME_PERSPECITVE_MATRIX_NORM_SCALE = 0x800aee70; // size:2
__SOME_LOOK_AT_MATRIX = 0x800aee30; // size:64
_some_camera_setup = 0x800733F8;
retraceFunc = 0x80072398;
__maybeBlockingRetraceFunc = 0x800c4c26; // size:2
_main_stop_all_audio = 0x800EA714;
obCurrentFrameBuf = 0x800c4bb8; // size:4
obFrameBuf = 0x800a8204; // size:12
obReadController = 0x8007284C;
nusched = 0x800E8B10; // size:0x680 nusched = 0x800E8B10; // size:0x680
nuScRetraceCounter = 0x800C4BCC; nuScRetraceCounter = 0x800C4BCC;
nuScPreNMIFlag = 0x800C4800; nuScPreNMIFlag = 0x800C4800;
@ -349,7 +336,7 @@ DISPLAY_LIST_801B3618 = 0x801B3618; // rom:0x100658
LIGHTS_801869A0 = 0x801869A0; // rom:0x5C8A0 size:40 LIGHTS_801869A0 = 0x801869A0; // rom:0x5C8A0 size:40
__SOMETHING_WITH_GFX = 0x800E9BE0; // size:4 __SOMETHING_WITH_GFX = 0x800E9BE0; // size:0x18
__MAYBE_DISPLAY_LIST = 0x801B8430; // rom:0x1EE930 __MAYBE_DISPLAY_LIST = 0x801B8430; // rom:0x1EE930
@ -783,8 +770,8 @@ STR_Unknown_method_skiped = 0x800AE284; // type:asciz
__log_fatal_error = 0x8007BBF4; __log_fatal_error = 0x8007BBF4;
__log_fatal_error_desc = 0x8007BBC0; __log_fatal_error_desc = 0x8007BBC0;
obSetViMode = 0x80072738; __set_vi_mode = 0x80072738;
gfxSwapCfbFunc = 0x8007307C; __calls_osViSwapBuffer_8007307C = 0x8007307C;
osAiSetFrequency = 0x8008C430; osAiSetFrequency = 0x8008C430;
osAiGetLength = 0x8008C410; osAiGetLength = 0x8008C410;
@ -1032,7 +1019,7 @@ __ROM_0_to_8000 = 0x800A83B8; // rom:0x387B8
romCopy_256 = 0x80074CF0; // rom:0x50F0 romCopy_256 = 0x80074CF0; // rom:0x50F0
obContData = 0x0800AEE78; // size:0x18 __GLOBAL_CONTROLLER_DATA_COPY = 0x0800AEE78; // size:0x18
__calls_copy_controller_data = 0x8007297C; __calls_copy_controller_data = 0x8007297C;

View File

@ -29,14 +29,6 @@ options:
# auto_all_sections: [".data", "rodata", ".bss"] # auto_all_sections: [".data", "rodata", ".bss"]
# libultra_symbols: True # libultra_symbols: True
# hardware_regs: True # hardware_regs: True
# This tells splat/spimdisasm to use one kind of label for functions (glabel) and a different one for data and jumptable labels
# This helps you to avoid marking some data as a function or viceversa
asm_function_macro: glabel
asm_data_macro: dlabel
asm_jtbl_label_macro: jlabel
asm_emit_size_directive: True
segments: segments:
- name: header - name: header
type: header type: header
@ -63,12 +55,8 @@ segments:
subsegments: subsegments:
- [0x1060, c, "main"] - [0x1060, c, "main"]
- [0x4AC0, c, "_ob_overconfident_mother"] - [0x4AC0, c, "_ob_overconfident_mother"]
# - [0x5FC0, c, "_ob_rabid_jar"] - [0x5FC0, c, "_ob_rabid_jar"]
- [0x5FC0, asm, "_ob_rabid_jar"]
- [0x68E0, asm]
- [0x8700, asm]
- [0xA370, asm]
# Needs string fixing # Needs string fixing
- [0xB0B0, asm, "_ob_creepy_middle"] - [0xB0B0, asm, "_ob_creepy_middle"]
@ -167,7 +155,7 @@ segments:
- [0x1BCC0, asm, "libultra/io/pimgr"] - [0x1BCC0, asm, "libultra/io/pimgr"]
- [0x1BE50, asm, "libultra/io/epirawdma"] - [0x1BE50, asm, "libultra/io/epirawdma"]
- [0x1C040, asm, "libultra/io/epidma"] - [0x1C040, asm, "libultra/io/epidma"]
- [0x1C0E0, c, "libultra/io/epilinkhandle"] - [0x1C0E0, asm, "libultra/io/epilinkhandle"]
- [0x1C130, asm, "libultra/io/cartrominit"] - [0x1C130, asm, "libultra/io/cartrominit"]
- [0x1C2B0, asm, "libultra/io/devmgr"] - [0x1C2B0, asm, "libultra/io/devmgr"]
- [0x1C670, asm, "libultra/io/piacs"] - [0x1C670, asm, "libultra/io/piacs"]
@ -347,12 +335,8 @@ segments:
- [0x3E100, data] - [0x3E100, data]
# - [0x3E330, .rodata, "_ob_rabid_jar"] - [0x3E330, .rodata, "_ob_rabid_jar"]
- [0x3E330, rodata] - [0x3E460, rodata]
# - [0x3E388, rodata]
# - [0x3E3A8, rodata]
# - [0x3E438, rodata]
# - [0x3E460, rodata]
- [0x3E4A0, rodata, "_ob_creepy_middle"] - [0x3E4A0, rodata, "_ob_creepy_middle"]
- [0x3E7A0, .rodata, "_ob_spooky_degree"] - [0x3E7A0, .rodata, "_ob_spooky_degree"]
- [0x3E7C0, .rodata, "_ob_ambitious_fold"] - [0x3E7C0, .rodata, "_ob_ambitious_fold"]
@ -360,7 +344,7 @@ segments:
- [0x3E7F0, .rodata, "_ob_soft_coach"] - [0x3E7F0, .rodata, "_ob_soft_coach"]
- [0x3E800, .rodata, "_ob_slippery_expansion"] - [0x3E800, .rodata, "_ob_slippery_expansion"]
- [0x3E810, rodata, "libmus/player"] - [0x3E810, rodata, "libmus/player"]
- [0x3E8F0, rodata] # - [0x3E8F0, rodata]
- [0x3E900, rodata, "16100"] - [0x3E900, rodata, "16100"]
- [0x3E930, rodata, "161A0"] - [0x3E930, rodata, "161A0"]
- [0x3E9A0, rodata, "177B0"] - [0x3E9A0, rodata, "177B0"]
@ -379,7 +363,6 @@ segments:
- [0x3EE20, rodata, "libultra/os/exceptasm"] - [0x3EE20, rodata, "libultra/os/exceptasm"]
- [0x3EE70, rodata, "libultra/gu/libm_vals"] - [0x3EE70, rodata, "libultra/gu/libm_vals"]
- [0x3EE80, rodata, "libc/xprintf"] - [0x3EE80, rodata, "libc/xprintf"]
- [0x3EEA0, rodata]
- [0x3F000, rodata, "libc/xlitob"] - [0x3F000, rodata, "libc/xlitob"]
- [0x3F070, rodata, "2CDA0"] - [0x3F070, rodata, "2CDA0"]
- [0x3F0C0, rodata, "2CEF0"] - [0x3F0C0, rodata, "2CEF0"]
@ -391,7 +374,6 @@ segments:
- { start: 0x3F1B0, type: bss, vram: 0x800AEDB0 } - { start: 0x3F1B0, type: bss, vram: 0x800AEDB0 }
# - [0x3F1B0, bin]
- type: code - type: code
name: segment_song name: segment_song
dir: segment_song dir: segment_song
@ -524,7 +506,7 @@ segments:
- [0x6E1B0, data, "gfx/_ob_quarrelsome_spot"] - [0x6E1B0, data, "gfx/_ob_quarrelsome_spot"]
- [0x6E250, data] - [0x6E250, data]
- [0x6E520, rodata, "overlay_69900/ob_ancient_ball"] - [0x6E520, rodata]
- [0x6E610, rodata] - [0x6E610, rodata]
- { start: 0x6E660, type: bss, vram: 0x8019C8D0 } - { start: 0x6E660, type: bss, vram: 0x8019C8D0 }
@ -763,16 +745,16 @@ segments:
symbol_name_format: overlay_14EBE0_$VRAM_$ROM symbol_name_format: overlay_14EBE0_$VRAM_$ROM
exclusive_ram_id: test_overlapping exclusive_ram_id: test_overlapping
subsegments: subsegments:
- [0x14EBE0, asm, "_ob_phobic_spot"] - [0x14EBE0, c, "_ob_phobic_spot"]
- [0x151F40, asm, "_ob_touted_bedroom"] - [0x151F40, c, "_ob_touted_bedroom"]
- [0x15DF10, asm, "_ob_daily_account"] - [0x15DF10, c, "_ob_daily_account"]
- [0x15DF70, asm, "_ob_gaudy_line"] - [0x15DF70, c, "_ob_gaudy_line"]
- [0x15E670, asm, "_ob_devilish_crayon"] - [0x15E670, c, "_ob_devilish_crayon"]
- [0x15FBF0, data] - [0x15FBF0, data]
- [0x165E50, rodata, "_ob_touted_bedroom"] - [0x165E50, .rodata, "_ob_touted_bedroom"]
- [0x165FB0, rodata, "_ob_devilish_crayon"] - [0x165FB0, .rodata, "_ob_devilish_crayon"]
- { start: 0x165FC0, type: bss, vram: 0x80214E50 } - { start: 0x165FC0, type: bss, vram: 0x80214E50 }
@ -1413,20 +1395,20 @@ segments:
symbol_name_format: overlay_286BD0_$VRAM_$ROM symbol_name_format: overlay_286BD0_$VRAM_$ROM
exclusive_ram_id: test_overlapping exclusive_ram_id: test_overlapping
subsegments: subsegments:
- [0x286BD0, asm, "_ob_pathetic_action"] - [0x286BD0, c, "_ob_pathetic_action"]
- [0x289780, asm, "_ob_childlike_cherry"] - [0x289780, c, "_ob_childlike_cherry"]
- [0x28A7B0, asm, "_ob_future_flesh"] - [0x28A7B0, c, "_ob_future_flesh"]
- [0x296CE0, asm, "_ob_painstaking_mouth"] - [0x296CE0, c, "_ob_painstaking_mouth"]
- [0x299D50, asm, "_ob_early_ghost"] - [0x299D50, c, "_ob_early_ghost"]
- [0x299D80, data, "data_299D80"] - [0x299D80, data, "data_299D80"]
- [0x29A070, rodata, "_ob_pathetic_action"] - [0x29A070, .rodata, "_ob_pathetic_action"]
- [0x29A0A0, rodata, "_ob_childlike_cherry"] - [0x29A0A0, .rodata, "_ob_childlike_cherry"]
- [0x29A0C0, rodata, "_ob_future_flesh"] - [0x29A0C0, .rodata, "_ob_future_flesh"]
# - [0x29A1A0, rodata, "_ob_future_flesh"] - [0x29A1A0, rodata]
- [0x29A2E0, rodata] - [0x29A2E0, rodata]
- [0x29A3B0, rodata, "_ob_painstaking_mouth"] - [0x29A3B0, .rodata, "_ob_painstaking_mouth"]
- { start: 0x29A4C0, type: bss, vram: 0x8023E580 } - { start: 0x29A4C0, type: bss, vram: 0x8023E580 }

View File

@ -8,7 +8,7 @@ OverlaySomething* func_801776C0(void) {
/* 4D5CC 801776CC */ /* 4D5CC 801776CC */
void func_801776CC(void) { void func_801776CC(void) {
func_80198080(-1); func_80198080(-1);
__maybeBlockingRetraceFunc = 0x800E; D_800C4C26 = 0x800E;
} }
/* 4D5F4 801776F4 */ /* 4D5F4 801776F4 */
@ -19,7 +19,7 @@ OverlaySomething* func_801776F4(void) {
/* 4D600 80177700 */ /* 4D600 80177700 */
void func_80177700(void) { void func_80177700(void) {
func_80198080(0x29); func_80198080(0x29);
__maybeBlockingRetraceFunc = 0x8014; D_800C4C26 = 0x8014;
} }
/* 4D628 80177728 */ /* 4D628 80177728 */
@ -66,16 +66,25 @@ void __calls_inc_menu_timer(void) {
func_80172394(); func_80172394();
func_8017223C(1); func_8017223C(1);
func_801707F4(); func_801707F4();
__maybeBlockingRetraceFunc = D_8018F1A2; D_800C4C26 = D_8018F1A2;
break; break;
case 2: case 2:
__maybeBlockingRetraceFunc = 0x8012; D_800C4C26 = 0x8012;
break; break;
case 3: case 3:
__maybeBlockingRetraceFunc = 0x17; D_800C4C26 = 0x17;
break; break;
case 4: case 4:
__maybeBlockingRetraceFunc = D_8018FB34 == 0 ? 0xB : 0xC; switch(D_8018FB34) {
case 0:
D_800C4C26 = 0xB;
break;
case 1:
D_800C4C26 = 0xC;
break;
}
D_8018FB34 = (D_8018FB34 + 1) % 2; D_8018FB34 = (D_8018FB34 + 1) % 2;
break; break;
} }

View File

@ -1,487 +1,487 @@
// #include "common.h" #include "common.h"
// #include "os_message.h" #include "os_message.h"
// typedef struct { typedef struct {
// s32 field_0x0; s32 field_0x0;
// u8 field_0x4[0xA0]; u8 field_0x4[0xA0];
// s32 field_0x8; s32 field_0x8;
// } SomethingMalloc; } SomethingMalloc;
// extern SomethingMalloc D_800E8300[]; extern SomethingMalloc D_800E8300[];
// extern s32* D_800C4804; extern s32* D_800C4804;
// extern s32 D_800C480A; extern s32 D_800C480A;
// extern s32 D_800C49D2; extern s32 D_800C49D2;
// extern s32* D_800C4AD4; extern s32* D_800C4AD4;
// extern s32* D_800C4B24; extern s32* D_800C4B24;
// extern s32 D_800C4B28; extern s32 D_800C4B28;
// extern s32* D_800C4BAC; extern s32* D_800C4BAC;
// extern s32 D_800C4BB0; extern s32 D_800C4BB0;
// extern s32 D_800C4BD0; extern s32 D_800C4BD0;
// extern s32* D_800C4BDC; extern s32* D_800C4BDC;
// extern s32* D_800C4BE0; extern s32* D_800C4BE0;
// extern s32* D_800C4BE8; extern s32* D_800C4BE8;
// extern s32* D_800C4C0C; extern s32* D_800C4C0C;
// extern s32* D_800C4C4C; extern s32* D_800C4C4C;
// extern s32 D_800E797C; extern s32 D_800E797C;
// extern s32 D_800E79BC; extern s32 D_800E79BC;
// extern s32* D_800E7A08; extern s32* D_800E7A08;
// extern s32 D_800E7A24; extern s32 D_800E7A24;
// extern s32* D_800E7D6C; extern s32* D_800E7D6C;
// extern s32 D_800E8100; extern s32 D_800E8100;
// extern s32* D_800E8108; extern s32* D_800E8108;
// extern s32* D_800E9BC0; extern s32* D_800E9BC0;
// extern s32 __CONTROLLER_0_BUTTON; extern s32 __CONTROLLER_0_BUTTON;
// extern s32 __MAIN_START_BUT_CHECK; extern s32 __MAIN_START_BUT_CHECK;
// extern u8 __SOMETHING_WITH_GFX; extern u8 __SOMETHING_WITH_GFX;
// extern u16 D_800C4C10[6]; extern u16 D_800C4C10[6];
// extern struct { extern struct {
// s16 field_0x0; s16 field_0x0;
// s8 field_0x2; s8 field_0x2;
// s8 field_0x3; s8 field_0x3;
// s8 field_0x4; s8 field_0x4;
// } D_800AF0A0; } D_800AF0A0;
// extern s32 D_800AF0B0; extern s32 D_800AF0B0;
// extern s16 D_800C49D0; extern s16 D_800C49D0;
// extern s32 D_800C4C20; extern s32 D_800C4C20;
// extern s32 D_800E79A0; extern s32 D_800E79A0;
// extern u8 D_800E82C8[0x3F0]; extern u8 D_800E82C8[0x3F0];
// extern s16 D_800AF0A6[4]; extern s16 D_800AF0A6[4];
// extern void* D_800AF090[4]; extern void* D_800AF090[4];
// extern void* D_800C47F0[4]; extern void* D_800C47F0[4];
// extern void func_8007819C(); extern void func_8007819C();
// extern s32 func_80173B60(s32); extern s32 func_80173B60(s32);
// extern OSMesgQueue obUnpackQueue; extern OSMesgQueue obUnpackQueue;
// void UnpackProc(void*); void UnpackProc(void*);
// INCLUDE_ASM(const s32, "_ob_rabid_jar", __calls_loads_overlay_array); INCLUDE_ASM(const s32, "_ob_rabid_jar", __calls_loads_overlay_array);
// INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076150); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076150);
// /* 6550 80076150 */ /* 6550 80076150 */
// // s8 func_80076150(u16 arg0) { // s8 func_80076150(u16 arg0) {
// // switch (arg0) { // switch (arg0) {
// // case 3: // case 3:
// // case 4: // case 4:
// // case 5: // case 5:
// // case 6: // case 6:
// // case 7: // case 7:
// // case 10: // case 10:
// // case 11: // case 11:
// // case 15: // case 15:
// // case 18: // case 18:
// // case 23: // case 23:
// // return 0; // return 0;
// // default: // default:
// // return 1; // return 1;
// // }
// // }
// /* 6588 80076188 */
// OverlaySomething* func_80076188(void) {
// return &D_800A872C;
// }
// /* 6594 80076194 */
// void func_80076194(void) {
// __maybeBlockingRetraceFunc = 0xFFFE;
// }
// /* 65A4 800761A4 */
// void func_800761A4(void) {
// func_80073164(0, 1, 1, 0x80, 1, 0x100, 0x2000);
// }
// INCLUDE_ASM(const s32, "_ob_rabid_jar", __loads_overlay_array);
// INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076324);
// INCLUDE_ASM(const s32, "_ob_rabid_jar", __get_overlay_index);
// /* 68E0 800764E0 */
// void func_800764E0(void) {
// u16 i;
// osGetTime();
// bzero(D_800E82C8, sizeof(D_800E82C8));
// bzero(D_800C4C10, sizeof(D_800C4C10));
// D_800C4C20 = 1;
// D_800E79A0 = 8;
// D_800C49D0 = 0;
// D_800AF0B0 = 0;
// D_800AF0A0.field_0x0 = 0;
// D_800AF0A0.field_0x3 = 0;
// D_800AF0A0.field_0x2 = 0;
// D_800AF0A0.field_0x4 = 0;
// for(i = 0; i < 4; i++) {
// D_800AF0A6[i] = 0;
// D_800AF090[i] = &D_800AF0A0;
// } // }
// obSetCurrentTime(osGetTime());
// D_800AF0B0 = func_80173B60(D_800AF0B0);
// func_8007819C();
// } // }
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800765D8); /* 6588 80076188 */
OverlaySomething* func_80076188(void) {
return &D_800A872C;
}
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076AE8); /* 6594 80076194 */
void func_80076194(void) {
D_800C4C26 = 0xFFFE;
}
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076DC8); /* 65A4 800761A4 */
void func_800761A4(void) {
func_80073164(0, 1, 1, 0x80, 1, 0x100, 0x2000);
}
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076E00); INCLUDE_ASM(const s32, "_ob_rabid_jar", __loads_overlay_array);
// // /* 722C 80076E2C */ INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076324);
// // void func_80076E2C(void) {
// // D_800AF0B0 = func_80173B60(D_800AF0B0);
// // }
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076E58); INCLUDE_ASM(const s32, "_ob_rabid_jar", __get_overlay_index);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076EAC); /* 68E0 800764E0 */
void func_800764E0(void) {
u16 i;
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076F00); osGetTime();
bzero(D_800E82C8, sizeof(D_800E82C8));
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076F5C); bzero(D_800C4C10, sizeof(D_800C4C10));
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007705C);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80077160);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80077200);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80077288);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80077314);
// // /* 7768 80077368 */
// // s32 UnusedMallocNo(s32 arg0) {
// // s32 var_a1;
// // SomethingMalloc** var_v1;
// // var_a1 = 0; D_800C4C20 = 1;
// // var_v1 = &D_800E8300[arg0]; D_800E79A0 = 8;
// // loop_1: D_800C49D0 = 0;
// // if (*var_v1 != 0) { D_800AF0B0 = 0;
// // var_a1 += 1; D_800AF0A0.field_0x0 = 0;
// // var_v1 += 1; D_800AF0A0.field_0x3 = 0;
// // if (var_a1 >= 10) { D_800AF0A0.field_0x2 = 0;
// // osSyncPrintf("UnusedMallocNo(): 空きがない!\n"); D_800AF0A0.field_0x4 = 0;
// // while(1);
// // }
// // goto loop_1;
// // }
// // return var_a1;
// // }
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800773D4);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007740C);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007745C);
// // /* 7894 80077494 */
// // void func_80077494(s32 arg0) {
// // if (arg0 == D_800C4C10[0]) {
// // D_800C4BE0 = D_800C47F0;
// // D_800E8108 = &__MAIN_START_BUT_CHECK;
// // D_800C4BDC = &D_800E8100;
// // D_800C4804 = &D_800C4BD0;
// // D_800C4C0C = &D_800E79BC;
// // D_800C4BE8 = &D_800C49D2;
// // D_800C4AD4 = &D_800E7A24;
// // D_800E9BC0 = &D_800E797C;
// // D_800E7A08 = &D_800C480A;
// // D_800C4BAC = &__SOMETHING_WITH_GFX + 4;
// // D_800C4B24 = &D_800C4B28;
// // D_800E7D6C = &D_800C4BB0;
// // D_800C4C4C = &__CONTROLLER_0_BUTTON;
// // } else {
// // D_800C4BE0 = D_800AF090;
// // D_800E8108 = &D_800AF0A6;
// // D_800C4BDC = &D_800AF0A6;
// // D_800C4804 = &D_800AF0A6;
// // D_800C4C0C = &D_800AF0A6;
// // D_800C4BE8 = &D_800AF0A6;
// // D_800C4AD4 = &D_800AF0A6;
// // D_800E9BC0 = &D_800AF0A6;
// // D_800E7A08 = &D_800AF0A6;
// // D_800C4BAC = &D_800AF0A6;
// // D_800C4B24 = &D_800AF0A6;
// // D_800E7D6C = &D_800AF0A6;
// // D_800C4C4C = &D_800AF0A6;
// // }
// // }
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800775EC);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80077BF8);
// // void func_80077F80(void) { }
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80077F88);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800780D4);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80078164);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007819C);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800782EC);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80078300);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007834C);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80078658);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80078674);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007896C);
// // // s32 func_8007338C(); /* extern */
// // // extern s32 D_800E8210;
// // // /* 8D6C 8007896C */
// // // void func_8007896C(s16 arg0, s16 arg1, s16 arg2, s16 arg3) {
// // // s16 ulx;
// // // s16 uly;
// // // s16 lrx;
// // // s16 lry;
// // // // s32 temp_a0;
// // //
// // // lry = arg0;
// // // lrx = arg1;
// // // ulx = arg2;
// // // uly = arg3;
// // // if (func_8007338C() != 0) {
// // // if (arg0 < 0) {
// // // lry = 0;
// // // } else if (arg0 >= 320) {
// // // lry = 319;
// // // }
// // // if (lrx < 0) {
// // // lrx = 0;
// // // } else if (lrx >= 320) {
// // // lrx = 319;
// // // }
// // // if (ulx < 0) {
// // // ulx = 0;
// // // } else if (ulx >= 320) {
// // // ulx = 319;
// // // }
// // // if (uly < 0) {
// // // uly = 0;
// // // } else if (uly >= 240) {
// // // uly = 239;
// // // }
// // //
// // // gDPPipeSync(obPtrDisplayList++);
// // //
// // // // obPtrDisplayList = temp_v0 + 8;
// // // // temp_v0->unk8 = 0xE200001C;
// // // // temp_v0->unkC = 0;
// // // gDPSetRenderMode(obPtrDisplayList++, G_RM_NOOP, G_RM_NOOP2);
// // //
// // // gDPPipeSync(obPtrDisplayList++);
// // // gDPPipeSync(obPtrDisplayList++);
// // // gDPPipeSync(obPtrDisplayList++);
// // //
// // // // obPtrDisplayList = temp_v0 + 0x28;
// // // // temp_v0->unk28 = 0xE3000A01;
// // // // temp_v0->unk2C = 0x00300000;
// // // gDPSetCycleType(obPtrDisplayList++, G_CYC_FILL);
// // //
// // // // obPtrDisplayList = temp_v0 + 0x30;
// // // // temp_v0->unk30 = 0xE7000000U;
// // // // temp_v0->unk34 = 0;
// // // gDPPipeSync(obPtrDisplayList++);
// // //
// // // // obPtrDisplayList = temp_v0 + 0x38;
// // // // temp_v0->unk38 = 0xFE000000;
// // // // temp_v0->unk3C = temp_a0;
// // // gDPSetDepthImage(obPtrDisplayList++, D_800C4B20 - 0x80000000);
// // //
// // // // obPtrDisplayList = temp_v0 + 0x40;
// // // // temp_v0->unk40 = 0xFF10013F;
// // // // temp_v0->unk44 = temp_a0;
// // // gDPSetColorImage(obPtrDisplayList++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, D_800C4B20 - 0x80000000);
// // //
// // // // obPtrDisplayList = temp_v0 + 0x48;
// // // // temp_v0->unk48 = 0xF7000000;
// // // // temp_v0->unk4C = 0xFFFCFFFC;
// // // gDPSetFillColor(obPtrDisplayList++, 0xFFFCFFFC);
// // //
// // // // obPtrDisplayList = temp_v0 + 0x50;
// // // // temp_v0->unk50 = 0xE7000000U;
// // // // temp_v0->unk54 = 0;
// // // gDPPipeSync(obPtrDisplayList++);
// // //
// // // // obPtrDisplayList = temp_v0 + 0x58;
// // // // temp_v0->unk58 = (s32) (((ulx & 0x3FF) << 0xE) | (((uly & 0x3FF) * 4) | 0xF6000000));
// // // // temp_v0->unk5C = (s32) (((lry & 0x3FF) << 0xE) | ((lrx & 0x3FF) * 4));
// // // gDPFillRectangle(obPtrDisplayList++, ulx, uly, lrx, lry);
// // //
// // // // obPtrDisplayList = temp_v0 + 0x60;
// // // // temp_v0->unk60 = 0xE7000000U;
// // // // temp_v0->unk64 = 0;
// // // gDPPipeSync(obPtrDisplayList++);
// // //
// // // // obPtrDisplayList = temp_v0 + 0x68;
// // // // temp_v0->unk68 = 0xE7000000U;
// // // // temp_v0->unk6C = 0;
// // // gDPPipeSync(obPtrDisplayList++);
// // //
// // // // obPtrDisplayList = temp_v0 + 0x70;
// // // // temp_v0->unk70 = 0xE7000000U;
// // // // temp_v0->unk74 = 0;
// // // gDPPipeSync(obPtrDisplayList++);
// // //
// // // // obPtrDisplayList = temp_v0 + 0x78;
// // // // temp_v0->unk78 = 0xE7000000U;
// // // // temp_v0->unk7C = 0;
// // // gDPPipeSync(obPtrDisplayList++);
// // //
// // // // obPtrDisplayList = temp_v0 + 0x80;
// // // // temp_v0->unk80 = 0xFF10013F;
// // // // temp_v0->unk84 = (s32) (D_800E8210 - 0x80000000);
// // // gDPSetColorImage(obPtrDisplayList++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, D_800E8210 - 0x80000000);
// // //
// // // // obPtrDisplayList = temp_v0 + 0x88;
// // // // temp_v0->unk88 = 0xE7000000U;
// // // // temp_v0->unk8C = 0;
// // // gDPPipeSync(obPtrDisplayList++);
// // //
// // // // obPtrDisplayList = temp_v0 + 0x90;
// // // // temp_v0->unk90 = 0xE7000000U;
// // // // temp_v0->unk94 = 0;
// // // gDPPipeSync(obPtrDisplayList++);
// // //
// // // // obPtrDisplayList = temp_v0 + 0x98;
// // // // temp_v0->unk98 = 0xE3000A01;
// // // // temp_v0->unk9C = 0;
// // // gDPSetCycleType(obPtrDisplayList++, G_CYC_1CYCLE);
// // //
// // // // obPtrDisplayList = temp_v0 + 0xA0;
// // // // temp_v0->unkA0 = 0xE7000000U;
// // // // temp_v0->unkA4 = 0;
// // // gDPPipeSync(obPtrDisplayList++);
// // //
// // // // obPtrDisplayList = temp_v0 + 0xA8;
// // // }
// // // }
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80078C6C);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079028);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007913C);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079358);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079380);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007938C);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079618);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079850);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800798AC);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079950);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079AFC);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079BD8);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079CB4);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079D60);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079D98);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079DF8);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079E50);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079E9C);
// // /* A29C 80079E9C */
// // // Arg_800712C4* func_80079E9C(Arg_800712C4* arg0) {
// // // Arg_800712C4* var_s0;
// // // var_s0 = arg0;
// // // if (var_s0 != NULL) {
// // // var_s0->field_0x10 = func_80079E9C(var_s0->field_0x10);
// // // var_s0->field_0x14 = func_80079E9C(var_s0->field_0x14);
// // // func_800712C4(var_s0->field_0x4);
// // // func_800712C4(var_s0);
// // // var_s0 = NULL;
// // // }
// // // return var_s0;
// // // }
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079EF4);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079F70);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007A070);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", Unpack);
// // /* ABE0 8007A7E0 */
// // u32 __read_u32_le(u8* arg0) {
// // return (arg0[0] << 24) | (arg0[1] << 16) | (arg0[2] << 8) | arg0[3];
// // }
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007A80C);
// // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007AB30);
// // /* AF7C 8007AB7C */
// // void obSendUnpackMesg(OBUnpackMesg* msg) {
// // msg->format = 1;
// // osSendMesg(&obUnpackQueue, msg, OS_MESG_BLOCK);
// // }
// // extern OSThread obThreadUnpackProc;
// // extern OBUnpackMesg obUnpackMesgBuf[8];
// // extern DECLARE_STACK(obStackUnpackProc, 0x80);
// // /* AFAC 8007ABAC */
// // void obUnpackThreadStart(OSId id, OSPri priority) {
// // osCreateMesgQueue(&obUnpackQueue, (OSMesg)&obUnpackMesgBuf, 8);
// // osCreateThread(&obThreadUnpackProc, id, UnpackProc, NULL, STACK_START(obStackUnpackProc), priority); for(i = 0; i < 4; i++) {
// // osStartThread(&obThreadUnpackProc); D_800AF0A6[i] = 0;
// // } D_800AF090[i] = &D_800AF0A0;
}
// // /* B030 8007AC30 */ obSetCurrentTime(osGetTime());
// // void UnpackProc(void* __unused) {
// // OBUnpackMesg *msg = NULL; D_800AF0B0 = func_80173B60(D_800AF0B0);
func_8007819C();
}
// // while(1) { INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800765D8);
// // osRecvMesg(&obUnpackQueue, (OSMesg)&msg, 1);
// // if (msg->format == 1) { INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076AE8);
// // Unpack(msg->buffer, msg->size);
// // osSendMesg(msg->queue, msg, OS_MESG_BLOCK); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076DC8);
// // } else {
// // osSyncPrintf("UnpackProc: no supported format %d\n", msg->format); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076E00);
// // }
// // } /* 722C 80076E2C */
// // } void func_80076E2C(void) {
D_800AF0B0 = func_80173B60(D_800AF0B0);
}
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076E58);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076EAC);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076F00);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076F5C);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007705C);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80077160);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80077200);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80077288);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80077314);
/* 7768 80077368 */
s32 UnusedMallocNo(s32 arg0) {
s32 var_a1;
SomethingMalloc** var_v1;
var_a1 = 0;
var_v1 = &D_800E8300[arg0];
loop_1:
if (*var_v1 != 0) {
var_a1 += 1;
var_v1 += 1;
if (var_a1 >= 10) {
osSyncPrintf("UnusedMallocNo(): 空きがない!\n");
while(1);
}
goto loop_1;
}
return var_a1;
}
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800773D4);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007740C);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007745C);
/* 7894 80077494 */
void func_80077494(s32 arg0) {
if (arg0 == D_800C4C10[0]) {
D_800C4BE0 = D_800C47F0;
D_800E8108 = &__MAIN_START_BUT_CHECK;
D_800C4BDC = &D_800E8100;
D_800C4804 = &D_800C4BD0;
D_800C4C0C = &D_800E79BC;
D_800C4BE8 = &D_800C49D2;
D_800C4AD4 = &D_800E7A24;
D_800E9BC0 = &D_800E797C;
D_800E7A08 = &D_800C480A;
D_800C4BAC = &__SOMETHING_WITH_GFX + 4;
D_800C4B24 = &D_800C4B28;
D_800E7D6C = &D_800C4BB0;
D_800C4C4C = &__CONTROLLER_0_BUTTON;
} else {
D_800C4BE0 = D_800AF090;
D_800E8108 = &D_800AF0A6;
D_800C4BDC = &D_800AF0A6;
D_800C4804 = &D_800AF0A6;
D_800C4C0C = &D_800AF0A6;
D_800C4BE8 = &D_800AF0A6;
D_800C4AD4 = &D_800AF0A6;
D_800E9BC0 = &D_800AF0A6;
D_800E7A08 = &D_800AF0A6;
D_800C4BAC = &D_800AF0A6;
D_800C4B24 = &D_800AF0A6;
D_800E7D6C = &D_800AF0A6;
D_800C4C4C = &D_800AF0A6;
}
}
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800775EC);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80077BF8);
void func_80077F80(void) { }
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80077F88);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800780D4);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80078164);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007819C);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800782EC);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80078300);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007834C);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80078658);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80078674);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007896C);
// s32 func_8007338C(); /* extern */
// extern s32 D_800E8210;
// /* 8D6C 8007896C */
// void func_8007896C(s16 arg0, s16 arg1, s16 arg2, s16 arg3) {
// s16 ulx;
// s16 uly;
// s16 lrx;
// s16 lry;
// // s32 temp_a0;
//
// lry = arg0;
// lrx = arg1;
// ulx = arg2;
// uly = arg3;
// if (func_8007338C() != 0) {
// if (arg0 < 0) {
// lry = 0;
// } else if (arg0 >= 320) {
// lry = 319;
// }
// if (lrx < 0) {
// lrx = 0;
// } else if (lrx >= 320) {
// lrx = 319;
// }
// if (ulx < 0) {
// ulx = 0;
// } else if (ulx >= 320) {
// ulx = 319;
// }
// if (uly < 0) {
// uly = 0;
// } else if (uly >= 240) {
// uly = 239;
// }
//
// gDPPipeSync(obPtrDisplayList++);
//
// // obPtrDisplayList = temp_v0 + 8;
// // temp_v0->unk8 = 0xE200001C;
// // temp_v0->unkC = 0;
// gDPSetRenderMode(obPtrDisplayList++, G_RM_NOOP, G_RM_NOOP2);
//
// gDPPipeSync(obPtrDisplayList++);
// gDPPipeSync(obPtrDisplayList++);
// gDPPipeSync(obPtrDisplayList++);
//
// // obPtrDisplayList = temp_v0 + 0x28;
// // temp_v0->unk28 = 0xE3000A01;
// // temp_v0->unk2C = 0x00300000;
// gDPSetCycleType(obPtrDisplayList++, G_CYC_FILL);
//
// // obPtrDisplayList = temp_v0 + 0x30;
// // temp_v0->unk30 = 0xE7000000U;
// // temp_v0->unk34 = 0;
// gDPPipeSync(obPtrDisplayList++);
//
// // obPtrDisplayList = temp_v0 + 0x38;
// // temp_v0->unk38 = 0xFE000000;
// // temp_v0->unk3C = temp_a0;
// gDPSetDepthImage(obPtrDisplayList++, D_800C4B20 - 0x80000000);
//
// // obPtrDisplayList = temp_v0 + 0x40;
// // temp_v0->unk40 = 0xFF10013F;
// // temp_v0->unk44 = temp_a0;
// gDPSetColorImage(obPtrDisplayList++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, D_800C4B20 - 0x80000000);
//
// // obPtrDisplayList = temp_v0 + 0x48;
// // temp_v0->unk48 = 0xF7000000;
// // temp_v0->unk4C = 0xFFFCFFFC;
// gDPSetFillColor(obPtrDisplayList++, 0xFFFCFFFC);
//
// // obPtrDisplayList = temp_v0 + 0x50;
// // temp_v0->unk50 = 0xE7000000U;
// // temp_v0->unk54 = 0;
// gDPPipeSync(obPtrDisplayList++);
//
// // obPtrDisplayList = temp_v0 + 0x58;
// // temp_v0->unk58 = (s32) (((ulx & 0x3FF) << 0xE) | (((uly & 0x3FF) * 4) | 0xF6000000));
// // temp_v0->unk5C = (s32) (((lry & 0x3FF) << 0xE) | ((lrx & 0x3FF) * 4));
// gDPFillRectangle(obPtrDisplayList++, ulx, uly, lrx, lry);
//
// // obPtrDisplayList = temp_v0 + 0x60;
// // temp_v0->unk60 = 0xE7000000U;
// // temp_v0->unk64 = 0;
// gDPPipeSync(obPtrDisplayList++);
//
// // obPtrDisplayList = temp_v0 + 0x68;
// // temp_v0->unk68 = 0xE7000000U;
// // temp_v0->unk6C = 0;
// gDPPipeSync(obPtrDisplayList++);
//
// // obPtrDisplayList = temp_v0 + 0x70;
// // temp_v0->unk70 = 0xE7000000U;
// // temp_v0->unk74 = 0;
// gDPPipeSync(obPtrDisplayList++);
//
// // obPtrDisplayList = temp_v0 + 0x78;
// // temp_v0->unk78 = 0xE7000000U;
// // temp_v0->unk7C = 0;
// gDPPipeSync(obPtrDisplayList++);
//
// // obPtrDisplayList = temp_v0 + 0x80;
// // temp_v0->unk80 = 0xFF10013F;
// // temp_v0->unk84 = (s32) (D_800E8210 - 0x80000000);
// gDPSetColorImage(obPtrDisplayList++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, D_800E8210 - 0x80000000);
//
// // obPtrDisplayList = temp_v0 + 0x88;
// // temp_v0->unk88 = 0xE7000000U;
// // temp_v0->unk8C = 0;
// gDPPipeSync(obPtrDisplayList++);
//
// // obPtrDisplayList = temp_v0 + 0x90;
// // temp_v0->unk90 = 0xE7000000U;
// // temp_v0->unk94 = 0;
// gDPPipeSync(obPtrDisplayList++);
//
// // obPtrDisplayList = temp_v0 + 0x98;
// // temp_v0->unk98 = 0xE3000A01;
// // temp_v0->unk9C = 0;
// gDPSetCycleType(obPtrDisplayList++, G_CYC_1CYCLE);
//
// // obPtrDisplayList = temp_v0 + 0xA0;
// // temp_v0->unkA0 = 0xE7000000U;
// // temp_v0->unkA4 = 0;
// gDPPipeSync(obPtrDisplayList++);
//
// // obPtrDisplayList = temp_v0 + 0xA8;
// }
// }
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80078C6C);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079028);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007913C);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079358);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079380);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007938C);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079618);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079850);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800798AC);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079950);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079AFC);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079BD8);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079CB4);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079D60);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079D98);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079DF8);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079E50);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079E9C);
/* A29C 80079E9C */
// Arg_800712C4* func_80079E9C(Arg_800712C4* arg0) {
// Arg_800712C4* var_s0;
// var_s0 = arg0;
// if (var_s0 != NULL) {
// var_s0->field_0x10 = func_80079E9C(var_s0->field_0x10);
// var_s0->field_0x14 = func_80079E9C(var_s0->field_0x14);
// func_800712C4(var_s0->field_0x4);
// func_800712C4(var_s0);
// var_s0 = NULL;
// }
// return var_s0;
// }
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079EF4);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079F70);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007A070);
INCLUDE_ASM(const s32, "_ob_rabid_jar", Unpack);
/* ABE0 8007A7E0 */
u32 __read_u32_le(u8* arg0) {
return (arg0[0] << 24) | (arg0[1] << 16) | (arg0[2] << 8) | arg0[3];
}
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007A80C);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007AB30);
/* AF7C 8007AB7C */
void obSendUnpackMesg(OBUnpackMesg* msg) {
msg->format = 1;
osSendMesg(&obUnpackQueue, msg, OS_MESG_BLOCK);
}
extern OSThread obThreadUnpackProc;
extern OBUnpackMesg obUnpackMesgBuf[8];
extern DECLARE_STACK(obStackUnpackProc, 0x80);
/* AFAC 8007ABAC */
void obUnpackThreadStart(OSId id, OSPri priority) {
osCreateMesgQueue(&obUnpackQueue, (OSMesg)&obUnpackMesgBuf, 8);
osCreateThread(&obThreadUnpackProc, id, UnpackProc, NULL, STACK_START(obStackUnpackProc), priority);
osStartThread(&obThreadUnpackProc);
}
/* B030 8007AC30 */
void UnpackProc(void* __unused) {
OBUnpackMesg *msg = NULL;
while(1) {
osRecvMesg(&obUnpackQueue, (OSMesg)&msg, 1);
if (msg->format == 1) {
Unpack(msg->buffer, msg->size);
osSendMesg(msg->queue, msg, OS_MESG_BLOCK);
} else {
osSyncPrintf("UnpackProc: no supported format %d\n", msg->format);
}
}
}

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, ClassId class) = { u16 (*FP_CLASS_GET_ITEM_1[])(u8 portrait, u8 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

@ -215,10 +215,12 @@ u8* __SOME_OVERLAY_ID_ARRAY[] = {
D_800A86E4, D_800A86E4,
D_800A86EC, D_800A86EC,
D_800A86F0, D_800A86F0,
D_800A86F8, D_800A86F8
NULL
}; };
/* 38B28 800A8728 */
u32 D_800A8728 = NULL;
/* 38B2C 800A872C */ /* 38B2C 800A872C */
OverlaySomething D_800A872C = { OverlaySomething D_800A872C = {
.setup = func_800761A4, .setup = func_800761A4,

View File

@ -1,11 +0,0 @@
#include "common.h"
s32 osEPiLinkHandle(OSPiHandle *EPiHandle)
{
u32 saveMask = __osDisableInt();
EPiHandle->next = __osPiTable;
__osPiTable = EPiHandle;
__osRestoreInt(saveMask);
return 0;
}

View File

@ -17,7 +17,7 @@ typedef struct {
void __calls_copy_controller_data(); /* extern */ void __calls_copy_controller_data(); /* extern */
void __calls_loads_overlay_array(); /* extern */ void __calls_loads_overlay_array(); /* extern */
void gfxSwapCfbFunc(NUScTask*); /* extern */ void __calls_osViSwapBuffer_8007307C(void**); /* extern */
void __initialize_song_mem(); /* extern */ void __initialize_song_mem(); /* extern */
void __set_obPtrPtrDisplayList(Gfx**); /* extern */ void __set_obPtrPtrDisplayList(Gfx**); /* extern */
void func_80070C60(s32*, s32); /* extern */ void func_80070C60(s32*, s32); /* extern */
@ -33,7 +33,7 @@ void func_80079380(); /* extern */
void func_8008A040(); /* extern */ void func_8008A040(); /* extern */
void func_8009DAEC(); /* extern */ void func_8009DAEC(); /* extern */
void func_800E9CEC(); /* extern */ void func_800E9CEC(); /* extern */
void _main_stop_all_audio(); /* extern */ void func_800EA714(); /* extern */
void func_800EA8E0(); /* extern */ void func_800EA8E0(); /* extern */
void func_8016C900(); /* extern */ void func_8016C900(); /* extern */
void func_80179060(); /* extern */ void func_80179060(); /* extern */
@ -41,7 +41,7 @@ void func_8017BDC0(); /* extern */
void func_80184D70(); /* extern */ void func_80184D70(); /* extern */
extern s32 D_800A81F4; extern s32 D_800A81F4;
extern s32 obFrameBuf; extern s32 D_800A8204;
extern Unknown1 D_800ABD80; extern Unknown1 D_800ABD80;
extern Unknown1 D_800E9C08; extern Unknown1 D_800E9C08;
extern u8 D_800AEF98; extern u8 D_800AEF98;
@ -65,7 +65,7 @@ extern s32 D_800A81F4;
extern s32 D_800A81F8; extern s32 D_800A81F8;
extern s8 D_800AEF9A; extern s8 D_800AEF9A;
extern u16* obCurrentFrameBuf; extern void* D_800C4BB8;
extern struct { extern struct {
// s32 field_0x0; // s32 field_0x0;
@ -77,6 +77,7 @@ extern struct {
extern u16 __MAIN_START_BUT_CHECK; extern u16 __MAIN_START_BUT_CHECK;
extern s16 __MAIN_START_BUT_STATE; extern s16 __MAIN_START_BUT_STATE;
extern void func_8007284C(u16);
extern void func_8016AF80(); extern void func_8016AF80();
extern void func_80197B70(); extern void func_80197B70();
extern void func_8007328C(); extern void func_8007328C();
@ -97,14 +98,7 @@ INCLUDE_ASM(const s32, "main", func_80070C60);
INCLUDE_ASM(const s32, "main", AddHeap); INCLUDE_ASM(const s32, "main", AddHeap);
extern u16 D_800AEDE0; INCLUDE_ASM(const s32, "main", func_80070F14);
void func_80070F14(void)
{
D_800AEDE0 = 1;
D_800AEDE2 = 3;
return;
}
INCLUDE_ASM(const s32, "main", __virtual_mem_alloc); INCLUDE_ASM(const s32, "main", __virtual_mem_alloc);
@ -151,7 +145,7 @@ INCLUDE_ASM(const s32, "main", func_80071E74);
INCLUDE_ASM(const s32, "main", obMain); INCLUDE_ASM(const s32, "main", obMain);
INCLUDE_ASM(const s32, "main", retraceFunc); INCLUDE_ASM(const s32, "main", func_80072398);
/* 2B10 80072710 */ /* 2B10 80072710 */
void func_80072710(void) { void func_80072710(void) {
@ -161,7 +155,7 @@ void func_80072710(void) {
} }
/* 2B38 80072738 */ /* 2B38 80072738 */
void obSetViMode(s32 arg0) { void __set_vi_mode(s32 arg0) {
switch (osTvType) { switch (osTvType) {
case OS_TV_NTSC: case OS_TV_NTSC:
switch (arg0) { switch (arg0) {
@ -216,10 +210,10 @@ loop_2:
var_t0 += 1; var_t0 += 1;
var_a2 += 0x10; var_a2 += 0x10;
} while (var_t0 < 4); } while (var_t0 < 4);
bzero(obContData, sizeof(obContData)); bzero(__GLOBAL_CONTROLLER_DATA_COPY, sizeof(__GLOBAL_CONTROLLER_DATA_COPY));
} }
void obReadController(u16 __unused) { void func_8007284C(u16 __unused) {
const u16 pattern_a = CONT_A | CONT_B | CONT_L | CONT_START; const u16 pattern_a = CONT_A | CONT_B | CONT_L | CONT_START;
const u16 pattern_b = CONT_A | CONT_B | CONT_G | CONT_START; const u16 pattern_b = CONT_A | CONT_B | CONT_G | CONT_START;
@ -270,11 +264,11 @@ s32 func_80072944(void) {
INCLUDE_ASM(const s32, "main", __calls_copy_controller_data); INCLUDE_ASM(const s32, "main", __calls_copy_controller_data);
/* 347C 8007307C */ /* 347C 8007307C */
void gfxSwapCfbFunc(NUScTask* task) void __calls_osViSwapBuffer_8007307C(void** buffers)
{ {
u8 prev; u8 prev;
obCurrentFrameBuf = task->framebuffer; D_800C4BB8 = buffers[3];
prev = __reset_compared_osTvType(); prev = __reset_compared_osTvType();
if (prev == OS_TV_TYPE_MPAL) if (prev == OS_TV_TYPE_MPAL)
@ -311,7 +305,7 @@ void gfxSwapCfbFunc(NUScTask* task)
if (prev != OS_TV_TYPE_PAL) if (prev != OS_TV_TYPE_PAL)
osViSetSpecialFeatures(OS_VI_DIVOT_ON | OS_VI_DITHER_FILTER_ON | OS_VI_GAMMA_OFF | OS_VI_GAMMA_DITHER_OFF); osViSetSpecialFeatures(OS_VI_DIVOT_ON | OS_VI_DITHER_FILTER_ON | OS_VI_GAMMA_OFF | OS_VI_GAMMA_DITHER_OFF);
osViSwapBuffer(task->framebuffer); osViSwapBuffer(buffers[3]);
} }
/* 3564 80073164 */ /* 3564 80073164 */
@ -391,7 +385,7 @@ void func_80073398(void) {
nuGfxZBuffer = 0; nuGfxZBuffer = 0;
} }
INCLUDE_ASM(const s32, "main", _some_camera_setup); INCLUDE_ASM(const s32, "main", func_800733F8);
/* 3BA0 800737A0 */ /* 3BA0 800737A0 */
void func_800737A0(void) { void func_800737A0(void) {

View File

@ -0,0 +1,3 @@
#include "common.h"
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_daily_account", func_overlay_14EBE0_8020CDA0_15DF10);

View File

@ -0,0 +1,29 @@
#include "common.h"
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_devilish_crayon", func_overlay_14EBE0_8020D500_15E670);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_devilish_crayon", func_overlay_14EBE0_8020D5E4_15E754);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_devilish_crayon", func_overlay_14EBE0_8020D780_15E8F0);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_devilish_crayon", func_overlay_14EBE0_8020DAA8_15EC18);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_devilish_crayon", func_overlay_14EBE0_8020DDD0_15EF40);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_devilish_crayon", func_overlay_14EBE0_8020E0F0_15F260);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_devilish_crayon", func_overlay_14EBE0_8020E394_15F504);
INCLUDE_RODATA(const s32, "overlay_14EBE0/_ob_devilish_crayon", D_overlay_14EBE0_80214E40_165FB0);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_devilish_crayon", func_overlay_14EBE0_8020E524_15F694);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_devilish_crayon", func_overlay_14EBE0_8020E6C8_15F838);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_devilish_crayon", func_overlay_14EBE0_8020E7F4_15F964);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_devilish_crayon", func_overlay_14EBE0_8020E9A4_15FB14);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_devilish_crayon", func_overlay_14EBE0_8020E9E0_15FB50);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_devilish_crayon", func_overlay_14EBE0_8020EA18_15FB88);

View File

@ -0,0 +1,13 @@
#include "common.h"
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_gaudy_line", func_overlay_14EBE0_8020CE00_15DF70);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_gaudy_line", func_overlay_14EBE0_8020CE0C_15DF7C);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_gaudy_line", func_overlay_14EBE0_8020CE8C_15DFFC);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_gaudy_line", func_overlay_14EBE0_8020CEBC_15E02C);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_gaudy_line", func_overlay_14EBE0_8020D210_15E380);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_gaudy_line", func_overlay_14EBE0_8020D328_15E498);

View File

@ -0,0 +1,21 @@
#include "common.h"
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_phobic_spot", func_overlay_14EBE0_801FDA70_14EBE0);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_phobic_spot", func_overlay_14EBE0_801FE190_14F300);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_phobic_spot", func_overlay_14EBE0_801FE28C_14F3FC);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_phobic_spot", func_overlay_14EBE0_801FF3E0_150550);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_phobic_spot", func_overlay_14EBE0_801FFEEC_15105C);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_phobic_spot", func_overlay_14EBE0_802001A8_151318);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_phobic_spot", func_overlay_14EBE0_802004C4_151634);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_phobic_spot", func_overlay_14EBE0_8020078C_1518FC);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_phobic_spot", func_overlay_14EBE0_80200A38_151BA8);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_phobic_spot", func_overlay_14EBE0_80200AC0_151C30);

View File

@ -0,0 +1,163 @@
#include "common.h"
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80200DD0_151F40);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80200F70_1520E0);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_8020122C_15239C);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_802012D8_152448);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80201384_1524F4);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_802014C8_152638);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_8020153C_1526AC);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_802017C0_152930);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80201A44_152BB4);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80201AFC_152C6C);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80201B68_152CD8);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80201C7C_152DEC);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80201D1C_152E8C);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80201D9C_152F0C);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80201E4C_152FBC);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80202140_1532B0);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80202434_1535A4);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80202728_153898);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_802027DC_15394C);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80202840_1539B0);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_802028A4_153A14);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80202928_153A98);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_8020296C_153ADC);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80202B70_153CE0);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80202E10_153F80);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80202F54_1540C4);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80203050_1541C0);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80203524_154694);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80203558_1546C8);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80203D9C_154F0C);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80203FA4_155114);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80204050_1551C0);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80204120_155290);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80204210_155380);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_8020439C_15550C);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80204B34_155CA4);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80204B58_155CC8);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80204B80_155CF0);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80204BA4_155D14);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80204BE8_155D58);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80204C3C_155DAC);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_8020521C_15638C);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80205D20_156E90);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80205DC8_156F38);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80205F2C_15709C);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80206340_1574B0);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80206C70_157DE0);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80206D78_157EE8);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80206DBC_157F2C);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80206DE4_157F54);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80206EB4_158024);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80207068_1581D8);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80207210_158380);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80207380_1584F0);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_8020746C_1585DC);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_8020753C_1586AC);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_8020766C_1587DC);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80207C94_158E04);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_8020808C_1591FC);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80208304_159474);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80208920_159A90);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80208A3C_159BAC);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80208ADC_159C4C);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80208BE4_159D54);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_80208E64_159FD4);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_8020C284_15D3F4);
INCLUDE_ASM(const s32, "overlay_14EBE0/_ob_touted_bedroom", func_overlay_14EBE0_8020C7F4_15D964);
INCLUDE_RODATA(const s32, "overlay_14EBE0/_ob_touted_bedroom", D_overlay_14EBE0_80214D10_165E80);
INCLUDE_RODATA(const s32, "overlay_14EBE0/_ob_touted_bedroom", D_overlay_14EBE0_80214D30_165EA0);
INCLUDE_RODATA(const s32, "overlay_14EBE0/_ob_touted_bedroom", D_overlay_14EBE0_80214D54_165EC4);
INCLUDE_RODATA(const s32, "overlay_14EBE0/_ob_touted_bedroom", D_overlay_14EBE0_80214D84_165EF4);
INCLUDE_RODATA(const s32, "overlay_14EBE0/_ob_touted_bedroom", D_overlay_14EBE0_80214D9C_165F0C);
INCLUDE_RODATA(const s32, "overlay_14EBE0/_ob_touted_bedroom", D_overlay_14EBE0_80214DB4_165F24);
INCLUDE_RODATA(const s32, "overlay_14EBE0/_ob_touted_bedroom", D_overlay_14EBE0_80214DC4_165F34);
INCLUDE_RODATA(const s32, "overlay_14EBE0/_ob_touted_bedroom", D_overlay_14EBE0_80214DD4_165F44);
INCLUDE_RODATA(const s32, "overlay_14EBE0/_ob_touted_bedroom", D_overlay_14EBE0_80214DE4_165F54);
INCLUDE_RODATA(const s32, "overlay_14EBE0/_ob_touted_bedroom", D_overlay_14EBE0_80214E0C_165F7C);
INCLUDE_RODATA(const s32, "overlay_14EBE0/_ob_touted_bedroom", D_overlay_14EBE0_80214E1C_165F8C);
INCLUDE_RODATA(const s32, "overlay_14EBE0/_ob_touted_bedroom", D_overlay_14EBE0_80214E24_165F94);
INCLUDE_RODATA(const s32, "overlay_14EBE0/_ob_touted_bedroom", D_overlay_14EBE0_80214E2C_165F9C);
INCLUDE_RODATA(const s32, "overlay_14EBE0/_ob_touted_bedroom", D_overlay_14EBE0_80214E34_165FA4);

View File

@ -0,0 +1,21 @@
#include "common.h"
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_childlike_cherry", func_overlay_286BD0_8022D840_289780);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_childlike_cherry", func_overlay_286BD0_8022DDC4_289D04);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_childlike_cherry", func_overlay_286BD0_8022DDE4_289D24);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_childlike_cherry", func_overlay_286BD0_8022DF48_289E88);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_childlike_cherry", func_overlay_286BD0_8022DF8C_289ECC);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_childlike_cherry", func_overlay_286BD0_8022E3D0_28A310);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_childlike_cherry", func_overlay_286BD0_8022E5F4_28A534);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_childlike_cherry", func_overlay_286BD0_8022E738_28A678);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_childlike_cherry", func_overlay_286BD0_8022E7A4_28A6E4);
INCLUDE_RODATA(const s32, "overlay_286BD0/_ob_childlike_cherry", D_overlay_286BD0_8023E178_29A0B8);

View File

@ -0,0 +1,3 @@
#include "common.h"
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_early_ghost", func_overlay_286BD0_8023DE10_299D50);

View File

@ -0,0 +1,179 @@
#include "common.h"
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022E870_28A7B0);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022E8D4_28A814);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022E90C_28A84C);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022E978_28A8B8);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022E984_28A8C4);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022EA9C_28A9DC);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022EB0C_28AA4C);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022EC34_28AB74);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022ECBC_28ABFC);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022ED48_28AC88);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022ED9C_28ACDC);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022EDEC_28AD2C);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022EEB4_28ADF4);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022F024_28AF64);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022F148_28B088);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022F1A0_28B0E0);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022F264_28B1A4);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022F2D8_28B218);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022F324_28B264);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022F408_28B348);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022F5C4_28B504);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022F848_28B788);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022F864_28B7A4);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022F998_28B8D8);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022FB60_28BAA0);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022FC54_28BB94);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022FCD4_28BC14);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8022FD78_28BCB8);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_802300A8_28BFE8);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_802300D4_28C014);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80230360_28C2A0);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80230ADC_28CA1C);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80231098_28CFD8);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_802311B0_28D0F0);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80231D58_28DC98);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80231EAC_28DDEC);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80231F04_28DE44);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_802320C0_28E000);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_802321FC_28E13C);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80232E20_28ED60);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8023324C_28F18C);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_802339D8_28F918);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80233DA8_28FCE8);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80233F38_28FE78);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80234078_28FFB8);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_802344D0_290410);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_802348A8_2907E8);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_802348B8_2907F8);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_802348D0_290810);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_802348E0_290820);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8023498C_2908CC);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80234B38_290A78);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80234D10_290C50);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80234DB8_290CF8);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80234E10_290D50);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8023519C_2910DC);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_802351C4_291104);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_802351F0_291130);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80235254_291194);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80235914_291854);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_802359B4_2918F4);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_802372C8_293208);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_802376B8_2935F8);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80237B7C_293ABC);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80238910_294850);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80238A00_294940);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80238C4C_294B8C);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80238D14_294C54);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80238EC4_294E04);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8023906C_294FAC);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_802390AC_294FEC);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80239160_2950A0);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80239394_2952D4);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_802394A0_2953E0);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80239570_2954B0);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80239634_295574);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_802396F0_295630);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_802397B8_2956F8);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80239B14_295A54);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80239C5C_295B9C);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80239E30_295D70);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_80239EE0_295E20);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8023A398_2962D8);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8023A42C_29636C);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8023A5D8_296518);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8023A814_296754);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8023AA70_2969B0);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8023AB74_296AB4);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_future_flesh", func_overlay_286BD0_8023AD10_296C50);

View File

@ -0,0 +1,63 @@
#include "common.h"
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023ADA0_296CE0);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023AE70_296DB0);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023B058_296F98);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023B0CC_29700C);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023B15C_29709C);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023B1EC_29712C);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023B274_2971B4);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023B45C_29739C);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023B5A8_2974E8);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023B704_297644);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023B85C_29779C);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023B9B4_2978F4);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023BB10_297A50);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023BBCC_297B0C);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023BC1C_297B5C);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023BD2C_297C6C);
INCLUDE_RODATA(const s32, "overlay_286BD0/_ob_painstaking_mouth", D_overlay_286BD0_8023E470_29A3B0);
INCLUDE_RODATA(const s32, "overlay_286BD0/_ob_painstaking_mouth", D_overlay_286BD0_8023E484_29A3C4);
INCLUDE_RODATA(const s32, "overlay_286BD0/_ob_painstaking_mouth", D_overlay_286BD0_8023E498_29A3D8);
INCLUDE_RODATA(const s32, "overlay_286BD0/_ob_painstaking_mouth", D_overlay_286BD0_8023E4AC_29A3EC);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023BD88_297CC8);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023C9D4_298914);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023CA08_298948);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023CC30_298B70);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023D2D8_299218);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023D3E4_299324);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023D480_2993C0);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023D4AC_2993EC);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023D800_299740);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023DB88_299AC8);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_painstaking_mouth", func_overlay_286BD0_8023DD68_299CA8);

View File

@ -0,0 +1,27 @@
#include "common.h"
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_pathetic_action", func_overlay_286BD0_8022AC90_286BD0);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_pathetic_action", func_overlay_286BD0_8022B5EC_28752C);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_pathetic_action", func_overlay_286BD0_8022B980_2878C0);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_pathetic_action", func_overlay_286BD0_8022B9B4_2878F4);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_pathetic_action", func_overlay_286BD0_8022BAB8_2879F8);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_pathetic_action", func_overlay_286BD0_8022BB0C_287A4C);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_pathetic_action", func_overlay_286BD0_8022BB64_287AA4);
INCLUDE_RODATA(const s32, "overlay_286BD0/_ob_pathetic_action", D_overlay_286BD0_8023E130_29A070);
INCLUDE_RODATA(const s32, "overlay_286BD0/_ob_pathetic_action", D_overlay_286BD0_8023E138_29A078);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_pathetic_action", func_overlay_286BD0_8022C078_287FB8);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_pathetic_action", func_overlay_286BD0_8022D4A4_2893E4);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_pathetic_action", func_overlay_286BD0_8022D5C4_289504);
INCLUDE_ASM(const s32, "overlay_286BD0/_ob_pathetic_action", func_overlay_286BD0_8022D618_289558);

View File

@ -86,6 +86,8 @@ INCLUDE_ASM(const s32, "overlay_87200/_ob_stiff_fact", func_overlay_87200_801E09
INCLUDE_ASM(const s32, "overlay_87200/_ob_stiff_fact", func_overlay_87200_801E1390_CDDF0); INCLUDE_ASM(const s32, "overlay_87200/_ob_stiff_fact", func_overlay_87200_801E1390_CDDF0);
INCLUDE_RODATA(const s32, "overlay_87200/_ob_stiff_fact", D_overlay_87200_801F0530_DCF90);
INCLUDE_ASM(const s32, "overlay_87200/_ob_stiff_fact", func_overlay_87200_801E2BCC_CF62C); INCLUDE_ASM(const s32, "overlay_87200/_ob_stiff_fact", func_overlay_87200_801E2BCC_CF62C);
INCLUDE_ASM(const s32, "overlay_87200/_ob_stiff_fact", func_overlay_87200_801E36F0_D0150); INCLUDE_ASM(const s32, "overlay_87200/_ob_stiff_fact", func_overlay_87200_801E36F0_D0150);

View File

@ -2,8 +2,6 @@
#include "class.h" #include "class.h"
#include "ability.h" #include "ability.h"
#include "gender.h"
#include "equipment.h"
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", func_8016D200); INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", func_8016D200);
@ -66,7 +64,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, ClassId class) { u8 class_get_field_0x2c(u8 portrait, u8 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 +72,7 @@ u8 class_get_field_0x2c(u8 portrait, ClassId class) {
} }
/* 43B2C 8016DC2C */ /* 43B2C 8016DC2C */
u8 obClassGetAbilityFront(u8 portrait, ClassId class) { u8 obClassGetAbilityFront(u8 portrait, u8 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 +80,7 @@ u8 obClassGetAbilityFront(u8 portrait, ClassId class) {
} }
/* 43B80 8016DC80 */ /* 43B80 8016DC80 */
u8 obClassGetAbilityFrontHits(u8 portrait, ClassId class) { u8 obClassGetAbilityFrontHits(u8 portrait, u8 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 +88,7 @@ u8 obClassGetAbilityFrontHits(u8 portrait, ClassId class) {
} }
/* 43BD4 8016DCD4 */ /* 43BD4 8016DCD4 */
u8 obClassGetAbilityMiddle(u8 portrait, ClassId class) { u8 obClassGetAbilityMiddle(u8 portrait, u8 class) {
s32 var_v0; s32 var_v0;
if (obClassData[portrait].field_0x45 != class) { if (obClassData[portrait].field_0x45 != class) {
@ -102,7 +100,7 @@ u8 obClassGetAbilityMiddle(u8 portrait, ClassId class) {
} }
/* 43C20 8016DD20 */ /* 43C20 8016DD20 */
u8 obClassGetAbilityMiddleHits(u8 portrait, ClassId class) { u8 obClassGetAbilityMiddleHits(u8 portrait, u8 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 +108,7 @@ u8 obClassGetAbilityMiddleHits(u8 portrait, ClassId class) {
} }
/* 43C74 8016DD74 */ /* 43C74 8016DD74 */
u8 obClassGetAbilityBack(u8 portrait, ClassId class) { u8 obClassGetAbilityBack(u8 portrait, u8 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 +116,7 @@ u8 obClassGetAbilityBack(u8 portrait, ClassId class) {
} }
/* 43CC8 8016DDC8 */ /* 43CC8 8016DDC8 */
u8 obClassGetAbilityBackHits(u8 portrait, ClassId class) { u8 obClassGetAbilityBackHits(u8 portrait, u8 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 +124,7 @@ u8 obClassGetAbilityBackHits(u8 portrait, ClassId class) {
} }
/* 43D1C 8016DE1C */ /* 43D1C 8016DE1C */
u8 class_get_field_0x4(u8 portrait, ClassId class) { u8 class_get_field_0x4(u8 portrait, u8 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 +132,7 @@ u8 class_get_field_0x4(u8 portrait, ClassId class) {
} }
/* 43D70 8016DE70 */ /* 43D70 8016DE70 */
Gender obClassGetGender(u8 portrait, ClassId class) { u8 obClassGetGender(u8 portrait, u8 class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].gender; return obClassData[portrait].gender;
@ -142,7 +140,7 @@ Gender obClassGetGender(u8 portrait, ClassId class) {
} }
/* 43DC4 8016DEC4 */ /* 43DC4 8016DEC4 */
u8 obClassGetLeadershipRank(u8 portrait, ClassId class) { u8 obClassGetLeadershipRank(u8 portrait, u8 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 +148,7 @@ u8 obClassGetLeadershipRank(u8 portrait, ClassId class) {
} }
/* 43E18 8016DF18 */ /* 43E18 8016DF18 */
u8 class_get_global_flag(u8 portrait, ClassId class) { u8 class_get_global_flag(u8 portrait, u8 class) {
u8 var_a1; u8 var_a1;
var_a1 = class; var_a1 = class;
@ -163,7 +161,7 @@ u8 class_get_global_flag(u8 portrait, ClassId class) {
} }
/* 43E88 8016DF88 */ /* 43E88 8016DF88 */
EquipmentId obClassGetItemUpperLeft(u8 portrait, ClassId class) { EquipmentId obClassGetItemUpperLeft(u8 portrait, u8 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 +169,7 @@ EquipmentId obClassGetItemUpperLeft(u8 portrait, ClassId class) {
} }
/* 43EDC 8016DFDC */ /* 43EDC 8016DFDC */
EquipmentId obClassGetItemUpperRight(u8 portrait, ClassId class) { EquipmentId obClassGetItemUpperRight(u8 portrait, u8 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 +177,7 @@ EquipmentId obClassGetItemUpperRight(u8 portrait, ClassId class) {
} }
/* 43F30 8016E030 */ /* 43F30 8016E030 */
EquipmentId obClassGetItemLowerLeft(u8 portrait, ClassId class) { EquipmentId obClassGetItemLowerLeft(u8 portrait, u8 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 +185,7 @@ EquipmentId obClassGetItemLowerLeft(u8 portrait, ClassId class) {
} }
/* 43F84 8016E084 */ /* 43F84 8016E084 */
EquipmentId obClassGetItemLowerRight(u8 portrait, ClassId class) { EquipmentId obClassGetItemLowerRight(u8 portrait, u8 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,20 +193,20 @@ EquipmentId obClassGetItemLowerRight(u8 portrait, ClassId class) {
} }
/* 43FD8 8016E0D8 */ /* 43FD8 8016E0D8 */
char* obClassGetAbilityFrontName(u8 portrait, ClassId class) { char* obClassGetAbilityFrontName(u8 portrait, u8 class) {
AbilityId ability; u8 var_v0;
if (obClassData[portrait].field_0x45 == class) { if (obClassData[portrait].field_0x45 == class) {
ability = obClassData[portrait].ability_front; var_v0 = obClassData[portrait].ability_front;
} else { } else {
ability = obClassData[class].ability_front; var_v0 = obClassData[class].ability_front;
} }
return obAbilityGetName(ability); return obAbilityGetName(var_v0);
} }
/* 44040 8016E140 */ /* 44040 8016E140 */
char* obClassGetAbilityMiddleName(u8 portrait, ClassId class) { char* obClassGetAbilityMiddleName(u8 portrait, u8 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,20 +215,20 @@ char* obClassGetAbilityMiddleName(u8 portrait, ClassId class) {
} }
/* 44074 8016E174 */ /* 44074 8016E174 */
char* obClassGetAbilityBackName(u8 portrait, ClassId class) { char* obClassGetAbilityBackName(u8 portrait, u8 class) {
AbilityId ability; u8 var_v0;
if (obClassData[portrait].field_0x45 == class) { if (obClassData[portrait].field_0x45 == class) {
ability = obClassData[portrait].ability_back; var_v0 = obClassData[portrait].ability_back;
} else { } else {
ability = obClassData[class].ability_back; var_v0 = obClassData[class].ability_back;
} }
return obAbilityGetName(ability); return obAbilityGetName(var_v0);
} }
/* 440DC 8016E1DC */ /* 440DC 8016E1DC */
char* obClassGetName(u8 portrait, ClassId class) { char* obClassGetName(u8 portrait, u8 class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].name; return obClassData[portrait].name;
@ -238,7 +236,7 @@ char* obClassGetName(u8 portrait, ClassId class) {
} }
/* 44130 8016E230 */ /* 44130 8016E230 */
u8 obClassGetAbility(u8 portrait, ClassId class, u8 row) u8 obClassGetAbility(u8 portrait, u8 class, u8 row)
{ {
if (obClassData[portrait].field_0x45 != class) if (obClassData[portrait].field_0x45 != class)
portrait = class; portrait = class;
@ -253,7 +251,7 @@ u8 obClassGetAbility(u8 portrait, ClassId class, u8 row)
} }
/* 44238 8016E338 */ /* 44238 8016E338 */
u8 obClassGetAbilityHits(u8 portrait, ClassId class, u8 row) { u8 obClassGetAbilityHits(u8 portrait, u8 class, u8 row) {
if (obClassData[portrait].field_0x45 != class) if (obClassData[portrait].field_0x45 != class)
portrait = class; portrait = class;
@ -267,17 +265,17 @@ u8 obClassGetAbilityHits(u8 portrait, ClassId class, u8 row) {
} }
/* 44340 8016E440 */ /* 44340 8016E440 */
char* obAbilityGetName(AbilityId index) { char* obAbilityGetName(u8 index) {
return obAbilityData[index].name; return obAbilityData[index].name;
} }
/* 44358 8016E458 */ /* 44358 8016E458 */
u8 ability_get_field_0x4(AbilityId index) { u8 ability_get_field_0x4(u8 index) {
return obAbilityData[index].field_0x4; return obAbilityData[index].field_0x4;
} }
/* 44370 8016E470 */ /* 44370 8016E470 */
Element obAbilityGetElement(AbilityId index, EquipmentId arg1, EquipmentId arg2, EquipmentId arg3, EquipmentId arg4) { Element obAbilityGetElement(u8 index, u16 arg1, u16 arg2, s32 arg3, u16 arg4) {
u16 item_index; u16 item_index;
if (obAbilityData[index].element != ELEMENT_INVALID && obAbilityData[index].element != 0xF) if (obAbilityData[index].element != ELEMENT_INVALID && obAbilityData[index].element != 0xF)
@ -298,7 +296,7 @@ Element obAbilityGetElement(AbilityId index, EquipmentId arg1, EquipmentId arg2,
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, ClassId class, u8 arg2) u8 func_8016EA34(u8 portrait, u8 class, u8 arg2)
{ {
if (obClassData[portrait].field_0x45 != class) if (obClassData[portrait].field_0x45 != class)
portrait = class; portrait = class;

View File

@ -109,7 +109,7 @@ void func_800EA6B0(SomethingMusic* arg0, s32 arg1, s32 arg2) {
INCLUDE_ASM(const s32, "segment_song/_ob_knotty_chess", func_800EA6C8); INCLUDE_ASM(const s32, "segment_song/_ob_knotty_chess", func_800EA6C8);
INCLUDE_ASM(const s32, "segment_song/_ob_knotty_chess", _main_stop_all_audio); INCLUDE_ASM(const s32, "segment_song/_ob_knotty_chess", func_800EA714);
INCLUDE_ASM(const s32, "segment_song/_ob_knotty_chess", func_800EA76C); INCLUDE_ASM(const s32, "segment_song/_ob_knotty_chess", func_800EA76C);

View File

@ -28,6 +28,6 @@ for i in range(1, MAX_ABILITIES):
print(f"{name} = 0x{name_vaddr:X}") print(f"{name} = 0x{name_vaddr:X}")
print(f"({i}):\t", (field_0x0, element, field_0x2, field_0x3, field_0x4, field_0x5, # print(f"({i}):\t", (field_0x0, field_0x2, field_0x3, field_0x4, field_0x5,
field_0x6, field_0x7, field_0x8, field_0x9, field_0xa, # field_0x6, field_0x7, field_0x8, field_0x9, field_0xa,
field_0xb)) # field_0xb))

View File

@ -4,7 +4,7 @@ from struct import unpack_from, calcsize
from typing import NamedTuple from typing import NamedTuple
import textwrap import textwrap
import equipment_data as item_data import item_data
NAME_VADDR_START = 0x8016AF80 NAME_VADDR_START = 0x8016AF80
NAME_ADDR_START = 0x40E80 NAME_ADDR_START = 0x40E80
@ -94,22 +94,18 @@ if __name__ == "__main__":
name_addr_diff = (class_data.name - NAME_VADDR_START) + NAME_ADDR_START name_addr_diff = (class_data.name - NAME_VADDR_START) + NAME_ADDR_START
name = read_rom(name_addr_diff, name_addr_diff + 32).split(b'\0', 1)[0] name = read_rom(name_addr_diff, name_addr_diff + 32).split(b'\0', 1)[0]
print(f"Class= {name} ({i})") print(f"Class= {name} ({i})\t")
# print(f"Gender={class_data.gender}") print(f"ItemUpperLeft= {item_data.item_get_name(item_data.item_read(class_data.item_upper_left).name)}")
# print(f"Leadership rank={class_data.leadership_rank}") print(f"ItemUpperRight= {item_data.item_get_name(item_data.item_read(class_data.item_upper_right).name)}")
print(f"ItemLowerLeft= {item_data.item_get_name(item_data.item_read(class_data.item_lower_left).name)}")
# print(f"Leadership rank={class_data.leadership_rank}") print(f"ItemLowerRight= {item_data.item_get_name(item_data.item_read(class_data.item_lower_right).name)}")
# print(f"ItemUpperLeft= {item_data.item_get_name(item_data.item_read(class_data.item_upper_left).name)}")
# print(f"ItemUpperRight= {item_data.item_get_name(item_data.item_read(class_data.item_upper_right).name)}")
# print(f"ItemLowerLeft= {item_data.item_get_name(item_data.item_read(class_data.item_lower_left).name)}")
# print(f"ItemLowerRight= {item_data.item_get_name(item_data.item_read(class_data.item_lower_right).name)}")
unidentified = [] unidentified = []
for val in class_data._fields: for val in class_data._fields:
unidentified.append(f"{val}: {getattr(class_data, val)}") if val.startswith("field_"):
unidentified.append(f"{val}: {getattr(class_data, val)}")
print("Fields: ") print("Unidentified fields: ")
print("\n".join(unidentified), end="") print("\n".join(unidentified), end="")
print() print()
print("-----------------------------------------") print("-----------------------------------------")