Compare commits

...

35 Commits

Author SHA1 Message Date
gijs 474036e160 I made a mess but it builds 2024-05-24 20:57:13 +02:00
gijs 4b9d844423 Simplify 2024-05-24 19:34:16 +02:00
gijs a11df12056 Remove extern modifiers as they are not longer extern 2024-05-24 19:31:18 +02:00
gijs e75d1d7cd4 Remove extern keyword from `obReadController` 2024-05-24 19:26:58 +02:00
gijs 1f7de872ba Decompile `func_80070F14` 2024-05-24 19:26:46 +02:00
gijs 967915e0cb Fixed some weird error 2024-05-24 18:53:43 +02:00
gijs 0ccf76e9b6 Change ability_data script and class_data script 2024-05-24 18:01:03 +02:00
gijs bde41d9e80 Rename `D_800C4C26` to `__maybeBlockingRetraceFunc` 2024-05-24 17:17:15 +02:00
gijs 1d1365f284 Rename `func_80072398` to `retraceFunc` 2024-05-24 17:14:24 +02:00
gijs 824ad34698 Rename `func_800733F8` to `_some_camera_setup` 2024-05-24 17:10:25 +02:00
gijs 5ef42ecd2f Add a couple matrices and rendering stuff 2024-05-24 17:05:13 +02:00
gijs 7a95f03b3c Rename `func_800EA7141` to `_main_stop_all_audio` 2024-05-24 16:56:11 +02:00
gijs e0018bb381 Rename `D_800C4BB8` to `obCurrentFrameBuf` 2024-05-24 15:07:28 +02:00
gijs 360850aae9 Rename `__set_vi_mode` to `obSetViMode` 2024-05-24 15:05:42 +02:00
gijs 0f39352a1d Change typing of `gfxSwapCfbFunc` to be correct 2024-05-24 15:05:06 +02:00
gijs 515ffe95f1 Rename `__GLOBAL_CONTROLLER_DATA_COPY` to `obContData` 2024-05-24 14:23:48 +02:00
gijs e7d904cd7b Rename `__calls_osViSwapBuffer_8007307C` to `gfxSwapCfbFunc` 2024-05-24 13:00:39 +02:00
gijs c1367225d7 rename `D_800A8204` to `obFrameBuf` 2024-05-24 12:58:56 +02:00
gijs 8e32f5e211 Add ability id's 2024-05-24 12:49:25 +02:00
gijs c23ca9b2f8 Add spellbook equipment id's 2024-05-24 12:43:29 +02:00
gijs 646242231b Fix parameters for `obAbilityGetElement` 2024-05-24 12:43:18 +02:00
gijs d21ac4263c Add some equipment id's 2024-05-24 12:30:47 +02:00
gijs 0cb5c60d6d Remove extern modifier from already decompiled functions 2024-05-24 11:51:19 +02:00
gijs 9fe0a8f5f4 Add ClassId 2024-05-24 11:51:08 +02:00
gijs c7690712d2 Remove extern modifier from functions that are decompiled 2024-05-24 11:38:53 +02:00
gijs da8a938a9d Fix definitions not found 2024-05-24 11:36:48 +02:00
gijs bb56111d1b Clean up clang warning 2024-05-24 11:34:33 +02:00
gijs b2cde2e634 Change enum to defines 2024-05-24 11:33:25 +02:00
gijs 9088c3c2b6 Add `Gender` enum 2024-05-24 11:22:32 +02:00
gijs d745065d67 Fix class_data script 2024-05-24 11:13:11 +02:00
gijs 56c27dd0fb Decompile `osEPiLinkHandle` 2024-05-23 22:32:56 +02:00
gijs 2062f09ac0 Identify `obReadController` 2024-05-23 22:23:22 +02:00
gijs 17bcb1984c Change `splat.yaml` to add jlabel macro 2024-05-23 22:12:17 +02:00
gijs 2a602f70e7 Move NULL into array 2024-05-23 20:58:50 +02:00
gijs c2877b905a Remove duplicate `__GLOBAL_CONTROLLER_DATA_COPY` definition 2023-11-24 13:18:04 +01:00
33 changed files with 883 additions and 1275 deletions

View File

@ -3,8 +3,10 @@
#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;
@ -26,9 +28,10 @@ ASSERT_SIZE(AbilityData, 0x10);
extern AbilityData obAbilityData[]; extern AbilityData obAbilityData[];
extern char *obAbilityGetName(u8 index); extern char *obAbilityGetName(AbilityId index);
extern u8 ability_get_field_0x4(u8 index); extern u8 ability_get_field_0x4(AbilityId index);
extern Element obAbilityGetElement(u8 index, u16 arg1, u16 arg2, s32 arg3, extern Element obAbilityGetElement(AbilityId index, EquipmentId arg1,
u16 arg4); EquipmentId arg2, EquipmentId arg3,
EquipmentId arg4);
#endif // __ABILITY_H__ #endif // __ABILITY_H__

27
include/ability_id.h Normal file
View File

