Merge branch 'master' into m_kankyo

This commit is contained in:
Cuyler36
2023-10-11 02:48:18 -04:00
committed by GitHub
45 changed files with 2134 additions and 41 deletions
+25
View File
@@ -390,6 +390,31 @@ ac_train_window.c:
.text: [0x804AC510, 0x804AD428]
.rodata: [0x80645FA8, 0x80645FF8]
.data: [0x8068F600, 0x8068F830]
ef_lamp_light.c:
.text: [0x804CEC5C, 0x804CEF2C]
.rodata: [0x806463C8, 0x806463D8]
.data: [0x8069BFD0, 0x8069C028]
ef_room_sunshine.c:
.text: [0x804CEF2C, 0x804CF784]
.rodata: [0x806463D8, 0x80646420]
.data: [0x8069C028, 0x8069C050]
ef_room_sunshine_police.c:
.text: [0x804CF784, 0x804CFF8C]
.rodata: [0x80646420, 0x80646470]
.data: [0x8069C050, 0x8069C078]
ef_room_sunshine_posthouse.c:
.text: [0x804CFF8C, 0x804D0704]
.rodata: [0x80646470, 0x806464B8]
.data: [0x8069C078, 0x8069C0A0]
ef_room_sunshine_museum.c:
.text: [0x804D0704, 0x804D0F3C]
.rodata: [0x806464B8, 0x80646508]
.data: [0x8069C0A0, 0x8069C0C8]
ef_room_sunshine_minsect.c:
.text: [0x804D0F3C,0x804D1BBC]
.rodata: [0x80646508,0x80646558]
.data: [0x8069C0C8, 0x8069C0F0]
.bss: [0x81300BD0, 0x81300BD8]
m_huusui_room_ovl.c:
.text: [0x804D1BBC, 0x804D2164]
.rodata: [0x80646558, 0x806465C8]
+7
View File
@@ -10,6 +10,13 @@ extern "C" {
extern ACTOR_PROFILE Lamp_Light_Profile;
typedef struct ef_lamp_light_s{
ACTOR actor_class;
int switch_type;
Lights lights;
LightNode* node_p;
}LAMPLIGHT_ACTOR;
#ifdef __cplusplus
}
#endif
+5
View File
@@ -10,6 +10,11 @@ extern "C" {
extern ACTOR_PROFILE Room_Sunshine_Profile;
typedef struct effect_room_sunshine_s{
ACTOR actor_class;
u8 unk_174;
} ROOMSUNSHINE_ACTOR;
#ifdef __cplusplus
}
#endif
+7
View File
@@ -3,6 +3,7 @@
#include "types.h"
#include "m_actor.h"
#include "ef_room_sunshine.h"
#ifdef __cplusplus
extern "C" {
@@ -10,6 +11,12 @@ extern "C" {
extern ACTOR_PROFILE Room_Sunshine_Minsect_Profile;
typedef struct effect_room_sunshine_minsect_s{
ROOMSUNSHINE_ACTOR ef_sunshine_class;
}ROOMSUNSHINEMINSECT_ACTOR;
extern u8 draw_status;
#ifdef __cplusplus
}
#endif
+5
View File
@@ -3,6 +3,7 @@
#include "types.h"
#include "m_actor.h"
#include "ef_room_sunshine.h"
#ifdef __cplusplus
extern "C" {
@@ -10,6 +11,10 @@ extern "C" {
extern ACTOR_PROFILE Room_Sunshine_Museum_Profile;
typedef struct effect_room_sunshine_museum_s{
ROOMSUNSHINE_ACTOR ef_sunshine_class;
}ROOMSUNSHINEMUSEUM_ACTOR;
#ifdef __cplusplus
}
#endif
+5
View File
@@ -3,6 +3,7 @@
#include "types.h"
#include "m_actor.h"
#include "ef_room_sunshine.h"
#ifdef __cplusplus
extern "C" {
@@ -10,6 +11,10 @@ extern "C" {
extern ACTOR_PROFILE Room_Sunshine_Police_Profile;
typedef struct efffect_room_sunshine_police_s{
ROOMSUNSHINE_ACTOR ef_sunshine_class;
}ROOMSUNSHINEPOLICE_ACTOR;
#ifdef __cplusplus
}
#endif
+5
View File
@@ -3,6 +3,7 @@
#include "types.h"
#include "m_actor.h"
#include "ef_room_sunshine.h"
#ifdef __cplusplus
extern "C" {
@@ -10,6 +11,10 @@ extern "C" {
extern ACTOR_PROFILE Room_Sunshine_Posthouse_Profile;
typedef struct effect_room_sunshine_posthouse_s{
ROOMSUNSHINE_ACTOR ef_sunshine_class;
}ROOMSUNSHINEPOSTHOUSE_ACTOR;
#ifdef __cplusplus
}
#endif
+737 -10
View File
@@ -31,16 +31,743 @@ typedef void (*mActor_proc)(ACTOR*, GAME*);
#define ACTOR_STATE_25 (1 << 25)
#define ACTOR_STATE_CAN_MOVE_IN_DEMO_SCENES (1 << 29)
#define ACTOR_OBJ_BANK_NONE 0
#define ACTOR_OBJ_BANK_3 3 /* TODO: rename, also likely an enum */
#define ACTOR_OBJ_BANK_6 6
#define ACTOR_OBJ_BANK_7 7
#define ACTOR_OBJ_BANK_10 10
#define ACTOR_OBJ_BANK_11 11
#define ACTOR_OBJ_BANK_12 12
#define ACTOR_OBJ_BANK_16 16
#define ACTOR_OBJ_BANK_41 41
#define ACTOR_OBJ_BANK_53 53
//TODO: Name the unique ones for their correspondant actor
typedef enum bank_id {
ACTOR_OBJ_BANK_NONE,
ACTOR_OBJ_BANK_1,
ACTOR_OBJ_BANK_2,
ACTOR_OBJ_BANK_KEEP,
ACTOR_OBJ_BANK_4,
ACTOR_OBJ_BANK_ROOM_SUNSHINE,
ACTOR_OBJ_BANK_6,
ACTOR_OBJ_BANK_AIRPLANE,
ACTOR_OBJ_BANK_8,
ACTOR_OBJ_BANK_9,
ACTOR_OBJ_BANK_10,
ACTOR_OBJ_BANK_TRAINDOOR,
ACTOR_OBJ_BANK_12,
ACTOR_OBJ_BANK_13,
ACTOR_OBJ_BANK_14,
ACTOR_OBJ_BANK_15,
ACTOR_OBJ_BANK_TOOLS,
ACTOR_OBJ_BANK_17,
ACTOR_OBJ_BANK_18,
ACTOR_OBJ_BANK_19,
ACTOR_OBJ_BANK_20,
ACTOR_OBJ_BANK_21,
ACTOR_OBJ_BANK_22,
ACTOR_OBJ_BANK_23,
ACTOR_OBJ_BANK_24,
ACTOR_OBJ_BANK_25,
ACTOR_OBJ_BANK_26,
ACTOR_OBJ_BANK_27,
ACTOR_OBJ_BANK_28,
ACTOR_OBJ_BANK_29,
ACTOR_OBJ_BANK_30,
ACTOR_OBJ_BANK_31,
ACTOR_OBJ_BANK_32,
ACTOR_OBJ_BANK_33,
ACTOR_OBJ_BANK_34,
ACTOR_OBJ_BANK_35,
ACTOR_OBJ_BANK_36,
ACTOR_OBJ_BANK_37,
ACTOR_OBJ_BANK_38,
ACTOR_OBJ_BANK_39,
ACTOR_OBJ_BANK_40,
ACTOR_OBJ_BANK_TRAINWINDOW,
ACTOR_OBJ_BANK_42,
ACTOR_OBJ_BANK_POSTHOUSE,
ACTOR_OBJ_BANK_EF_POLICE,
ACTOR_OBJ_BANK_45,
ACTOR_OBJ_BANK_46,
ACTOR_OBJ_BANK_47,
ACTOR_OBJ_BANK_48,
ACTOR_OBJ_BANK_49,
ACTOR_OBJ_BANK_50,
ACTOR_OBJ_BANK_51,
ACTOR_OBJ_BANK_52,
ACTOR_OBJ_BANK_HANABI,
ACTOR_OBJ_BANK_54,
ACTOR_OBJ_BANK_55,
ACTOR_OBJ_BANK_56,
ACTOR_OBJ_BANK_57,
ACTOR_OBJ_BANK_58,
ACTOR_OBJ_BANK_59,
ACTOR_OBJ_BANK_60,
ACTOR_OBJ_BANK_61,
ACTOR_OBJ_BANK_62,
ACTOR_OBJ_BANK_63,
ACTOR_OBJ_BANK_64,
ACTOR_OBJ_BANK_65,
ACTOR_OBJ_BANK_66,
ACTOR_OBJ_BANK_67,
ACTOR_OBJ_BANK_68,
ACTOR_OBJ_BANK_69,
ACTOR_OBJ_BANK_70,
ACTOR_OBJ_BANK_71,
ACTOR_OBJ_BANK_72,
ACTOR_OBJ_BANK_73,
ACTOR_OBJ_BANK_74,
ACTOR_OBJ_BANK_75,
ACTOR_OBJ_BANK_76,
ACTOR_OBJ_BANK_77,
ACTOR_OBJ_BANK_78,
ACTOR_OBJ_BANK_79,
ACTOR_OBJ_BANK_80,
ACTOR_OBJ_BANK_81,
ACTOR_OBJ_BANK_82,
ACTOR_OBJ_BANK_83,
ACTOR_OBJ_BANK_84,
ACTOR_OBJ_BANK_85,
ACTOR_OBJ_BANK_86,
ACTOR_OBJ_BANK_87,
ACTOR_OBJ_BANK_88,
ACTOR_OBJ_BANK_89,
ACTOR_OBJ_BANK_90,
ACTOR_OBJ_BANK_91,
ACTOR_OBJ_BANK_92,
ACTOR_OBJ_BANK_93,
ACTOR_OBJ_BANK_94,
ACTOR_OBJ_BANK_95,
ACTOR_OBJ_BANK_96,
ACTOR_OBJ_BANK_97,
ACTOR_OBJ_BANK_98,
ACTOR_OBJ_BANK_99,
ACTOR_OBJ_BANK_100,
ACTOR_OBJ_BANK_101,
ACTOR_OBJ_BANK_102,
ACTOR_OBJ_BANK_103,
ACTOR_OBJ_BANK_104,
ACTOR_OBJ_BANK_105,
ACTOR_OBJ_BANK_106,
ACTOR_OBJ_BANK_107,
ACTOR_OBJ_BANK_108,
ACTOR_OBJ_BANK_109,
ACTOR_OBJ_BANK_110,
ACTOR_OBJ_BANK_111,
ACTOR_OBJ_BANK_112,
ACTOR_OBJ_BANK_113,
ACTOR_OBJ_BANK_114,
ACTOR_OBJ_BANK_115,
ACTOR_OBJ_BANK_116,
ACTOR_OBJ_BANK_117,
ACTOR_OBJ_BANK_118,
ACTOR_OBJ_BANK_119,
ACTOR_OBJ_BANK_120,
ACTOR_OBJ_BANK_121,
ACTOR_OBJ_BANK_122,
ACTOR_OBJ_BANK_123,
ACTOR_OBJ_BANK_124,
ACTOR_OBJ_BANK_125,
ACTOR_OBJ_BANK_126,
ACTOR_OBJ_BANK_127,
ACTOR_OBJ_BANK_128,
ACTOR_OBJ_BANK_129,
ACTOR_OBJ_BANK_130,
ACTOR_OBJ_BANK_131,
ACTOR_OBJ_BANK_132,
ACTOR_OBJ_BANK_133,
ACTOR_OBJ_BANK_134,
ACTOR_OBJ_BANK_135,
ACTOR_OBJ_BANK_136,
ACTOR_OBJ_BANK_137,
ACTOR_OBJ_BANK_138,
ACTOR_OBJ_BANK_139,
ACTOR_OBJ_BANK_140,
ACTOR_OBJ_BANK_141,
ACTOR_OBJ_BANK_142,
ACTOR_OBJ_BANK_143,
ACTOR_OBJ_BANK_144,
ACTOR_OBJ_BANK_145,
ACTOR_OBJ_BANK_146,
ACTOR_OBJ_BANK_147,
ACTOR_OBJ_BANK_148,
ACTOR_OBJ_BANK_149,
ACTOR_OBJ_BANK_150,
ACTOR_OBJ_BANK_151,
ACTOR_OBJ_BANK_152,
ACTOR_OBJ_BANK_153,
ACTOR_OBJ_BANK_154,
ACTOR_OBJ_BANK_155,
ACTOR_OBJ_BANK_156,
ACTOR_OBJ_BANK_157,
ACTOR_OBJ_BANK_158,
ACTOR_OBJ_BANK_159,
ACTOR_OBJ_BANK_160,
ACTOR_OBJ_BANK_161,
ACTOR_OBJ_BANK_162,
ACTOR_OBJ_BANK_163,
ACTOR_OBJ_BANK_164,
ACTOR_OBJ_BANK_165,
ACTOR_OBJ_BANK_166,
ACTOR_OBJ_BANK_167,
ACTOR_OBJ_BANK_168,
ACTOR_OBJ_BANK_169,
ACTOR_OBJ_BANK_170,
ACTOR_OBJ_BANK_171,
ACTOR_OBJ_BANK_172,
ACTOR_OBJ_BANK_173,
ACTOR_OBJ_BANK_174,
ACTOR_OBJ_BANK_175,
ACTOR_OBJ_BANK_176,
ACTOR_OBJ_BANK_177,
ACTOR_OBJ_BANK_178,
ACTOR_OBJ_BANK_179,
ACTOR_OBJ_BANK_180,
ACTOR_OBJ_BANK_181,
ACTOR_OBJ_BANK_182,
ACTOR_OBJ_BANK_183,
ACTOR_OBJ_BANK_184,
ACTOR_OBJ_BANK_185,
ACTOR_OBJ_BANK_186,
ACTOR_OBJ_BANK_187,
ACTOR_OBJ_BANK_188,
ACTOR_OBJ_BANK_189,
ACTOR_OBJ_BANK_190,
ACTOR_OBJ_BANK_191,
ACTOR_OBJ_BANK_192,
ACTOR_OBJ_BANK_193,
ACTOR_OBJ_BANK_194,
ACTOR_OBJ_BANK_195,
ACTOR_OBJ_BANK_196,
ACTOR_OBJ_BANK_197,
ACTOR_OBJ_BANK_198,
ACTOR_OBJ_BANK_199,
ACTOR_OBJ_BANK_200,
ACTOR_OBJ_BANK_201,
ACTOR_OBJ_BANK_202,
ACTOR_OBJ_BANK_203,
ACTOR_OBJ_BANK_204,
ACTOR_OBJ_BANK_205,
ACTOR_OBJ_BANK_206,
ACTOR_OBJ_BANK_207,
ACTOR_OBJ_BANK_208,
ACTOR_OBJ_BANK_209,
ACTOR_OBJ_BANK_210,
ACTOR_OBJ_BANK_211,
ACTOR_OBJ_BANK_212,
ACTOR_OBJ_BANK_213,
ACTOR_OBJ_BANK_214,
ACTOR_OBJ_BANK_215,
ACTOR_OBJ_BANK_216,
ACTOR_OBJ_BANK_217,
ACTOR_OBJ_BANK_218,
ACTOR_OBJ_BANK_219,
ACTOR_OBJ_BANK_220,
ACTOR_OBJ_BANK_221,
ACTOR_OBJ_BANK_222,
ACTOR_OBJ_BANK_223,
ACTOR_OBJ_BANK_224,
ACTOR_OBJ_BANK_225,
ACTOR_OBJ_BANK_226,
ACTOR_OBJ_BANK_227,
ACTOR_OBJ_BANK_228,
ACTOR_OBJ_BANK_229,
ACTOR_OBJ_BANK_230,
ACTOR_OBJ_BANK_231,
ACTOR_OBJ_BANK_232,
ACTOR_OBJ_BANK_233,
ACTOR_OBJ_BANK_234,
ACTOR_OBJ_BANK_235,
ACTOR_OBJ_BANK_236,
ACTOR_OBJ_BANK_237,
ACTOR_OBJ_BANK_238,
ACTOR_OBJ_BANK_239,
ACTOR_OBJ_BANK_240,
ACTOR_OBJ_BANK_241,
ACTOR_OBJ_BANK_242,
ACTOR_OBJ_BANK_243,
ACTOR_OBJ_BANK_244,
ACTOR_OBJ_BANK_245,
ACTOR_OBJ_BANK_246,
ACTOR_OBJ_BANK_247,
ACTOR_OBJ_BANK_248,
ACTOR_OBJ_BANK_249,
ACTOR_OBJ_BANK_250,
ACTOR_OBJ_BANK_251,
ACTOR_OBJ_BANK_252,
ACTOR_OBJ_BANK_253,
ACTOR_OBJ_BANK_254,
ACTOR_OBJ_BANK_255,
ACTOR_OBJ_BANK_256,
ACTOR_OBJ_BANK_257,
ACTOR_OBJ_BANK_258,
ACTOR_OBJ_BANK_259,
ACTOR_OBJ_BANK_260,
ACTOR_OBJ_BANK_261,
ACTOR_OBJ_BANK_262,
ACTOR_OBJ_BANK_263,
ACTOR_OBJ_BANK_264,
ACTOR_OBJ_BANK_265,
ACTOR_OBJ_BANK_266,
ACTOR_OBJ_BANK_267,
ACTOR_OBJ_BANK_268,
ACTOR_OBJ_BANK_269,
ACTOR_OBJ_BANK_270,
ACTOR_OBJ_BANK_271,
ACTOR_OBJ_BANK_272,
ACTOR_OBJ_BANK_273,
ACTOR_OBJ_BANK_274,
ACTOR_OBJ_BANK_275,
ACTOR_OBJ_BANK_276,
ACTOR_OBJ_BANK_277,
ACTOR_OBJ_BANK_278,
ACTOR_OBJ_BANK_279,
ACTOR_OBJ_BANK_280,
ACTOR_OBJ_BANK_281,
ACTOR_OBJ_BANK_282,
ACTOR_OBJ_BANK_283,
ACTOR_OBJ_BANK_284,
ACTOR_OBJ_BANK_285,
ACTOR_OBJ_BANK_286,
ACTOR_OBJ_BANK_287,
ACTOR_OBJ_BANK_288,
ACTOR_OBJ_BANK_289,
ACTOR_OBJ_BANK_290,
ACTOR_OBJ_BANK_291,
ACTOR_OBJ_BANK_292,
ACTOR_OBJ_BANK_293,
ACTOR_OBJ_BANK_294,
ACTOR_OBJ_BANK_295,
ACTOR_OBJ_BANK_296,
ACTOR_OBJ_BANK_297,
ACTOR_OBJ_BANK_298,
ACTOR_OBJ_BANK_299,
ACTOR_OBJ_BANK_300,
ACTOR_OBJ_BANK_301,
ACTOR_OBJ_BANK_302,
ACTOR_OBJ_BANK_303,
ACTOR_OBJ_BANK_304,
ACTOR_OBJ_BANK_305,
ACTOR_OBJ_BANK_306,
ACTOR_OBJ_BANK_307,
ACTOR_OBJ_BANK_308,
ACTOR_OBJ_BANK_309,
ACTOR_OBJ_BANK_310,
ACTOR_OBJ_BANK_311,
ACTOR_OBJ_BANK_312,
ACTOR_OBJ_BANK_313,
ACTOR_OBJ_BANK_314,
ACTOR_OBJ_BANK_315,
ACTOR_OBJ_BANK_316,
ACTOR_OBJ_BANK_317,
ACTOR_OBJ_BANK_318,
ACTOR_OBJ_BANK_319,
ACTOR_OBJ_BANK_320,
ACTOR_OBJ_BANK_321,
ACTOR_OBJ_BANK_322,
ACTOR_OBJ_BANK_323,
ACTOR_OBJ_BANK_324,
ACTOR_OBJ_BANK_325,
ACTOR_OBJ_BANK_326,
ACTOR_OBJ_BANK_327,
ACTOR_OBJ_BANK_328,
ACTOR_OBJ_BANK_329,
ACTOR_OBJ_BANK_330,
ACTOR_OBJ_BANK_331,
ACTOR_OBJ_BANK_332,
ACTOR_OBJ_BANK_333,
ACTOR_OBJ_BANK_334,
ACTOR_OBJ_BANK_335,
ACTOR_OBJ_BANK_336,
ACTOR_OBJ_BANK_337,
ACTOR_OBJ_BANK_338,
ACTOR_OBJ_BANK_339,
ACTOR_OBJ_BANK_340,
ACTOR_OBJ_BANK_341,
ACTOR_OBJ_BANK_342,
ACTOR_OBJ_BANK_343,
ACTOR_OBJ_BANK_344,
ACTOR_OBJ_BANK_345,
ACTOR_OBJ_BANK_346,
ACTOR_OBJ_BANK_347,
ACTOR_OBJ_BANK_348,
ACTOR_OBJ_BANK_349,
ACTOR_OBJ_BANK_350,
ACTOR_OBJ_BANK_351,
ACTOR_OBJ_BANK_352,
ACTOR_OBJ_BANK_353,
ACTOR_OBJ_BANK_354,
ACTOR_OBJ_BANK_355,
ACTOR_OBJ_BANK_356,
ACTOR_OBJ_BANK_357,
ACTOR_OBJ_BANK_358,
ACTOR_OBJ_BANK_359,
ACTOR_OBJ_BANK_360,
ACTOR_OBJ_BANK_361,
ACTOR_OBJ_BANK_362,
ACTOR_OBJ_BANK_363,
ACTOR_OBJ_BANK_364,
ACTOR_OBJ_BANK_365,
ACTOR_OBJ_BANK_366,
ACTOR_OBJ_BANK_367,
ACTOR_OBJ_BANK_368,
ACTOR_OBJ_BANK_369,
ACTOR_OBJ_BANK_370,
ACTOR_OBJ_BANK_371,
ACTOR_OBJ_BANK_372,
ACTOR_OBJ_BANK_373,
ACTOR_OBJ_BANK_374,
ACTOR_OBJ_BANK_375,
ACTOR_OBJ_BANK_376,
ACTOR_OBJ_BANK_377,
ACTOR_OBJ_BANK_378,
ACTOR_OBJ_BANK_379,
ACTOR_OBJ_BANK_380,
ACTOR_OBJ_BANK_381,
ACTOR_OBJ_BANK_382,
ACTOR_OBJ_BANK_383,
ACTOR_OBJ_BANK_384,
ACTOR_OBJ_BANK_385,
ACTOR_OBJ_BANK_386,
ACTOR_OBJ_BANK_387,
ACTOR_OBJ_BANK_388,
ACTOR_OBJ_BANK_389,
ACTOR_OBJ_BANK_390,
ACTOR_OBJ_BANK_391,
ACTOR_OBJ_BANK_392,
ACTOR_OBJ_BANK_393,
ACTOR_OBJ_BANK_394,
ACTOR_OBJ_BANK_CRACKER,
ACTOR_OBJ_BANK_396,
ACTOR_OBJ_BANK_397,
ACTOR_OBJ_BANK_398,
ACTOR_OBJ_BANK_399,
ACTOR_OBJ_BANK_400,
ACTOR_OBJ_BANK_401,
ACTOR_OBJ_BANK_402,
ACTOR_OBJ_BANK_403,
ACTOR_OBJ_BANK_404,
ACTOR_OBJ_BANK_405,
ACTOR_OBJ_BANK_406,
ACTOR_OBJ_BANK_407,
ACTOR_OBJ_BANK_408,
ACTOR_OBJ_BANK_EF_MUSEUM,
ACTOR_OBJ_BANK_EF_MINSECT,
ACTOR_OBJ_BANK_411,
ACTOR_OBJ_BANK_412,
ACTOR_OBJ_BANK_413,
ACTOR_OBJ_BANK_414,
ACTOR_OBJ_BANK_415,
ACTOR_OBJ_BANK_416,
ACTOR_OBJ_BANK_417,
ACTOR_OBJ_BANK_418,
ACTOR_OBJ_BANK_419,
ACTOR_OBJ_BANK_420,
ACTOR_OBJ_BANK_421,
ACTOR_OBJ_BANK_422,
ACTOR_OBJ_BANK_423,
ACTOR_OBJ_BANK_424,
ACTOR_OBJ_BANK_425,
ACTOR_OBJ_BANK_426,
ACTOR_OBJ_BANK_427,
ACTOR_OBJ_BANK_428,
ACTOR_OBJ_BANK_429,
ACTOR_OBJ_BANK_430,
ACTOR_OBJ_BANK_431,
ACTOR_OBJ_BANK_432,
ACTOR_OBJ_BANK_433,
ACTOR_OBJ_BANK_434,
ACTOR_OBJ_BANK_435,
ACTOR_OBJ_BANK_436,
ACTOR_OBJ_BANK_437,
ACTOR_OBJ_BANK_438,
ACTOR_OBJ_BANK_439,
ACTOR_OBJ_BANK_440,
ACTOR_OBJ_BANK_441,
ACTOR_OBJ_BANK_442,
ACTOR_OBJ_BANK_443,
ACTOR_OBJ_BANK_444,
ACTOR_OBJ_BANK_445,
ACTOR_OBJ_BANK_446,
ACTOR_OBJ_BANK_447,
ACTOR_OBJ_BANK_448,
ACTOR_OBJ_BANK_449,
ACTOR_OBJ_BANK_450,
ACTOR_OBJ_BANK_451,
ACTOR_OBJ_BANK_452,
ACTOR_OBJ_BANK_453,
ACTOR_OBJ_BANK_454,
ACTOR_OBJ_BANK_455,
ACTOR_OBJ_BANK_456,
ACTOR_OBJ_BANK_457,
ACTOR_OBJ_BANK_458,
ACTOR_OBJ_BANK_459,
ACTOR_OBJ_BANK_460,
ACTOR_OBJ_BANK_461,
ACTOR_OBJ_BANK_462,
ACTOR_OBJ_BANK_463,
ACTOR_OBJ_BANK_464,
ACTOR_OBJ_BANK_465,
ACTOR_OBJ_BANK_466,
ACTOR_OBJ_BANK_467,
ACTOR_OBJ_BANK_468,
ACTOR_OBJ_BANK_469,
ACTOR_OBJ_BANK_470,
ACTOR_OBJ_BANK_471,
ACTOR_OBJ_BANK_472,
ACTOR_OBJ_BANK_473,
ACTOR_OBJ_BANK_474,
ACTOR_OBJ_BANK_475,
ACTOR_OBJ_BANK_476,
ACTOR_OBJ_BANK_477,
ACTOR_OBJ_BANK_478,
ACTOR_OBJ_BANK_479,
ACTOR_OBJ_BANK_480,
ACTOR_OBJ_BANK_481,
ACTOR_OBJ_BANK_482,
ACTOR_OBJ_BANK_483,
ACTOR_OBJ_BANK_484,
ACTOR_OBJ_BANK_485,
ACTOR_OBJ_BANK_486,
ACTOR_OBJ_BANK_487,
ACTOR_OBJ_BANK_488,
ACTOR_OBJ_BANK_489,
ACTOR_OBJ_BANK_490,
ACTOR_OBJ_BANK_491,
ACTOR_OBJ_BANK_492,
ACTOR_OBJ_BANK_493,
ACTOR_OBJ_BANK_494,
ACTOR_OBJ_BANK_495,
ACTOR_OBJ_BANK_496,
ACTOR_OBJ_BANK_497,
ACTOR_OBJ_BANK_498,
ACTOR_OBJ_BANK_499,
ACTOR_OBJ_BANK_500,
ACTOR_OBJ_BANK_501,
ACTOR_OBJ_BANK_502,
ACTOR_OBJ_BANK_503,
ACTOR_OBJ_BANK_504,
ACTOR_OBJ_BANK_505,
ACTOR_OBJ_BANK_506,
ACTOR_OBJ_BANK_507,
ACTOR_OBJ_BANK_508,
ACTOR_OBJ_BANK_509,
ACTOR_OBJ_BANK_510,
ACTOR_OBJ_BANK_511,
ACTOR_OBJ_BANK_512,
ACTOR_OBJ_BANK_513,
ACTOR_OBJ_BANK_514,
ACTOR_OBJ_BANK_515,
ACTOR_OBJ_BANK_516,
ACTOR_OBJ_BANK_517,
ACTOR_OBJ_BANK_518,
ACTOR_OBJ_BANK_519,
ACTOR_OBJ_BANK_520,
ACTOR_OBJ_BANK_521,
ACTOR_OBJ_BANK_522,
ACTOR_OBJ_BANK_523,
ACTOR_OBJ_BANK_524,
ACTOR_OBJ_BANK_525,
ACTOR_OBJ_BANK_526,
ACTOR_OBJ_BANK_527,
ACTOR_OBJ_BANK_528,
ACTOR_OBJ_BANK_529,
ACTOR_OBJ_BANK_530,
ACTOR_OBJ_BANK_531,
ACTOR_OBJ_BANK_532,
ACTOR_OBJ_BANK_533,
ACTOR_OBJ_BANK_534,
ACTOR_OBJ_BANK_535,
ACTOR_OBJ_BANK_536,
ACTOR_OBJ_BANK_537,
ACTOR_OBJ_BANK_538,
ACTOR_OBJ_BANK_539,
ACTOR_OBJ_BANK_540,
ACTOR_OBJ_BANK_541,
ACTOR_OBJ_BANK_542,
ACTOR_OBJ_BANK_543,
ACTOR_OBJ_BANK_544,
ACTOR_OBJ_BANK_545,
ACTOR_OBJ_BANK_546,
ACTOR_OBJ_BANK_547,
ACTOR_OBJ_BANK_548,
ACTOR_OBJ_BANK_549,
ACTOR_OBJ_BANK_550,
ACTOR_OBJ_BANK_551,
ACTOR_OBJ_BANK_552,
ACTOR_OBJ_BANK_553,
ACTOR_OBJ_BANK_554,
ACTOR_OBJ_BANK_555,
ACTOR_OBJ_BANK_556,
ACTOR_OBJ_BANK_557,
ACTOR_OBJ_BANK_558,
ACTOR_OBJ_BANK_559,
ACTOR_OBJ_BANK_560,
ACTOR_OBJ_BANK_561,
ACTOR_OBJ_BANK_562,
ACTOR_OBJ_BANK_563,
ACTOR_OBJ_BANK_564,
ACTOR_OBJ_BANK_565,
ACTOR_OBJ_BANK_566,
ACTOR_OBJ_BANK_567,
ACTOR_OBJ_BANK_568,
ACTOR_OBJ_BANK_569,
ACTOR_OBJ_BANK_570,
ACTOR_OBJ_BANK_571,
ACTOR_OBJ_BANK_572,
ACTOR_OBJ_BANK_573,
ACTOR_OBJ_BANK_574,
ACTOR_OBJ_BANK_575,
ACTOR_OBJ_BANK_576,
ACTOR_OBJ_BANK_577,
ACTOR_OBJ_BANK_578,
ACTOR_OBJ_BANK_579,
ACTOR_OBJ_BANK_580,
ACTOR_OBJ_BANK_581,
ACTOR_OBJ_BANK_582,
ACTOR_OBJ_BANK_583,
ACTOR_OBJ_BANK_584,
ACTOR_OBJ_BANK_585,
ACTOR_OBJ_BANK_586,
ACTOR_OBJ_BANK_587,
ACTOR_OBJ_BANK_588,
ACTOR_OBJ_BANK_589,
ACTOR_OBJ_BANK_590,
ACTOR_OBJ_BANK_591,
ACTOR_OBJ_BANK_592,
ACTOR_OBJ_BANK_593,
ACTOR_OBJ_BANK_594,
ACTOR_OBJ_BANK_595,
ACTOR_OBJ_BANK_596,
ACTOR_OBJ_BANK_597,
ACTOR_OBJ_BANK_598,
ACTOR_OBJ_BANK_599,
ACTOR_OBJ_BANK_600,
ACTOR_OBJ_BANK_601,
ACTOR_OBJ_BANK_602,
ACTOR_OBJ_BANK_603,
ACTOR_OBJ_BANK_604,
ACTOR_OBJ_BANK_605,
ACTOR_OBJ_BANK_606,
ACTOR_OBJ_BANK_607,
ACTOR_OBJ_BANK_608,
ACTOR_OBJ_BANK_609,
ACTOR_OBJ_BANK_610,
ACTOR_OBJ_BANK_611,
ACTOR_OBJ_BANK_612,
ACTOR_OBJ_BANK_613,
ACTOR_OBJ_BANK_614,
ACTOR_OBJ_BANK_615,
ACTOR_OBJ_BANK_616,
ACTOR_OBJ_BANK_617,
ACTOR_OBJ_BANK_618,
ACTOR_OBJ_BANK_619,
ACTOR_OBJ_BANK_620,
ACTOR_OBJ_BANK_621,
ACTOR_OBJ_BANK_622,
ACTOR_OBJ_BANK_623,
ACTOR_OBJ_BANK_624,
ACTOR_OBJ_BANK_625,
ACTOR_OBJ_BANK_626,
ACTOR_OBJ_BANK_627,
ACTOR_OBJ_BANK_628,
ACTOR_OBJ_BANK_629,
ACTOR_OBJ_BANK_630,
ACTOR_OBJ_BANK_631,
ACTOR_OBJ_BANK_632,
ACTOR_OBJ_BANK_633,
ACTOR_OBJ_BANK_634,
ACTOR_OBJ_BANK_635,
ACTOR_OBJ_BANK_636,
ACTOR_OBJ_BANK_637,
ACTOR_OBJ_BANK_638,
ACTOR_OBJ_BANK_639,
ACTOR_OBJ_BANK_640,
ACTOR_OBJ_BANK_641,
ACTOR_OBJ_BANK_642,
ACTOR_OBJ_BANK_643,
ACTOR_OBJ_BANK_644,
ACTOR_OBJ_BANK_645,
ACTOR_OBJ_BANK_646,
ACTOR_OBJ_BANK_647,
ACTOR_OBJ_BANK_648,
ACTOR_OBJ_BANK_649,
ACTOR_OBJ_BANK_650,
ACTOR_OBJ_BANK_651,
ACTOR_OBJ_BANK_652,
ACTOR_OBJ_BANK_653,
ACTOR_OBJ_BANK_654,
ACTOR_OBJ_BANK_655,
ACTOR_OBJ_BANK_656,
ACTOR_OBJ_BANK_657,
ACTOR_OBJ_BANK_658,
ACTOR_OBJ_BANK_659,
ACTOR_OBJ_BANK_660,
ACTOR_OBJ_BANK_661,
ACTOR_OBJ_BANK_662,
ACTOR_OBJ_BANK_663,
ACTOR_OBJ_BANK_664,
ACTOR_OBJ_BANK_665,
ACTOR_OBJ_BANK_666,
ACTOR_OBJ_BANK_667,
ACTOR_OBJ_BANK_668,
ACTOR_OBJ_BANK_669,
ACTOR_OBJ_BANK_670,
ACTOR_OBJ_BANK_671,
ACTOR_OBJ_BANK_672,
ACTOR_OBJ_BANK_673,
ACTOR_OBJ_BANK_674,
ACTOR_OBJ_BANK_675,
ACTOR_OBJ_BANK_676,
ACTOR_OBJ_BANK_677,
ACTOR_OBJ_BANK_678,
ACTOR_OBJ_BANK_679,
ACTOR_OBJ_BANK_680,
ACTOR_OBJ_BANK_681,
ACTOR_OBJ_BANK_682,
ACTOR_OBJ_BANK_683,
ACTOR_OBJ_BANK_684,
ACTOR_OBJ_BANK_685,
ACTOR_OBJ_BANK_686,
ACTOR_OBJ_BANK_687,
ACTOR_OBJ_BANK_688,
ACTOR_OBJ_BANK_689,
ACTOR_OBJ_BANK_690,
ACTOR_OBJ_BANK_691,
ACTOR_OBJ_BANK_692,
ACTOR_OBJ_BANK_693,
ACTOR_OBJ_BANK_694,
ACTOR_OBJ_BANK_695,
ACTOR_OBJ_BANK_696,
ACTOR_OBJ_BANK_697,
ACTOR_OBJ_BANK_698,
ACTOR_OBJ_BANK_699,
ACTOR_OBJ_BANK_700,
ACTOR_OBJ_BANK_701,
ACTOR_OBJ_BANK_702,
ACTOR_OBJ_BANK_703,
ACTOR_OBJ_BANK_704,
ACTOR_OBJ_BANK_705,
ACTOR_OBJ_BANK_706,
ACTOR_OBJ_BANK_707,
ACTOR_OBJ_BANK_708,
ACTOR_OBJ_BANK_709,
ACTOR_OBJ_BANK_710,
ACTOR_OBJ_BANK_711,
ACTOR_OBJ_BANK_712,
ACTOR_OBJ_BANK_713,
ACTOR_OBJ_BANK_714,
ACTOR_OBJ_BANK_715,
ACTOR_OBJ_BANK_716,
ACTOR_OBJ_BANK_717,
ACTOR_OBJ_BANK_718,
ACTOR_OBJ_BANK_719,
ACTOR_OBJ_BANK_720,
ACTOR_OBJ_BANK_721,
ACTOR_OBJ_BANK_722,
ACTOR_OBJ_BANK_723,
ACTOR_OBJ_BANK_724,
ACTOR_OBJ_BANK_725,
ACTOR_OBJ_BANK_726,
ACTOR_OBJ_BANK_727,
ACTOR_OBJ_BANK_728,
ACTOR_OBJ_BANK_729,
ACTOR_OBJ_BANK_730,
ACTOR_OBJ_BANK_731,
};
enum actor_part {
+1
View File
@@ -154,6 +154,7 @@ extern f32 mCoBG_GetBgY_AngleS_FromWpos(s_xyz* angle_to_ground, xyz_t wpos, f32
extern f32 mCoBG_GetShadowBgY_AngleS_FromWpos(f32, s_xyz*, xyz_t);
extern int mCoBG_CheckWaterAttribute_OutOfSea(u32 attribute);
extern int mCoBG_CheckHole_OrgAttr(u32 attribute);
extern f32 mCoBG_GetBgY_OnlyCenter_FromWpos(f32 dist, xyz_t* wpos);
extern f32 mCoBG_GetBgY_OnlyCenter_FromWpos2(xyz_t wpos, f32 foot_dist);
extern int mCoBG_Attribute2CheckPlant(u32 attribute, const xyz_t* wpos);
extern void mCoBG_BgCheckControll(xyz_t* reverse_pos, ACTOR* actor, f32 check_range, f32 offset_y, s16 wall_attr_check, s16 no_reverse, s16 check_type);
+1 -2
View File
@@ -24,9 +24,8 @@ ACTOR_PROFILE Airplane_Profile = {
ACTOR_PART_BG,
ACTOR_STATE_NO_MOVE_WHILE_CULLED | ACTOR_STATE_NO_DRAW_WHILE_CULLED,
ETC_AIRPLANE,
ACTOR_OBJ_BANK_7,
ACTOR_OBJ_BANK_AIRPLANE,
sizeof(AIRPLANE_ACTOR),
&Airplane_Actor_ct,
&Airplane_Actor_dt,
&Airplane_Actor_move,
+1 -1
View File
@@ -58,7 +58,7 @@ ACTOR_PROFILE Animal_Logo_Profile = {
ACTOR_PART_BG,
ACTOR_STATE_NO_MOVE_WHILE_CULLED | ACTOR_STATE_NO_DRAW_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_3,
ACTOR_OBJ_BANK_KEEP,
sizeof(ANIMAL_LOGO_ACTOR),
&aAL_actor_ct,
&aAL_actor_dt,
+1 -1
View File
@@ -12,7 +12,7 @@ ACTOR_PROFILE Aprilfool_Control_Profile = {
ACTOR_PART_CONTROL,
ACTOR_STATE_NO_MOVE_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_3,
ACTOR_OBJ_BANK_KEEP,
sizeof(APRILFOOL_CONTROL_ACTOR),
&aAPC_actor_ct,
&aAPC_actor_dt,
+1 -1
View File
@@ -13,7 +13,7 @@ ACTOR_PROFILE BoxManager_Profile = {
ACTOR_PART_BG,
ACTOR_STATE_NO_MOVE_WHILE_CULLED | ACTOR_STATE_NO_DRAW_WHILE_CULLED,
ETC_BOXMANAGER,
ACTOR_OBJ_BANK_3,
ACTOR_OBJ_BANK_KEEP,
sizeof(BOXMANAGER_ACTOR),
&BoxManager_Actor_ct,
&BoxManager_Actor_dt,
+1 -1
View File
@@ -13,7 +13,7 @@ ACTOR_PROFILE BoxMove_Profile = {
ACTOR_PART_BG,
ACTOR_STATE_NONE,
EMPTY_NO,
ACTOR_OBJ_BANK_3,
ACTOR_OBJ_BANK_KEEP,
sizeof(BOXMOVE_ACTOR),
&BoxMove_Actor_ct,
&BoxMove_Actor_dt,
+1 -1
View File
@@ -11,7 +11,7 @@ ACTOR_PROFILE BoxTrick01_Profile = {
ACTOR_PART_BG,
ACTOR_STATE_NO_MOVE_WHILE_CULLED | ACTOR_STATE_NO_DRAW_WHILE_CULLED,
ETC_BOXTRICK,
ACTOR_OBJ_BANK_3,
ACTOR_OBJ_BANK_KEEP,
sizeof(BOXTRICK01_ACTOR),
&BoxTrick01_Actor_ct,
&BoxTrick01_Actor_dt,
+1 -1
View File
@@ -15,7 +15,7 @@ ACTOR_PROFILE Douzou_Profile = {
ACTOR_PART_ITEM,
ACTOR_STATE_TA_SET,
DOUZOU,
ACTOR_OBJ_BANK_3,
ACTOR_OBJ_BANK_KEEP,
sizeof(STRUCTURE_ACTOR),
&aDOU_actor_ct,
+1 -1
View File
@@ -13,7 +13,7 @@ ACTOR_PROFILE Groundhog_Control_Profile = {
ACTOR_PART_CONTROL,
ACTOR_STATE_NO_MOVE_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_3,
ACTOR_OBJ_BANK_KEEP,
sizeof(GROUNDHOG_CONTROL_ACTOR),
&aGHC_actor_ct,
&aGHC_actor_dt,
+1 -1
View File
@@ -271,7 +271,7 @@ ACTOR_PROFILE Set_Manager_Profile = {
ACTOR_PART_CONTROL, /* control actor type */
ACTOR_STATE_NO_MOVE_WHILE_CULLED | ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_CAN_MOVE_IN_DEMO_SCENES,
EMPTY_NO,
ACTOR_OBJ_BANK_3,
ACTOR_OBJ_BANK_KEEP,
sizeof(SET_MANAGER),
aSetMgr_ct,
aSetMgr_dt,
+1 -1
View File
@@ -14,7 +14,7 @@ ACTOR_PROFILE Structure_Profile = {
ACTOR_PART_CONTROL,
ACTOR_STATE_NO_MOVE_WHILE_CULLED | ACTOR_STATE_NO_DRAW_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_3,
ACTOR_OBJ_BANK_KEEP,
sizeof(STRUCTURE_CONTROL_ACTOR),
&aSTR_actor_ct,
+1 -1
View File
@@ -16,7 +16,7 @@ ACTOR_PROFILE T_Anrium1_Profile = {
ACTOR_PART_BG,
ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_16,
ACTOR_OBJ_BANK_TOOLS,
sizeof(ANRIUM1_ACTOR),
&aTA1_actor_ct,
NONE_ACTOR_PROC,
+1 -1
View File
@@ -16,7 +16,7 @@ ACTOR_PROFILE T_Bag1_Profile = {
ACTOR_PART_BG,
ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_16,
ACTOR_OBJ_BANK_TOOLS,
sizeof(BAG1_ACTOR),
&aTBG1_actor_ct,
NONE_ACTOR_PROC,
+1 -1
View File
@@ -16,7 +16,7 @@ ACTOR_PROFILE T_Bag2_Profile = {
ACTOR_PART_BG,
ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_16,
ACTOR_OBJ_BANK_TOOLS,
sizeof(BAG2_ACTOR),
&aTBG2_actor_ct,
NONE_ACTOR_PROC,
+1 -1
View File
@@ -16,7 +16,7 @@ ACTOR_PROFILE T_Biscus1_Profile = {
ACTOR_PART_BG,
ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_16,
ACTOR_OBJ_BANK_TOOLS,
sizeof(BISCUS1_ACTOR),
&aTB1_actor_ct,
NONE_ACTOR_PROC,
+1 -1
View File
@@ -16,7 +16,7 @@ ACTOR_PROFILE T_Biscus2_Profile = {
ACTOR_PART_BG,
ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_16,
ACTOR_OBJ_BANK_TOOLS,
sizeof(BISCUS2_ACTOR),
&aTB2_actor_ct,
NONE_ACTOR_PROC,
+1 -1
View File
@@ -16,7 +16,7 @@ ACTOR_PROFILE T_Biscus3_Profile = {
ACTOR_PART_BG,
ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_16,
ACTOR_OBJ_BANK_TOOLS,
sizeof(BISCUS3_ACTOR),
&aTB3_actor_ct,
NONE_ACTOR_PROC,
+1 -1
View File
@@ -16,7 +16,7 @@ ACTOR_PROFILE T_Biscus4_Profile = {
ACTOR_PART_BG,
ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_16,
ACTOR_OBJ_BANK_TOOLS,
sizeof(BISCUS4_ACTOR),
&aTB4_actor_ct,
NONE_ACTOR_PROC,
+1 -1
View File
@@ -16,7 +16,7 @@ ACTOR_PROFILE T_Cobra1_Profile = {
ACTOR_PART_BG,
ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_16,
ACTOR_OBJ_BANK_TOOLS,
sizeof(COBRA1_ACTOR),
&aTCB1_actor_ct,
NONE_ACTOR_PROC,
+1 -1
View File
@@ -14,7 +14,7 @@ ACTOR_PROFILE T_Cracker_Profile = {
ACTOR_PART_BG,
ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED,
EMPTY_NO,
395, //Leftover from the object table, so this actor doesn't have an object bank
ACTOR_OBJ_BANK_CRACKER,
sizeof(CRACKER_ACTOR),
&aTCR_actor_ct,
NONE_ACTOR_PROC,
+1 -1
View File
@@ -14,7 +14,7 @@ ACTOR_PROFILE T_Hanabi_Profile = {
ACTOR_PART_BG,
ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_53,
ACTOR_OBJ_BANK_HANABI,
sizeof(HANABI_ACTOR),
&aTHB_actor_ct,
&aTHB_actor_dt,
+1 -1
View File
@@ -16,7 +16,7 @@ ACTOR_PROFILE T_Hasu1_Profile = {
ACTOR_PART_BG,
ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_16,
ACTOR_OBJ_BANK_TOOLS,
sizeof(HASU1_ACTOR),
&aTHS1_actor_ct,
NONE_ACTOR_PROC,
+1 -1
View File
@@ -16,7 +16,7 @@ ACTOR_PROFILE T_Hat1_Profile = {
ACTOR_PART_BG,
ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_16,
ACTOR_OBJ_BANK_TOOLS,
sizeof(HAT1_ACTOR),
&aTHT1_actor_ct,
NONE_ACTOR_PROC,
+1 -1
View File
@@ -16,7 +16,7 @@ ACTOR_PROFILE T_Hat2_Profile = {
ACTOR_PART_BG,
ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_16,
ACTOR_OBJ_BANK_TOOLS,
sizeof(HAT2_ACTOR),
&aTHT2_actor_ct,
NONE_ACTOR_PROC,
+1 -1
View File
@@ -16,7 +16,7 @@ ACTOR_PROFILE T_Hat3_Profile = {
ACTOR_PART_BG,
ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_16,
ACTOR_OBJ_BANK_TOOLS,
sizeof(HAT3_ACTOR),
&aTHT3_actor_ct,
NONE_ACTOR_PROC,
+1 -1
View File
@@ -14,7 +14,7 @@ ACTOR_PROFILE T_Pistol_Profile = {
ACTOR_PART_BG,
ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_16,
ACTOR_OBJ_BANK_TOOLS,
sizeof(PISTOL_ACTOR),
&aTPT_actor_ct,
NONE_ACTOR_PROC,
+1 -1
View File
@@ -16,7 +16,7 @@ ACTOR_PROFILE Tools_Profile = {
ACTOR_PART_CONTROL,
ACTOR_STATE_CAN_MOVE_IN_DEMO_SCENES | ACTOR_STATE_NO_MOVE_WHILE_CULLED | ACTOR_STATE_NO_DRAW_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_3,
ACTOR_OBJ_BANK_KEEP,
sizeof(ACTOR),
aTOL_actor_ct,
aTOL_actor_dt,
+1 -1
View File
@@ -17,7 +17,7 @@ ACTOR_PROFILE Train0_Profile = {
ACTOR_PART_ITEM,
ACTOR_STATE_CAN_MOVE_IN_DEMO_SCENES | ACTOR_STATE_TA_SET | ACTOR_STATE_NO_MOVE_WHILE_CULLED,
TRAIN0,
ACTOR_OBJ_BANK_3,
ACTOR_OBJ_BANK_KEEP,
sizeof(TRAIN0_ACTOR),
&aTR0_actor_ct,
&aTR0_actor_dt,
+1 -1
View File
@@ -22,7 +22,7 @@ ACTOR_PROFILE Train1_Profile = {
ACTOR_PART_ITEM,
ACTOR_STATE_CAN_MOVE_IN_DEMO_SCENES | 1 << 11 | ACTOR_STATE_NO_MOVE_WHILE_CULLED, //figure out flag 0x800
TRAIN1,
ACTOR_OBJ_BANK_3,
ACTOR_OBJ_BANK_KEEP,
sizeof(TRAIN1_ACTOR),
&aTR1_actor_ct,
&aTR1_actor_dt,
+1 -1
View File
@@ -14,7 +14,7 @@ ACTOR_PROFILE TrainDoor_Profile = {
ACTOR_PART_BG,
ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED,
TRAIN_DOOR,
ACTOR_OBJ_BANK_11,
ACTOR_OBJ_BANK_TRAINDOOR,
sizeof(TRAINDOOR_ACTOR),
&aTRD_actor_ct,
&aTRD_actor_dt,
+1 -1
View File
@@ -181,7 +181,7 @@ ACTOR_PROFILE Train_Window_Profile = {
ACTOR_PART_ITEM,
ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED,
ETC_TRAIN_WINDOW,
ACTOR_OBJ_BANK_41,
ACTOR_OBJ_BANK_TRAINWINDOW,
sizeof(TRAIN_WINDOW_ACTOR),
&Train_Window_Actor_ct,
&Train_Window_Actor_dt,
+131
View File
@@ -0,0 +1,131 @@
#include "ef_lamp_light.h"
#include "m_field_info.h"
#include "m_lights.h"
#include "m_common_data.h"
#include "m_name_table.h"
static void Ef_Lamp_Light_actor_ct(ACTOR* actor, GAME_PLAY* game);
static void Ef_Lamp_Light_actor_dt(ACTOR* actor, GAME_PLAY* game);
static void Ef_Lamp_Light_actor_move(ACTOR* actor, GAME_PLAY* game);
ACTOR_PROFILE Lamp_Light_Profile = {
mAc_PROFILE_LAMP_LIGHT,
ACTOR_PART_EFFECT,
ACTOR_STATE_NO_MOVE_WHILE_CULLED | ACTOR_STATE_NO_DRAW_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_KEEP,
sizeof(LAMPLIGHT_ACTOR),
(mActor_proc)Ef_Lamp_Light_actor_ct,
(mActor_proc)Ef_Lamp_Light_actor_dt,
(mActor_proc)Ef_Lamp_Light_actor_move,
NONE_ACTOR_PROC,
NULL,
};
static void Ef_Lamp_Light_actor_ct(ACTOR* actor, GAME_PLAY* play) {
LAMPLIGHT_ACTOR* lamp = (LAMPLIGHT_ACTOR*)actor;
play->kankyo.lamp_light = &lamp->lights;
Light_diffuse_ct(&lamp->lights, 0, 0x50, 0, 0, 0, 0);
lamp->node_p = Global_light_list_new(play, &play->global_light, &lamp->lights);
}
static void Ef_Lamp_Light_actor_dt(ACTOR* actor, GAME_PLAY* play) {
LAMPLIGHT_ACTOR* lamp = (LAMPLIGHT_ACTOR*)actor;
play->kankyo.lamp_light = NULL;
Global_light_list_delete(&play->global_light, lamp->node_p);
}
static int eLL_get_light_sw_other_room(){
int ret = 0;
//Not before 6 p.m or past 6 a.m
if((Common_Get(time.now_sec) < 21600) || (Common_Get(time.now_sec) >= 64800)){
ret = 1;
}
return ret;
}
static int eLL_get_light_sw_player_room(){
//6 p.m to 11 p.m
if((Common_Get(time.now_sec) >= 64800 ) && (Common_Get(time.now_sec) < 82800)){
return 1;
}
return 0;
}
static int eLL_get_light_sw_start_demo(){
int ret = 1;
if(Common_Get(sunlight_flag) == 1){
ret = 0;
}
return ret;
}
static void eLL_ctrl_light_sw(LAMPLIGHT_ACTOR* lamp) {
int ret = 0;
switch (Common_Get(field_type)) {
case 2:
case 3:
switch (mFI_GetFieldId()) {
case mFI_FIELD_PLAYER0_ROOM:
case mFI_FIELD_PLAYER1_ROOM:
case mFI_FIELD_PLAYER2_ROOM:
case mFI_FIELD_PLAYER3_ROOM:
ret = eLL_get_light_sw_player_room(lamp);
break;
case mFI_FIELD_DEMO_STARTDEMO:
case mFI_FIELD_DEMO_STARTDEMO2:
ret = eLL_get_light_sw_start_demo();
break;
default:
ret = eLL_get_light_sw_other_room();
break;
}
break;
case 1:
ret = eLL_get_light_sw_player_room(lamp);
break;
}
lamp->switch_type = ret;
}
static void Ef_Lamp_Light_actor_move(ACTOR* actor, GAME_PLAY* play) {
static s16 add_data_off[] = {2, 2, 1, 0};
static s16 add_data_on[] = {16, 16, 8, 0};
static s16* add_data[] = { add_data_off, add_data_on};
static s16 cmp_data_off[] = { 0, 0, 0, 0 };
static s16 cmp_data_on[] = { 0xC8, 0xC8, 0x96, 0 };
static s16* cmp_data[] = { cmp_data_off, cmp_data_on};
LAMPLIGHT_ACTOR* lamp = (LAMPLIGHT_ACTOR*)actor;
s16 val;
u8* color;
s16* add;
int type;
s16* cmp;
int i;
eLL_ctrl_light_sw(lamp);
color = lamp->lights.lights.diffuse.color;
type = lamp->switch_type;
add = add_data[type];
cmp = cmp_data[type];
for (i = 0; i < 3; i++, add++, cmp++, color++) {
val = *color;
chase_s(&val, *cmp, (0.5f * *add));
*color = val;
}
}
+216
View File
@@ -0,0 +1,216 @@
#include "ef_room_sunshine.h"
#include "m_common_data.h"
#include "m_name_table.h"
#include "m_debug.h"
#include "m_collision_bg.h"
#include "sys_matrix.h"
void Ef_Room_Sunshine_actor_ct(ACTOR* actor, GAME* play);
void Ef_Room_SunshineL_actor_move(ACTOR* actor, GAME* play);
void Ef_Room_SunshineL_actor_draw(ACTOR* actor, GAME* play);
void Ef_Room_SunshineR_actor_move(ACTOR* actor, GAME* play);
void Ef_Room_SunshineR_actor_draw(ACTOR* actor, GAME* play);
extern Gfx light_floor01_mode[];
extern Vtx light_floorL01_vtx[];
extern Vtx light_floorR01_vtx[];
extern Gfx light_shine01_mode[];
extern Vtx light_shineL01_vtx[];
extern Vtx light_shineR01_vtx[];
ACTOR_PROFILE Room_Sunshine_Profile = {
mAc_PROFILE_ROOM_SUNSHINE,
ACTOR_PART_EFFECT,
ACTOR_STATE_NO_MOVE_WHILE_CULLED | ACTOR_STATE_NO_DRAW_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_ROOM_SUNSHINE,
sizeof(ROOMSUNSHINE_ACTOR),
Ef_Room_Sunshine_actor_ct,
NONE_ACTOR_PROC,
Ef_Room_SunshineR_actor_move,
Ef_Room_SunshineR_actor_draw,
NULL,
};
void Ef_Room_Sunshine_actor_ct(ACTOR* actor, GAME* game){
ROOMSUNSHINE_ACTOR* sunshine = (ROOMSUNSHINE_ACTOR*)actor;
xyz_t pos;
xyz_t pos2;
xyz_t pos3;
sunshine->unk_174 = 0;
if(sunshine->actor_class.actor_specific == 0){
sunshine->actor_class.mv_proc = Ef_Room_SunshineL_actor_move;
sunshine->actor_class.dw_proc = Ef_Room_SunshineL_actor_draw;
}
else{
sunshine->actor_class.world.position.x -= 1.0f;
}
pos = sunshine->actor_class.world.position;
sunshine->actor_class.world.position.y = mCoBG_GetBgY_OnlyCenter_FromWpos(0.0f, &pos);
sunshine->actor_class.scale.x = 1.0f;
sunshine->actor_class.scale.y = 1.0f;
sunshine->actor_class.scale.z = 1.0f;
switch(sunshine->actor_class.actor_specific){
case 2:
sunshine->actor_class.mv_proc = Ef_Room_SunshineL_actor_move;
sunshine->actor_class.dw_proc = Ef_Room_SunshineL_actor_draw;
sunshine->actor_class.world.position.x += 5.0f;
pos2 = sunshine->actor_class.world.position;
sunshine->actor_class.world.position.y = 1.0f + mCoBG_GetBgY_OnlyCenter_FromWpos(0.0f, &pos2);
sunshine->actor_class.world.position.x -= 6.0f;
break;
case 3:
sunshine->actor_class.world.position.x -= 5.0f;
pos3 = sunshine->actor_class.world.position;
sunshine->actor_class.world.position.y = 1.0f + mCoBG_GetBgY_OnlyCenter_FromWpos(0.0f, &pos3);
sunshine->actor_class.world.position.x += 6.0f;
break;
}
}
f32 calc_scale_Ef_Room_Sunshine(int flag, int sec){
if(flag == 0){
return 1.5f * sin_s((sec << 14) / 28800.0f);
}
else{
return 1.5f * sin_s((sec << 14) / 14400.0f);
}
}
int calc_alpha_Ef_Room_Sunshine(){
f32 ret;
int sec;
if(Common_Get(time.now_sec) < 14400){
ret = (120.0f + GETREG(TAKREG,30)) * ((14400 - Common_Get(time.now_sec)) / 14400.0f);
}
else if(Common_Get(time.now_sec) < 72000){
sec = (Common_Get(time.now_sec) - 43200) >= 0 ?
(Common_Get(time.now_sec) - 43200U) : -(Common_Get(time.now_sec) - 43200U);
ret = 255.0f * ((28800 - sec) / 28800.0f);
}
else{
ret = (120.0f + GETREG(TAKREG,30)) * ((14400 - (86400 - Common_Get(time.now_sec))) / 14400.0f);
}
if((Common_Get(weather) == 1) || (Common_Get(weather) == 2)){
ret *= 0.6f;
}
return (u8)ret;
}
void Ef_Room_SunshineL_actor_move(ACTOR* actor, GAME* game){
ROOMSUNSHINE_ACTOR* sunshine = (ROOMSUNSHINE_ACTOR*)actor;
if(Common_Get(time.now_sec) < 14400){
sunshine->actor_class.scale.x = calc_scale_Ef_Room_Sunshine(1, Common_Get(time.now_sec));
}
else if ((Common_Get(time.now_sec) >= 43200) && (Common_Get(time.now_sec) < 72000)){
sunshine->actor_class.scale.x = calc_scale_Ef_Room_Sunshine(0, Common_Get(time.now_sec) - 43200);
}
else{
sunshine->actor_class.scale.x = 0.0f;
}
}
void Ef_Room_SunshineR_actor_move(ACTOR* actor, GAME* game){
ROOMSUNSHINE_ACTOR* sunshine = (ROOMSUNSHINE_ACTOR*)actor;
if((Common_Get(time.now_sec) >= 14400) && (Common_Get(time.now_sec) < 43200)){
sunshine->actor_class.scale.x = calc_scale_Ef_Room_Sunshine(0, 43200 - Common_Get(time.now_sec));
}
else if (Common_Get(time.now_sec) >= 72000){
sunshine->actor_class.scale.x = calc_scale_Ef_Room_Sunshine(1, 86400 -Common_Get(time.now_sec));
}
else{
sunshine->actor_class.scale.x = 0.0f;
}
}
void setup_mode_Ef_Room_Sunshine(ACTOR* actor, GAME_PLAY* play){
ROOMSUNSHINE_ACTOR* sunshine = (ROOMSUNSHINE_ACTOR*)actor;
u8* color;
f32 alpha;
GRAPH* graph = play->game.graph;
OPEN_DISP(graph);
Matrix_translate(sunshine->actor_class.world.position.x, 0.1f +sunshine->actor_class.world.position.y,
sunshine->actor_class.world.position.z, 0);
Matrix_scale(sunshine->actor_class.scale.x, sunshine->actor_class.scale.y, sunshine->actor_class.scale.z,1);
gDPPipeSync(NEXT_POLY_XLU_DISP);
gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(play->game.graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
if((Common_Get(time.now_sec) >= 14400) && (Common_Get(time.now_sec) < 72000)){
color =play->kankyo.base_light.sun_color_window;
}
else{
color =play->kankyo.base_light.moon_color_window;
}
alpha = (u8)calc_alpha_Ef_Room_Sunshine() * mKK_windowlight_alpha_get();
gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0,0, color[0], color[1], color[2], (int)(alpha));
CLOSE_DISP(graph);
}
void Ef_Room_SunshineL_actor_draw(ACTOR* actor, GAME* game){
GAME_PLAY* play = (GAME_PLAY*)game;
GRAPH* graph;
if((mKK_windowlight_alpha_get() < 9.99999974738e-05f) || (actor->scale.x == 0.0f)){
return;
}
graph = play->game.graph;
setup_mode_Ef_Room_Sunshine(actor, play);
OPEN_DISP(graph);
gSPDisplayList(NEXT_POLY_XLU_DISP, light_floor01_mode);
gSPDisplayList(NEXT_POLY_XLU_DISP, light_floorL01_vtx);
gSPDisplayList(NEXT_POLY_XLU_DISP, light_shine01_mode);
gSPDisplayList(NEXT_POLY_XLU_DISP, light_shineL01_vtx);
CLOSE_DISP(graph);
}
void Ef_Room_SunshineR_actor_draw(ACTOR* actor, GAME* game){
GAME_PLAY* play = (GAME_PLAY*)game;
GRAPH* graph;
if((mKK_windowlight_alpha_get() < 9.99999974738e-05f) || (actor->scale.x == 0.0f)){
return;
}
graph = play->game.graph;
setup_mode_Ef_Room_Sunshine(actor, play);
OPEN_DISP(graph);
gSPDisplayList(NEXT_POLY_XLU_DISP, light_floor01_mode);
gSPDisplayList(NEXT_POLY_XLU_DISP, light_floorR01_vtx);
gSPDisplayList(NEXT_POLY_XLU_DISP, light_shine01_mode);
gSPDisplayList(NEXT_POLY_XLU_DISP, light_shineR01_vtx);
CLOSE_DISP(graph);
}
+323
View File
@@ -0,0 +1,323 @@
#include "ef_room_sunshine_minsect.h"
#include "m_common_data.h"
#include "m_name_table.h"
#include "m_debug.h"
#include "m_collision_bg.h"
#include "sys_matrix.h"
void Ef_Room_Sunshine_Minsect_actor_ct(ACTOR* actor, GAME* play);
void Ef_Room_Sunshine_Minsect_actor_dt(ACTOR* actor, GAME* play);
void Ef_Room_Sunshine_MinsectL_actor_draw(ACTOR* actor, GAME* play);
void Ef_Room_Sunshine_MinsectL_actor_move(ACTOR* actor, GAME* play);
void Ef_Room_Sunshine_MinsectR_actor_draw(ACTOR* actor, GAME* play);
void Ef_Room_Sunshine_MinsectR_actor_move(ACTOR* actor, GAME* play);
extern Gfx rom_museum4_ue_model[];
extern Gfx rom_museum4_model[];
extern Gfx obj_museum4_shine_1T_model[];
extern Gfx obj_museum4_shine_2T_model[];
u8 draw_status;
ACTOR_PROFILE Room_Sunshine_Minsect_Profile = {
mAc_PROFILE_ROOM_SUNSHINE_MINSECT,
ACTOR_PART_ITEM,
ACTOR_STATE_NO_MOVE_WHILE_CULLED | ACTOR_STATE_NO_DRAW_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_EF_MINSECT,
sizeof(ROOMSUNSHINEMINSECT_ACTOR),
Ef_Room_Sunshine_Minsect_actor_ct,
NONE_ACTOR_PROC,
Ef_Room_Sunshine_MinsectR_actor_move,
Ef_Room_Sunshine_MinsectR_actor_draw,
NULL,
};
void Ef_Room_Sunshine_Minsect_actor_ct(ACTOR* actor, GAME* game){
ROOMSUNSHINEMINSECT_ACTOR* minsect = (ROOMSUNSHINEMINSECT_ACTOR*)actor;
xyz_t pos;
minsect->ef_sunshine_class.unk_174 = 0;
draw_status = 0;
if(minsect->ef_sunshine_class.actor_class.actor_specific == 0){
minsect->ef_sunshine_class.actor_class.mv_proc = Ef_Room_Sunshine_MinsectL_actor_move;
minsect->ef_sunshine_class.actor_class.dw_proc = Ef_Room_Sunshine_MinsectL_actor_draw;
}
else{
minsect->ef_sunshine_class.actor_class.world.position.x -= 1.0f;
}
pos = minsect->ef_sunshine_class.actor_class.world.position;
minsect->ef_sunshine_class.actor_class.world.position.y = mCoBG_GetBgY_OnlyCenter_FromWpos(0.0f, &pos);
minsect->ef_sunshine_class.actor_class.scale.x = 0.01f;
minsect->ef_sunshine_class.actor_class.scale.y = 0.01f;
minsect->ef_sunshine_class.actor_class.scale.z = 0.01f;
minsect->ef_sunshine_class.actor_class.cull_radius = 10000.0f;
switch(minsect->ef_sunshine_class.actor_class.actor_specific){
case 2:
minsect->ef_sunshine_class.actor_class.mv_proc = Ef_Room_Sunshine_MinsectL_actor_move;
minsect->ef_sunshine_class.actor_class.dw_proc = Ef_Room_Sunshine_MinsectL_actor_draw;
minsect->ef_sunshine_class.actor_class.world.position.x += 5.0f;
minsect->ef_sunshine_class.actor_class.world.position.x -= 6.0f;
break;
case 3:
minsect->ef_sunshine_class.actor_class.world.position.x -= 5.0f;
minsect->ef_sunshine_class.actor_class.world.position.x += 6.0f;
break;
}
}
f32 calc_scale_Ef_Room_Sunshine_Minsect(int flag, int sec){
if(flag == 0){
return 0.01f * (1.5f * sin_s((sec << 14) / 28800.0f));
}
else{
return 0.01f * (1.5f * sin_s((sec << 14) / 14400.0f));
}
}
int calc_alpha_Ef_Room_SunshineMinsect(){
f32 ret;
int sec;
if(Common_Get(time.now_sec) < 14400){
ret = 120.0f * ((14400 - Common_Get(time.now_sec)) / 14400.0f);
}
else if(Common_Get(time.now_sec) < 72000){
//any other number matches codegen, but 43200 breaks
sec = (Common_Get(time.now_sec) - 43200) >= 0 ?
(Common_Get(time.now_sec) - 43200U) : -(Common_Get(time.now_sec) - 43200U);
ret = 255.0f * ((28800 - sec) / 28800.0f);
}
else{
ret = 120.0f * ((14400 - (86400 - Common_Get(time.now_sec))) / 14400.0f);
}
if((Common_Get(weather) == 1) || (Common_Get(weather) == 2)){
ret *= 0.6f;
}
return (u8)ret;
}
void Ef_Room_Sunshine_MinsectL_actor_move(ACTOR* actor, GAME* game){
ROOMSUNSHINEMINSECT_ACTOR* minsect = (ROOMSUNSHINEMINSECT_ACTOR*)actor;
if(Common_Get(time.now_sec) < 14400){
minsect->ef_sunshine_class.actor_class.scale.x = calc_scale_Ef_Room_Sunshine_Minsect(1, Common_Get(time.now_sec));
}
else if ((Common_Get(time.now_sec) >= 43200) && (Common_Get(time.now_sec) < 72000)){
minsect->ef_sunshine_class.actor_class.scale.x = calc_scale_Ef_Room_Sunshine_Minsect(0, Common_Get(time.now_sec) - 43200);
}
else{
minsect->ef_sunshine_class.actor_class.scale.x = 0.0f;
}
minsect->ef_sunshine_class.actor_class.world.position.y = minsect->ef_sunshine_class.actor_class.home.position.y;
minsect->ef_sunshine_class.actor_class.world.position.y += 0.01f * GETREG(TAKREG,64);
}
void Ef_Room_Sunshine_MinsectR_actor_move(ACTOR* actor, GAME* game){
ROOMSUNSHINEMINSECT_ACTOR* minsect = (ROOMSUNSHINEMINSECT_ACTOR*)actor;
if((Common_Get(time.now_sec) >= 14400) && (Common_Get(time.now_sec) < 43200)){
minsect->ef_sunshine_class.actor_class.scale.x = -calc_scale_Ef_Room_Sunshine_Minsect(0, 43200 - Common_Get(time.now_sec));
}
else if (Common_Get(time.now_sec) >= 72000){
minsect->ef_sunshine_class.actor_class.scale.x = -calc_scale_Ef_Room_Sunshine_Minsect(1, 86400 -Common_Get(time.now_sec));
}
else{
minsect->ef_sunshine_class.actor_class.scale.x = 0.0f;
}
minsect->ef_sunshine_class.actor_class.world.position.y = minsect->ef_sunshine_class.actor_class.home.position.y;
minsect->ef_sunshine_class.actor_class.world.position.y += 0.01f * GETREG(TAKREG,64);
}
void setup_mode_Ef_Room_Sunshine_Minsect(ACTOR* actor, GAME_PLAY* play){
ROOMSUNSHINE_ACTOR* sunshine = (ROOMSUNSHINE_ACTOR*)actor;
u8* color;
int calc;
GRAPH* graph = play->game.graph;
OPEN_DISP(graph);
Matrix_translate(sunshine->actor_class.world.position.x, sunshine->actor_class.world.position.y,
sunshine->actor_class.world.position.z, 0);
Matrix_scale(sunshine->actor_class.scale.x, sunshine->actor_class.scale.y, sunshine->actor_class.scale.z,1);
gDPPipeSync(NEXT_POLY_XLU_DISP);
gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(play->game.graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
if((Common_Get(time.now_sec) >= 14400) && (Common_Get(time.now_sec) < 72000)){
color =play->kankyo.base_light.sun_color_window;
}
else{
color =play->kankyo.base_light.moon_color_window;
}
calc = ((u8)calc_alpha_Ef_Room_SunshineMinsect() * mKK_windowlight_alpha_get());
gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0, calc, color[0], color[1], color[2], 75);
CLOSE_DISP(graph);
}
void setup_mode_Ef_Room_Sunshine_Minsect_decal(ACTOR* actor, GAME_PLAY* play){
ROOMSUNSHINE_ACTOR* sunshine = (ROOMSUNSHINE_ACTOR*)actor;
u8* color;
int calc;
GRAPH* graph = play->game.graph;
OPEN_DISP(graph);
Matrix_translate(sunshine->actor_class.world.position.x, sunshine->actor_class.world.position.y,
sunshine->actor_class.world.position.z, 0);
Matrix_scale(sunshine->actor_class.scale.x, sunshine->actor_class.scale.y, sunshine->actor_class.scale.z,1);
gDPPipeSync(NEXT_POLY_OPA_DISP);
gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(play->game.graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
if((Common_Get(time.now_sec) >= 14400) && (Common_Get(time.now_sec) < 72000)){
color =play->kankyo.base_light.sun_color_window;
}
else{
color =play->kankyo.base_light.moon_color_window;
}
calc = ((u8)calc_alpha_Ef_Room_SunshineMinsect() * mKK_windowlight_alpha_get());
gDPSetPrimColor(NEXT_POLY_OPA_DISP, 0, calc, color[0], color[1], color[2], 75);
CLOSE_DISP(graph);
}
void BG_draw_Minsect(ACTOR* actor, GAME_PLAY* play){
GRAPH* graph;
if(!(draw_status & 4)){
draw_status |= 4;
}
if((draw_status & 1) && (draw_status & 2)){
draw_status = 0;
}
graph = play->game.graph;
Matrix_scale(0.0625f, 0.0625f, 0.0625f, 0);
Global_kankyo_set_room_prim(play);
OPEN_DISP(graph);
gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(play->game.graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(NEXT_POLY_OPA_DISP, rom_museum4_ue_model);
CLOSE_DISP(graph);
}
void BG_draw_Minsect_niwa(ACTOR* actor, GAME_PLAY* play){
GRAPH* graph;
graph = play->game.graph;
Matrix_scale(0.0625f, 0.0625f, 0.0625f, 0);
Global_kankyo_set_room_prim(play);
OPEN_DISP(graph);
gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(play->game.graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(NEXT_POLY_OPA_DISP, rom_museum4_model);
CLOSE_DISP(graph);
}
void Ef_Room_Sunshine_MinsectL_actor_draw(ACTOR* actor, GAME* game){
GRAPH* graph;
_texture_z_light_fog_prim(game->graph);
_texture_z_light_fog_prim_shadow(game->graph);
_texture_z_light_fog_prim_xlu(game->graph);
draw_status |= 1;
if(mKK_windowlight_alpha_get() < 9.99999974738e-05f){
if ((draw_status & 1) && (draw_status & 2) && !(draw_status & 4)){
BG_draw_Minsect_niwa(actor,(GAME_PLAY*)game);
BG_draw_Minsect(actor,(GAME_PLAY*)game);
}
}
else if(0.0f == actor->scale.x){
if ((draw_status & 1) && (draw_status & 2) && !(draw_status & 4)){
BG_draw_Minsect_niwa(actor,(GAME_PLAY*)game);
BG_draw_Minsect(actor,(GAME_PLAY*)game);
}
}
else{
s16 reg;
graph = game->graph;
BG_draw_Minsect_niwa(actor,(GAME_PLAY*)game);
setup_mode_Ef_Room_Sunshine_Minsect(actor,(GAME_PLAY*)game);
OPEN_DISP(graph);
gSPDisplayList(NEXT_POLY_XLU_DISP, obj_museum4_shine_1T_model);
setup_mode_Ef_Room_Sunshine_Minsect_decal(actor,(GAME_PLAY*)game);
if(REGADDR(TAKREG, 0) == 0){
gSPDisplayList(NEXT_POLY_OPA_DISP, obj_museum4_shine_2T_model);
}
BG_draw_Minsect(actor,(GAME_PLAY*)game);
CLOSE_DISP(graph);
}
}
void Ef_Room_Sunshine_MinsectR_actor_draw(ACTOR* actor, GAME* game){
GRAPH* graph;
_texture_z_light_fog_prim(game->graph);
_texture_z_light_fog_prim_shadow(game->graph);
_texture_z_light_fog_prim_xlu(game->graph);
draw_status |= 2;
if(mKK_windowlight_alpha_get() < 9.99999974738e-05f){
if ((draw_status & 1) && (draw_status & 2) && !(draw_status & 4)){
BG_draw_Minsect_niwa(actor,(GAME_PLAY*)game);
BG_draw_Minsect(actor,(GAME_PLAY*)game);
}
}
else if(0.0f == actor->scale.x){
if ((draw_status & 1) && (draw_status & 2) && !(draw_status & 4)){
BG_draw_Minsect_niwa(actor,(GAME_PLAY*)game);
BG_draw_Minsect(actor,(GAME_PLAY*)game);
}
}
else{
graph = game->graph;
BG_draw_Minsect_niwa(actor,(GAME_PLAY*)game);
setup_mode_Ef_Room_Sunshine_Minsect(actor,(GAME_PLAY*)game);
OPEN_DISP(graph);
gSPDisplayList(NEXT_POLY_XLU_DISP, obj_museum4_shine_1T_model);
setup_mode_Ef_Room_Sunshine_Minsect_decal(actor,(GAME_PLAY*)game);
if(REGADDR(TAKREG, 0) == 0){
gSPDisplayList(NEXT_POLY_OPA_DISP, obj_museum4_shine_2T_model);
}
BG_draw_Minsect(actor,(GAME_PLAY*)game);
CLOSE_DISP(graph);
}
}
+209
View File
@@ -0,0 +1,209 @@
#include "ef_room_sunshine_museum.h"
#include "m_common_data.h"
#include "m_name_table.h"
#include "m_debug.h"
#include "m_collision_bg.h"
#include "sys_matrix.h"
void Ef_Room_Sunshine_Museum_actor_ct(ACTOR* actor, GAME* play);
void Ef_Room_Sunshine_Museum_actor_dt(ACTOR* actor, GAME* play);
void Ef_Room_Sunshine_MuseumL_actor_draw(ACTOR* actor, GAME* play);
void Ef_Room_Sunshine_MuseumL_actor_move(ACTOR* actor, GAME* play);
void Ef_Room_Sunshine_MuseumR_actor_draw(ACTOR* actor, GAME* play);
void Ef_Room_Sunshine_MuseumR_actor_move(ACTOR* actor, GAME* play);
extern Gfx obj_museum1_shine_model[];
extern Gfx obj_museum1_shine_modelT[];
ACTOR_PROFILE Room_Sunshine_Museum_Profile = {
mAc_PROFILE_ROOM_SUNSHINE_MUSEUM,
ACTOR_PART_EFFECT,
ACTOR_STATE_NO_MOVE_WHILE_CULLED | ACTOR_STATE_NO_DRAW_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_EF_MUSEUM,
sizeof(ROOMSUNSHINEMUSEUM_ACTOR),
Ef_Room_Sunshine_Museum_actor_ct,
NONE_ACTOR_PROC,
Ef_Room_Sunshine_MuseumR_actor_move,
Ef_Room_Sunshine_MuseumR_actor_draw,
NULL,
};
void Ef_Room_Sunshine_Museum_actor_ct(ACTOR* actor, GAME* game){
ROOMSUNSHINEMUSEUM_ACTOR* museum = (ROOMSUNSHINEMUSEUM_ACTOR*)actor;
xyz_t pos;
xyz_t pos2;
xyz_t pos3;
museum->ef_sunshine_class.unk_174 = 0;
if(museum->ef_sunshine_class.actor_class.actor_specific == 0){
museum->ef_sunshine_class.actor_class.mv_proc = Ef_Room_Sunshine_MuseumL_actor_move;
museum->ef_sunshine_class.actor_class.dw_proc = Ef_Room_Sunshine_MuseumL_actor_draw;
}
else{
museum->ef_sunshine_class.actor_class.world.position.x -= 1.0f;
}
pos = museum->ef_sunshine_class.actor_class.world.position;
museum->ef_sunshine_class.actor_class.world.position.y = mCoBG_GetBgY_OnlyCenter_FromWpos(0.0f, &pos);
museum->ef_sunshine_class.actor_class.scale.x = 0.01f;
museum->ef_sunshine_class.actor_class.scale.y = 0.01f;
museum->ef_sunshine_class.actor_class.scale.z = 0.01f;
switch(museum->ef_sunshine_class.actor_class.actor_specific){
case 2:
museum->ef_sunshine_class.actor_class.mv_proc = Ef_Room_Sunshine_MuseumL_actor_move;
museum->ef_sunshine_class.actor_class.dw_proc = Ef_Room_Sunshine_MuseumL_actor_draw;
museum->ef_sunshine_class.actor_class.world.position.x += 5.0f;
pos2 = museum->ef_sunshine_class.actor_class.world.position;
museum->ef_sunshine_class.actor_class.world.position.y = 1.0f + mCoBG_GetBgY_OnlyCenter_FromWpos(0.0f, &pos2) - 40.0f;
museum->ef_sunshine_class.actor_class.world.position.x -= 6.0f;
break;
case 3:
museum->ef_sunshine_class.actor_class.world.position.x -= 5.0f;
pos3 = museum->ef_sunshine_class.actor_class.world.position;
museum->ef_sunshine_class.actor_class.world.position.y = 1.0f + mCoBG_GetBgY_OnlyCenter_FromWpos(0.0f, &pos3) - 40.0f;
museum->ef_sunshine_class.actor_class.world.position.x += 6.0f;
break;
}
}
f32 calc_scale_Ef_Room_Sunshine_Museum(int flag, int sec){
if(flag == 0){
return 0.01f * (1.5f * sin_s((sec << 14) / 28800.0f));
}
else{
return 0.01f * (1.5f * sin_s((sec << 14) / 14400.0f));
}
}
int calc_alpha_Ef_Room_SunshineMuseum(){
f32 ret;
int sec;
if(Common_Get(time.now_sec) < 14400){
ret = 120.0f * ((14400 - Common_Get(time.now_sec)) / 14400.0f);
}
else if(Common_Get(time.now_sec) < 72000){
//any other number matches codegen, but 43200 breaks
sec = (Common_Get(time.now_sec) - 43200) >= 0 ?
(Common_Get(time.now_sec) - 43200U) : -(Common_Get(time.now_sec) - 43200U);
ret = 255.0f * ((28800 - sec) / 28800.0f);
}
else{
ret = 120.0f * ((14400 - (86400 - Common_Get(time.now_sec))) / 14400.0f);
}
if((Common_Get(weather) == 1) || (Common_Get(weather) == 2)){
ret *= 0.6f;
}
return (u8)ret;
}
void Ef_Room_Sunshine_MuseumL_actor_move(ACTOR* actor, GAME* game){
ROOMSUNSHINEMUSEUM_ACTOR* museum = (ROOMSUNSHINEMUSEUM_ACTOR*)actor;
if(Common_Get(time.now_sec) < 14400){
museum->ef_sunshine_class.actor_class.scale.x = calc_scale_Ef_Room_Sunshine_Museum(1, Common_Get(time.now_sec));
}
else if ((Common_Get(time.now_sec) >= 43200) && (Common_Get(time.now_sec) < 72000)){
museum->ef_sunshine_class.actor_class.scale.x = calc_scale_Ef_Room_Sunshine_Museum(0, Common_Get(time.now_sec) - 43200);
}
else{
museum->ef_sunshine_class.actor_class.scale.x = 0.0f;
}
}
void Ef_Room_Sunshine_MuseumR_actor_move(ACTOR* actor, GAME* game){
ROOMSUNSHINEMUSEUM_ACTOR* museum = (ROOMSUNSHINEMUSEUM_ACTOR*)actor;
if((Common_Get(time.now_sec) >= 14400) && (Common_Get(time.now_sec) < 43200)){
museum->ef_sunshine_class.actor_class.scale.x = -calc_scale_Ef_Room_Sunshine_Museum(0, 43200 - Common_Get(time.now_sec));
}
else if (Common_Get(time.now_sec) >= 72000){
museum->ef_sunshine_class.actor_class.scale.x = -calc_scale_Ef_Room_Sunshine_Museum(1, 86400 -Common_Get(time.now_sec));
}
else{
museum->ef_sunshine_class.actor_class.scale.x = 0.0f;
}
}
void setup_mode_Ef_Room_Sunshine_Museum(ACTOR* actor, GAME_PLAY* play){
ROOMSUNSHINE_ACTOR* sunshine = (ROOMSUNSHINE_ACTOR*)actor;
u8* color;
int calc;
GRAPH* graph = play->game.graph;
OPEN_DISP(graph);
Matrix_translate(sunshine->actor_class.world.position.x + GETREG(TAKREG,20), sunshine->actor_class.world.position.y + GETREG(TAKREG,21),
sunshine->actor_class.world.position.z + GETREG(TAKREG,22), 0);
Matrix_scale(sunshine->actor_class.scale.x, sunshine->actor_class.scale.y, sunshine->actor_class.scale.z,1);
gDPPipeSync(NEXT_POLY_XLU_DISP);
gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(play->game.graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
if((Common_Get(time.now_sec) >= 14400) && (Common_Get(time.now_sec) < 72000)){
color =play->kankyo.base_light.sun_color_window;
}
else{
color =play->kankyo.base_light.moon_color_window;
}
calc = ((u8)calc_alpha_Ef_Room_SunshineMuseum() * mKK_windowlight_alpha_get());
gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0, calc, color[0], color[1], color[2], 75);
CLOSE_DISP(graph);
}
void Ef_Room_Sunshine_MuseumL_actor_draw(ACTOR* actor, GAME* game){
GRAPH* graph;
GAME_PLAY* play = (GAME_PLAY*)game;
if(!(mKK_windowlight_alpha_get() < 9.99999974738e-05f) && (actor->scale.x != 0.0f)){
graph = play->game.graph;
setup_mode_Ef_Room_Sunshine_Museum(actor, play);
OPEN_DISP(graph);
gSPDisplayList(NEXT_POLY_XLU_DISP, obj_museum1_shine_model);
gSPDisplayList(NEXT_POLY_XLU_DISP, obj_museum1_shine_modelT);
CLOSE_DISP(graph);
}
}
void Ef_Room_Sunshine_MuseumR_actor_draw(ACTOR* actor, GAME* game){
GRAPH* graph;
GAME_PLAY* play = (GAME_PLAY*)game;
if(!(mKK_windowlight_alpha_get() < 9.99999974738e-05f) && (actor->scale.x != 0.0f)){
graph = play->game.graph;
setup_mode_Ef_Room_Sunshine_Museum(actor, play);
OPEN_DISP(graph);
gSPDisplayList(NEXT_POLY_XLU_DISP, obj_museum1_shine_model);
gSPDisplayList(NEXT_POLY_XLU_DISP, obj_museum1_shine_modelT);
CLOSE_DISP(graph);
}
}
+220
View File
@@ -0,0 +1,220 @@
#include "ef_room_sunshine_police.h"
#include "m_common_data.h"
#include "m_name_table.h"
#include "m_debug.h"
#include "m_collision_bg.h"
#include "sys_matrix.h"
void Ef_Room_Sunshine_Police_actor_ct(ACTOR* actor, GAME* play);
void Ef_Room_Sunshine_Police_actor_dt(ACTOR* actor, GAME* play);
void Ef_Room_Sunshine_PoliceL_actor_draw(ACTOR* actor, GAME* play);
void Ef_Room_Sunshine_PoliceL_actor_move(ACTOR* actor, GAME* play);
void Ef_Room_Sunshine_PoliceR_actor_draw(ACTOR* actor, GAME* play);
void Ef_Room_Sunshine_PoliceR_actor_move(ACTOR* actor, GAME* play);
extern Gfx obj_koban_shine_modelT[];
ACTOR_PROFILE Room_Sunshine_Police_Profile = {
mAc_PROFILE_ROOM_SUNSHINE_POLICE,
ACTOR_PART_EFFECT,
ACTOR_STATE_NO_MOVE_WHILE_CULLED | ACTOR_STATE_NO_DRAW_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_EF_POLICE,
sizeof(ROOMSUNSHINEPOLICE_ACTOR),
Ef_Room_Sunshine_Police_actor_ct,
NONE_ACTOR_PROC,
Ef_Room_Sunshine_PoliceR_actor_move,
Ef_Room_Sunshine_PoliceR_actor_draw,
NULL,
};
void Ef_Room_Sunshine_Police_actor_ct(ACTOR* actor, GAME* game){
ROOMSUNSHINEPOLICE_ACTOR* police = (ROOMSUNSHINEPOLICE_ACTOR*)actor;
xyz_t pos;
xyz_t pos2;
xyz_t pos3;
police->ef_sunshine_class.unk_174 = 0;
if(police->ef_sunshine_class.actor_class.actor_specific == 0){
police->ef_sunshine_class.actor_class.mv_proc = Ef_Room_Sunshine_PoliceL_actor_move;
police->ef_sunshine_class.actor_class.dw_proc = Ef_Room_Sunshine_PoliceL_actor_draw;
}
else{
police->ef_sunshine_class.actor_class.world.position.x -= 1.0f;
}
pos = police->ef_sunshine_class.actor_class.world.position;
police->ef_sunshine_class.actor_class.world.position.y = mCoBG_GetBgY_OnlyCenter_FromWpos(0.0f, &pos);
police->ef_sunshine_class.actor_class.scale.x = 0.01f;
police->ef_sunshine_class.actor_class.scale.y = 0.01f;
police->ef_sunshine_class.actor_class.scale.z = 0.01f;
switch(police->ef_sunshine_class.actor_class.actor_specific){
case 2:
police->ef_sunshine_class.actor_class.mv_proc = Ef_Room_Sunshine_PoliceL_actor_move;
police->ef_sunshine_class.actor_class.dw_proc = Ef_Room_Sunshine_PoliceL_actor_draw;
police->ef_sunshine_class.actor_class.world.position.x += 5.0f;
pos2 = police->ef_sunshine_class.actor_class.world.position;
police->ef_sunshine_class.actor_class.world.position.y = 1.0f + mCoBG_GetBgY_OnlyCenter_FromWpos(0.0f, &pos2) - 40.0f;
police->ef_sunshine_class.actor_class.world.position.x -= 6.0f;
break;
case 3:
police->ef_sunshine_class.actor_class.world.position.x -= 5.0f;
pos3 = police->ef_sunshine_class.actor_class.world.position;
police->ef_sunshine_class.actor_class.world.position.y = 1.0f + mCoBG_GetBgY_OnlyCenter_FromWpos(0.0f, &pos3) - 40.0f;
police->ef_sunshine_class.actor_class.world.position.x += 6.0f;
break;
}
}
f32 calc_scale_Ef_Room_Sunshine_Police(int flag, int sec){
if(flag == 0){
return 0.01f * (1.5f * sin_s((sec << 14) / 28800.0f));
}
else{
return 0.01f * (1.5f * sin_s((sec << 14) / 14400.0f));
}
}
int calc_alpha_Ef_Room_SunshinePolice(){
f32 ret;
int sec;
if(Common_Get(time.now_sec) < 14400){
ret = 120.0f * ((14400 - Common_Get(time.now_sec)) / 14400.0f);
}
else if(Common_Get(time.now_sec) < 72000){
sec = (Common_Get(time.now_sec) - 43200) >= 0 ?
(Common_Get(time.now_sec) - 43200U) : -(Common_Get(time.now_sec) - 43200U);
ret = 255.0f * ((28800 - sec) / 28800.0f);
}
else{
ret = 120.0f * ((14400 - (86400 - Common_Get(time.now_sec))) / 14400.0f);
}
if((Common_Get(weather) == 1) || (Common_Get(weather) == 2)){
ret *= 0.6f;
}
return (u8)ret;
}
void Ef_Room_Sunshine_PoliceL_actor_move(ACTOR* actor, GAME* game){
ROOMSUNSHINEPOLICE_ACTOR* police = (ROOMSUNSHINEPOLICE_ACTOR*)actor;
if(Common_Get(time.now_sec) < 14400){
police->ef_sunshine_class.actor_class.scale.x = calc_scale_Ef_Room_Sunshine_Police(1, Common_Get(time.now_sec));
}
else if ((Common_Get(time.now_sec) >= 43200) && (Common_Get(time.now_sec) < 72000)){
police->ef_sunshine_class.actor_class.scale.x = calc_scale_Ef_Room_Sunshine_Police(0, Common_Get(time.now_sec) - 43200);
}
else{
police->ef_sunshine_class.actor_class.scale.x = 0.0f;
}
}
void Ef_Room_Sunshine_PoliceR_actor_move(ACTOR* actor, GAME* game){
ROOMSUNSHINEPOLICE_ACTOR* police = (ROOMSUNSHINEPOLICE_ACTOR*)actor;
if((Common_Get(time.now_sec) >= 14400) && (Common_Get(time.now_sec) < 43200)){
police->ef_sunshine_class.actor_class.scale.x = -calc_scale_Ef_Room_Sunshine_Police(0, 43200 - Common_Get(time.now_sec));
}
else if (Common_Get(time.now_sec) >= 72000){
police->ef_sunshine_class.actor_class.scale.x = -calc_scale_Ef_Room_Sunshine_Police(1, 86400 -Common_Get(time.now_sec));
}
else{
police->ef_sunshine_class.actor_class.scale.x = 0.0f;
}
}
int cull_check_from_camera(ACTOR* actor, GAME_PLAY* play, int flag){
if(((play->camera.lookat.eye.x >= actor->world.position.x) && (flag == 1)) ||
(play->camera.lookat.eye.x <= actor->world.position.x) && (flag == 0)){
return 1;
}
return 0;
}
void setup_mode_Ef_Room_Sunshine_Police(ACTOR* actor, GAME_PLAY* play){
ROOMSUNSHINE_ACTOR* sunshine = (ROOMSUNSHINE_ACTOR*)actor;
u8* color;
int calc;
GRAPH* graph = play->game.graph;
OPEN_DISP(graph);
Matrix_translate(sunshine->actor_class.world.position.x, sunshine->actor_class.world.position.y,
sunshine->actor_class.world.position.z, 0);
Matrix_scale(sunshine->actor_class.scale.x, sunshine->actor_class.scale.y, sunshine->actor_class.scale.z,1);
gDPPipeSync(NEXT_POLY_XLU_DISP);
gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(play->game.graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
if((Common_Get(time.now_sec) >= 14400) && (Common_Get(time.now_sec) < 72000)){
color =play->kankyo.base_light.sun_color_window;
}
else{
color =play->kankyo.base_light.moon_color_window;
}
calc = ((u8)calc_alpha_Ef_Room_SunshinePolice() * mKK_windowlight_alpha_get());
gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0, calc, color[0], color[1], color[2], 255);
CLOSE_DISP(graph);
}
void Ef_Room_Sunshine_PoliceL_actor_draw(ACTOR* actor, GAME* game){
GRAPH* graph;
GAME_PLAY* play = (GAME_PLAY*)game;
if((mKK_windowlight_alpha_get() < 9.99999974738e-05f) || (actor->scale.x == 0.0f)){
return;
}
if(cull_check_from_camera(actor,play,0) == 0){
graph = play->game.graph;
setup_mode_Ef_Room_Sunshine_Police(actor, play);
OPEN_DISP(graph);
gSPDisplayList(NEXT_POLY_XLU_DISP, obj_koban_shine_modelT);
CLOSE_DISP(graph);
}
}
void Ef_Room_Sunshine_PoliceR_actor_draw(ACTOR* actor, GAME* game){
GRAPH* graph;
GAME_PLAY* play = (GAME_PLAY*)game;
if((mKK_windowlight_alpha_get() < 9.99999974738e-05f) || (actor->scale.x == 0.0f)){
return;
}
if(cull_check_from_camera(actor,play,1) == 0){
graph = play->game.graph;
setup_mode_Ef_Room_Sunshine_Police(actor, play);
OPEN_DISP(graph);
gSPDisplayList(NEXT_POLY_XLU_DISP, obj_koban_shine_modelT);
CLOSE_DISP(graph);
}
}
+208
View File
@@ -0,0 +1,208 @@
#include "ef_room_sunshine_posthouse.h"
#include "m_common_data.h"
#include "m_name_table.h"
#include "m_debug.h"
#include "m_collision_bg.h"
#include "sys_matrix.h"
void Ef_Room_Sunshine_Posthouse_actor_ct(ACTOR* actor, GAME* play);
void Ef_Room_Sunshine_Posthouse_actor_dt(ACTOR* actor, GAME* play);
void Ef_Room_Sunshine_PosthouseL_actor_draw(ACTOR* actor, GAME* play);
void Ef_Room_Sunshine_PosthouseL_actor_move(ACTOR* actor, GAME* play);
void Ef_Room_Sunshine_PosthouseR_actor_draw(ACTOR* actor, GAME* play);
void Ef_Room_Sunshine_PosthouseR_actor_move(ACTOR* actor, GAME* play);
extern Gfx obj_yubinkyoku_shine_modelT[];
ACTOR_PROFILE Room_Sunshine_Posthouse_Profile = {
mAc_PROFILE_ROOM_SUNSHINE_POSTHOUSE,
ACTOR_PART_EFFECT,
ACTOR_STATE_NO_MOVE_WHILE_CULLED | ACTOR_STATE_NO_DRAW_WHILE_CULLED,
EMPTY_NO,
ACTOR_OBJ_BANK_POSTHOUSE,
sizeof(ROOMSUNSHINEPOSTHOUSE_ACTOR),
Ef_Room_Sunshine_Posthouse_actor_ct,
NONE_ACTOR_PROC,
Ef_Room_Sunshine_PosthouseR_actor_move,
Ef_Room_Sunshine_PosthouseR_actor_draw,
NULL,
};
void Ef_Room_Sunshine_Posthouse_actor_ct(ACTOR* actor, GAME* game){
ROOMSUNSHINEPOSTHOUSE_ACTOR* posthouse = (ROOMSUNSHINEPOSTHOUSE_ACTOR*)actor;
xyz_t pos;
xyz_t pos2;
xyz_t pos3;
posthouse->ef_sunshine_class.unk_174 = 0;
if(posthouse->ef_sunshine_class.actor_class.actor_specific == 0){
posthouse->ef_sunshine_class.actor_class.mv_proc = Ef_Room_Sunshine_PosthouseL_actor_move;
posthouse->ef_sunshine_class.actor_class.dw_proc = Ef_Room_Sunshine_PosthouseL_actor_draw;
}
else{
posthouse->ef_sunshine_class.actor_class.world.position.x -= 1.0f;
}
pos = posthouse->ef_sunshine_class.actor_class.world.position;
posthouse->ef_sunshine_class.actor_class.world.position.y = mCoBG_GetBgY_OnlyCenter_FromWpos(0.0f, &pos);
posthouse->ef_sunshine_class.actor_class.scale.x = 0.05f;
posthouse->ef_sunshine_class.actor_class.scale.y = 0.05f;
posthouse->ef_sunshine_class.actor_class.scale.z = 0.05f;
switch(posthouse->ef_sunshine_class.actor_class.actor_specific){
case 2:
posthouse->ef_sunshine_class.actor_class.mv_proc = Ef_Room_Sunshine_PosthouseL_actor_move;
posthouse->ef_sunshine_class.actor_class.dw_proc = Ef_Room_Sunshine_PosthouseL_actor_draw;
posthouse->ef_sunshine_class.actor_class.world.position.x += 5.0f;
pos2 = posthouse->ef_sunshine_class.actor_class.world.position;
posthouse->ef_sunshine_class.actor_class.world.position.y = 1.0f + mCoBG_GetBgY_OnlyCenter_FromWpos(0.0f, &pos2);
posthouse->ef_sunshine_class.actor_class.world.position.x -= 6.0f;
break;
case 3:
posthouse->ef_sunshine_class.actor_class.world.position.x -= 5.0f;
pos3 = posthouse->ef_sunshine_class.actor_class.world.position;
posthouse->ef_sunshine_class.actor_class.world.position.y = 1.0f + mCoBG_GetBgY_OnlyCenter_FromWpos(0.0f, &pos3);
posthouse->ef_sunshine_class.actor_class.world.position.x += 6.0f;
break;
}
}
f32 calc_scale_Ef_Room_Sunshine_Posthouse(int flag, int sec){
if(flag == 0){
return 0.05f * (1.5f * sin_s((sec << 14) / 28800.0f));
}
else{
return 0.05f * (1.5f * sin_s((sec << 14) / 14400.0f));
}
}
int calc_alpha_Ef_Room_SunshinePosthouse(){
f32 ret;
int sec;
if(Common_Get(time.now_sec) < 14400){
ret = 120.0f * ((14400 - Common_Get(time.now_sec)) / 14400.0f);
}
else if(Common_Get(time.now_sec) < 72000){
//any other number matches codegen, but 43200 breaks
sec = (Common_Get(time.now_sec) - 43200) >= 0 ?
(Common_Get(time.now_sec) - 43200U) : -(Common_Get(time.now_sec) - 43200U);
ret = 255.0f * ((28800 - sec) / 28800.0f);
}
else{
ret = 120.0f * ((14400 - (86400 - Common_Get(time.now_sec))) / 14400.0f);
}
if((Common_Get(weather) == 1) || (Common_Get(weather) == 2)){
ret *= 0.6f;
}
return (u8)ret;
}
void Ef_Room_Sunshine_PosthouseL_actor_move(ACTOR* actor, GAME* game){
ROOMSUNSHINEPOSTHOUSE_ACTOR* posthouse = (ROOMSUNSHINEPOSTHOUSE_ACTOR*)actor;
if(Common_Get(time.now_sec) < 14400){
posthouse->ef_sunshine_class.actor_class.scale.x = calc_scale_Ef_Room_Sunshine_Posthouse(1, Common_Get(time.now_sec));
}
else if ((Common_Get(time.now_sec) >= 43200) && (Common_Get(time.now_sec) < 72000)){
posthouse->ef_sunshine_class.actor_class.scale.x = calc_scale_Ef_Room_Sunshine_Posthouse(0, Common_Get(time.now_sec) - 43200);
}
else{
posthouse->ef_sunshine_class.actor_class.scale.x = 0.0f;
}
}
void Ef_Room_Sunshine_PosthouseR_actor_move(ACTOR* actor, GAME* game){
ROOMSUNSHINEPOSTHOUSE_ACTOR* posthouse = (ROOMSUNSHINEPOSTHOUSE_ACTOR*)actor;
if((Common_Get(time.now_sec) >= 14400) && (Common_Get(time.now_sec) < 43200)){
posthouse->ef_sunshine_class.actor_class.scale.x = -calc_scale_Ef_Room_Sunshine_Posthouse(0, 43200 - Common_Get(time.now_sec));
}
else if (Common_Get(time.now_sec) >= 72000){
posthouse->ef_sunshine_class.actor_class.scale.x = -calc_scale_Ef_Room_Sunshine_Posthouse(1, 86400 -Common_Get(time.now_sec));
}
else{
posthouse->ef_sunshine_class.actor_class.scale.x = 0.0f;
}
}
void setup_mode_Ef_Room_Sunshine_Posthouse(ACTOR* actor, GAME_PLAY* play){
ROOMSUNSHINE_ACTOR* sunshine = (ROOMSUNSHINE_ACTOR*)actor;
u8* color;
int calc;
GRAPH* graph = play->game.graph;
OPEN_DISP(graph);
Matrix_translate(sunshine->actor_class.world.position.x, sunshine->actor_class.world.position.y,
sunshine->actor_class.world.position.z, 0);
Matrix_scale(sunshine->actor_class.scale.x, sunshine->actor_class.scale.y, sunshine->actor_class.scale.z,1);
gDPPipeSync(NEXT_POLY_XLU_DISP);
gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(play->game.graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
if((Common_Get(time.now_sec) >= 14400) && (Common_Get(time.now_sec) < 72000)){
color =play->kankyo.base_light.sun_color_window;
}
else{
color =play->kankyo.base_light.moon_color_window;
}
calc = ((u8)calc_alpha_Ef_Room_SunshinePosthouse() * mKK_windowlight_alpha_get());
gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0, calc, color[0], color[1], color[2], 255);
CLOSE_DISP(graph);
}
void Ef_Room_Sunshine_PosthouseL_actor_draw(ACTOR* actor, GAME* game){
GRAPH* graph;
GAME_PLAY* play = (GAME_PLAY*)game;
if((mKK_windowlight_alpha_get() < 9.99999974738e-05f) || (actor->scale.x == 0.0f)){
return;
}
graph = play->game.graph;
setup_mode_Ef_Room_Sunshine_Posthouse(actor, play);
OPEN_DISP(graph);
gSPDisplayList(NEXT_POLY_XLU_DISP, obj_yubinkyoku_shine_modelT);
CLOSE_DISP(graph);
}
void Ef_Room_Sunshine_PosthouseR_actor_draw(ACTOR* actor, GAME* game){
GRAPH* graph;
GAME_PLAY* play = (GAME_PLAY*)game;
if((mKK_windowlight_alpha_get() < 9.99999974738e-05f) || (actor->scale.x == 0.0f)){
return;
}
graph = play->game.graph;
setup_mode_Ef_Room_Sunshine_Posthouse(actor, play);
OPEN_DISP(graph);
gSPDisplayList(NEXT_POLY_XLU_DISP, obj_yubinkyoku_shine_modelT);
CLOSE_DISP(graph);
}