From 3e2bca3d6aa80dfae7c2057b8607f668cef8f951 Mon Sep 17 00:00:00 2001 From: Cuyler36 Date: Tue, 27 Feb 2024 19:26:53 -0500 Subject: [PATCH] Implement & link ac_museum_picture --- config/rel_slices.yml | 5 + include/ac_museum_picture.h | 6 +- include/m_actor.h | 2180 ++++++++++++++++++----------------- include/m_museum_display.h | 57 +- src/ac_br_shop.c | 9 +- src/ac_museum_picture.c | 204 ++++ 6 files changed, 1341 insertions(+), 1120 deletions(-) create mode 100644 src/ac_museum_picture.c diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 671fe533..b1748a4d 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -426,6 +426,11 @@ ac_haniwa.c: .text: [0x80427624, 0x80428F64] .rodata: [0x806440B8, 0x806440F8] .data: [0x80683D08, 0x80683E98] +ac_museum_picture.c: + .text: [0x8042F170, 0x8042F7FC] + .rodata: [0x806442D0, 0x80644330] + .data: [0x80684E38, 0x80684F58] + .bss: [0x812FBE70, 0x812FBE80] ac_my_indoor.c: .text: [0x8046EE38, 0x80470288] .rodata: [0x80644A88, 0x80644A98] diff --git a/include/ac_museum_picture.h b/include/ac_museum_picture.h index 840f3338..c5e8ad54 100644 --- a/include/ac_museum_picture.h +++ b/include/ac_museum_picture.h @@ -8,6 +8,11 @@ extern "C" { #endif +typedef struct museum_picture_actor_s { + ACTOR actor_class; + int msg_no; +} MUSEUM_PICTURE_ACTOR; + extern ACTOR_PROFILE Museum_Picture_Profile; #ifdef __cplusplus @@ -15,4 +20,3 @@ extern ACTOR_PROFILE Museum_Picture_Profile; #endif #endif - diff --git a/include/m_actor.h b/include/m_actor.h index deb1cf57..de654032 100644 --- a/include/m_actor.h +++ b/include/m_actor.h @@ -35,1053 +35,1052 @@ typedef void (*mActor_proc)(ACTOR*, GAME*); #define ACTOR_STATE_CAN_MOVE_IN_DEMO_SCENES (1 << 29) #define ACTOR_STATE_IN_DEMO (1 << 30) - -//TODO: Name the unique ones for their correspondant actor +// 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_PSNOWMAN, - ACTOR_OBJ_BANK_26, - ACTOR_OBJ_BANK_27, - ACTOR_OBJ_BANK_UMBRELLA, - 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_KEITAI, - 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_NPC_SAO, - ACTOR_OBJ_BANK_TUMBLER, - 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_TAMA, - ACTOR_OBJ_BANK_392, - ACTOR_OBJ_BANK_393, - ACTOR_OBJ_BANK_ROPE, - ACTOR_OBJ_BANK_CRACKER, - ACTOR_OBJ_BANK_396, - ACTOR_OBJ_BANK_397, - ACTOR_OBJ_BANK_398, - ACTOR_OBJ_BANK_399, - ACTOR_OBJ_BANK_FUUSEN, - 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, + 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_PSNOWMAN, + ACTOR_OBJ_BANK_26, + ACTOR_OBJ_BANK_27, + ACTOR_OBJ_BANK_UMBRELLA, + 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_KEITAI, + 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_NPC_SAO, + ACTOR_OBJ_BANK_TUMBLER, + 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_TAMA, + ACTOR_OBJ_BANK_392, + ACTOR_OBJ_BANK_393, + ACTOR_OBJ_BANK_ROPE, + ACTOR_OBJ_BANK_CRACKER, + ACTOR_OBJ_BANK_396, + ACTOR_OBJ_BANK_397, + ACTOR_OBJ_BANK_398, + ACTOR_OBJ_BANK_399, + ACTOR_OBJ_BANK_FUUSEN, + ACTOR_OBJ_BANK_401, + ACTOR_OBJ_BANK_402, + ACTOR_OBJ_BANK_403, + ACTOR_OBJ_BANK_404, + ACTOR_OBJ_BANK_MUSEUM_PICTURE, + 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 { - ACTOR_PART_FG, - ACTOR_PART_ITEM, - ACTOR_PART_UNUSED, - ACTOR_PART_PLAYER, - ACTOR_PART_NPC, - ACTOR_PART_BG, - ACTOR_PART_EFFECT, - ACTOR_PART_CONTROL, + ACTOR_PART_FG, + ACTOR_PART_ITEM, + ACTOR_PART_UNUSED, + ACTOR_PART_PLAYER, + ACTOR_PART_NPC, + ACTOR_PART_BG, + ACTOR_PART_EFFECT, + ACTOR_PART_CONTROL, - ACTOR_PART_NUM + ACTOR_PART_NUM }; enum actor_profile_table { - mAc_PROFILE_PLAYER, - mAc_PROFILE_BGITEM, - mAc_PROFILE_SAMPLE, - mAc_PROFILE_FIELDM_DRAW, - mAc_PROFILE_FIELD_DRAW, - mAc_PROFILE_AIRPLANE, - mAc_PROFILE_ROOM_SUNSHINE, - mAc_PROFILE_LAMP_LIGHT, - mAc_PROFILE_EV_ANGLER, - mAc_PROFILE_BALL, - mAc_PROFILE_HANIWA, - mAc_PROFILE_MY_ROOM, - mAc_PROFILE_MBG, - mAc_PROFILE_T_TAMA, - mAc_PROFILE_BOXMANAGER, - mAc_PROFILE_BOXMOVE, - mAc_PROFILE_BOXTRICK01, - mAc_PROFILE_ARRANGE_ROOM, - mAc_PROFILE_ARRANGE_FURNITURE, - mAc_PROFILE_TRAINDOOR, - mAc_PROFILE_T_KEITAI, - mAc_PROFILE_HALLOWEEN_NPC, - mAc_PROFILE_EV_PUMPKIN, - mAc_PROFILE_RIDE_OFF_DEMO, - mAc_PROFILE_NPC_MAMEDANUKI, - mAc_PROFILE_HANABI_NPC0, - mAc_PROFILE_HANABI_NPC1, - mAc_PROFILE_SNOWMAN, - mAc_PROFILE_NPC_POST_GIRL, - mAc_PROFILE_NPC_ENGINEER, - mAc_PROFILE_NPC_MAJIN3, - mAc_PROFILE_NPC_SLEEP_OBABA, - mAc_PROFILE_NPC, - mAc_PROFILE_EFFECT_CONTROL, - mAc_PROFILE_NPC2, - mAc_PROFILE_KAMAKURA_NPC0, - mAc_PROFILE_NPC_POST_MAN, - mAc_PROFILE_SHOP_DESIGN, - mAc_PROFILE_QUEST_MANAGER, - mAc_PROFILE_MAILBOX, - mAc_PROFILE_HOUSE, - mAc_PROFILE_SHOP_LEVEL, - mAc_PROFILE_SHOP, - mAc_PROFILE_MYHOUSE, - mAc_PROFILE_EV_ARTIST, - mAc_PROFILE_EV_BROKER, - mAc_PROFILE_EV_DESIGNER, - mAc_PROFILE_T_UMBRELLA, - mAc_PROFILE_NPC_SHOP_MASTER, - mAc_PROFILE_BIRTH_CONTROL, - mAc_PROFILE_SHOP_MANEKIN, - mAc_PROFILE_SHOP_INDOOR, - mAc_PROFILE_EVENT_MANAGER, - mAc_PROFILE_SHOP_GOODS, - mAc_PROFILE_BRSHOP, - mAc_PROFILE_WEATHER, - mAc_PROFILE_POST_OFFICE, - mAc_PROFILE_NPC_GUIDE, - mAc_PROFILE_NPC_GUIDE2, - mAc_PROFILE_INSECT, - mAc_PROFILE_STATION, - mAc_PROFILE_EV_CARPETPEDDLER, - mAc_PROFILE_EV_KABUPEDDLER, - mAc_PROFILE_RESERVE, - mAc_PROFILE_HANDOVERITEM, - mAc_PROFILE_NPC_CONV_MASTER, - mAc_PROFILE_NPC_SUPER_MASTER, - mAc_PROFILE_NPC_DEPART_MASTER, - mAc_PROFILE_TOOLS, - mAc_PROFILE_STRUCTURE, - mAc_PROFILE_EV_GYPSY, - mAc_PROFILE_NPC_POLICE, - mAc_PROFILE_TRAIN0, - mAc_PROFILE_TRAIN1, - mAc_PROFILE_NPC_STATION_MASTER, - mAc_PROFILE_EV_SANTA, - mAc_PROFILE_NPC_POLICE2, - mAc_PROFILE_POLICE_BOX, - mAc_PROFILE_BGPOLICEITEM, - mAc_PROFILE_BGCHERRYITEM, - mAc_PROFILE_BGWINTERITEM, - mAc_PROFILE_BGXMASITEM, - mAc_PROFILE_BGPOSTITEM, - mAc_PROFILE_FALLS, - mAc_PROFILE_FALLSESW, - mAc_PROFILE_EV_BROKER2, - mAc_PROFILE_BROKER_DESIGN, - mAc_PROFILE_T_UTIWA, - mAc_PROFILE_PSNOWMAN, - mAc_PROFILE_MY_INDOOR, - mAc_PROFILE_NPC_RCN_GUIDE, - mAc_PROFILE_INTRO_DEMO, - mAc_PROFILE_SHRINE, - mAc_PROFILE_BUGGY, - mAc_PROFILE_T_HANABI, - mAc_PROFILE_CONVENI, - mAc_PROFILE_SUPER, - mAc_PROFILE_DEPART, - mAc_PROFILE_HANAMI_NPC0, - mAc_PROFILE_S_CAR, - mAc_PROFILE_HANAMI_NPC1, - mAc_PROFILE_NPC_P_SEL, - mAc_PROFILE_NPC_P_SEL2, - mAc_PROFILE_NPC_RCN_GUIDE2, - mAc_PROFILE_TRAIN_WINDOW, - mAc_PROFILE_NPC_MAJIN4, - mAc_PROFILE_KAMAKURA, - mAc_PROFILE_GYOEI, - mAc_PROFILE_NPC_MAJIN, - mAc_PROFILE_T_NPCSAO, - mAc_PROFILE_EV_SONCHO, - mAc_PROFILE_UKI, - mAc_PROFILE_NPC_MAJIN2, - mAc_PROFILE_NORMAL_NPC, - mAc_PROFILE_SET_MANAGER, - mAc_PROFILE_SET_NPC_MANAGER, - mAc_PROFILE_NPC_SHOP_MASTERSP, - mAc_PROFILE_ROOM_SUNSHINE_POSTHOUSE, - mAc_PROFILE_ROOM_SUNSHINE_POLICE, - mAc_PROFILE_EFFECTBG, - mAc_PROFILE_EV_CHERRY_MANAGER, - mAc_PROFILE_EV_YOMISE, - mAc_PROFILE_TOKYOSO_NPC0, - mAc_PROFILE_TOKYOSO_NPC1, - mAc_PROFILE_GOZA, - mAc_PROFILE_RADIO, - mAc_PROFILE_YATAI, - mAc_PROFILE_TOKYOSO_CONTROL, - mAc_PROFILE_SHOP_UMBRELLA, - mAc_PROFILE_GYO_RELEASE, - mAc_PROFILE_TUKIMI, - mAc_PROFILE_KAMAKURA_INDOOR, - mAc_PROFILE_EV_MIKO, - mAc_PROFILE_GYO_KAGE, - mAc_PROFILE_MIKUJI, - mAc_PROFILE_HOUSE_GOKI, - mAc_PROFILE_T_CRACKER, - mAc_PROFILE_NPC_NEEDLEWORK, - mAc_PROFILE_T_PISTOL, - mAc_PROFILE_T_FLAG, - mAc_PROFILE_T_TUMBLER, - mAc_PROFILE_TUKIMI_NPC0, - mAc_PROFILE_TUKIMI_NPC1, - mAc_PROFILE_NEEDLEWORK_SHOP, - mAc_PROFILE_COUNTDOWN_NPC0, - mAc_PROFILE_COUNTDOWN_NPC1, - mAc_PROFILE_TURI_NPC0, - mAc_PROFILE_TAISOU_NPC0, - mAc_PROFILE_COUNT, - mAc_PROFILE_GARAGARA, - mAc_PROFILE_TAMAIRE_NPC0, - mAc_PROFILE_TAMAIRE_NPC1, - mAc_PROFILE_HATUMODE_NPC0, - mAc_PROFILE_NPC_TOTAKEKE, - mAc_PROFILE_COUNT02, - mAc_PROFILE_HATUMODE_CONTROL, - mAc_PROFILE_TAMA, - mAc_PROFILE_KAGO, - mAc_PROFILE_TURI, - mAc_PROFILE_HOUSE_CLOCK, - mAc_PROFILE_TUNAHIKI_CONTROL, - mAc_PROFILE_TUNAHIKI_NPC0, - mAc_PROFILE_TUNAHIKI_NPC1, - mAc_PROFILE_KOINOBORI, - mAc_PROFILE_BEE, - mAc_PROFILE_NAMEPLATE, - mAc_PROFILE_DUMP, - mAc_PROFILE_ROPE, - mAc_PROFILE_EV_DOZAEMON, - mAc_PROFILE_WINDMILL, - mAc_PROFILE_LOTUS, - mAc_PROFILE_ANIMAL_LOGO, - mAc_PROFILE_MIKANBOX, - mAc_PROFILE_DOUZOU, - mAc_PROFILE_NPC_RTC, - mAc_PROFILE_TOUDAI, - mAc_PROFILE_NPC_RESTART, - mAc_PROFILE_NPC_MAJIN5, - mAc_PROFILE_FUUSEN, - mAc_PROFILE_EV_DOKUTU, - mAc_PROFILE_DUMMY, - mAc_PROFILE_NPC_CURATOR, - mAc_PROFILE_MUSEUM, - mAc_PROFILE_EV_GHOST, - mAc_PROFILE_MUSEUM_PICTURE, - mAc_PROFILE_185, - mAc_PROFILE_MUSEUM_FISH, - mAc_PROFILE_MUSEUM_INSECT, - mAc_PROFILE_BRIDGE_A, - mAc_PROFILE_ROOM_SUNSHINE_MUSEUM, - mAc_PROFILE_NEEDLEWORK_INDOOR, - mAc_PROFILE_ROOM_SUNSHINE_MINSECT, - mAc_PROFILE_MUSEUM_FOSSIL, - mAc_PROFILE_MURAL, - mAc_PROFILE_AC_SIGN, - mAc_PROFILE_ANT, - mAc_PROFILE_NPC_SENDO, - mAc_PROFILE_FLAG, - mAc_PROFILE_PRESENT_DEMO, - mAc_PROFILE_PRESENT_NPC, - mAc_PROFILE_BOAT, - mAc_PROFILE_BOAT_DEMO, - mAc_PROFILE_COTTAGE_MY, - mAc_PROFILE_COTTAGE_NPC, - mAc_PROFILE_EV_SONCHO2, - mAc_PROFILE_NPC_MASK_CAT, - mAc_PROFILE_NPC_MASK_CAT2, - mAc_PROFILE_RESET_DEMO, - mAc_PROFILE_GO_HOME_NPC, - mAc_PROFILE_MISIN, - mAc_PROFILE_LIGHTHOUSE_SWITCH, - mAc_PROFILE_MUSEUM_INDOOR, - mAc_PROFILE_T_ANRIUM1, - mAc_PROFILE_T_BISCUS1, - mAc_PROFILE_T_BISCUS2, - mAc_PROFILE_T_HASU1, - mAc_PROFILE_T_HAT1, - mAc_PROFILE_T_ZINNIA1, - mAc_PROFILE_T_BISCUS3, - mAc_PROFILE_T_BISCUS4, - mAc_PROFILE_T_ZINNIA2, - mAc_PROFILE_T_HAT2, - mAc_PROFILE_T_HAT3, - mAc_PROFILE_T_REI1, - mAc_PROFILE_T_REI2, - mAc_PROFILE_NPC_SHASHO, - mAc_PROFILE_T_BAG1, - mAc_PROFILE_T_BAG2, - mAc_PROFILE_EV_CASTAWAY, - mAc_PROFILE_T_COBRA1, - mAc_PROFILE_BALLOON, - mAc_PROFILE_NPC_SONCHO, - mAc_PROFILE_APRILFOOL_CONTROL, - mAc_PROFILE_EV_MAJIN, - mAc_PROFILE_HARVEST_NPC0, - mAc_PROFILE_HARVEST_NPC1, - mAc_PROFILE_GROUNDHOG_CONTROL, - mAc_PROFILE_EV_SPEECH_SONCHO, - mAc_PROFILE_GROUNDHOG_NPC0, - mAc_PROFILE_EV_TURKEY, - mAc_PROFILE_GHOG, - mAc_PROFILE_HTABLE, - mAc_PROFILE_NPC_HEM, - mAc_PROFILE_TENT, - mAc_PROFILE_PTERMINAL, - mAc_PROFILE_MSCORE_CONTROL, + mAc_PROFILE_PLAYER, + mAc_PROFILE_BGITEM, + mAc_PROFILE_SAMPLE, + mAc_PROFILE_FIELDM_DRAW, + mAc_PROFILE_FIELD_DRAW, + mAc_PROFILE_AIRPLANE, + mAc_PROFILE_ROOM_SUNSHINE, + mAc_PROFILE_LAMP_LIGHT, + mAc_PROFILE_EV_ANGLER, + mAc_PROFILE_BALL, + mAc_PROFILE_HANIWA, + mAc_PROFILE_MY_ROOM, + mAc_PROFILE_MBG, + mAc_PROFILE_T_TAMA, + mAc_PROFILE_BOXMANAGER, + mAc_PROFILE_BOXMOVE, + mAc_PROFILE_BOXTRICK01, + mAc_PROFILE_ARRANGE_ROOM, + mAc_PROFILE_ARRANGE_FURNITURE, + mAc_PROFILE_TRAINDOOR, + mAc_PROFILE_T_KEITAI, + mAc_PROFILE_HALLOWEEN_NPC, + mAc_PROFILE_EV_PUMPKIN, + mAc_PROFILE_RIDE_OFF_DEMO, + mAc_PROFILE_NPC_MAMEDANUKI, + mAc_PROFILE_HANABI_NPC0, + mAc_PROFILE_HANABI_NPC1, + mAc_PROFILE_SNOWMAN, + mAc_PROFILE_NPC_POST_GIRL, + mAc_PROFILE_NPC_ENGINEER, + mAc_PROFILE_NPC_MAJIN3, + mAc_PROFILE_NPC_SLEEP_OBABA, + mAc_PROFILE_NPC, + mAc_PROFILE_EFFECT_CONTROL, + mAc_PROFILE_NPC2, + mAc_PROFILE_KAMAKURA_NPC0, + mAc_PROFILE_NPC_POST_MAN, + mAc_PROFILE_SHOP_DESIGN, + mAc_PROFILE_QUEST_MANAGER, + mAc_PROFILE_MAILBOX, + mAc_PROFILE_HOUSE, + mAc_PROFILE_SHOP_LEVEL, + mAc_PROFILE_SHOP, + mAc_PROFILE_MYHOUSE, + mAc_PROFILE_EV_ARTIST, + mAc_PROFILE_EV_BROKER, + mAc_PROFILE_EV_DESIGNER, + mAc_PROFILE_T_UMBRELLA, + mAc_PROFILE_NPC_SHOP_MASTER, + mAc_PROFILE_BIRTH_CONTROL, + mAc_PROFILE_SHOP_MANEKIN, + mAc_PROFILE_SHOP_INDOOR, + mAc_PROFILE_EVENT_MANAGER, + mAc_PROFILE_SHOP_GOODS, + mAc_PROFILE_BRSHOP, + mAc_PROFILE_WEATHER, + mAc_PROFILE_POST_OFFICE, + mAc_PROFILE_NPC_GUIDE, + mAc_PROFILE_NPC_GUIDE2, + mAc_PROFILE_INSECT, + mAc_PROFILE_STATION, + mAc_PROFILE_EV_CARPETPEDDLER, + mAc_PROFILE_EV_KABUPEDDLER, + mAc_PROFILE_RESERVE, + mAc_PROFILE_HANDOVERITEM, + mAc_PROFILE_NPC_CONV_MASTER, + mAc_PROFILE_NPC_SUPER_MASTER, + mAc_PROFILE_NPC_DEPART_MASTER, + mAc_PROFILE_TOOLS, + mAc_PROFILE_STRUCTURE, + mAc_PROFILE_EV_GYPSY, + mAc_PROFILE_NPC_POLICE, + mAc_PROFILE_TRAIN0, + mAc_PROFILE_TRAIN1, + mAc_PROFILE_NPC_STATION_MASTER, + mAc_PROFILE_EV_SANTA, + mAc_PROFILE_NPC_POLICE2, + mAc_PROFILE_POLICE_BOX, + mAc_PROFILE_BGPOLICEITEM, + mAc_PROFILE_BGCHERRYITEM, + mAc_PROFILE_BGWINTERITEM, + mAc_PROFILE_BGXMASITEM, + mAc_PROFILE_BGPOSTITEM, + mAc_PROFILE_FALLS, + mAc_PROFILE_FALLSESW, + mAc_PROFILE_EV_BROKER2, + mAc_PROFILE_BROKER_DESIGN, + mAc_PROFILE_T_UTIWA, + mAc_PROFILE_PSNOWMAN, + mAc_PROFILE_MY_INDOOR, + mAc_PROFILE_NPC_RCN_GUIDE, + mAc_PROFILE_INTRO_DEMO, + mAc_PROFILE_SHRINE, + mAc_PROFILE_BUGGY, + mAc_PROFILE_T_HANABI, + mAc_PROFILE_CONVENI, + mAc_PROFILE_SUPER, + mAc_PROFILE_DEPART, + mAc_PROFILE_HANAMI_NPC0, + mAc_PROFILE_S_CAR, + mAc_PROFILE_HANAMI_NPC1, + mAc_PROFILE_NPC_P_SEL, + mAc_PROFILE_NPC_P_SEL2, + mAc_PROFILE_NPC_RCN_GUIDE2, + mAc_PROFILE_TRAIN_WINDOW, + mAc_PROFILE_NPC_MAJIN4, + mAc_PROFILE_KAMAKURA, + mAc_PROFILE_GYOEI, + mAc_PROFILE_NPC_MAJIN, + mAc_PROFILE_T_NPCSAO, + mAc_PROFILE_EV_SONCHO, + mAc_PROFILE_UKI, + mAc_PROFILE_NPC_MAJIN2, + mAc_PROFILE_NORMAL_NPC, + mAc_PROFILE_SET_MANAGER, + mAc_PROFILE_SET_NPC_MANAGER, + mAc_PROFILE_NPC_SHOP_MASTERSP, + mAc_PROFILE_ROOM_SUNSHINE_POSTHOUSE, + mAc_PROFILE_ROOM_SUNSHINE_POLICE, + mAc_PROFILE_EFFECTBG, + mAc_PROFILE_EV_CHERRY_MANAGER, + mAc_PROFILE_EV_YOMISE, + mAc_PROFILE_TOKYOSO_NPC0, + mAc_PROFILE_TOKYOSO_NPC1, + mAc_PROFILE_GOZA, + mAc_PROFILE_RADIO, + mAc_PROFILE_YATAI, + mAc_PROFILE_TOKYOSO_CONTROL, + mAc_PROFILE_SHOP_UMBRELLA, + mAc_PROFILE_GYO_RELEASE, + mAc_PROFILE_TUKIMI, + mAc_PROFILE_KAMAKURA_INDOOR, + mAc_PROFILE_EV_MIKO, + mAc_PROFILE_GYO_KAGE, + mAc_PROFILE_MIKUJI, + mAc_PROFILE_HOUSE_GOKI, + mAc_PROFILE_T_CRACKER, + mAc_PROFILE_NPC_NEEDLEWORK, + mAc_PROFILE_T_PISTOL, + mAc_PROFILE_T_FLAG, + mAc_PROFILE_T_TUMBLER, + mAc_PROFILE_TUKIMI_NPC0, + mAc_PROFILE_TUKIMI_NPC1, + mAc_PROFILE_NEEDLEWORK_SHOP, + mAc_PROFILE_COUNTDOWN_NPC0, + mAc_PROFILE_COUNTDOWN_NPC1, + mAc_PROFILE_TURI_NPC0, + mAc_PROFILE_TAISOU_NPC0, + mAc_PROFILE_COUNT, + mAc_PROFILE_GARAGARA, + mAc_PROFILE_TAMAIRE_NPC0, + mAc_PROFILE_TAMAIRE_NPC1, + mAc_PROFILE_HATUMODE_NPC0, + mAc_PROFILE_NPC_TOTAKEKE, + mAc_PROFILE_COUNT02, + mAc_PROFILE_HATUMODE_CONTROL, + mAc_PROFILE_TAMA, + mAc_PROFILE_KAGO, + mAc_PROFILE_TURI, + mAc_PROFILE_HOUSE_CLOCK, + mAc_PROFILE_TUNAHIKI_CONTROL, + mAc_PROFILE_TUNAHIKI_NPC0, + mAc_PROFILE_TUNAHIKI_NPC1, + mAc_PROFILE_KOINOBORI, + mAc_PROFILE_BEE, + mAc_PROFILE_NAMEPLATE, + mAc_PROFILE_DUMP, + mAc_PROFILE_ROPE, + mAc_PROFILE_EV_DOZAEMON, + mAc_PROFILE_WINDMILL, + mAc_PROFILE_LOTUS, + mAc_PROFILE_ANIMAL_LOGO, + mAc_PROFILE_MIKANBOX, + mAc_PROFILE_DOUZOU, + mAc_PROFILE_NPC_RTC, + mAc_PROFILE_TOUDAI, + mAc_PROFILE_NPC_RESTART, + mAc_PROFILE_NPC_MAJIN5, + mAc_PROFILE_FUUSEN, + mAc_PROFILE_EV_DOKUTU, + mAc_PROFILE_DUMMY, + mAc_PROFILE_NPC_CURATOR, + mAc_PROFILE_MUSEUM, + mAc_PROFILE_EV_GHOST, + mAc_PROFILE_MUSEUM_PICTURE, + mAc_PROFILE_185, + mAc_PROFILE_MUSEUM_FISH, + mAc_PROFILE_MUSEUM_INSECT, + mAc_PROFILE_BRIDGE_A, + mAc_PROFILE_ROOM_SUNSHINE_MUSEUM, + mAc_PROFILE_NEEDLEWORK_INDOOR, + mAc_PROFILE_ROOM_SUNSHINE_MINSECT, + mAc_PROFILE_MUSEUM_FOSSIL, + mAc_PROFILE_MURAL, + mAc_PROFILE_AC_SIGN, + mAc_PROFILE_ANT, + mAc_PROFILE_NPC_SENDO, + mAc_PROFILE_FLAG, + mAc_PROFILE_PRESENT_DEMO, + mAc_PROFILE_PRESENT_NPC, + mAc_PROFILE_BOAT, + mAc_PROFILE_BOAT_DEMO, + mAc_PROFILE_COTTAGE_MY, + mAc_PROFILE_COTTAGE_NPC, + mAc_PROFILE_EV_SONCHO2, + mAc_PROFILE_NPC_MASK_CAT, + mAc_PROFILE_NPC_MASK_CAT2, + mAc_PROFILE_RESET_DEMO, + mAc_PROFILE_GO_HOME_NPC, + mAc_PROFILE_MISIN, + mAc_PROFILE_LIGHTHOUSE_SWITCH, + mAc_PROFILE_MUSEUM_INDOOR, + mAc_PROFILE_T_ANRIUM1, + mAc_PROFILE_T_BISCUS1, + mAc_PROFILE_T_BISCUS2, + mAc_PROFILE_T_HASU1, + mAc_PROFILE_T_HAT1, + mAc_PROFILE_T_ZINNIA1, + mAc_PROFILE_T_BISCUS3, + mAc_PROFILE_T_BISCUS4, + mAc_PROFILE_T_ZINNIA2, + mAc_PROFILE_T_HAT2, + mAc_PROFILE_T_HAT3, + mAc_PROFILE_T_REI1, + mAc_PROFILE_T_REI2, + mAc_PROFILE_NPC_SHASHO, + mAc_PROFILE_T_BAG1, + mAc_PROFILE_T_BAG2, + mAc_PROFILE_EV_CASTAWAY, + mAc_PROFILE_T_COBRA1, + mAc_PROFILE_BALLOON, + mAc_PROFILE_NPC_SONCHO, + mAc_PROFILE_APRILFOOL_CONTROL, + mAc_PROFILE_EV_MAJIN, + mAc_PROFILE_HARVEST_NPC0, + mAc_PROFILE_HARVEST_NPC1, + mAc_PROFILE_GROUNDHOG_CONTROL, + mAc_PROFILE_EV_SPEECH_SONCHO, + mAc_PROFILE_GROUNDHOG_NPC0, + mAc_PROFILE_EV_TURKEY, + mAc_PROFILE_GHOG, + mAc_PROFILE_HTABLE, + mAc_PROFILE_NPC_HEM, + mAc_PROFILE_TENT, + mAc_PROFILE_PTERMINAL, + mAc_PROFILE_MSCORE_CONTROL, - mAc_PROFILE_NUM + mAc_PROFILE_NUM }; enum { - mAc_HILITE_OPAQUE, - mAc_HILITE_TRANSLUCENT, + mAc_HILITE_OPAQUE, + mAc_HILITE_TRANSLUCENT, - mAc_HILITE_NUM + mAc_HILITE_NUM }; /* sizeof(ACTOR_PROFILE) == 0x24 */ struct actor_profile_s { - /* 0x00 */ s16 id; /* unique actor type ID */ - /* 0x02 */ u8 part; /* actor type, seemingly called 'part' */ - /* 0x04 */ u32 initial_flags_state; /* initial actor flag state */ - /* 0x08 */ mActor_name_t npc_id; /* "world" npc id/name */ - /* 0x0A */ s16 obj_bank_id; /* used with object exchange */ - /* 0x0C */ size_t class_size; /* sizeof(ZZZ_ACTOR) */ - /* 0x10 */ mActor_proc ct_proc; /* constructor */ - /* 0x14 */ mActor_proc dt_proc; /* destructor */ - /* 0x18 */ mActor_proc mv_proc; /* move */ - /* 0x1C */ mActor_proc dw_proc; /* draw */ - /* 0x20 */ mActor_proc sv_proc; /* save */ + /* 0x00 */ s16 id; /* unique actor type ID */ + /* 0x02 */ u8 part; /* actor type, seemingly called 'part' */ + /* 0x04 */ u32 initial_flags_state; /* initial actor flag state */ + /* 0x08 */ mActor_name_t npc_id; /* "world" npc id/name */ + /* 0x0A */ s16 obj_bank_id; /* used with object exchange */ + /* 0x0C */ size_t class_size; /* sizeof(ZZZ_ACTOR) */ + /* 0x10 */ mActor_proc ct_proc; /* constructor */ + /* 0x14 */ mActor_proc dt_proc; /* destructor */ + /* 0x18 */ mActor_proc mv_proc; /* move */ + /* 0x1C */ mActor_proc dw_proc; /* draw */ + /* 0x20 */ mActor_proc sv_proc; /* save */ }; typedef void (*mActor_shadow_proc)(ACTOR*, LightsN*, GAME_PLAY*); /* sizeof(Shape_Info) == 0x48 */ typedef struct actor_shape_info_s { - /* 0x00 */ s_xyz rotation; - /* 0x06 */ s16 unk_6; - /* 0x08 */ f32 ofs_y; - /* 0x0C */ mActor_shadow_proc shadow_proc; - /* 0x10 */ f32 shadow_size_x; - /* 0x14 */ f32 shadow_size_z; - /* 0x18 */ f32 shadow_size_change_rate; - /* 0x1C */ f32 shadow_alpha_change_rate; - /* 0x20 */ int unk_20; - /* 0x24 */ xyz_t* shadow_position; - /* 0x28 */ int unk_28; - /* 0x2C */ u8 draw_shadow; /* TRUE = shadow is drawn, FALSE = shadow is not drawn */ - /* 0x2D */ u8 unk_2D; - /* 0x2E */ u8 force_shadow_position; /* TRUE = shadow's position is forcefully updated, FALSE = non-forcefully updated */ - /* 0x2F */ u8 unused_2F[0x48-0x2F]; + /* 0x00 */ s_xyz rotation; + /* 0x06 */ s16 unk_6; + /* 0x08 */ f32 ofs_y; + /* 0x0C */ mActor_shadow_proc shadow_proc; + /* 0x10 */ f32 shadow_size_x; + /* 0x14 */ f32 shadow_size_z; + /* 0x18 */ f32 shadow_size_change_rate; + /* 0x1C */ f32 shadow_alpha_change_rate; + /* 0x20 */ int unk_20; + /* 0x24 */ xyz_t* shadow_position; + /* 0x28 */ int unk_28; + /* 0x2C */ u8 draw_shadow; /* TRUE = shadow is drawn, FALSE = shadow is not drawn */ + /* 0x2D */ u8 unk_2D; + /* 0x2E */ u8 + force_shadow_position; /* TRUE = shadow's position is forcefully updated, FALSE = non-forcefully updated */ + /* 0x2F */ u8 unused_2F[0x48 - 0x2F]; } Shape_Info; -typedef struct actor_shadow_s{ +typedef struct actor_shadow_s { /* 0x00 */ xyz_t position; /* 0x0C */ f32 groundY; /* 0x10 */ f32 unk10; @@ -1090,83 +1089,83 @@ typedef struct actor_shadow_s{ /* 0x1C */ f32 unk1C; /* 0x20 */ s16 unk20; /* 0x22 */ s16 unk22; - /* 0x24 */ s16 unk24; + /* 0x24 */ s16 unk24; /* 0x26 */ s16 unk26; /* 0x28 */ char pad28[0xC]; /* 0x34 */ int unk34; /* 0x38 */ int kind; -}Shadow_Info; +} Shadow_Info; /* sizeof(struct actor_s) == 0x174 */ struct actor_s { - /* 0x000 */ s16 id; /* unique actor type ID */ - /* 0x002 */ u8 part; - /* 0x003 */ u8 restore_fg; /* restores 'fgdata' according to restore_fgdata_all */ - /* 0x004 */ s16 scene_id; - /* 0x006 */ mActor_name_t npc_id; - /* 0x008 */ s8 block_x; - /* 0x009 */ s8 block_z; - /* 0x00A */ s16 move_actor_list_idx; /* used in aBC_setupCommonMvActor */ - /* 0x00C */ PositionAngle home; /* Home position & rotation */ - /* 0x020 */ u32 state_bitfield; /* bitfield of current actor state */ - /* 0x024 */ s16 actor_specific; /* actor specific temp data */ - /* 0x026 */ s16 data_bank_id; /* data bank id actor is in */ - /* 0x028 */ PositionAngle world; /* World position & rotation */ - /* 0x03C */ xyz_t last_world_position; /* previous actor world position */ - /* 0x048 */ PositionAngle eye; /* actor "eyes" (head/lookat) world position & rotation */ - /* 0x05C */ xyz_t scale; /* actor size */ - /* 0x068 */ xyz_t position_speed; /* actor movement velocity (see Actor_position_speed_set) */ - /* 0x074 */ f32 speed; /* movement speed */ - /* 0x078 */ f32 gravity; /* gravity acting on actor */ - /* 0x07C */ f32 max_velocity_y; /* maximum y velocity possible due to gravity, usually -20.0f */ - /* 0x080 */ f32 ground_y; /* vertical position of ground underneath actor */ - /* 0x084 */ mCoBG_Check_c bg_collision_check; /* background object collision info with actor */ - /* 0x0B4 */ u8 unknown_b4; /* some sort of flag */ - /* 0x0B5 */ u8 drawn; /* was drawn flag, TRUE = actor was drawn, FALSE = actor was not drawn */ - /* 0x0B6 */ s16 player_angle_y; /* Y angle (yaw) between actor and player actor */ - /* 0x0B8 */ f32 player_distance; /* distance between actor and player actor (squared magnitude) */ - /* 0x0BC */ f32 player_distance_xz; /* distance between actor and player actor on XZ plane (magnitude) */ - /* 0x0C0 */ f32 player_distance_y; /* distance between actor and player actor on Y plane */ - /* 0x0C4 */ Status_c status_data; /* collider info, lots of leftover stuff from OoT */ - /* 0x0DC */ Shape_Info shape_info; - /* 0x124 */ xyz_t camera_position; /* camera position relative to actor position */ - /* 0x130 */ f32 camera_w; /* camera projection W value */ - /* 0x134 */ f32 cull_width; - /* 0x138 */ f32 cull_height; - /* 0x13C */ f32 cull_distance; - /* 0x140 */ f32 cull_radius; - /* 0x144 */ f32 talk_distance; /* maximum distance for talking to be triggered, default seems to be 55.0f */ - /* 0x148 */ u8 cull_while_talking; /* flag to disable actor drawing while talking */ - /* 0x149 */ u8 skip_drawing; /* manual "do not draw" override flag only used by player umbrella actor */ - /* 0x14C */ ACTOR* parent_actor; - /* 0x150 */ ACTOR* child_actor; - /* 0x154 */ ACTOR* prev_actor; - /* 0x158 */ ACTOR* next_actor; - /* 0x15C */ mActor_proc ct_proc; /* constructor */ - /* 0x160 */ mActor_proc dt_proc; /* destructor */ - /* 0x164 */ mActor_proc mv_proc; /* move */ - /* 0x168 */ mActor_proc dw_proc; /* draw */ - /* 0x16C */ mActor_proc sv_proc; /* save */ - /* 0x170 */ ACTOR_DLFTBL* dlftbl; /* display list function table */ + /* 0x000 */ s16 id; /* unique actor type ID */ + /* 0x002 */ u8 part; + /* 0x003 */ u8 restore_fg; /* restores 'fgdata' according to restore_fgdata_all */ + /* 0x004 */ s16 scene_id; + /* 0x006 */ mActor_name_t npc_id; + /* 0x008 */ s8 block_x; + /* 0x009 */ s8 block_z; + /* 0x00A */ s16 move_actor_list_idx; /* used in aBC_setupCommonMvActor */ + /* 0x00C */ PositionAngle home; /* Home position & rotation */ + /* 0x020 */ u32 state_bitfield; /* bitfield of current actor state */ + /* 0x024 */ s16 actor_specific; /* actor specific temp data */ + /* 0x026 */ s16 data_bank_id; /* data bank id actor is in */ + /* 0x028 */ PositionAngle world; /* World position & rotation */ + /* 0x03C */ xyz_t last_world_position; /* previous actor world position */ + /* 0x048 */ PositionAngle eye; /* actor "eyes" (head/lookat) world position & rotation */ + /* 0x05C */ xyz_t scale; /* actor size */ + /* 0x068 */ xyz_t position_speed; /* actor movement velocity (see Actor_position_speed_set) */ + /* 0x074 */ f32 speed; /* movement speed */ + /* 0x078 */ f32 gravity; /* gravity acting on actor */ + /* 0x07C */ f32 max_velocity_y; /* maximum y velocity possible due to gravity, usually -20.0f */ + /* 0x080 */ f32 ground_y; /* vertical position of ground underneath actor */ + /* 0x084 */ mCoBG_Check_c bg_collision_check; /* background object collision info with actor */ + /* 0x0B4 */ u8 unknown_b4; /* some sort of flag */ + /* 0x0B5 */ u8 drawn; /* was drawn flag, TRUE = actor was drawn, FALSE = actor was not drawn */ + /* 0x0B6 */ s16 player_angle_y; /* Y angle (yaw) between actor and player actor */ + /* 0x0B8 */ f32 player_distance; /* distance between actor and player actor (squared magnitude) */ + /* 0x0BC */ f32 player_distance_xz; /* distance between actor and player actor on XZ plane (magnitude) */ + /* 0x0C0 */ f32 player_distance_y; /* distance between actor and player actor on Y plane */ + /* 0x0C4 */ Status_c status_data; /* collider info, lots of leftover stuff from OoT */ + /* 0x0DC */ Shape_Info shape_info; + /* 0x124 */ xyz_t camera_position; /* camera position relative to actor position */ + /* 0x130 */ f32 camera_w; /* camera projection W value */ + /* 0x134 */ f32 cull_width; + /* 0x138 */ f32 cull_height; + /* 0x13C */ f32 cull_distance; + /* 0x140 */ f32 cull_radius; + /* 0x144 */ f32 talk_distance; /* maximum distance for talking to be triggered, default seems to be 55.0f */ + /* 0x148 */ u8 cull_while_talking; /* flag to disable actor drawing while talking */ + /* 0x149 */ u8 skip_drawing; /* manual "do not draw" override flag only used by player umbrella actor */ + /* 0x14C */ ACTOR* parent_actor; + /* 0x150 */ ACTOR* child_actor; + /* 0x154 */ ACTOR* prev_actor; + /* 0x158 */ ACTOR* next_actor; + /* 0x15C */ mActor_proc ct_proc; /* constructor */ + /* 0x160 */ mActor_proc dt_proc; /* destructor */ + /* 0x164 */ mActor_proc mv_proc; /* move */ + /* 0x168 */ mActor_proc dw_proc; /* draw */ + /* 0x16C */ mActor_proc sv_proc; /* save */ + /* 0x170 */ ACTOR_DLFTBL* dlftbl; /* display list function table */ }; #define mActor_NONE_PROC1 ((mActor_proc)none_proc1) typedef struct actor_list_s { - int num_actors; - ACTOR* actor; + int num_actors; + ACTOR* actor; } Actor_list; typedef struct actor_info_s { - int total_num; - Actor_list list[ACTOR_PART_NUM]; + int total_num; + Actor_list list[ACTOR_PART_NUM]; } Actor_info; typedef struct actor_data_s { - s16 profile; - s_xyz position; - s_xyz rotation; - s16 arg; + s16 profile; + s_xyz position; + s_xyz rotation; + s16 arg; } Actor_data; extern void Actor_world_to_eye(ACTOR* actor, f32 eye_height); @@ -1174,7 +1173,8 @@ extern void Actor_position_move(ACTOR* actor); extern void Actor_position_speed_set(ACTOR* actor); extern void Actor_position_moveF(ACTOR* actor); extern int Actor_player_look_direction_check(ACTOR* actor, s16 angle, GAME_PLAY* play); -extern void Shape_Info_init(ACTOR* actor, f32 ofs_y, mActor_shadow_proc shadow_proc, f32 shadow_size_x, f32 shadow_size_z); +extern void Shape_Info_init(ACTOR* actor, f32 ofs_y, mActor_shadow_proc shadow_proc, f32 shadow_size_x, + f32 shadow_size_z); extern void Actor_delete(ACTOR* actor); extern int Actor_draw_actor_no_culling_check(ACTOR* actor); extern int Actor_draw_actor_no_culling_check2(ACTOR* actor, xyz_t* camera_pos, f32 camera_w); @@ -1184,13 +1184,22 @@ extern void Actor_info_call_actor(GAME_PLAY* play, Actor_info* actor_info); extern void Actor_info_draw_actor(GAME_PLAY* play, Actor_info* actor_info); extern void Actor_free_overlay_area(ACTOR_DLFTBL* dlftbl); extern void Actor_get_overlay_area(ACTOR_DLFTBL* dlftbl, int unused, size_t alloc_size); -extern void Actor_init_actor_class(ACTOR* actor, ACTOR_PROFILE* profile, ACTOR_DLFTBL* dlftbl, GAME_PLAY* play, int bank_idx, f32 x, f32 y, f32 z, s16 rot_x, s16 rot_y, s16 rot_z, s8 block_x, s8 block_z, s16 move_actor_list_idx, mActor_name_t name_id, s16 arg); +extern void Actor_init_actor_class(ACTOR* actor, ACTOR_PROFILE* profile, ACTOR_DLFTBL* dlftbl, GAME_PLAY* play, + int bank_idx, f32 x, f32 y, f32 z, s16 rot_x, s16 rot_y, s16 rot_z, s8 block_x, + s8 block_z, s16 move_actor_list_idx, mActor_name_t name_id, s16 arg); #ifndef MUST_MATCH -extern ACTOR* Actor_info_make_actor(Actor_info* actor_info, GAME* game, s16 profile_no, f32 x, f32 y, f32 z, s16 rot_x, s16 rot_y, s16 rot_z, s8 block_x, s8 block_z, s16 move_actor_list_idx, mActor_name_t name_id, s16 arg, s8 npc_info_idx, int data_bank_idx); +extern ACTOR* Actor_info_make_actor(Actor_info* actor_info, GAME* game, s16 profile_no, f32 x, f32 y, f32 z, s16 rot_x, + s16 rot_y, s16 rot_z, s8 block_x, s8 block_z, s16 move_actor_list_idx, + mActor_name_t name_id, s16 arg, s8 npc_info_idx, int data_bank_idx); #else -extern asm ACTOR* Actor_info_make_actor(Actor_info* actor_info, GAME* game, s16 profile_no, f32 x, f32 y, f32 z, s16 rot_x, s16 rot_y, s16 rot_z, s8 block_x, s8 block_z, s16 move_actor_list_idx, mActor_name_t name_id, s16 arg, s8 npc_info_idx, int data_bank_idx); +extern asm ACTOR* Actor_info_make_actor(Actor_info* actor_info, GAME* game, s16 profile_no, f32 x, f32 y, f32 z, + s16 rot_x, s16 rot_y, s16 rot_z, s8 block_x, s8 block_z, + s16 move_actor_list_idx, mActor_name_t name_id, s16 arg, s8 npc_info_idx, + int data_bank_idx); #endif -extern ACTOR* Actor_info_make_child_actor(Actor_info* actor_info, ACTOR* parent_actor, GAME* game, s16 profile, f32 x, f32 y, f32 z, s16 rot_x, s16 rot_y, s16 rot_z, s16 move_actor_list_idx, mActor_name_t name_id, s16 arg, int data_bank_idx); +extern ACTOR* Actor_info_make_child_actor(Actor_info* actor_info, ACTOR* parent_actor, GAME* game, s16 profile, f32 x, + f32 y, f32 z, s16 rot_x, s16 rot_y, s16 rot_z, s16 move_actor_list_idx, + mActor_name_t name_id, s16 arg, int data_bank_idx); extern void restore_fgdata_all(GAME_PLAY* play); extern void Actor_info_save_actor(GAME_PLAY* play); extern ACTOR* Actor_info_delete(Actor_info* actor_info, ACTOR* actor, GAME* game); @@ -1204,7 +1213,6 @@ extern Hilite* HiliteReflect_xlu_init(xyz_t* pos, xyz_t* eye, xyz_t* light_direc extern void Setpos_HiliteReflect_init(xyz_t* pos, GAME_PLAY* play); extern void Setpos_HiliteReflect_xlu_init(xyz_t* pos, GAME_PLAY* play); - #ifdef __cplusplus } #endif diff --git a/include/m_museum_display.h b/include/m_museum_display.h index 8e46250a..ac365c64 100644 --- a/include/m_museum_display.h +++ b/include/m_museum_display.h @@ -21,46 +21,47 @@ extern "C" { #define mMmd_FISH_NUM 40 enum { - mMmd_DISPLAY_CANNOT_DONATE, /* Item cannot be donated */ - mMmd_DISPLAY_CAN_DONATE, /* Item can be donated */ - mMmd_DISPLAY_ALREADY_DONATED, /* Item has already been donated */ + mMmd_DISPLAY_CANNOT_DONATE, /* Item cannot be donated */ + mMmd_DISPLAY_CAN_DONATE, /* Item can be donated */ + mMmd_DISPLAY_ALREADY_DONATED, /* Item has already been donated */ - mMmd_DISPLAY_NUM + mMmd_DISPLAY_NUM }; enum { - mMmd_DONATOR_NONE, - mMmd_DONATOR_PLAYER1, - mMmd_DONATOR_PLAYER2, - mMmd_DONATOR_PLAYER3, - mMmd_DONATOR_PLAYER4, - mMmd_DONATOR_DELETED_PLAYER, + mMmd_DONATOR_NONE, + mMmd_DONATOR_PLAYER1, + mMmd_DONATOR_PLAYER2, + mMmd_DONATOR_PLAYER3, + mMmd_DONATOR_PLAYER4, + mMmd_DONATOR_DELETED_PLAYER, - mMmd_DONATOR_NUM + mMmd_DONATOR_NUM }; -enum { - mMmd_CATEGORY_FOSSIL, - mMmd_CATEGORY_ART, - mMmd_CATEGORY_INSECT, - mMmd_CATEGORY_FISH, +#define mMmd_IS_DONATED(donator) ((donator) >= mMmd_DONATOR_PLAYER1 && (donator) <= mMmd_DONATOR_DELETED_PLAYER) +#define mMmd_DONATOR_EXISTS(donator) ((donator) >= mMmd_DONATOR_PLAYER1 && (donator) <= mMmd_DONATOR_PLAYER4) +#define mMmd_DONATOR_PLR_IDX(donator) (((donator)-1) & 3) - mMmd_CATEGORY_NUM +enum { + mMmd_CATEGORY_FOSSIL, + mMmd_CATEGORY_ART, + mMmd_CATEGORY_INSECT, + mMmd_CATEGORY_FISH, + + mMmd_CATEGORY_NUM }; /* 4 bits per donatable item */ -#define mMmd_BIT_INFO(info, category, index) \ - (((info).category##_bit[(index) >> 1] >> (((index) & 1) << 2)) & 0x0F) -#define mMmd_BIT_INFO2(bitfield, index) \ - (((bitfield)[(index) >> 1] >> (((index) & 1) << 2)) & 0x0F) +#define mMmd_BIT_INFO(info, category, index) (((info).category##_bit[(index) >> 1] >> (((index)&1) << 2)) & 0x0F) +#define mMmd_BIT_INFO2(bitfield, index) (((bitfield)[(index) >> 1] >> (((index)&1) << 2)) & 0x0F) #define mMmd_ART_BIT(info, index) mMmd_BIT_INFO(info, art, index) #define mMmd_INSECT_BIT(info, index) mMmd_BIT_INFO(info, insect, index) #define mMmd_FISH_BIT(info, index) mMmd_BIT_INFO(info, fish, index) #define mMmd_FOSSIL_BIT(info, index) mMmd_BIT_INFO(info, fossil, index) -#define mMmd_BIT_CLR(info, category, index) \ - ((info).category##_bit[(index) >> 1] &= ~(0b1111 << (((index) & 1) * 4))) +#define mMmd_BIT_CLR(info, category, index) ((info).category##_bit[(index) >> 1] &= ~(0b1111 << (((index)&1) * 4))) #define mMmd_FOSSIL_CLR(info, index) mMmd_BIT_CLR(info, fossil, index) #define mMmd_ART_CLR(info, index) mMmd_BIT_CLR(info, art, index) @@ -68,7 +69,7 @@ enum { #define mMmd_FISH_CLR(info, index) mMmd_BIT_CLR(info, fish, index) #define mMmd_BIT_SET(info, category, index, value) \ - ((info).category##_bit[(index) >> 1] |= (((value) & 0b1111) << (((index) & 1)) * 4)) + ((info).category##_bit[(index) >> 1] |= (((value)&0b1111) << (((index)&1)) * 4)) #define mMmd_FOSSIL_SET(info, index, value) mMmd_BIT_SET(info, fossil, index, value) #define mMmd_ART_SET(info, index, value) mMmd_BIT_SET(info, art, index, value) @@ -77,10 +78,10 @@ enum { /* sizeof(mMmd_info_c) == 0x3F */ typedef struct museum_display_info_s { - /* 0x00 */ u8 fossil_bit[mMmd_FOSSIL_BIT_NUM]; - /* 0x0D */ u8 art_bit[mMmd_ART_BIT_NUM]; - /* 0x15 */ u8 fish_bit[mMmd_FISH_BIT_NUM]; - /* 0x2A */ u8 insect_bit[mMmd_INSECT_BIT_NUM]; + /* 0x00 */ u8 fossil_bit[mMmd_FOSSIL_BIT_NUM]; + /* 0x0D */ u8 art_bit[mMmd_ART_BIT_NUM]; + /* 0x15 */ u8 fish_bit[mMmd_FISH_BIT_NUM]; + /* 0x2A */ u8 insect_bit[mMmd_INSECT_BIT_NUM]; } mMmd_info_c; extern int mMmd_FossilInfo(int fossil_no); diff --git a/src/ac_br_shop.c b/src/ac_br_shop.c index f17ebebd..afe14368 100644 --- a/src/ac_br_shop.c +++ b/src/ac_br_shop.c @@ -13,7 +13,7 @@ ACTOR_PROFILE BrShop_Profile = { mAc_PROFILE_BRSHOP, ACTOR_PART_ITEM, ACTOR_STATE_TA_SET, - 0x5826, // fix name later + 0x5826, // fix name later ACTOR_OBJ_BANK_KEEP, sizeof(BRSHOP_ACTOR), aBRS_actor_ct, @@ -23,7 +23,7 @@ ACTOR_PROFILE BrShop_Profile = { NULL, }; -u8 aBRS_shadow_vtx_fix_flg_table[] = {TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE}; +u8 aBRS_shadow_vtx_fix_flg_table[] = { TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE }; extern Vtx obj_yamishop_shadow_v[]; extern Gfx obj_yamishop_shadowT_model[]; @@ -94,7 +94,7 @@ static void aBRS_actor_ct(ACTOR* actor, GAME* game) { } Door_data_c aBRS_br_shop_door_data = { - SCENE_BROKER_SHOP, 4, FALSE, 0, {160, 0, 280}, EMPTY_NO, 1, {0, 0, 0}, + SCENE_BROKER_SHOP, 4, FALSE, 0, { 160, 0, 280 }, EMPTY_NO, 1, { 0, 0, 0 }, }; static void aBRS_actor_dt(ACTOR* actor, GAME* game) { @@ -108,6 +108,5 @@ static void aBRS_actor_dt(ACTOR* actor, GAME* game) { } } +#include "../src/ac_br_shop_move.c_inc" #include "../src/ac_br_shop_draw.c_inc" - -#include "../src/ac_br_shop_move.c_inc" \ No newline at end of file diff --git a/src/ac_museum_picture.c b/src/ac_museum_picture.c new file mode 100644 index 00000000..476fd740 --- /dev/null +++ b/src/ac_museum_picture.c @@ -0,0 +1,204 @@ +#include "ac_museum_picture.h" + +#include "m_camera2.h" +#include "m_demo.h" +#include "m_name_table.h" +#include "m_museum_display.h" +#include "m_name_table.h" +#include "sys_matrix.h" +#include "m_player_lib.h" +#include "m_room_type.h" +#include "m_msg.h" +#include "m_common_data.h" + +typedef struct { + s16 x; + s16 z; +} aMP_pos_c; + +typedef struct { + Gfx* disp_model; + Gfx* dummy_disp_model; + aMP_pos_c pos; +} aMP_art_data_c; + +static void Museum_Picture_Actor_ct(ACTOR* actorx, GAME* game); +static void Museum_Picture_Actor_dt(ACTOR* actorx, GAME* game); +static void Museum_Picture_Actor_move(ACTOR* actorx, GAME* game); +static void Museum_Picture_Actor_draw(ACTOR* actorx, GAME* game); + +ACTOR_PROFILE Museum_Picture_Profile = { + mAc_PROFILE_MUSEUM_PICTURE, + ACTOR_PART_BG, + ACTOR_STATE_CAN_MOVE_IN_DEMO_SCENES | ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_MUSEUM_PICTURE, + sizeof(MUSEUM_PICTURE_ACTOR), + &Museum_Picture_Actor_ct, + &Museum_Picture_Actor_dt, + &Museum_Picture_Actor_move, + &Museum_Picture_Actor_draw, + NULL, +}; + +extern Gfx obj_art01_model[]; +extern Gfx obj_art02_model[]; +extern Gfx obj_art03_model[]; +extern Gfx obj_art04_model[]; +extern Gfx obj_art05_model[]; +extern Gfx obj_art06_model[]; +extern Gfx obj_art07_model[]; +extern Gfx obj_art08_model[]; +extern Gfx obj_art09_model[]; +extern Gfx obj_art10_model[]; +extern Gfx obj_art11_model[]; +extern Gfx obj_art12_model[]; +extern Gfx obj_art13_model[]; +extern Gfx obj_art14_model[]; +extern Gfx obj_art15_model[]; + +extern Gfx obj_art_dummy01_model[]; +extern Gfx obj_art_dummy02_model[]; +extern Gfx obj_art_dummy03_model[]; +extern Gfx obj_art_dummy04_model[]; +extern Gfx obj_art_dummy05_model[]; +extern Gfx obj_art_dummy06_model[]; +extern Gfx obj_art_dummy07_model[]; +extern Gfx obj_art_dummy08_model[]; + +static aMP_art_data_c aMP_art_data_table[mMmd_ART_NUM] = { + { obj_art01_model, obj_art_dummy01_model, 7, 1 }, { obj_art02_model, obj_art_dummy03_model, 1, 9 }, + { obj_art03_model, obj_art_dummy01_model, 11, 5 }, { obj_art04_model, obj_art_dummy04_model, 9, 1 }, + { obj_art05_model, obj_art_dummy02_model, 5, 9 }, { obj_art06_model, obj_art_dummy05_model, 3, 1 }, + { obj_art07_model, obj_art_dummy07_model, 3, 9 }, { obj_art08_model, obj_art_dummy06_model, 1, 5 }, + { obj_art09_model, obj_art_dummy04_model, 3, 5 }, { obj_art10_model, obj_art_dummy06_model, 11, 9 }, + { obj_art11_model, obj_art_dummy07_model, 11, 1 }, { obj_art12_model, obj_art_dummy04_model, 13, 5 }, + { obj_art13_model, obj_art_dummy08_model, 13, 9 }, { obj_art14_model, obj_art_dummy08_model, 9, 5 }, + { obj_art15_model, obj_art_dummy08_model, 5, 1 }, +}; + +static void Museum_Picture_Actor_ct(ACTOR* actorx, GAME* game) { + // nothing +} + +static void Museum_Picture_Actor_dt(ACTOR* actorx, GAME* game) { + // nothing +} + +static void aMP_DrawOneArt(aMP_pos_c* pos_xz, Gfx* disp, GAME* game) { + GRAPH* graph = game->graph; + xyz_t pos = { 0.0f, 0.0f, 0.0f }; + + pos.x = pos_xz->x * 40.0f + 20.0f; + pos.z = pos_xz->z * 40.0f + 20.0f; + pos.y = 40.0f; + + Matrix_translate(pos.x, pos.y, pos.z, 0); + Matrix_scale(0.01f, 0.01f, 0.01f, 1); + + OPEN_DISP(graph); + + gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(NEXT_POLY_OPA_DISP, disp); + + CLOSE_DISP(graph); +} + +static void Museum_Picture_Actor_draw(ACTOR* actorx, GAME* game) { + int i; + aMP_art_data_c* data_table_p = aMP_art_data_table; + + for (i = 0; i < mMmd_ART_NUM; i++, data_table_p++) { + int info = mMmd_ArtInfo(i); + Gfx* disp_model = (&data_table_p->disp_model)[mMmd_IS_DONATED(info) == FALSE]; + + aMP_DrawOneArt(&data_table_p->pos, disp_model, game); + } +} + +static int aMP_CheckTalkAble(xyz_t* pos, int direct, GAME* game, f32 dist) { + static int direct_table[] = { mRmTp_DIRECT_NORTH, -1, -1, mRmTp_DIRECT_WEST, + mRmTp_DIRECT_WEST, -1, -1, mRmTp_DIRECT_SOUTH, + mRmTp_DIRECT_SOUTH, -1, -1, mRmTp_DIRECT_EAST, + mRmTp_DIRECT_EAST, -1, -1, mRmTp_DIRECT_NORTH }; + + PLAYER_ACTOR* player = GET_PLAYER_ACTOR((GAME_PLAY*)game); + + if ((direct & 3) == direct_table[(player->actor_class.shape_info.rotation.y >> 12) & 0xF]) { + f32 dx = player->actor_class.world.position.x - pos->x; + f32 dz = player->actor_class.world.position.z - pos->z; + + if (sqrtf(dx * dx + dz * dz) <= dist) { + return TRUE; + } else { + return FALSE; + } + } + + return FALSE; +} + +static int aMP_CheckTalkAbleDist(aMP_pos_c* ut_pos, GAME* game) { + xyz_t pos = { 0.0f, 0.0f, 0.0f }; + + pos.x = (f32)(ut_pos->x & 15) * 40.0f + 60.0f; + pos.z = (f32)(ut_pos->z & 15) * 40.0f + 40.0f; + pos.y = 40.0f; + + return aMP_CheckTalkAble(&pos, mRmTp_DIRECT_SOUTH, game, 33.0f); +} + +static void aMP_SetTalkInfo(ACTOR* actorx) { + static rgba_t aMP_window_color = { 255, 255, 205, 255 }; + MUSEUM_PICTURE_ACTOR* museum_picture = (MUSEUM_PICTURE_ACTOR*)actorx; + + mDemo_Set_msg_num(museum_picture->msg_no); + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_ListenAble(); + mDemo_Set_camera(CAMERA2_PROCESS_NORMAL); + mDemo_Set_use_zoom_sound(TRUE); + mDemo_Set_talk_window_color(&aMP_window_color); + mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), -1); +} + +static void Museum_Picture_Actor_move(ACTOR* actorx, GAME* game) { + static u8 item_name[mIN_ITEM_NAME_LEN]; + MUSEUM_PICTURE_ACTOR* museum_picture = (MUSEUM_PICTURE_ACTOR*)actorx; + + if (mDemo_Check(mDemo_TYPE_SPEAK, actorx)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR((GAME_PLAY*)game); + s_xyz angle = player->actor_class.shape_info.rotation; + + add_calc_short_angle2(&angle.y, DEG2SHORT_ANGLE(-180.0f), 1.0f - sqrtf(0.7), 0x800, 0); + GET_PLAYER_ACTOR_NOW()->Set_force_position_angle_proc(gamePT, NULL, &angle, mPlayer_FORCE_POSITION_ANGLE_ROTY); + } else if (chkTrigger(BUTTON_A) && mDemo_Get_talk_actor() == NULL) { + int i; + + for (i = 0; i < mMmd_ART_NUM; i++) { + int donator = mMmd_ArtInfo(i); + + if (aMP_CheckTalkAbleDist(&aMP_art_data_table[i].pos, game)) { + museum_picture->msg_no = (donator == mMmd_DONATOR_NONE) + ? 0x2FA1 + : ((donator == mMmd_DONATOR_DELETED_PLAYER) ? 0x2FA0 : 0x2F9F); + if (mDemo_Request(mDemo_TYPE_SPEAK, actorx, &aMP_SetTalkInfo) && mMmd_IS_DONATED(donator)) { + mActor_name_t item = (i >= 0 && i < mMmd_ART_NUM) + ? (mActor_name_t)(FTR_PAINTING0 + (mActor_name_t)(i << 2)) + : FTR_PAINTING0; + + /* Copy the art item's name */ + mIN_copy_name_str(item_name, item); + mMsg_Set_item_str_art(mMsg_Get_base_window_p(), mMsg_ITEM_STR0, item_name, mIN_ITEM_NAME_LEN, + mIN_get_item_article(item)); + + /* If the donator still lives in town we need to copy their name */ + if (mMmd_DONATOR_EXISTS(donator)) { + mMsg_Set_free_str(mMsg_Get_base_window_p(), mMsg_FREE_STR0, + Save_Get(private[mMmd_DONATOR_PLR_IDX(donator)]).player_ID.player_name, + PLAYER_NAME_LEN); + } + } + } + } + } +}