@ -0,0 +1,27 @@
#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,7 +4,9 @@
#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:
@ -14,9 +16,9 @@ typedef struct {
/* 0x00 */ s8 name[0x10]; /* 0x00 */ s8 name[0x10];
/* 0x10 */ u8 field_0x10; /* 0x10 */ u8 field_0x10;
/* 0x11 */ u8 portrait; /* 0x11 */ u8 portrait;
/* 0x12 */ u8 class; /* 0x12 */ ClassId class;
/* 0x13 */ u8 level; /* 0x13 */ u8 level;
/* 0x14 */ u8 gender; /* 0x14 */ Gender 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;

View File

@ -4,12 +4,14 @@
#include <ultra64.h> #include <ultra64.h>
#include "assert.h" #include "assert.h"
#include "equipment.h" #include "class_id.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 */ u8 gender; /* 0x05 */ Gender gender;
/* 0x06 */ u8 leadership_rank; /* 0x06 */ u8 leadership_rank;
/* 0x07 */ u8 field_0x7; /* 0x07 */ u8 field_0x7;
@ -75,7 +77,7 @@ typedef struct {
/* 0x42 */ u8 field_0x42; /* 0x42 */ u8 field_0x42;
/* 0x43 */ u8 field_0x43; /* 0x43 */ u8 field_0x43;
/* 0x44 */ u8 field_0x44; /* 0x44 */ u8 field_0x44;
/* 0x45 */ u8 field_0x45; /* 0x45 */ ClassId field_0x45;
/* 0x46 */ u8 element; /* 0x46 */ u8 element;
/* 0x47 */ u8 max_items; /* 0x47 */ u8 max_items;
} ClassData; // size:0x48 } ClassData; // size:0x48
@ -83,28 +85,28 @@ typedef struct {
ASSERT_SIZE(ClassData, 0x48); ASSERT_SIZE(ClassData, 0x48);
extern ClassData obClassData[]; extern ClassData obClassData[];
extern EquipmentId (*FP_CLASS_GET_ITEM_1[4])(u8, u8); extern EquipmentId (*FP_CLASS_GET_ITEM_1[4])(u8, ClassId);
extern u8 class_get_field_0x2c(u8 portrait, u8 class); u8 class_get_field_0x2c(u8 portrait, ClassId class);
extern u8 obClassGetAbilityFront(u8 portrait, u8 class); u8 obClassGetAbilityFront(u8 portrait, ClassId class);
extern u8 obClassGetAbilityFrontHits(u8 portrait, u8 class); u8 obClassGetAbilityFrontHits(u8 portrait, ClassId class);
extern u8 obClassGetAbilityMiddle(u8 portrait, u8 class); u8 obClassGetAbilityMiddle(u8 portrait, ClassId class);
extern u8 obClassGetAbilityMiddleHits(u8 portrait, u8 class); u8 obClassGetAbilityMiddleHits(u8 portrait, ClassId class);
extern u8 obClassGetAbilityBack(u8 portrait, u8 class); u8 obClassGetAbilityBack(u8 portrait, ClassId class);
extern u8 obClassGetAbilityBackHits(u8 portrait, u8 class); u8 obClassGetAbilityBackHits(u8 portrait, ClassId class);
extern u8 class_get_field_0x4(u8 portrait, u8 class); u8 class_get_field_0x4(u8 portrait, ClassId class);
extern u8 obClassGetGender(u8 portrait, u8 class); u8 obClassGetGender(u8 portrait, ClassId class);
extern u8 obClassGetLeadershipRank(u8 portrait, u8 class); u8 obClassGetLeadershipRank(u8 portrait, ClassId class);
extern u8 class_get_global_flag(u8 portrait, u8 class); u8 class_get_global_flag(u8 portrait, ClassId class);
extern EquipmentId obClassGetItemUpperLeft(u8 portrait, u8 class); EquipmentId obClassGetItemUpperLeft(u8 portrait, ClassId class);
extern EquipmentId obClassGetItemUpperRight(u8 portrait, u8 class); EquipmentId obClassGetItemUpperRight(u8 portrait, ClassId class);
extern EquipmentId obClassGetItemLowerLeft(u8 portrait, u8 class); EquipmentId obClassGetItemLowerLeft(u8 portrait, ClassId class);
extern EquipmentId obClassGetItemLowerRight(u8 portrait, u8 class); EquipmentId obClassGetItemLowerRight(u8 portrait, ClassId class);
extern char* obClassGetAbilityFrontName(u8 portrait, u8 class); char *obClassGetAbilityFrontName(u8 portrait, ClassId class);
extern char* obClassGetAbilityMiddleName(u8 portrait, u8 class); char *obClassGetAbilityMiddleName(u8 portrait, ClassId class);
extern char* obClassGetAbilityBackName(u8 portrait, u8 class); char *obClassGetAbilityBackName(u8 portrait, ClassId class);
extern char* obClassGetName(u8 portrait, u8 class); char *obClassGetName(u8 portrait, ClassId class);
#endif // __CLASS_H__ #endif // __CLASS_H__

20
include/class_id.h Normal file
View File

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

View File

@ -139,7 +139,7 @@ extern OSPiHandle* CART_HANDLE;
extern OSMesgQueue MQ_800E7988; extern OSMesgQueue MQ_800E7988;
extern OSContPad __GLOBAL_CONTROLLER_DATA_COPY[MAXCONTROLLERS]; extern OSContPad obContData[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 __set_vi_mode(s32); extern void obSetViMode(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 D_800C4C26; extern u16 __maybeBlockingRetraceFunc;
extern u16 D_8018F1A2; extern u16 D_8018F1A2;
extern s32 D_8018FB34; extern s32 D_8018FB34;
@ -537,12 +537,10 @@ extern s8 D_800A8211;
extern s8 D_800A8212; extern s8 D_800A8212;
extern u8 D_800A8213; extern u8 D_800A8213;
extern OSContPad __GLOBAL_CONTROLLER_DATA_COPY[4]; u8 __get_compared_osTvType();
u8 __reset_compared_osTvType();
extern u8 __get_compared_osTvType(); void func_8016CD50(u8 arg0);
extern u8 __reset_compared_osTvType(); void __inc_compared_osTvType(u8 arg0);
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;
@ -563,4 +561,7 @@ 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_type.h"
#include "equipment_id.h" #include "equipment_id.h"
#include "equipment_type.h"
typedef struct { typedef struct {
/* 0x00 */ char *name; /* 0x00 */ char *name;
@ -45,49 +45,46 @@ ASSERT_SIZE(EquipmentData, 0x20);
extern EquipmentData obEquipmentData[]; extern EquipmentData obEquipmentData[];
extern s8 (*obEquipmentGetResistance[])(EquipmentId index); extern s8 (*obEquipmentGetResistance[])(EquipmentId index);
extern char *obEquipmentGetName(EquipmentId index); char *obEquipmentGetName(EquipmentId index);
extern EquipmentType obEquipmentGetType(EquipmentId index); EquipmentType obEquipmentGetType(EquipmentId index);
extern Element obEquipmentGetElement(EquipmentId index); Element obEquipmentGetElement(EquipmentId index);
extern u8 equipment_get_field_0x6(EquipmentId index); u8 equipment_get_field_0x6(EquipmentId index);
extern u16 obEquipmentGetBuyPrice(EquipmentId index); u16 obEquipmentGetBuyPrice(EquipmentId index);
extern s8 equipment_get_field_0x10(EquipmentId index); s8 equipment_get_field_0x10(EquipmentId index);
extern s8 obEquipmentGetStrength(EquipmentId index); s8 obEquipmentGetStrength(EquipmentId index);
extern s8 obEquipmentGetVitality(EquipmentId index); s8 obEquipmentGetVitality(EquipmentId index);
extern s8 obEquipmentGetIntelligence(EquipmentId index); s8 obEquipmentGetIntelligence(EquipmentId index);
extern s8 obEquipmentGetMentality(EquipmentId index); s8 obEquipmentGetMentality(EquipmentId index);
extern s8 obEquipmentGetAgility(EquipmentId index); s8 obEquipmentGetAgility(EquipmentId index);
extern s8 obEquipmentGetDexterity(EquipmentId index); s8 obEquipmentGetDexterity(EquipmentId index);
extern s8 obEquipmentGetResistanceStrike(EquipmentId index); s8 obEquipmentGetResistanceStrike(EquipmentId index);
extern s8 obEquipmentGetResistanceWind(EquipmentId index); s8 obEquipmentGetResistanceWind(EquipmentId index);
extern s8 obEquipmentGetResistanceFire(EquipmentId index); s8 obEquipmentGetResistanceFire(EquipmentId index);
extern s8 obEquipmentGetResistanceEarth(EquipmentId index); s8 obEquipmentGetResistanceEarth(EquipmentId index);
extern s8 obEquipmentGetResistanceWater(EquipmentId index); s8 obEquipmentGetResistanceWater(EquipmentId index);
extern s8 obEquipmentGetResistanceVirtue(EquipmentId index); s8 obEquipmentGetResistanceVirtue(EquipmentId index);
extern s8 obEquipmentGetResistanceBane(EquipmentId index); s8 obEquipmentGetResistanceBane(EquipmentId index);
extern u8 equipment_get_field_0x18_b68(EquipmentId index); u8 equipment_get_field_0x18_b68(EquipmentId index);
extern u8 equipment_get_field_0x18_b46(EquipmentId index); u8 equipment_get_field_0x18_b46(EquipmentId index);
extern u8 equipment_get_field_0x18_b24(EquipmentId index); u8 equipment_get_field_0x18_b24(EquipmentId index);
extern u8 equipment_get_field_0x18_b12(EquipmentId index); u8 equipment_get_field_0x18_b12(EquipmentId index);
extern u8 equipment_get_field_0x19_b68(EquipmentId index); u8 equipment_get_field_0x19_b68(EquipmentId index);
extern u8 equipment_get_field_0x19_b46(EquipmentId index); u8 equipment_get_field_0x19_b46(EquipmentId index);
extern u8 equipment_get_field_0x19_b24(EquipmentId index); u8 equipment_get_field_0x19_b24(EquipmentId index);
extern u8 equipment_get_field_0x19_b12(EquipmentId index); u8 equipment_get_field_0x19_b12(EquipmentId index);
extern u8 equipment_get_field_0x1a_b7(EquipmentId index); u8 equipment_get_field_0x1a_b7(EquipmentId index);
extern u8 obEquipmentIsWeapon(EquipmentId index); u8 obEquipmentIsWeapon(EquipmentId index);
extern EquipmentId obEquipmentGetFirstWeapon(EquipmentId arg0, extern EquipmentId obEquipmentGetFirstWeapon(EquipmentId arg0, EquipmentId arg1,
EquipmentId arg1,
EquipmentId arg2,
EquipmentId arg3);
extern EquipmentId obEquipmentGetFirstSpellbook(EquipmentId arg0,
EquipmentId arg1,
EquipmentId arg2, EquipmentId arg2,
EquipmentId arg3); EquipmentId arg3);
EquipmentId obEquipmentGetFirstSpellbook(EquipmentId arg0, EquipmentId arg1,
EquipmentId arg2, EquipmentId arg3);
#endif #endif

View File

@ -6,5 +6,20 @@
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__

17
include/gender.h Normal file
View File

@ -0,0 +1,17 @@
#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,3 +8,8 @@
.global \label .global \label
\label: \label:
.endm .endm
.macro jlabel label
.global \label
\label:
.endm

View File

@ -1,3 +1,16 @@
__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;
@ -336,7 +349,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:0x18 __SOMETHING_WITH_GFX = 0x800E9BE0; // size:4
__MAYBE_DISPLAY_LIST = 0x801B8430; // rom:0x1EE930 __MAYBE_DISPLAY_LIST = 0x801B8430; // rom:0x1EE930
@ -770,8 +783,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;
__set_vi_mode = 0x80072738; obSetViMode = 0x80072738;
__calls_osViSwapBuffer_8007307C = 0x8007307C; gfxSwapCfbFunc = 0x8007307C;
osAiSetFrequency = 0x8008C430; osAiSetFrequency = 0x8008C430;
osAiGetLength = 0x8008C410; osAiGetLength = 0x8008C410;
@ -1019,7 +1032,7 @@ __ROM_0_to_8000 = 0x800A83B8; // rom:0x387B8
romCopy_256 = 0x80074CF0; // rom:0x50F0 romCopy_256 = 0x80074CF0; // rom:0x50F0
__GLOBAL_CONTROLLER_DATA_COPY = 0x0800AEE78; // size:0x18 obContData = 0x0800AEE78; // size:0x18
__calls_copy_controller_data = 0x8007297C; __calls_copy_controller_data = 0x8007297C;

View File

@ -29,6 +29,14 @@ 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
@ -55,7 +63,11 @@ 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"]
@ -155,7 +167,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, asm, "libultra/io/epilinkhandle"] - [0x1C0E0, c, "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"]
@ -335,8 +347,12 @@ segments:
- [0x3E100, data] - [0x3E100, data]
- [0x3E330, .rodata, "_ob_rabid_jar"] # - [0x3E330, .rodata, "_ob_rabid_jar"]
- [0x3E460, rodata] - [0x3E330, 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"]
@ -344,7 +360,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"]
@ -363,6 +379,7 @@ 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"]
@ -374,6 +391,7 @@ 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
@ -506,7 +524,7 @@ segments:
- [0x6E1B0, data, "gfx/_ob_quarrelsome_spot"] - [0x6E1B0, data, "gfx/_ob_quarrelsome_spot"]
- [0x6E250, data] - [0x6E250, data]
- [0x6E520, rodata] - [0x6E520, rodata, "overlay_69900/ob_ancient_ball"]
- [0x6E610, rodata] - [0x6E610, rodata]
- { start: 0x6E660, type: bss, vram: 0x8019C8D0 } - { start: 0x6E660, type: bss, vram: 0x8019C8D0 }
@ -745,16 +763,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, c, "_ob_phobic_spot"] - [0x14EBE0, asm, "_ob_phobic_spot"]
- [0x151F40, c, "_ob_touted_bedroom"] - [0x151F40, asm, "_ob_touted_bedroom"]
- [0x15DF10, c, "_ob_daily_account"] - [0x15DF10, asm, "_ob_daily_account"]
- [0x15DF70, c, "_ob_gaudy_line"] - [0x15DF70, asm, "_ob_gaudy_line"]
- [0x15E670, c, "_ob_devilish_crayon"] - [0x15E670, asm, "_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 }
@ -1395,20 +1413,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, c, "_ob_pathetic_action"] - [0x286BD0, asm, "_ob_pathetic_action"]
- [0x289780, c, "_ob_childlike_cherry"] - [0x289780, asm, "_ob_childlike_cherry"]
- [0x28A7B0, c, "_ob_future_flesh"] - [0x28A7B0, asm, "_ob_future_flesh"]
- [0x296CE0, c, "_ob_painstaking_mouth"] - [0x296CE0, asm, "_ob_painstaking_mouth"]
- [0x299D50, c, "_ob_early_ghost"] - [0x299D50, asm, "_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] # - [0x29A1A0, rodata, "_ob_future_flesh"]
- [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);
D_800C4C26 = 0x800E; __maybeBlockingRetraceFunc = 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);
D_800C4C26 = 0x8014; __maybeBlockingRetraceFunc = 0x8014;
} }
/* 4D628 80177728 */ /* 4D628 80177728 */
@ -66,25 +66,16 @@ void __calls_inc_menu_timer(void) {
func_80172394(); func_80172394();
func_8017223C(1); func_8017223C(1);
func_801707F4(); func_801707F4();
D_800C4C26 = D_8018F1A2; __maybeBlockingRetraceFunc = D_8018F1A2;
break; break;
case 2: case 2:
D_800C4C26 = 0x8012; __maybeBlockingRetraceFunc = 0x8012;
break; break;
case 3: case 3:
D_800C4C26 = 0x17; __maybeBlockingRetraceFunc = 0x17;
break; break;
case 4: case 4:
switch(D_8018FB34) { __maybeBlockingRetraceFunc = D_8018FB34 == 0 ? 0xB : 0xC;
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;
// } // }
/* 6588 80076188 */ // /* 6594 80076194 */
OverlaySomething* func_80076188(void) { // void func_80076194(void) {
return &D_800A872C; // __maybeBlockingRetraceFunc = 0xFFFE;
}
/* 6594 80076194 */
void func_80076194(void) {
D_800C4C26 = 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);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076AE8);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076DC8);
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); // /* 65A4 800761A4 */
// void func_800761A4(void) {
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079028); // func_80073164(0, 1, 1, 0x80, 1, 0x100, 0x2000);
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", __loads_overlay_array);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079F70); // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076324);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007A070); // INCLUDE_ASM(const s32, "_ob_rabid_jar", __get_overlay_index);
INCLUDE_ASM(const s32, "_ob_rabid_jar", Unpack); // /* 68E0 800764E0 */
// void func_800764E0(void) {
// u16 i;
/* ABE0 8007A7E0 */ // osGetTime();
u32 __read_u32_le(u8* arg0) { // bzero(D_800E82C8, sizeof(D_800E82C8));
return (arg0[0] << 24) | (arg0[1] << 16) | (arg0[2] << 8) | arg0[3]; // bzero(D_800C4C10, sizeof(D_800C4C10));
}
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007A80C); // 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;
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007AB30); // for(i = 0; i < 4; i++) {
// D_800AF0A6[i] = 0;
// D_800AF090[i] = &D_800AF0A0;
// }
/* AF7C 8007AB7C */ // obSetCurrentTime(osGetTime());
void obSendUnpackMesg(OBUnpackMesg* msg) {
msg->format = 1;
osSendMesg(&obUnpackQueue, msg, OS_MESG_BLOCK);
}
extern OSThread obThreadUnpackProc; // D_800AF0B0 = func_80173B60(D_800AF0B0);
extern OBUnpackMesg obUnpackMesgBuf[8]; // func_8007819C();
// }
extern DECLARE_STACK(obStackUnpackProc, 0x80); // // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800765D8);
/* AFAC 8007ABAC */ // // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076AE8);
void obUnpackThreadStart(OSId id, OSPri priority) {
osCreateMesgQueue(&obUnpackQueue, (OSMesg)&obUnpackMesgBuf, 8);
osCreateThread(&obThreadUnpackProc, id, UnpackProc, NULL, STACK_START(obStackUnpackProc), priority); // // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076DC8);
osStartThread(&obThreadUnpackProc);
}
/* B030 8007AC30 */ // // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076E00);
void UnpackProc(void* __unused) {
OBUnpackMesg *msg = NULL;
while(1) { // // /* 722C 80076E2C */
osRecvMesg(&obUnpackQueue, (OSMesg)&msg, 1); // // void func_80076E2C(void) {
if (msg->format == 1) { // // D_800AF0B0 = func_80173B60(D_800AF0B0);
Unpack(msg->buffer, msg->size); // // }
osSendMesg(msg->queue, msg, OS_MESG_BLOCK);
} else { // // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076E58);
osSyncPrintf("UnpackProc: no supported format %d\n", msg->format);
} // // 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, u8 class) = { u16 (*FP_CLASS_GET_ITEM_1[])(u8 portrait, ClassId class) = {
class_get_item_upper_left, class_get_item_upper_left,
class_get_item_upper_right, class_get_item_upper_right,
class_get_item_lower_left, class_get_item_lower_left,

View File

@ -215,12 +215,10 @@ 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

@ -0,0 +1,11 @@
#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 __calls_osViSwapBuffer_8007307C(void**); /* extern */ void gfxSwapCfbFunc(NUScTask*); /* 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 func_800EA714(); /* extern */ void _main_stop_all_audio(); /* 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 D_800A8204; extern s32 obFrameBuf;
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 void* D_800C4BB8; extern u16* obCurrentFrameBuf;
extern struct { extern struct {
// s32 field_0x0; // s32 field_0x0;
@ -77,7 +77,6 @@ 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();
@ -98,7 +97,14 @@ INCLUDE_ASM(const s32, "main", func_80070C60);
INCLUDE_ASM(const s32, "main", AddHeap); INCLUDE_ASM(const s32, "main", AddHeap);
INCLUDE_ASM(const s32, "main", func_80070F14); extern u16 D_800AEDE0;
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);
@ -145,7 +151,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", func_80072398); INCLUDE_ASM(const s32, "main", retraceFunc);
/* 2B10 80072710 */ /* 2B10 80072710 */
void func_80072710(void) { void func_80072710(void) {
@ -155,7 +161,7 @@ void func_80072710(void) {
} }
/* 2B38 80072738 */ /* 2B38 80072738 */
void __set_vi_mode(s32 arg0) { void obSetViMode(s32 arg0) {
switch (osTvType) { switch (osTvType) {
case OS_TV_NTSC: case OS_TV_NTSC:
switch (arg0) { switch (arg0) {
@ -210,10 +216,10 @@ loop_2:
var_t0 += 1; var_t0 += 1;
var_a2 += 0x10; var_a2 += 0x10;
} while (var_t0 < 4); } while (var_t0 < 4);
bzero(__GLOBAL_CONTROLLER_DATA_COPY, sizeof(__GLOBAL_CONTROLLER_DATA_COPY)); bzero(obContData, sizeof(obContData));
} }
void func_8007284C(u16 __unused) { void obReadController(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;
@ -264,11 +270,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 __calls_osViSwapBuffer_8007307C(void** buffers) void gfxSwapCfbFunc(NUScTask* task)
{ {
u8 prev; u8 prev;
D_800C4BB8 = buffers[3]; obCurrentFrameBuf = task->framebuffer;
prev = __reset_compared_osTvType(); prev = __reset_compared_osTvType();
if (prev == OS_TV_TYPE_MPAL) if (prev == OS_TV_TYPE_MPAL)
@ -305,7 +311,7 @@ void __calls_osViSwapBuffer_8007307C(void** buffers)
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(buffers[3]); osViSwapBuffer(task->framebuffer);
} }
/* 3564 80073164 */ /* 3564 80073164 */
@ -385,7 +391,7 @@ void func_80073398(void) {
nuGfxZBuffer = 0; nuGfxZBuffer = 0;
} }
INCLUDE_ASM(const s32, "main", func_800733F8); INCLUDE_ASM(const s32, "main", _some_camera_setup);
/* 3BA0 800737A0 */ /* 3BA0 800737A0 */
void func_800737A0(void) { void func_800737A0(void) {

View File

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

View File

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

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

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

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

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

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

View File

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

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

@ -1,27 +0,0 @@
#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,8 +86,6 @@ 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,6 +2,8 @@
#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);
@ -64,7 +66,7 @@ INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", func_8016DB30);
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", func_8016DB84); INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", func_8016DB84);
/* 43AD8 8016DBD8 */ /* 43AD8 8016DBD8 */
u8 class_get_field_0x2c(u8 portrait, u8 class) { u8 class_get_field_0x2c(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].field_0x2c; return obClassData[portrait].field_0x2c;
@ -72,7 +74,7 @@ u8 class_get_field_0x2c(u8 portrait, u8 class) {
} }
/* 43B2C 8016DC2C */ /* 43B2C 8016DC2C */
u8 obClassGetAbilityFront(u8 portrait, u8 class) { u8 obClassGetAbilityFront(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].ability_front; return obClassData[portrait].ability_front;
@ -80,7 +82,7 @@ u8 obClassGetAbilityFront(u8 portrait, u8 class) {
} }
/* 43B80 8016DC80 */ /* 43B80 8016DC80 */
u8 obClassGetAbilityFrontHits(u8 portrait, u8 class) { u8 obClassGetAbilityFrontHits(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].ability_front_hitcount; return obClassData[portrait].ability_front_hitcount;
@ -88,7 +90,7 @@ u8 obClassGetAbilityFrontHits(u8 portrait, u8 class) {
} }
/* 43BD4 8016DCD4 */ /* 43BD4 8016DCD4 */
u8 obClassGetAbilityMiddle(u8 portrait, u8 class) { u8 obClassGetAbilityMiddle(u8 portrait, ClassId class) {
s32 var_v0; s32 var_v0;
if (obClassData[portrait].field_0x45 != class) { if (obClassData[portrait].field_0x45 != class) {
@ -100,7 +102,7 @@ u8 obClassGetAbilityMiddle(u8 portrait, u8 class) {
} }
/* 43C20 8016DD20 */ /* 43C20 8016DD20 */
u8 obClassGetAbilityMiddleHits(u8 portrait, u8 class) { u8 obClassGetAbilityMiddleHits(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].ability_middle_hitcount; return obClassData[portrait].ability_middle_hitcount;
@ -108,7 +110,7 @@ u8 obClassGetAbilityMiddleHits(u8 portrait, u8 class) {
} }
/* 43C74 8016DD74 */ /* 43C74 8016DD74 */
u8 obClassGetAbilityBack(u8 portrait, u8 class) { u8 obClassGetAbilityBack(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].ability_back; return obClassData[portrait].ability_back;
@ -116,7 +118,7 @@ u8 obClassGetAbilityBack(u8 portrait, u8 class) {
} }
/* 43CC8 8016DDC8 */ /* 43CC8 8016DDC8 */
u8 obClassGetAbilityBackHits(u8 portrait, u8 class) { u8 obClassGetAbilityBackHits(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].ability_back_hitcount; return obClassData[portrait].ability_back_hitcount;
@ -124,7 +126,7 @@ u8 obClassGetAbilityBackHits(u8 portrait, u8 class) {
} }
/* 43D1C 8016DE1C */ /* 43D1C 8016DE1C */
u8 class_get_field_0x4(u8 portrait, u8 class) { u8 class_get_field_0x4(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].field_0x4; return obClassData[portrait].field_0x4;
@ -132,7 +134,7 @@ u8 class_get_field_0x4(u8 portrait, u8 class) {
} }
/* 43D70 8016DE70 */ /* 43D70 8016DE70 */
u8 obClassGetGender(u8 portrait, u8 class) { Gender obClassGetGender(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].gender; return obClassData[portrait].gender;
@ -140,7 +142,7 @@ u8 obClassGetGender(u8 portrait, u8 class) {
} }
/* 43DC4 8016DEC4 */ /* 43DC4 8016DEC4 */
u8 obClassGetLeadershipRank(u8 portrait, u8 class) { u8 obClassGetLeadershipRank(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].leadership_rank; return obClassData[portrait].leadership_rank;
@ -148,7 +150,7 @@ u8 obClassGetLeadershipRank(u8 portrait, u8 class) {
} }
/* 43E18 8016DF18 */ /* 43E18 8016DF18 */
u8 class_get_global_flag(u8 portrait, u8 class) { u8 class_get_global_flag(u8 portrait, ClassId class) {
u8 var_a1; u8 var_a1;
var_a1 = class; var_a1 = class;
@ -161,7 +163,7 @@ u8 class_get_global_flag(u8 portrait, u8 class) {
} }
/* 43E88 8016DF88 */ /* 43E88 8016DF88 */
EquipmentId obClassGetItemUpperLeft(u8 portrait, u8 class) { EquipmentId obClassGetItemUpperLeft(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].item_upper_left; return obClassData[portrait].item_upper_left;
@ -169,7 +171,7 @@ EquipmentId obClassGetItemUpperLeft(u8 portrait, u8 class) {
} }
/* 43EDC 8016DFDC */ /* 43EDC 8016DFDC */
EquipmentId obClassGetItemUpperRight(u8 portrait, u8 class) { EquipmentId obClassGetItemUpperRight(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].item_upper_right; return obClassData[portrait].item_upper_right;
@ -177,7 +179,7 @@ EquipmentId obClassGetItemUpperRight(u8 portrait, u8 class) {
} }
/* 43F30 8016E030 */ /* 43F30 8016E030 */
EquipmentId obClassGetItemLowerLeft(u8 portrait, u8 class) { EquipmentId obClassGetItemLowerLeft(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].item_lower_left; return obClassData[portrait].item_lower_left;
@ -185,7 +187,7 @@ EquipmentId obClassGetItemLowerLeft(u8 portrait, u8 class) {
} }
/* 43F84 8016E084 */ /* 43F84 8016E084 */
EquipmentId obClassGetItemLowerRight(u8 portrait, u8 class) { EquipmentId obClassGetItemLowerRight(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].item_lower_right; return obClassData[portrait].item_lower_right;
@ -193,20 +195,20 @@ EquipmentId obClassGetItemLowerRight(u8 portrait, u8 class) {
} }
/* 43FD8 8016E0D8 */ /* 43FD8 8016E0D8 */
char* obClassGetAbilityFrontName(u8 portrait, u8 class) { char* obClassGetAbilityFrontName(u8 portrait, ClassId class) {
u8 var_v0; AbilityId ability;
if (obClassData[portrait].field_0x45 == class) { if (obClassData[portrait].field_0x45 == class) {
var_v0 = obClassData[portrait].ability_front; ability = obClassData[portrait].ability_front;
} else { } else {
var_v0 = obClassData[class].ability_front; ability = obClassData[class].ability_front;
} }
return obAbilityGetName(var_v0); return obAbilityGetName(ability);
} }
/* 44040 8016E140 */ /* 44040 8016E140 */
char* obClassGetAbilityMiddleName(u8 portrait, u8 class) { char* obClassGetAbilityMiddleName(u8 portrait, ClassId class) {
// Possible a C macro wrapping? // Possible a C macro wrapping?
do { do {
char* ret = obAbilityGetName(obClassData[class].ability_middle); char* ret = obAbilityGetName(obClassData[class].ability_middle);
@ -215,20 +217,20 @@ char* obClassGetAbilityMiddleName(u8 portrait, u8 class) {
} }
/* 44074 8016E174 */ /* 44074 8016E174 */
char* obClassGetAbilityBackName(u8 portrait, u8 class) { char* obClassGetAbilityBackName(u8 portrait, ClassId class) {
u8 var_v0; AbilityId ability;
if (obClassData[portrait].field_0x45 == class) { if (obClassData[portrait].field_0x45 == class) {
var_v0 = obClassData[portrait].ability_back; ability = obClassData[portrait].ability_back;
} else { } else {
var_v0 = obClassData[class].ability_back; ability = obClassData[class].ability_back;
} }
return obAbilityGetName(var_v0); return obAbilityGetName(ability);
} }
/* 440DC 8016E1DC */ /* 440DC 8016E1DC */
char* obClassGetName(u8 portrait, u8 class) { char* obClassGetName(u8 portrait, ClassId class) {
if (obClassData[portrait].field_0x45 == class) if (obClassData[portrait].field_0x45 == class)
return obClassData[portrait].name; return obClassData[portrait].name;
@ -236,7 +238,7 @@ char* obClassGetName(u8 portrait, u8 class) {
} }
/* 44130 8016E230 */ /* 44130 8016E230 */
u8 obClassGetAbility(u8 portrait, u8 class, u8 row) u8 obClassGetAbility(u8 portrait, ClassId class, u8 row)
{ {
if (obClassData[portrait].field_0x45 != class) if (obClassData[portrait].field_0x45 != class)
portrait = class; portrait = class;
@ -251,7 +253,7 @@ u8 obClassGetAbility(u8 portrait, u8 class, u8 row)
} }
/* 44238 8016E338 */ /* 44238 8016E338 */
u8 obClassGetAbilityHits(u8 portrait, u8 class, u8 row) { u8 obClassGetAbilityHits(u8 portrait, ClassId class, u8 row) {
if (obClassData[portrait].field_0x45 != class) if (obClassData[portrait].field_0x45 != class)
portrait = class; portrait = class;
@ -265,17 +267,17 @@ u8 obClassGetAbilityHits(u8 portrait, u8 class, u8 row) {
} }
/* 44340 8016E440 */ /* 44340 8016E440 */
char* obAbilityGetName(u8 index) { char* obAbilityGetName(AbilityId index) {
return obAbilityData[index].name; return obAbilityData[index].name;
} }
/* 44358 8016E458 */ /* 44358 8016E458 */
u8 ability_get_field_0x4(u8 index) { u8 ability_get_field_0x4(AbilityId index) {
return obAbilityData[index].field_0x4; return obAbilityData[index].field_0x4;
} }
/* 44370 8016E470 */ /* 44370 8016E470 */
Element obAbilityGetElement(u8 index, u16 arg1, u16 arg2, s32 arg3, u16 arg4) { Element obAbilityGetElement(AbilityId index, EquipmentId arg1, EquipmentId arg2, EquipmentId arg3, EquipmentId 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)
@ -296,7 +298,7 @@ Element obAbilityGetElement(u8 index, u16 arg1, u16 arg2, s32 arg3, u16 arg4) {
INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", func_8016E50C); INCLUDE_ASM(const s32, "segment_obdata/_ob_fierce_selection", func_8016E50C);
/* 44934 8016EA34 */ /* 44934 8016EA34 */
u8 func_8016EA34(u8 portrait, u8 class, u8 arg2) u8 func_8016EA34(u8 portrait, ClassId class, u8 arg2)
{ {
if (obClassData[portrait].field_0x45 != class) if (obClassData[portrait].field_0x45 != class)
portrait = class; portrait = class;

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", func_800EA714); INCLUDE_ASM(const s32, "segment_song/_ob_knotty_chess", _main_stop_all_audio);
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, field_0x2, field_0x3, field_0x4, field_0x5, print(f"({i}):\t", (field_0x0, element, 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 item_data import equipment_data as item_data
NAME_VADDR_START = 0x8016AF80 NAME_VADDR_START = 0x8016AF80
NAME_ADDR_START = 0x40E80 NAME_ADDR_START = 0x40E80
@ -94,18 +94,22 @@ 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})\t") print(f"Class= {name} ({i})")
print(f"ItemUpperLeft= {item_data.item_get_name(item_data.item_read(class_data.item_upper_left).name)}") # print(f"Gender={class_data.gender}")
print(f"ItemUpperRight= {item_data.item_get_name(item_data.item_read(class_data.item_upper_right).name)}") # print(f"Leadership rank={class_data.leadership_rank}")
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)}") # print(f"Leadership rank={class_data.leadership_rank}")
# 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:
if val.startswith("field_"):
unidentified.append(f"{val}: {getattr(class_data, val)}") unidentified.append(f"{val}: {getattr(class_data, val)}")
print("Unidentified fields: ") print("Fields: ")
print("\n".join(unidentified), end="") print("\n".join(unidentified), end="")
print() print()
print("-----------------------------------------") print("-----------------------------------------")